机器学习(xgboost)

一、XGBoost是使用梯度提升框架实现的高效、灵活、可移植的机器学习库,全称是eXtreme Gradient Boosting,是GBDT(GBM)的一个C++实现,它将树的生成并行完成,从而提高学习速度。
二、XGBoost与GDBT的区别
1.XGBoost生成CART树考虑了树的复杂度,GDBT未考虑,GDBT在树的剪枝步骤中考虑了树的复杂度。
2. XGBoost是拟合上一轮损失函数的二阶导展开,GDBT是拟合上一轮损失函数的一阶导展开,因此,XGBoost的准确性更高,且满足相同的训练效果,需要的迭代次数更少。
3. XGBoost与GDBT都是逐次迭代来提高模型性能,但是XGBoost在选取最佳切分点时可以开启多线程进行,大大提高了运行速度。
三、XGBoost的原理
https://baijiahao.baidu.com/s?id=1620689507114988717&wfr=spider&for=pc
四、python API
1.安装xgboost
安装:先在网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost 中下载whl文件,注意一定要下载跟自己当前安装Python版本一致的whl文件
在这里插入图片描述
2.代码:

import pandas as pd
from xgboo
### XGBoost机器学习中的使用方法 #### 安装 XGBoost 库 为了能够在 Python 中使用 XGBoost,首先需要安装该库。可以通过 pip 工具来完成这一操作。 ```bash pip install xgboost ``` #### 导入必要的模块并加载数据集 在开始构建模型之前,需导入所需的 Python 模块,并准备用于训练的数据集。这里展示如何从 libsvm 文件格式读取数据[^2]: ```python import xgboost as xgb # 加载 LibSVM 格式的文件 data = xgb.DMatrix('path_to_libsvm_file') ``` #### 构建和训练基本的 XGBoost 模型 定义参数字典以配置模型的行为,接着创建 Booster 对象来进行训练过程。对于二元分类问题可以设置目标函数为目标为 `binary:logistic`: ```python params = { 'objective': 'binary:logistic', 'eval_metric': 'error' } num_round = 100 # 训练轮数 bst = xgb.train(params, data, num_round) ``` #### 使用内置 API 进行交叉验证 XGBoost 提供了一个方便的方法来进行 k 折交叉验证,这有助于评估不同超参数组合下的性能差异。 ```python cv_results = xgb.cv( params, data, num_boost_round=num_round, nfold=5, metrics={'error'}, seed=42 ) print(cv_results[['train-error-mean', 'test-error-mean']]) ``` #### 调整超参数提高模型效果 调整诸如最大树深 (`max_depth`) 或者子样本比例 (`subsample`) 等超参数可以帮助改善泛化能力。通常会采用网格搜索或随机搜索的方式寻找最佳参数集合。 ```python from sklearn.model_selection import GridSearchCV import numpy as np param_grid = { "max_depth": [3, 6], "learning_rate": [0.01, 0.1], "gamma": [0, 0.25, 1.0], "reg_lambda": [0, 1.0, 10.0], "scale_pos_weight": [1, 3, 5] } gridsearch = GridSearchCV(xgb.XGBClassifier(use_label_encoder=False), param_grid, verbose=1) gridsearch.fit(X_train, y_train) best_params = gridsearch.best_params_ print(f"Best parameters found: {best_params}") ``` #### 特征重要性的可视化 理解哪些输入变量对预测结果影响较大是非常有价值的。XGBoost 支持多种方式计算特征的重要性分数,并可通过图表直观呈现出来。 ```python import matplotlib.pyplot as plt xgb.plot_importance(bst) plt.show() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值