熊猫数据框到 DMatrix

数据挖掘 scikit-学习 熊猫 xgboost
2021-09-13 23:54:08

我正在尝试在 scikit learn 中运行 xgboost。而且我只使用 Pandas 将数据加载到数据框中。我应该如何将 pandas df 与 xgboost 一起使用?我对运行 xgboost 算法所需的 DMatrix 例程感到困惑。

3个回答

.values一旦您根据需要操作了列,就可以使用数据框的方法访问原始数据。

例如

train = pd.read_csv("train.csv")
target = train['target']
train = train.drop(['ID','target'],axis=1)
test = pd.read_csv("test.csv")
test = test.drop(['ID'],axis=1)

xgtrain = xgb.DMatrix(train.values, target.values)
xgtest = xgb.DMatrix(test.values)

显然,您可能需要更改删除或用作训练目标的列。以上是 Kaggle 比赛,所以没有目标数据xgtest(被组织者保留)。

您现在可以直接将 Pandas DataFrames 与 XGBoost 一起使用。绝对适用于 xgboost 0.81。

例如,其中 X_train、X_val、y_train 和 y_val 是 DataFrame:

import xgboost as xgb

mod = xgb.XGBRegressor(
    gamma=1,                 
    learning_rate=0.01,
    max_depth=3,
    n_estimators=10000,                                                                    
    subsample=0.8,
    random_state=34
) 

mod.fit(X_train, y_train)
predictions = mod.predict(X_val)
rmse = sqrt(mean_squared_error(y_val, predictions))
print("score: {0:,.0f}".format(rmse))

有一个好消息,有一个支持 XGBoost 的库pandas_ml这可能会简单地简化工作流程。