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

图片.png

一、数据集介绍

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

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

  • 1、加载相关包


    图片.png

    这里我们主要用到xgboost自带的接口,当然你也可以通过如下命令使用sklearn接口:from xgboost.sklearn import XGBClassifier 。
    XGBClassifier是xgboost的sklearn包。通过这个包我们可以使用栅格搜索(Grid Search)和并行处理。

  • 2、拆分数据集
    加载完相关的包我们需要从sklearn中加载鸢尾花数据集,并将数据集按80%为训练集,20%为测试集进行拆分。


    图片.png

    当我们执行程序是会发现在右上角显示变量的窗口中出现了iris变量


    图片.png

    点击变量得value我们就可以看到关于iris的相关信息,该窗口展示了变量的5个元素
    图片.png

    可以看到这5个元素分别是:

    1、DESCR(数据集的相关描述)


    图片.png

    2、data(数据集中特征列的取值)
    图片.png

    3、feature_names(特征的名称)
    图片.png

    4、target(标签列的取值)
    图片.png

    5、target_names(标签列每种类别所指代的的名称)
    图片.png

    我们通过变量窗口显示的变量信息可以对数据集有一个很好的了解。
  • 3、模型参数设置


    图片.png

    图片.png
  • 4、将特征和标签转化为DMtrix的格式
    我们数据集的特征列和标签传入xgb.DMtrix()中,会将数据变成DMtrix的格式,这是一个XGBoost自己定义的数据格式(就像numpy中有ndarray, pandas中有dataframe数据格式一样)。这个格式会将第一列作为label,其余的列作为features。


    图片.png
  • 5、训练模型


    图片.png

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
  • 6、预测


    图片.png

    我们用该模型对数据集进行预测,并用准确率作为评估模型性能的指标,并输出预测结果的准确率和混淆矩阵。运行结果如下所示:


    图片.png

    可以看到在测试集上模型的准确率为100%。
  • 7、绘制数据集的特征重要性图表


    图片.png

运行结果:

图片.png

参考资料:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容