Panda Dataframe su DMatrix


14

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:


21

È possibile utilizzare il .valuesmetodo 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).


Quando xgb.DMatrix(X_train.values, y_train.values)provo in questo modo sto vedendoTypeError: can not initialize DMatrix from dict
javadba,

@javadba: ha funzionato sicuramente nel 2016 sul mio mcahine! Non posso testarlo al momento in quanto non posso installare xgboost. È possibile che il codice della libreria sia stato modificato. Più probabilmente c'è qualcosa di diverso nella tua situazione. Ho trovato stackoverflow.com/questions/35402461/… ma questo ti consiglia semplicemente di fare esattamente ciò che fa questa risposta (cioè usare .values)
Neil Slater


7

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))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.