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.
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:
Możesz użyć metody ramki .values
danych, 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).
.values
)
Jest dobra wiadomość, że jest biblioteka pandas_ml
obsługująca XGBoost, prawdopodobnie usprawni to przepływ pracy.
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))
xgb.DMatrix(X_train.values, y_train.values)
, widzęTypeError: can not initialize DMatrix from dict