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 .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).
.values)
C'è una buona notizia che c'è una libreria pandas_mlche 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