熊猫数据框到DMatrix


14

我试图在scikit学习中运行xgboost。而且我只使用Pandas将数据加载到dataframe中。我应该如何在xgboost中使用pandas df。我对运行xgboost算法所需的DMatrix例程感到困惑。

Answers:


21

.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(由组织者保留)。


当尝试这种方式时,xgb.DMatrix(X_train.values, y_train.values)我看到了TypeError: can not initialize DMatrix from dict
javadba '18

@javadba:绝对在2016年对我的mcahine有效!由于无法安装xgboost,我目前无法对此进行测试。某些库代码可能已更改。您的情况更有可能发生变化。我找到了stackoverflow.com/questions/35402461/…,但这只是建议您确切地执行此答案的工作(即使用.values
Neil Slater


7

您现在可以将Xandaso直接使用Pandas DataFrames。绝对适用于xgboost 0.81。

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

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))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.