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 .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).
.values)
Jest dobra wiadomość, że jest biblioteka pandas_mlobsł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