Рамка даних Pandas до DMatrix


14

Я намагаюся запустити xgboost в scikit learn. І я використовую лише Pandas для завантаження даних у рамки даних. Як я повинен використовувати pandas df з xgboost. Мене бентежить рутина DMatrix, необхідна для запуску xgboost algo.

Відповіді:


21

Ви можете використовувати .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(його організатори стримують).


При спробі цього xgb.DMatrix(X_train.values, y_train.values)я бачуTypeError: can not initialize DMatrix from dict
javadba

@javadba: Це, безумовно, працювало в 2016 році на моєму mcahine! Я не можу перевірити це на даний момент, оскільки не можу встановити xgboost. Можливо, якийсь код бібліотеки змінився. Швидше за все, у вашій ситуації є щось інше. Я знайшов stackoverflow.com/questions/35402461/…, але це просто радить вам робити саме те, що робить ця відповідь (тобто використовувати .values)
Ніл Слейтер


7

Тепер ви можете використовувати 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))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.