机器学习之XGboost代码实现

XGboost代码实现XGboost的原生语言是c++,所以它的运行速度比较快。这里将会举例介绍一下python中如何调用XGboost,如果想了解XGboost的理论部分,可以参考这篇博客首先要安装XGboost库pip install XGboost数据集:以鸢尾花数据集为例例1# /usr/bin/python# -*- encoding:utf-8 -*-from sk...
摘要由CSDN通过智能技术生成

XGboost代码实现
XGboost的原生语言是c++,所以它的运行速度比较快。这里将会举例介绍一下python中如何调用XGboost,如果想了解XGboost的理论部分,可以参考这篇博客

例1: XGboost基本应用

数据集:以鸢尾花数据集为例

# /usr/bin/python
# -*- encoding:utf-8 -*-
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import xgboost as xgb

def show_accuracy(a, b, tip):
    acc = a.ravel() == b.ravel()
    print (acc)
    print (tip + '正确率:\t', float(acc.sum()) / a.size)

if __name__ == "__main__":
    #加载iris数据集
    data=load_iris()
    X=data.data
    Y=data.target
    X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.25,random_state=1)  #训练集和测试集
    data_train = xgb.DMatrix(X_train,label=y_train)
    data_test = xgb.DMatrix(X_test,label=y_test)
    print (data_train)
    print (type(data_train))
    # 设置参数
    param = {'max_depth': 3, 'eta': 1, 'silent': 1, 'objective': 'multi:softmax','num_class': 3} # logitraw
    watchlist = [(data_test, 'eval'), (data_train, 'train')]
    n_round = 7
    bst = xgb.train(param, data_train, num_boost_round=4, evals=watchlist)  
    y_hat = bst.predict(data_test)
    show_accuracy(y_hat, y_test, 'XGBoost ')

结果显示:
在这里插入图片描述
xgb.train(),bst.predicty

bst = xgb.train(param, data_train, num_boost_round=4, evals=watchlist)
y_hat = bst.predict(data_test)

xgb.train()和xgb.predict是xgboost训练和测试的方式
xgb.train()函数原型:

xgboost.train(params,dtrain,num_boost_round&
  • 7
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
XGBoost是一种用于机器学习的强大算法,它可以在分类和回归任务中获得很好的性能。但是,为了达到最佳性能,需要对其超参数进行调整。 以下是XGBoost中需要调整的一些重要超参数: 1. n_estimators:决定树的数量,也就是模型中的基本学习者数量。 2. max_depth:树的最大深度,过高的深度可能导致过度拟合。 3. learning_rate:控制每个基本学习器的权重更新步长。 4. subsample:每次训练模型时用于构建树的样本比例。 5. colsample_bytree:每次训练模型时用于构建树的特征比例。 6. gamma:控制当树分裂时,节点的最小损失减少量。 7. reg_alpha:L1正则化参数,用于控制模型的复杂度。 8. reg_lambda:L2正则化参数,用于控制模型的复杂度。 下面是一个简单的XGBoost参数调优示例: ```python import xgboost as xgb from sklearn.datasets import load_digits from sklearn.model_selection import GridSearchCV # 加载数据集 digits = load_digits() X, y = digits.data, digits.target # 定义参数范围 param_grid = {'n_estimators': [50, 100, 150], 'max_depth': [2, 3, 4], 'learning_rate': [0.01, 0.1, 0.5], 'subsample': [0.6, 0.8, 1.0], 'colsample_bytree': [0.6, 0.8, 1.0], 'gamma': [0, 0.1, 0.2], 'reg_alpha': [0, 0.1, 1], 'reg_lambda': [0, 0.1, 1]} # 定义分类器 xgb_model = xgb.XGBClassifier(objective='multi:softmax', num_class=10) # 定义网格搜索 grid_search = GridSearchCV(estimator=xgb_model, param_grid=param_grid, cv=5, n_jobs=-1) # 进行参数调优 grid_search.fit(X, y) # 输出最佳参数 print("Best parameters found: ", grid_search.best_params_) ``` 在上面的代码中,我们使用了网格搜索来寻找最佳超参数。我们定义了一个参数范围字典,包含了所有需要调整的超参数及其可能的值。然后,我们定义了一个XGBoost分类器,并将其作为估计器传递给网格搜索。最后,我们调用fit()方法来运行网格搜索,找到最佳参数组合。 总的来说,XGBoost是一种非常强大的机器学习算法,但是需要调整一些重要的超参数才能实现最佳性能。通过调整这些超参数,可以使XGBoost在分类和回归任务中获得更好的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值