Pandasrame cho DMatrix


12

Tôi đang cố gắng chạy xgboost trong scikit learn. Và tôi chỉ sử dụng Pandas để tải dữ liệu vào dataframe. Làm thế nào tôi có thể sử dụng gấu trúc df với xgboost. Tôi bối rối bởi thói quen DMatrix cần thiết để chạy xgboost algo.

Câu trả lời:


19

Bạn có thể sử dụng .valuesphương pháp của dataframe để truy cập dữ liệu thô khi bạn đã thao tác các cột khi bạn cần chúng.

Ví dụ

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)

Rõ ràng bạn có thể cần phải thay đổi cột nào bạn thả hoặc sử dụng làm mục tiêu đào tạo. Trên đây là cho một cuộc thi Kaggle, vì vậy không có dữ liệu mục tiêu cho xgtest(nó được giữ lại bởi ban tổ chức).


Khi thử theo cách này xgb.DMatrix(X_train.values, y_train.values)tôi đang thấyTypeError: can not initialize DMatrix from dict
javadba

@javadba: Nó chắc chắn hoạt động vào năm 2016 trên mcahine của tôi! Tôi không thể kiểm tra điều này vào lúc này vì tôi không thể cài đặt xgboost. Có thể một số mã thư viện đã thay đổi. Nhiều khả năng có một cái gì đó khác nhau về tình huống của bạn. Tôi đã tìm thấy stackoverflow.com/questions353402461/ nhưng điều đó chỉ đơn giản là khuyên bạn nên làm chính xác những gì câu trả lời này (nghĩa là sử dụng .values)
Neil Slater


7

Bây giờ bạn có thể sử dụng Pandas DataFrames trực tiếp với XGBoost. Chắc chắn hoạt động với xgboost 0.81.

Ví dụ: trong đó X_train, X_val, y_train và y_val là 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))

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.