用Python 开发您的第一个 XGBoost 模型(收藏)


XGBoost是梯度提升决策树的一种实现,专为速度和性能而设计,是流行的机器学习竞赛的算法。

之前介绍了

机器学习的 XGBoost 算法简介

XGBoost feature importance特征重要性-实战印第安人糖尿病数据集

在这篇文章中,您将了解如何在 Python 中安装和创建您的第一个 XGBoost 模型。

看完这篇文章你会知道:

  • 如何在您的系统上安装 XGBoost 以在 Python 中使用。

  • 如何准备数据并训练您的第一个 XGBoost 模型。

  • 如何使用 XGBoost 模型进行预测。

如何使用 scikit-learn 在 Python 中开发您的第一个 XGBoost 模型

图片


教程概述

本教程分为以下 6 个部分:

  1. 按装 XGBoost 的 Python包。

  2. 问题定义和下载数据集。

  3. 加载和准备数据。

  4. 训练 XGBoost 模型。

  5. 预测并评估模型。

  6. 将所有内容联系在一起并运行示例。


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 中了解有关XGBClassifierXGBRegressor类默认值的更多信息。

您可以在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版权协议,转载请附上原文出处链接及本声明。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python机器学习建模

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值