Estou tentando executar o xgboost no scikit learn. E eu só uso o Pandas para carregar dados no dataframe. Como eu devo usar pandas df com xgboost. Estou confuso com a rotina do DMatrix necessária para executar o xgboost algo.
Estou tentando executar o xgboost no scikit learn. E eu só uso o Pandas para carregar dados no dataframe. Como eu devo usar pandas df com xgboost. Estou confuso com a rotina do DMatrix necessária para executar o xgboost algo.
Respostas:
Você pode usar o .values
método do quadro de dados para acessar dados brutos depois de manipular as colunas conforme necessário.
Por exemplo
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, pode ser necessário alterar as colunas que você solta ou usa como destino do treinamento. O exposto acima foi para uma competição do Kaggle, portanto não havia dados de destino para xgtest
(eles são retidos pelos organizadores).
.values
)
Há boas notícias. Existe uma biblioteca pandas_ml
que suporta XGBoost, provavelmente isso simplificará o fluxo de trabalho de maneira simples.
Agora você pode usar os DataFrames do Pandas diretamente com o XGBoost. Definitivamente funciona com o xgboost 0.81.
Por exemplo, onde X_train, X_val, y_train e y_val são 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)
eu estou vendoTypeError: can not initialize DMatrix from dict