Я пытаюсь запустить xgboost в scikit learn. И я использую только Pandas для загрузки данных в dataframe. Как я должен использовать панд DF с xgboost. Меня смущает процедура DMatrix, необходимая для запуска алгоритма xgboost.
Я пытаюсь запустить xgboost в scikit learn. И я использую только Pandas для загрузки данных в dataframe. Как я должен использовать панд DF с xgboost. Меня смущает процедура DMatrix, необходимая для запуска алгоритма xgboost.
Ответы:
Вы можете использовать метод dataframe .values
для доступа к необработанным данным, как только вы манипулируете столбцами так, как вам нужно.
Например
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)
Очевидно, вам может понадобиться изменить столбцы, которые вы отбрасываете или используете в качестве цели обучения. Выше было для соревнования Kaggle, поэтому не было никаких целевых данных для xgtest
(это сдерживается организаторами).
.values
)
Есть хорошие новости, что есть библиотека, pandas_ml
которая поддерживает XGBoost, возможно, это просто упростит рабочий процесс.
Теперь вы можете использовать Pandas DataFrames напрямую с XGBoost. Определенно работает с xgboost 0.81.
Например, где X_train, X_val, y_train и y_val являются кадрами данных:
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)
я вижуTypeError: can not initialize DMatrix from dict