Sto cercando di eseguire xgboost in scikit learn. E io uso solo Panda per caricare i dati in dataframe. Come dovrei usare Panda Panda con xgboost. Sono confuso dalla routine DMatrix richiesta per eseguire xgboost algo.
Sto cercando di eseguire xgboost in scikit learn. E io uso solo Panda per caricare i dati in dataframe. Come dovrei usare Panda Panda con xgboost. Sono confuso dalla routine DMatrix richiesta per eseguire xgboost algo.
Risposte:
È possibile utilizzare il .values
metodo del frame di dati per accedere ai dati non elaborati dopo aver modificato le colonne nel momento in cui sono necessarie.
Per esempio
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)
Ovviamente potresti dover cambiare le colonne che lasci cadere o usare come obiettivo di allenamento. Quanto sopra era per una competizione Kaggle, quindi non c'erano dati target per xgtest
(è trattenuto dagli organizzatori).
.values
)
C'è una buona notizia che c'è una libreria pandas_ml
che supporta XGBoost probabilmente questo semplifica il flusso di lavoro semplicemente.
Ora puoi usare Pandas DataFrames direttamente con XGBoost. Funziona sicuramente con xgboost 0.81.
Ad esempio, dove X_train, X_val, y_train e y_val sono 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)
provo in questo modo sto vedendoTypeError: can not initialize DMatrix from dict