当前位置:   article > 正文

XGBoost 模型 参数解释_xgboost.predict

xgboost.predict

上篇博文介绍了xgboost这个算法的推导,下面我们在调包使用这个算法的时候,有一些参数是需要我们理解的。

https://blog.csdn.net/weixin_43172660/article/details/83048394 这是上篇博文

这里先讲怎么调用xgboost这个包进行运算
首先先引入这个包和数据(包可以用pip install xgboost进行下载)

import pandas as pd
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
data = pd.read_csv('pima-indians-diabetes.csv',header=None)
X = data.iloc[:,0:8]
y = data.iloc[:,8]
test_size = 0.33
X_train , X_test , y_train , y_test = train_test_split(X,y,test_size = test_size,random_state = 7)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下面可以调用模型,fit函数一些参数的意思

  • early_stopping_rounds:在连续加入五棵树之后,每一次模型的损失函数都没有下降,这时候停止加树,有监控作用
  • eval_metric:我们所选择的损失函数
  • eval_set:进行测试的数据集
model = XGBClassifier()
eval_set = [(X_test, y_test)]
model.fit(X_train,y_train,early_stopping_rounds=5,eval_metric="logloss",eval_set=eval_set)
y_pred = model.predict(X_test)
score = accuracy_score(y_test, y_pred)
print(score)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果见下图:

[0]	validation_0-logloss:0.660186
Will train until validation_0-logloss hasn't improved in 5 rounds.
[1]	validation_0-logloss:0.634854
[2]	validation_0-logloss:0.612239
[3]	validation_0-logloss:0.593118
[4]	validation_0-logloss:0.578303
[5]	validation_0-logloss:0.564942
[6]	validation_0-logloss:0.555113
[7]	validation_0-logloss:0.54499
[8]	validation_0-logloss:0.539151
[9]	validation_0-logloss:0.531819
[10]	validation_0-logloss:0.526065
[11]	validation_0-logloss:0.51977
[12]	validation_0-logloss:0.514979
[13]	validation_0-logloss:0.50927
[14]	validation_0-logloss:0.506086
[15]	validation_0-logloss:0.503565
[16]	validation_0-logloss:0.503591
[17]	validation_0-logloss:0.500805
[18]	validation_0-logloss:0.497605
[19]	validation_0-logloss:0.495328
[20]	validation_0-logloss:0.494777
[21]	validation_0-logloss:0.494274
[22]	validation_0-logloss:0.493333
[23]	validation_0-logloss:0.492211
[24]	validation_0-logloss:0.491936
[25]	validation_0-logloss:0.490578
[26]	validation_0-logloss:0.490895
[27]	validation_0-logloss:0.490646
[28]	validation_0-logloss:0.491911
[29]	validation_0-logloss:0.491407
[30]	validation_0-logloss:0.488828
[31]	validation_0-logloss:0.487867
[32]	validation_0-logloss:0.487297
[33]	validation_0-logloss:0.487562
[34]	validation_0-logloss:0.487788
[35]	validation_0-logloss:0.487962
[36]	validation_0-logloss:0.488218
[37]	validation_0-logloss:0.489582
Stopping. Best iteration:
[32]	validation_0-logloss:0.487297

0.7755905511811023

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

另外我们还可以通过调用xgboost里面的plot_importance看看每个特征的重要性:

from xgboost import plot_importance
from matplotlib import pyplot
plot_importance(model)
pyplot.show()
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

XGBoost 的参数

  • eta:和 GBM 中的 learning rate 参数类似。 通过减少每一步的权重,可以提高模型的稳定性。 典型值为 0.01-0.2。比如我们目标值是4 ,第一棵树权重为3.3 ,第二颗树权重只能学0.7,这样后面的树就学不了什么了,所以可以设置eta,来防止过拟合,设置eta=0.3 表示剩下的权重为4-3.3*0.7。削弱每棵树的影响,让后面有更大的学习空间。
  • min_child_weight:最小叶子节点权重和,如果在一次分裂中,叶子节点上所有样本的权重和小于min_child_weight則停止分裂,能够有效的防止过拟合,防止学到特殊样本。
  • max_depth:树的最大深度,典型值:3-10
  • max_leaf_nodes:树上叶子节点数。
  • gamma :惩罚项那个和叶子节点结合的项
  • subsample:每棵树随机采样的样本的比例,减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1
  • colsample_bytree:用来控制每棵随机采样的列数的占比 (每一列是一个特征)。 典型值:0.5-1
  • lambda:权重的 L2 正则化项。
  • alpha:权重的 L1 正则化项
  • objective:定义损失函数,常用的值
    reg:linear –线性回归。
    reg:logistic–逻辑回归。
    binary:logistic –二分类的逻辑回归问题,输出为概率。
    multi:softmax –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/97388
推荐阅读
相关标签
  

闽ICP备14008679号