
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.]
廣告