Я намагаюся запустити xgboost в scikit learn. І я використовую лише Pandas для завантаження даних у рамки даних. Як я повинен використовувати pandas df з xgboost. Мене бентежить рутина DMatrix, необхідна для запуску xgboost algo.
Я намагаюся запустити xgboost в scikit learn. І я використовую лише Pandas для завантаження даних у рамки даних. Як я повинен використовувати pandas df з xgboost. Мене бентежить рутина DMatrix, необхідна для запуску xgboost algo.
Відповіді:
Ви можете використовувати .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 є 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)
я бачуTypeError: can not initialize DMatrix from dict