今天我们一起来学习一下如何用Python来实现XGBoost分类,这个是一个监督学习的过程,首先我们需要导入两个Python库:

import xgboost as xgb
from sklearn.metrics import accuracy_score

这里的accuracy_score是用来计算分类的正确率的。我们这个分类是通过蘑菇的若干属性来判断蘑菇是否有毒的分类,这个数据集中有126个属性,我们来看看数据集,我把数据集放到网盘上分享给大家:训练和测试数据集,密码:w8td。打开数据集可以发现这其实是一组组的向量,我们来看一组数据集的截图:
首先第一列表示标签列,是每一组数据的正确分类,1表示蘑菇是有毒的,0表示蘑菇无毒的。后面的数据,我们以第一组数据为例,3:1表示数据包含了第三组特征,其他没有不包含的特征的数据,我们就没有在数据集中显示,所以也可以把每一行看做是一个向量,这和我之前有一篇博文“SVM做文本分类详细操作流程”处理的数据格式是一样的。这里有两个数据集,一个训练集一个测试集,接下来我们读取数据集:

data_train = xgb.DMatrix('Desktop/dataset/agaricus.txt.train')
data_test = xgb.DMatrix('Desktop/dataset/agaricus.txt.test')

我们来看看训练集和测试集的大小:

可以看出,除开第一列的标签列,数据集一共有126组特征,6513组训练数据和1611组测试数据。
接下来我们来指定训练的参数:

param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic'}

解释一下,这里max_depth: 树的最大深度。默认值是6,取值范围为:[1,∞];eta:为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。eta通过缩减特征的权重使提升计算过程更加保守。默认值为0.3,取值范围为:[0,1];silent:取0时表示打印出运行时信息,取1时表示以缄默方式运行,不打印运行时信息,默认值为0;objective: 定义学习任务及相应的学习目标,“binary:logistic” 表示二分类的逻辑回归问题,输出为概率。下面我们就可以用xgboost训练模型了:

import time
start_time = time.clock()
bst = xgb.train(param, data_train, num_round)
end_time = time.clock()
print(end_time - start_time)

这里的num_round表示训练的时候迭代的次数,我们默认它是2,训练过程是相当快的,这段代码输出是训练时长:0.015257000000000076。这个时候我们用训练集做预测:

train_preds = bst.predict(data_train)
print ("train_preds",train_preds)

输出是:

train_preds [0.9239239  0.28583017 0.28583017 ... 0.05169873 0.05169873 0.05169873]

这些数据输出的是概率,表示的是每一组蘑菇有毒的概率,我们再将这些数据分类:

train_predictions = [round(value) for value in train_preds]
print ("train_predictions",train_predictions)

分类之后的输出是:

train_predictions [1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, ... 1.0, 0.0, 0.0, 0.0]

这里输出全部都是0和1了,这就是我们用训练数据集训练出的结果,我们可以将这个结果与训练集中的标签作比较,来看看这个预测的准确率如何:

y_train = data_train.get_label()
print ("y_train",y_train)

这是我们获取训练数据集的标签,再与我们训练出的结果进行比较:

train_accuracy = accuracy_score(y_train, train_predictions)
print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))

结果是Train Accuary: 97.77%,准确率还可以。同理,我们可以用测试集来验证我们的模型如何:

# make prediction
preds = bst.predict(data_test)
predictions = [round(value) for value in preds]
y_test = data_test.get_label()
test_accuracy = accuracy_score(y_test, predictions)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

我们可以得到Test Accuracy: 97.83%,这可以说明我们用训练集训练出来的模型还是不错的。
以上是我们用xgboost对数据进行分类模型训练的全过程,接着,我们还可以对这个模型输出它的决策树:

from matplotlib import pyplot
import graphviz
xgb.plot_tree(bst, num_trees = 0,rankdir = 'LR')
pyplot.show()

这里解释一下,xgb.plot_tree()方法的第一个参数表示模型,第二个参数表示树的索引是从0开始的,其实还可以填第三个参数:rankdir = ‘LR’,’LR’表示水平方向,默认的是垂直方向。
我们可以得到这个模型的决策树:

这个决策树节点中的f29表示的是数据集中的第29个特征。
以上就是我们用Python实现的xgboost分类模型的过程,希望对各位朋友有所帮助,本人能力有限,文中如有纰漏之处,还望各位朋友多多指教,如有转载,也请标明出处,谢谢。

XGBoost 分类模型的Python实现相关推荐

  1. 机器学习100天(二十二):022 分类模型评价指标-Python实现

    机器学习100天!今天讲的是:分类模型评价指标-Python实现! <机器学习100天>完整目录:目录 打开spyder,首先,导入标准库. import numpy as np impo ...

  2. XGBOOST + LR 模型融合 python 代码

    XGBOOST + LR (XGBOOST grid search) 先留个广告,最近做一个数据挖掘的比赛,主要用的就是 xgboost,等比赛完后年前好好整理代码开源,到时候代码会比下面整份完整. ...

  3. 数学建模学习(67):XGBoost分类模型详细入门案例教程

    一.案例介绍 本案例对葡萄酒类进行分类,使用XGBoost模型实现,该数据来源:酒类. 数据集信息: 这些数据是对意大利同一地区种植但来自三种不同品种的葡萄酒进行化学分析的结果.该分析确定了三种葡萄酒 ...

  4. 长知识啦——自己动手写分类模型

    文章目录 二分类模型 多分类模型 本次博文是向大家伙分享一下自己写的关于分类模型的Python代码,阅读时长可能比较长,如果文中出现错误也请大家及时批评指正,共同学习,另外,自己写的模型,尤其是sof ...

  5. logistic回归 如何_第七章:利用Python实现Logistic回归分类模型

    免责声明:本文是通过网络收集并结合自身学习等途径合法获取,仅作为学习交流使用,其版权归出版社或者原创作者所有,并不对涉及的版权问题负责.若原创作者或者出版社认为侵权,请联系及时联系,我将立即删除文章, ...

  6. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  7. python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据、使用pandas查看生成数据的特征数据、目标数据

    python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据.使用pandas查看生成数据的特征数据(features).目标 ...

  8. R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数、交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能

    R语言构建xgboost文本分类模型(bag of words):xgb.cv函数交叉验证确定xgboost模型的最优子树个数.交叉验证获取最优子树之后构建最优xgboost模型并评估模型文本分类效能 ...

  9. R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理、构建词袋模型、构建xgboost文本分类模型、基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化

    R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理.构建词袋模型.构建xgboost文本分类模型.基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化 目录

最新文章

  1. python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫
  2. 最全的MySQL基础【燕十八传世】
  3. python创建文件夹 覆盖_Python 创建新文件时避免覆盖已有的同名文件的解决方法...
  4. python创建配置文件_如何写python的配置文件
  5. 转载:React Fiber架构(浅显易懂)
  6. 2019-03-14-算法-进化(移动零)
  7. ubuntun安装ssh,并远程链接服务器操作
  8. 面试突击 005 | Redis 是如何实现高可用的?它的实现方式有哪些?「视频版」
  9. (转) 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试
  10. Android异常总结---W/System.err(661): java.lang.IllegalStateException: End of document.
  11. 码了几年代码的程序员,有一定的开发经验,应该如何提升自己?
  12. 慕课软件质量保证与测试(习题集)
  13. mono android 开机启动,浅析 Android 平台 mono执行机制 by郡墙
  14. 迅雷CEO邹胜龙自述:迅雷十年反思
  15. Python如何使用国内源下载模块
  16. java equest 作用_JSP四大作用域及请求范围总结
  17. Python客户端开发
  18. Win10 蓝屏 SFC /SCANNOW发现损坏文件
  19. LEA指令与MOV指令区别
  20. 2021-07-17答疑解惑第二期

热门文章

  1. 【硬件工程师学软件】之 硬件工程师更需要全栈
  2. 知微传感3D相机SDK开发文档一查找相机
  3. 使用几何光学实现空间相对定位2.0(python+opencv)
  4. 关于Windows中在cmd运行命令时卡住的问题
  5. 委托和代理的相关概念
  6. 反转颜色 PIL 常见报错 Python实现
  7. C语言内存分配函数void* malloc(size_t size)的实际分配情况
  8. 一米智能伴读机器人app下载_呀呀伴读app下载-呀呀伴读 安卓版v1.3.3-PC6安卓网
  9. 开始系统学习,考不考证再议
  10. MATLAB中如何输入希腊字母