XGBoost - 使用DMatrix
XGBoost 使用一种名为 DMatrix 的特殊数据结构来更有效地存储数据集。它优化了内存和性能,尤其是在处理大型数据集时。
DMatrix 的重要性
以下是 DMatrix 在 XGBoost 中重要的几个关键点:
DMatrix 通过减少所需的内存量来轻松存储大型数据集。
当您的数据转换为 DMatrix 后,XGBoost 可以自动创建权重并执行各种预处理任务。它甚至可以处理缺失值。
使用 DMatrix 代替标准数据集格式可以加快训练速度,因为 XGBoost 可以快速访问和使用数据。
XGBoost 使用 DMatrix 的示例
以下是使用 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)。
# Features (everything except the 'Channel' column) X = df.drop(columns=['Channel']) # Target variable (Channel column) y = df['Channel']
4. 转换为 DMatrix
在此阶段,我们将特征和目标转换为 DMatrix,它是 XGBoost 的优化数据结构。
dtrain = xgb.DMatrix(X, label=y)
5. 定义参数
下面我们将定义 XGBoost 模型参数。
params = {
# Maximum depth of a tree
'max_depth': 3,
# Learning rate
'eta': 0.1,
# Objective function for multiclass classification
'objective': 'multi:softmax',
# Number of classes
'num_class': 3
}
6. 训练模型
现在我们将使用 DMatrix 训练模型。
num_round = 10 # Number of boosting rounds bst = xgb.train(params, dtrain, num_round)
7. 保存模型并获取预测结果
训练后,您可以保存模型。为了进行预测,我们使用了与测试相同的数据,但在实际场景中您可以使用新数据。
# Save the model here
bst.save_model('xgboost_model.json')
# Make Predictions here
dtest = xgb.DMatrix(X)
predictions = bst.predict(dtest)
# Print predictions
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.]
广告