ฉันพยายามเรียกใช้ xgboost ใน scikit เรียนรู้ และฉันใช้ Pandas เพื่อโหลดข้อมูลไปยังดาต้าเฟรม ฉันควรจะใช้แพนด้า df กับ xgboost อย่างไร ฉันสับสนกับชุดคำสั่ง DMatrix ที่จำเป็นในการเรียกใช้ xgboost algo
ฉันพยายามเรียกใช้ xgboost ใน scikit เรียนรู้ และฉันใช้ Pandas เพื่อโหลดข้อมูลไปยังดาต้าเฟรม ฉันควรจะใช้แพนด้า df กับ xgboost อย่างไร ฉันสับสนกับชุดคำสั่ง DMatrix ที่จำเป็นในการเรียกใช้ xgboost algo
คำตอบ:
คุณสามารถใช้.values
วิธีการของ dataframe เพื่อเข้าถึงข้อมูลดิบเมื่อคุณจัดการคอลัมน์ตามที่คุณต้องการ
เช่น
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
(จัดขึ้นโดยผู้จัดงาน)
.values
)
มีข่าวดีบางอย่างที่มีห้องสมุดpandas_ml
ซึ่งรองรับ XGBoost ซึ่งอาจทำให้ขั้นตอนการทำงานง่ายขึ้น
ตอนนี้คุณสามารถใช้ Pandas DataFrames โดยตรงกับ XGBoost ทำงานได้อย่างสมบูรณ์กับ 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))
xgb.DMatrix(X_train.values, y_train.values)
ฉันเห็นTypeError: can not initialize DMatrix from dict