팬더 데이터 프레임-DMatrix


14

scikit learn에서 xgboost를 실행하려고합니다. 그리고 팬더 만 사용하여 데이터를 데이터 프레임에로드합니다. xgboost와 함께 pandas df를 어떻게 사용해야합니까? xgboost algo를 실행하는 데 필요한 DMatrix 루틴이 혼동됩니다.

답변:


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

XGBoost와 함께 Pandas DataFrames를 직접 사용할 수 있습니다. 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))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.