XGBoost: Fit/Predict
ถึงเวลาสร้างโมเดล XGBoost ตัวแรกแล้ว! อย่างที่ Sergey แสดงให้ดูในวิดีโอ คุณสามารถใช้รูปแบบ .fit() / .predict() ของ scikit-learn ที่คุ้นเคยอยู่แล้วในการสร้างโมเดล XGBoost ได้เลย เนื่องจากไลบรารี xgboost มี API ที่รองรับ scikit-learn!
ในแบบฝึกหัดนี้ จะทำงานกับข้อมูล churn ชุดข้อมูลนี้มีข้อมูลสมมติจากแอปบริการรถรับส่ง ซึ่งบันทึกพฤติกรรมของผู้ใช้ในเดือนแรกที่ใช้งานแอปในเมืองสมมติต่าง ๆ รวมถึงข้อมูลว่าผู้ใช้ยังคงใช้บริการอยู่หรือไม่หลังจากสมัครครบ 5 เดือน โดยโหลดข้อมูลไว้ให้แล้วใน DataFrame ชื่อ churn_data — ลองสำรวจดูใน Shell ได้เลย!
เป้าหมายคือการใช้ข้อมูลจากเดือนแรกเพื่อทำนายว่าผู้ใช้จะยังคงใช้บริการต่อไปหรือไม่เมื่อครบ 5 เดือน ซึ่งเป็นรูปแบบทั่วไปของปัญหาการทำนาย churn โดยจะแบ่งข้อมูลออกเป็นชุดฝึกและชุดทดสอบ ฝึกโมเดล xgboost ขนาดเล็กบนชุดฝึก แล้วประเมินประสิทธิภาพบนชุดทดสอบด้วยการคำนวณค่าความแม่นยำ
นำเข้า pandas และ numpy ไว้เป็น pd และ np แล้ว และนำเข้า train_test_split จาก sklearn.model_selection ไว้เรียบร้อยแล้ว นอกจากนี้ยังได้สร้าง array สำหรับ features และ target ไว้เป็น X และ y แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Extreme Gradient Boosting with XGBoost
คำแนะนำการฝึกหัด
- นำเข้า
xgboostเป็นxgb - สร้างชุดข้อมูลสำหรับฝึกและทดสอบ โดยใช้ข้อมูล 20% สำหรับการทดสอบ และกำหนด
random_stateเป็น123 - สร้าง
XGBoostClassifierเป็นxg_clโดยใช้xgb.XGBClassifier()กำหนดn_estimatorsเป็น10และobjectiveเป็น'binary:logistic'ยังไม่ต้องกังวลเกี่ยวกับความหมายของพารามิเตอร์เหล่านี้ตอนนี้ จะได้เรียนรู้ในบทต่อ ๆ ไป - ฝึก
xg_clด้วยชุดข้อมูลฝึก (X_train, y_train) โดยใช้เมธอด.fit() - ทำนาย label ของชุดทดสอบ (
X_test) โดยใช้เมธอด.predict()แล้วกด 'ส่งคำตอบ' เพื่อดูค่าความแม่นยำ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import xgboost
____
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)
# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)
# Fit the classifier to the training set
____
# Predict the labels of the test set: preds
preds = ____
# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))