用Python 开发您的第一个 XGBoost 模型(收藏)
XGBoost是梯度提升决策树的一种实现,专为速度和性能而设计,是流行的机器学习竞赛的算法。
之前介绍了
机器学习的 XGBoost 算法简介
XGBoost feature importance特征重要性-实战印第安人糖尿病数据集
在这篇文章中,您将了解如何在 Python 中安装和创建您的第一个 XGBoost 模型。
看完这篇文章你会知道:
如何在您的系统上安装 XGBoost 以在 Python 中使用。
如何准备数据并训练您的第一个 XGBoost 模型。
如何使用 XGBoost 模型进行预测。
如何使用 scikit-learn 在 Python 中开发您的第一个 XGBoost 模型
教程概述
本教程分为以下 6 个部分:
按装 XGBoost 的 Python包。
问题定义和下载数据集。
加载和准备数据。
训练 XGBoost 模型。
预测并评估模型。
将所有内容联系在一起并运行示例。
1. 安装 XGBoost 以在 Python 中使用
假设您有一个可用的 SciPy 环境,可以使用 pip 轻松安装 XGBoost。
例如:
要更新您的 XGBoost 安装,您可以键入:
pip install --upgrade xgboost
如果您无法使用 pip 或想要从 GitHub 运行最新代码,则另一种安装 XGBoost 的方法要求您克隆 XGBoost 项目并执行手动构建和安装。
作为参考,您可以查看XGBoost Python API 参考。
您可以在XGBoost 安装指南 中了解有关如何为不同平台安装 XGBoost 的更多信息。有关安装 XGBoost for Python 的最新说明,请参阅XGBoost Python 包。
2. 问题描述:预测糖尿病的发作
在本教程中,我们将使用皮马印第安人糖尿病发病数据集。
该数据集由 8 个描述患者医疗细节的输入变量和一个用于指示患者是否会在 5 年内患上糖尿病的输出变量组成。
您可以在 UCI 机器学习存储库网站上了解有关此数据集的更多信息。
这是第一个 XGBoost 模型的一个很好的数据集,因为所有输入变量都是数字,并且问题是一个简单的二元分类问题。对于 XGBoost 算法来说,它不一定是一个好问题,因为它是一个相对较小的数据集,并且是一个易于建模的问题。
下载此数据集并将其放入您当前的工作目录,文件名为“ pima-indians-diabetes.csv ”(更新:从此处下载)。
3. 加载和准备数据
在本节中,我们将从文件中加载数据并准备用于训练和评估 XGBoost 模型。
我们将首先导入我们打算在本教程中使用的类和函数。
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
接下来,我们可以使用 NumPy 函数loadtext()将 CSV 文件加载为 NumPy 数组。
# load data
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
我们必须将数据集的列(属性或特征)分成输入模式(X)和输出模式(Y)。我们可以通过以 NumPy 数组格式指定列索引来轻松完成此操作。
# split data into X and y
X = dataset[:,0:8]
Y = dataset[:,8]
最后,我们必须将 X 和 Y 数据拆分为训练和测试数据集。训练集将用于准备 XGBoost 模型,测试集将用于进行新的预测,我们可以从中评估模型的性能。
为此,我们将使用scikit-learn 库中的**train_test_split()**函数划分数据为训练集和测试集。我们还为随机数生成器指定了一个种子,这样每次执行这个例子时我们总是得到相同的数据分割。
# split data into train and test sets
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
我们现在准备训练我们的模型。
4. 训练 XGBoost 模型
XGBoost 提供了一个包装类,允许将模型视为 scikit-learn 框架中的分类器或回归器。
这意味着我们可以将完整的 scikit-learn 库与 XGBoost 模型一起使用。
用于分类的 XGBoost 模型称为XGBClassifier。我们可以创建并将其拟合到我们的训练数据集。使用 scikit-learn API 和**model.fit()**函数拟合或训练模型。
模型训练和人脑训练有很多相似原理,机器不是天才,机器也是需要喂养数据学习的哟!
可以在构造函数中将用于训练模型的参数传递给模型。在这里,我们使用合理的默认值。
# fit model no training data
model = XGBClassifier()
model.fit(X_train, y_train)
您可以通过打印模型来查看训练模型中使用的参数,例如:
您可以在XGBoost Python scikit-learn API 中了解有关XGBClassifier和XGBRegressor类默认值的更多信息。
您可以在XGBoost 参数页面上详细了解每个参数的含义以及如何配置它们。
我们现在准备使用经过训练的模型进行预测。
5. 使用 XGBoost 模型进行预测
我们可以使用测试数据集上的拟合模型进行预测。
为了进行预测,我们使用 scikit-learn 函数model.predict()。
默认情况下,XGBoost 所做的预测是概率。因为这是一个二元分类问题,每个预测都是输入模式属于第一类的概率。我们可以通过将它们四舍五入为 0 或 1 来轻松地将它们转换为二进制类值。
# make predictions for test data
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
现在我们已经使用拟合模型对新数据进行了预测,我们可以通过将它们与预期值进行比较来评估预测的性能。为此,我们将使用scikit-learn 中内置的accuracy_score()函数。
# evaluate predictions
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
6. 把代码整合在一起
我们可以将所有这些部分结合在一起,下面是完整的代码清单。
# First XGBoost model for Pima Indians dataset
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# load data
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=",")
# split data into X and y
X = dataset[:,0:8]
Y = dataset[:,8]
# split data into train and test sets
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size, random_state=seed)
# fit model no training data
model = XGBClassifier()
model.fit(X_train, y_train)
# make predictions for test data
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
# evaluate predictions
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
注意:您的结果可能会因算法或评估程序的随机性或数值精度的差异而有所不同。考虑多次运行该示例并比较平均结果。
运行此示例会产生以下输出。
考虑到模型的功能和问题的适度复杂性,这是这个问题的一个很好的准确度分数,这是我们所期望的。
总结
在这篇文章中,您学习了如何用 Python 建立您的第一个 XGBoost 模型。
具体来说,你学到了:
如何在您的系统上安装 XGBoost,以便与 Python 一起使用。
如何准备数据并在标准机器学习数据集上训练您的第一个 XGBoost 模型。
如何使用 scikit-learn 进行预测并评估经过训练的 XGBoost 模型的性能。
用Python 开发您的第一个 XGBoost 模型就为大家介绍到这里了,欢迎各位同学报名<python机器学习生物信息学 >,学习更多建模相关知识
https://edu.csdn.net/combo/detail/1930
版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
用Python 开发您的第一个 XGBoost 模型(收藏)相关推荐
- 最近找到了一个免费的python教程,两周学会了python开发
最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...
- python xgb模型 预测_如何使用XGBoost模型进行时间序列预测
字幕组双语原文:如何使用XGBoost模型进行时间序列预测 英语原文:How to Use XGBoost for Time Series Forecasting 翻译:雷锋字幕组(Shangru) ...
- 硬核教程:五步掌握用VSCode进行高效Python开发
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 在程序员圈子里,Visual Stud ...
- vscode使用教程python-硬核教程:五步掌握用VSCode进行高效Python开发
在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了. 它是微软出品的一款可扩展的轻量级开源编辑器,并且支持全平台系统.这些特性使得VSCod ...
- python django开发工具_Django+python 开发神器
Python(派森)英文名称:穿山甲.它是一种面向对象的用途非常广泛的编程语 言,具有非常清晰的语法特点,适用于多种操作系统,可以在Windows和Unix这样的系统中运行.python的语法灵活,模 ...
- 太赞了!Python 开发神器Jupyter竟然还有可视化debug功能!
(点击上方快速关注并设置为星标,一起学Python) 来源丨数据STUDIO Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Notebook 都各有特色,Jupyte ...
- python的开发工具有哪些,Python开发软件毕业设计
python中用到哪些软件 一.Python代码编辑器1.sublime Textsublime Text是一款非常流行的代码编辑器,支持Python代码编辑,同时兼容所有平台,并且丰富的插件扩展了语 ...
- python开发工程师工资_Python开发工程师工资一般多少钱
Python工程师工资多少钱,相信每一个想要踏入Python开发行业的人都想知道这样一个问题,一个行业的薪资标准代表了它繁荣与否也代表了自己职业的未来的发展.下面就让我们来看一下一般Python开发工 ...
- 能够支持python开发的环境_python集成开发环境哪个好?老男孩Python
python是非常热门的编程语言,当我们通过python进行编程的时候,需要借助一些工具来完成,接下来老男孩教育为大家介绍五款python集成开发环境,你更喜欢哪一款呢? 1. PyCharm PyC ...
- 最常用的python开发工具
有哪些值得推荐的 Python 开发工具 推荐5个非常适合Python小白的开发工具:1.Python TutorPython Tutor是由Philip Guo开发的一个免费教育工具,可帮助开发者攻 ...
最新文章
- 花卉世界大观园和杂技之游
- LeetCode215:数组中第K个最大元素
- Vim的基本操作总结
- 基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析
- java注解返回不同消息,SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解...
- 董明珠谈接班人标准:不看亲属、朋友关系,只看一点
- what's the python之函数及装饰器
- 二维向量vector初始化问题(以统计字符串字母题为例)
- VS工程下的tlb, tlh, tli文件说明(COM)
- 台安变频器n2按键说明_台安n2系列变频器说明书
- 原生ajax调用,JavaScript进阶之原生AJAX接口请求的方式
- 响应式设计中的HTML5
- matlab 误差椭圆,第十章 误差椭圆.doc
- 【渝粤题库】陕西师范大学200531 英语测试 作业(高起本、专升本)
- 区块链的底层技术:P2P网络原理与应用详解
- eig()函数求特征值、特征向量、归一化
- 利用Scanorama高效整合异质单细胞转录组
- 求和函数 sum详解
- 多应用多平台支付模块设计-基础模块开篇
- GAN生成对抗网络论文翻译(一)
热门文章
- python循环引用例子_魔幻离现实仅一步之遥:细说Python的循环调用、循环引用和循环导入...
- 下个一个语音,计算机.,中国计算机产业的下一个亮点——汉语语音合成的实用化...
- python 导出为csv_批量导出SolidWorks模型点坐标值
- python 优点_python语言有什么优势
- Android设置Textview字体样式
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,网页一直处于加载中,servlet+html+js+css项目难题解决
- css中如何将a标签设置居中,cssa标签设置成block后,怎么让文字垂直居中_html/css_WEB-ITnose...
- 纯CSS Lightbox效果
- mysql 面试知识点笔记(三)联合索引的最左匹配原则
- goflyway安装