RandomizedSearchCV ใน Scikit Learn
มาฝึกสร้างออบเจ็กต์ RandomizedSearchCV ด้วย Scikit Learn กัน
กริดไฮเปอร์พารามิเตอร์ควรครอบคลุม max_depth (ค่าทั้งหมดตั้งแต่ 5 ถึง 25 รวมค่าปลาย) และ max_features ('auto' และ 'sqrt')
ตัวเลือกที่ต้องการสำหรับออบเจ็กต์ RandomizedSearchCV มีดังนี้:
- ใช้
RandomForestClassifierเป็น Estimator โดยตั้งค่าn_estimatorsเป็น 80 - Cross validation แบบ 3-fold (
cv) - ใช้
roc_aucในการ score โมเดล - ใช้ 4 คอร์สำหรับการประมวลผลแบบขนาน (
n_jobs) - กำหนดให้ refit โมเดลที่ดีที่สุดและส่งคืน training scores
- สุ่มเพียง 5 โมเดลเพื่อประสิทธิภาพ (
n_iter)
ชุดข้อมูล X_train และ y_train ถูกโหลดไว้ให้แล้ว
จำไว้ว่าไฮเปอร์พารามิเตอร์ที่ถูกเลือกจะอยู่ใน cv_results_ โดยมีคอลัมน์แยกสำหรับแต่ละไฮเปอร์พารามิเตอร์ ตัวอย่างเช่น คอลัมน์สำหรับไฮเปอร์พารามิเตอร์ criterion คือ param_criterion
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การปรับ Hyperparameter ใน Python
คำแนะนำการฝึกหัด
- สร้างกริดไฮเปอร์พารามิเตอร์ตามที่ระบุไว้ในบริบทข้างต้น
- สร้างออบเจ็กต์
RandomizedSearchCVตามที่กำหนดไว้ในบริบทข้างต้น - Fit ออบเจ็กต์
RandomizedSearchCVกับข้อมูล training - เข้าถึงออบเจ็กต์
cv_results_เพื่อแสดงค่าที่กระบวนการสร้างโมเดลเลือกสำหรับไฮเปอร์พารามิเตอร์ทั้งสอง (max_depthและmax_features)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the parameter grid
param_grid = {'max_depth': list(range(____,26)), 'max_features': [____ , ____]}
# Create a random search object
random_rf_class = RandomizedSearchCV(
estimator = ____(n_estimators=____),
param_distributions = ____, n_iter = ____,
scoring=____, n_jobs=____, cv = ____, refit=____, return_train_score = ____ )
# Fit to the training data
____.fit(X_train, y_train)
# Print the values used for both hyperparameters
print(random_rf_class.cv_results_[____])
print(random_rf_class.cv_results_[____])