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.
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:
Bạn có thể sử dụng .values
phươ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).
.values
)
Có một số tin tốt là có một thư viện pandas_ml
hỗ trợ XGBoost có lẽ điều này sẽ hợp lý hóa quy trình làm việc một cách đơn giản.
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))
xgb.DMatrix(X_train.values, y_train.values)
tôi đang thấyTypeError: can not initialize DMatrix from dict