การวัดความแม่นยำ
ในแบบฝึกหัดนี้ จะได้ฝึกใช้ learning API ของ XGBoost ผ่านความสามารถ cross-validation ที่มีอยู่ในตัว ดังที่ Sergey อธิบายในวิดีโอก่อนหน้า XGBoost ได้รับการยกย่องด้านประสิทธิภาพและความเร็ว เนื่องจากใช้โครงสร้างข้อมูลที่ปรับแต่งมาโดยเฉพาะสำหรับชุดข้อมูล ซึ่งเรียกว่า DMatrix
ในแบบฝึกหัดที่แล้ว ชุดข้อมูล input ถูกแปลงเป็น DMatrix โดยอัตโนมัติ แต่เมื่อใช้ออบเจกต์ cv ของ xgboost จะต้องแปลงข้อมูลให้เป็น DMatrix อย่างชัดเจนก่อน ดังนั้นในแบบฝึกหัดนี้จึงต้องทำขั้นตอนนั้นก่อน แล้วจึงรัน cross-validation บน churn_data
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Extreme Gradient Boosting with XGBoost
คำแนะนำการฝึกหัด
- สร้าง
DMatrixชื่อchurn_dmatrixจากchurn_dataโดยใช้xgb.DMatrix()โดยที่ฟีเจอร์อยู่ในXและ label อยู่ในy - ทำ cross-validation แบบ 3-fold โดยเรียก
xgb.cv()โดยdtrainคือchurn_dmatrix,paramsคือ dictionary ของพารามิเตอร์,nfoldคือจำนวน fold ของ cross-validation (3),num_boost_roundคือจำนวนต้นไม้ที่ต้องการสร้าง (5) และmetricsคือเมตริกที่ต้องการคำนวณ (ในที่นี้คือ"error"ซึ่งจะนำไปแปลงเป็นค่าความแม่นยำต่อไป)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the DMatrix from X and y: churn_dmatrix
churn_dmatrix = ____(data=____, label=____)
# Create the parameter dictionary: params
params = {"objective":"reg:logistic", "max_depth":3}
# Perform cross-validation: cv_results
cv_results = ____(dtrain=____, params=____,
nfold=____, num_boost_round=____,
metrics="____", as_pandas=____, seed=123)
# Print cv_results
print(cv_results)
# Print the accuracy
print(((1-cv_results["test-error-mean"]).iloc[-1]))