运用XGBoost识别鸢尾花所属类别

2017-11-26  本文已影响369人  Amica
图片.png

一、数据集介绍

在scikit-learn中内置有一些小型标准数据集,运用这些数据集我们就不需要从某个外部网站或者本地目录下加载任何文件了。下面我们要通过sklearn自带的鸢尾花数据集训练一个基于xgboost的鸢尾花分类模型。

二、运用xgboost对鸢尾花数据集进行分类

XGBoost基本方法和默认参数

在训练过程中主要用到两个方法:xgboost.train()和xgboost.cv()
这里我们用到了xgboost.train()

xgboost.train(params,dtrain,num_boost_round=10,evals(),obj=None,
feval=None,maximize=False,early_stopping_rounds=None,
evals_result=None,verbose_eval=True,learning_rates=None,
xgb_model=None)

参数说明:

params:这是个字典,里面包含着训练中的参数关键字和对应的值
dtrain:用于训练的数据
num_boost_round:这个参数用于指定提升树迭代的个数
evals:这是一个列表,用于对训练过程中进行评估列表中的元素。形式是evals=[(dtrain,”train”),(dval,”val”)],或者是evals=[(dtrain,”train”)],对于第一种情况,它使得我们可以在训练过程中观察验证集的效果。
obj:该参数用于自定义目标函数
feval:该参数用于自定义评估函数
maximize:是否对评估函数进行最大化
early_stopping_rounds:该参数用于指定早期停止次数,假设为100,验证集的误差迭代到一定程度在100次内不能再继续降低就停止迭代。这要求evals中至少有一个元素。如果有多个,就按最后一个去执行。返回的是最后的迭代次数(不是最好的)。如果该参数存在,则模型会生成三个属性,bst.best_score,bst_best_iteration,和bst.best_ntree_limit.
evals_result:字典,存储在watchlist中元素的评估结果。
verbose_eval:该参可以为布尔型或者数值型,也要求evals中至少有一个元素,如果为True,则对evals中元素的评估结果会输出在结果中;如果该参数的值为数字,假设为5,则每隔5个迭代输出一次。
learning_rates:每一次提升的学习率的列表
xgboost_model:在训练之前用于加载xgboost model

运行结果:

图片.png

我们可以看到当模型迭代到第18次的时候停止了,这时候我们得到的模型的三个属性输出如下所示:


图片.png

运行结果:

图片.png

参考资料:

上一篇 下一篇

猜你喜欢

热点阅读