Estoy tratando de ejecutar xgboost en scikit learn. Y solo uso Pandas para cargar datos en el marco de datos. ¿Cómo se supone que debo usar pandas df con xgboost? Estoy confundido por la rutina DMatrix requerida para ejecutar xgboost algo.
Estoy tratando de ejecutar xgboost en scikit learn. Y solo uso Pandas para cargar datos en el marco de datos. ¿Cómo se supone que debo usar pandas df con xgboost? Estoy confundido por la rutina DMatrix requerida para ejecutar xgboost algo.
Respuestas:
Puede usar el .values
método del marco de datos para acceder a datos sin procesar una vez que haya manipulado las columnas según las necesite.
P.ej
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)
Obviamente, es posible que deba cambiar las columnas que suelta o usa como objetivo de entrenamiento. Lo anterior fue para una competencia de Kaggle, por lo que no hubo datos objetivo para xgtest
(los organizadores lo retienen ).
.values
)
Hay algunas buenas noticias, hay una biblioteca pandas_ml
que admite XGBoost, probablemente esto simplificará el flujo de trabajo simplemente.
Ahora puede usar Pandas DataFrames directamente con XGBoost. Definitivamente funciona con xgboost 0.81.
Por ejemplo, donde X_train, X_val, y_train e y_val son 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))
xgb.DMatrix(X_train.values, y_train.values)
, estoy viendoTypeError: can not initialize DMatrix from dict