Pandas Dataframe do DMatrix


14

Próbuję uruchomić xgboost w scikit learn. I używam tylko Pand do ładowania danych do ramki danych. Jak mam używać pand df z xgboost. Jestem zdezorientowany procedurą DMatrix wymaganą do uruchomienia xgboost algo.

Odpowiedzi:


21

Możesz użyć metody ramki .valuesdanych, aby uzyskać dostęp do nieprzetworzonych danych po zmanipulowaniu kolumn według potrzeb.

Na przykład

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)

Oczywiście może zaistnieć potrzeba zmiany upuszczonych kolumn lub wykorzystania ich jako celu treningowego. Powyższe dotyczyło zawodów Kaggle, więc nie było danych docelowych dla xgtest(są wstrzymywane przez organizatorów).


Próbując w ten sposób xgb.DMatrix(X_train.values, y_train.values), widzęTypeError: can not initialize DMatrix from dict
javadba

@javadba: Na pewno zadziałało w 2016 roku na mojej maszynie! Obecnie nie mogę tego przetestować, ponieważ nie mogę zainstalować xgboost. Możliwe, że zmienił się kod biblioteki. Bardziej prawdopodobne jest, że w twojej sytuacji jest coś innego. Znalazłem stackoverflow.com/questions/35402461/…, ale to po prostu radzi ci zrobić dokładnie to, co robi ta odpowiedź (tj. Użyć .values)
Neil Slater


7

Możesz teraz używać Pandas DataFrames bezpośrednio z XGBoost. Zdecydowanie działa z xgboost 0.81.

Na przykład gdzie X_train, X_val, y_train i y_val to 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))

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.