在Python中的XGBoost机器学习模型

在Python中的XGBoost机器学习模型

XGBoost库是用于Python的梯度提升决策树实现,旨在提供速度和执行能力,这是机器学习中最重要的方面。

XgBoost :XgBoost(极端梯度提升)库是由华盛顿大学的学者引入的。它是一个用C++编写的Python模块,通过训练梯度提升来帮助ML模型算法。

梯度提升: 这是一种在分类和回归任务中使用的AI方法。它将弱预测模型的集合作为预测模型。

基本梯度提升如何工作

  • 需要改进损失函数,即将损失函数的结果降低。
  • 为了进行预测,模型中使用了弱学习器。
  • 在此使用决策树,并以嫉妒的方式使用,即基于Gini不纯度等选择最佳划分点,或者以限制损失函数的方式使用。
  • 采用加法模型,汇集所有弱模型,限制损失函数。
  • 每次添加树,并确保决策树中的现有树不发生变化。通常使用梯度下降过程来找到最佳超参数,然后进一步更新权重。

在本教程中,您将了解如何引入和构建您最具特色的Python XGBoost模型。

XGBoost可以提供比其他机器学习模型算法更好的解决方案。实际上,自推出以来,它已经成为处理结构化数据的“最佳模型算法”。

XGBoost的独特之处是什么

  • 性能和速度: 最初是基于C++构建的,其速度与其他聚类分类器相当。
  • 核心计算可并行化 :由于核心XGBoost计算可并行化,因此可以利用多核计算机的计算能力。此外,它可以在GPU上并行化,并跨计算机集群进行并行化,使其能够在大型数据集上进行训练。
  • 在许多基准数据集上始终优于其他方法算法: 在许多人工智能基准数据集上,它表现出更好的输出。
  • 多样化的调优参数 :XGBoost内部具有用于scikit-learn兼容API、缺失值、正则化、交叉验证、用户定义的目标函数、树参数等的参数。

XGBoost(极端梯度提升)属于一族集成算法,并在其核心使用了梯度提升(GBM)框架。

本教程

  • 在Python中安装XGBoost。
  • 准备数据和训练XGBoost模型。
  • 使用XGBoost模型进行预测。

逐步方法

  1. 安装XGBoost
  2. 下载数据集1。
  3. 准备和加载数据。
  4. 训练模型。
  5. 进行预测和评估模型。
  6. 综合所有内容并运行最终示例。

步骤1:在Python中安装XGBoost

在SciPy环境中,可以通过pip轻松安装Python中的XGBoost。

例如:

要安装的命令

pip install xgboost

更新XGBoost命令

pip install --upgrade xgboost

一种将最新的GitHub代码引入XGBoost的替代方法是通过克隆项目XGBoost并进行手动构建和安装。

例如,要在Mac OS X上构建没有多线程功能的XGBoost(通过MacPorts或自制libation之前安装了GCC),我们可以输入以下命令:

git clone ---recursive https://github.com/dml/xgboost
cd xgboost
cp makes/minimum.mk .//config.mk
make -j4
cd python-package
python setup.py install 

步骤2:问题描述

本教程将使用Pima印第安人的糖尿病起始数据集。

该数据集包含8个数据因素,描述患者的临床细节,以及一个结果变量,用于显示患者是否在5年内出现糖尿病起始。

这是一个适合首次使用XGBoost模型的良好数据集,因为所有的数据因素都是数值型的,而且问题是一个简单的二元分类问题。它不适合XGBoost算法,因为它是一个相对较小的数据集,而且是一个容易证明的问题。

下载这个数据集,并将其放置在您当前的工作目录中,文件名为”pima-Indians–diabetes.csv”。

怀孕 血糖水平 血压 皮肤厚度 胰岛素水平 体重指数 糖尿病家族史 年龄 结果
6 148 72 35 0 33.6 0.627 50 1
1 86 66 78 0 76.6 0.461 41 0
8 184 64 0 0 74.4 0.677 47
98 76 97 117 55.2 0.254 51 1
0 0 0 46.4 0.144 78 0
7 187 70 46 644 40.6 0.168 64 1
8 176 86 0 0 0 0.747 64 1
4 110 87 0 0 47.6 0.181 40 0
10 168 74 0 0 48 0.647 44 1
10 148 80 0 0 77.1 1.441 67 0
1 188 60 74 846 40.1 0.488 68 1
6 166 77 18 176 76.8 0.687 61 1
7 100 0 0 0 40 0.484 47 1
4 176 88 41 746 48.4 0.704 77 0
8 88 84 0 0 46.4 0.488 60 0
7 186 80 0 0 48.8 0.461 41 1
8 118 80 46 0 78 0.764 78 1
11 144 84 44 146 46.6 0.764 163 98 | 0 | 0 | 35.7 | 0.183 | 66 | 1
117 87 0 0 44.1 0.447 48 0
6 108 76 76 0 46 0.646 60 0
4 168 76 46 746 41.6 0.861 78 1
4 88 68 11 64 74.8 0.767 77 0
6 87 87 0 0 18.8 0.188 78 0
10 177 78 41 0 77.6 0.617 46 0
4 104 60 44 187 74 0.866 44 0

步骤3:加载和准备数据

在本部分,我们将整理文档中的信息,并为准备和评估XGBoost模型做好准备。

准备ML模型最常见的方式包括使用ML算法(即学习算法)提供训练数据。训练数据应包含正确的响应,这被称为目标属性。

我们将开始导入在本教程中需要使用的类和函数。

例如:

from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train, test, split
from sklearn.metrics import accuracy_score 
loadtext().
#loading data
dataset1 = loadtxt('pima--indians--diabetes.csv', delimiter=",")
# spliting data into (Y) output patterns and (X) input patterns
X = dataset1[:,0:8]
Y = dataset1[:,8]
# spliting data into train and test sets
Seed1 = 7
test_sizes = 0.33
X1_train , X1_test  , y1_train , y1_test= train_test_split(X, Y, test_sizes = test_sizes, random_state=seed1)

说明:

接下来,使用NumPy函数将CSV文件加载为NumPy数组。

现在将列(特征或属性)分离为(Y)输出模式和(X)输入模式。我们可以通过使用NumPy格式并指定列的索引来实现此目的。

最后,我们应该将其分为测试集和准备集。准备集将用于建立XGBoost模型,测试集将用于进行新的预测,从而评估模型的准确性。

我们将使用scikit-learn库中的train_test_split()函数。我们还为随机数生成器指定种子,以便每次执行此模型时都获得相同的数据分割。

步骤4:训练XGBoost模型

说明:

XGBoost提供了一个封装类,允许在scikit-learn框架中将模型视为分类器或回归器。

这意味着XGBoost模型可以完全使用scikit-learn库。

对于分类,XGBoost模型被称为XGBClassifier。我们可以创建并适应于我们的训练数据集。使用scikit-learn API和model.fit()函数来拟合模型。

对于训练模型,可以在构造函数的参数列表中传递参数。因此,在这里,我们使用了合理的默认值。并且通过打印模型,我们可以查看训练过的XGBoost模型的数据。

例如:

# fiting model no training data
model = XGBClassifier()
model.fit(X1_train , y1_train)
print(model)

步骤5:使用XGBoost模型进行预测

我们可以使用适应模型对测试数据集1进行预测。

例如:

# make predictions for test data
y_prediction = model.predict(X1_test  )
predictions = [round(value) for value in y_prediction]
# evaluating predictions
Accuracy1 = accuracy_score(y1_test  , predictions)
print("Accuracy: %.2f%%" % (accuracy1 * 100.0))

解释:

我们利用scikit-learn工具模型进行预测。

由于这是一个双分类问题,每个预测都是数据模型属于高质量的可能性。XGBoost模型的预测结果是准确的概率值。我们可以通过将它们调整为1或0,将它们转换为二进制类别值。

现在,要对数据进行预测,我们需要使用已拟合的模型。为了确定预测的准确性,我们将预测值与实际值进行比较。我们使用scikit-learn库中的 accuracy_score() 函数来确定准确性水平。

步骤6:整合所有先前的步骤

源代码:

from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train, test, split
from sklearn.metrics import accuracy_score
# loading data
dataset1 = loadtxt('pima--indians--diabete.csv', delimiter = ",")
# spliting data into X and y
X1 = dataset1[:,0:8]
Y1 = dataset1[:,8]
# spliting data into test and train sets
seed1 = 7
test_sizes = 0.33
X1_train , X1_test  , y1_train , y1_test= train_test_split(X1, Y1, test_sizes=test_sizes, random_state=seed1)
model = XGBClassifier()
model.fit(X1_train , y1_train )
# making prediction for test data
y_prediction = model.predict(X1_test  )
prediction = [round(value) for value in y_prediction]
accuracy1 = accuracy_score(y1_test  , prediction)
print("Accuracy = %.2f%" % (accuracy1 * 100.0))

注意:考虑到评估系统的想法或计算或数学结果准确性的对比,结果可能会波动。我们可以运行模型几次并找出典型结果。

输出:

运行此模型会得出以下结果。

Accuracy = 77.95%

这是一个关于这个问题的相当准确的得分,这是我们预期的,考虑到模型的能力和问题的潜在复杂性。

结论

在这篇文章中,您了解了如何在Python中培养您最难忘的XGBoost模型。

具体来说,您学到了:

  • 如何在您的系统上安装XGBoost以便在Python中使用。
  • 如何使用scikit-learn库进行预测和评估已经训练过的XGBoost模型的性能。
  • 如何准备数据并在标准的AI数据集上训练您最难忘的XGBoost模型。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程