XGBoost - 使用 DMatrix
XGBoost 使用一种称为 DMatrix 的特殊数据结构来更有效地存储数据集。内存和性能得到优化,特别是如果可以处理大型数据集。
DMatrix 的重要性
以下是 DMatrix 在 XGBoost 中很重要的一些关键点 −
DMatrix 通过减少所需的内存量轻松存储大型数据集。
当您的数据更改为 DMatrix 时,XGBoost 可以自动创建权重并执行各种预处理任务。它甚至可以处理缺失的值。
使用 DMatrix 代替标准数据集格式可以加快训练速度,因为 XGBoost 可以快速访问和使用数据。
使用 DMatrix 的 XGBoost 示例
以下是借助 DMatrix − 创建 XGboost 模型的分步过程
1. 导入库
首先,您需要导入模型所需的库。
import xgboost as xgb import pandas as pd
2. 定义数据集
定义数据集,这可以是您的 CSV 数据。这里我们使用了 Wholesale-customers-data.csv 数据集。
df = pd.read_csv('/Python/Wholesale-customers-data.csv')
3. 分离特征
现在我们将在此步骤中分离特征 (X) 和目标 (y)。
# 特征(除"Channel"列之外的所有内容) X = df.drop(columns=['Channel']) # 目标变量(Channel 列) y = df['Channel']
4.转换为 DMatrix
在此阶段,我们将特征和目标转换为 DMatrix,这是针对 XGBoost 优化的数据结构。
dtrain = xgb.DMatrix(X, label=y)
5. 定义参数
下面我们将定义 XGBoost 模型参数。
params = { # 树的最大深度 'max_depth': 3, # 学习率 'eta': 0.1, # 多类分类的目标函数 'objective': 'multi:softmax', # 类别数量 'num_class': 3 }
6. 训练模型
现在我们将借助 DMatrix 训练模型。
num_round = 10 # boosting 轮数 bst = xgb.train(params, dtrain, num_round)
7. 保存模型并获取预测
训练完成后,您可以保存模型。为了进行预测,我们使用与测试相同的数据,但您可以在实际场景中使用新数据。
# 在此处保存模型 bst.save_model('xgboost_model.json') # 在此处进行预测 dtest = xgb.DMatrix(X) predictions = bst.predict(dtest) # 打印预测 print(predictions)
输出
此输出根据给定的特征显示每个观察的预测类别。
[2. 2. 2. 1. 2. 2. 2. 2. 1. 2. 2. 1. 2. 2. 2. 1. 2. 1. 2. 1. 2. 1. 1. 2. 2. 2. 1. 1. 2. 1. 1. 1. 1. 1. 1. 2. 1. 2. 2. 1. 1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 1. 1. 2. 2. 1. 1. 2. 2. 1. 2. 2. 2. 2. 2. 1. 2. 2. 2. 1. 1. 1. 1. 1. 1. 2. 1. 1. 2. 1. 1. 1. 2. 2. 1. 2. 2. 2. 1. 1. 1. 1. 1. 2. 1. 2. 1. 2. 1. 1. 1. 2. 2. 2. 1. 1. 1. 2. 2. 2. 2. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 1. 2. 2. 2. 1. 1. 2. 2. 2. 2. 1. 1. 1. 2. 2. 2. 2. 1. 2. 1. 1. 1. 1. 1. 2. 2. 1. 1. 1. 1. 2. 2. 2. 1. 1. 1. 2. 1. 1. 1. 2. 1. 1. 2. 2. 1. 1. 1. 2. 1. 2. 2. 2. 1. 2. 1. 2. 2. 2. 2. 1. 2. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 2. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 2. 2. 1. 2. 2. 2. 2. 2. 2. 2. 1. 1. 2. 1. 1. 2. 1. 1. 2. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 2. 1. 2. 1. 1. 1. 1. 2. 2. 2. 2. 1. 1. 2. 2. 1. 2. 1. 2. 1. 2. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 1. 1. 1. 2. 1. 1. 2. 2. 2. 2. 1. 2. 2. 1. 2. 2. 1. 2. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 2. 1. 1.]