การปรับ Hyperparameter ด้วย RandomizedSearchCV
GridSearchCV อาจใช้ทรัพยากรการคำนวณสูง โดยเฉพาะเมื่อต้องค้นหาในพื้นที่ hyperparameter ขนาดใหญ่ ในกรณีนี้ RandomizedSearchCV เป็นทางเลือกที่ดีกว่า เพราะจะทดสอบเฉพาะจำนวน hyperparameter ที่กำหนดไว้จากการแจกแจงความน่าจะเป็นที่ระบุ
ชุดข้อมูล train และ test จาก diabetes_df ถูกโหลดไว้ให้แล้วในชื่อ X_train, X_test, y_train และ y_test โดย target คือ "diabetes" นอกจากนี้ยังมีโมเดล logistic regression ที่สร้างและเก็บไว้ในชื่อ logreg และตัวแปร KFold ที่เก็บไว้ในชื่อ kf
ในแบบฝึกหัดนี้ จะกำหนดช่วงของ hyperparameter และใช้ RandomizedSearchCV ซึ่ง import มาจาก sklearn.model_selection เพื่อค้นหา hyperparameter ที่เหมาะสมที่สุดจากตัวเลือกเหล่านี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ด้วย scikit-learn
คำแนะนำการฝึกหัด
- สร้าง
paramsโดยเพิ่ม"l1"และ"l2"เป็นค่าpenalty, กำหนดCเป็นช่วงของค่า float จำนวน50ค่าระหว่าง0.1ถึง1.0และกำหนดclass_weightเป็น"balanced"หรือ dictionary ที่มี0:0.8, 1:0.2 - สร้าง object Randomized Search CV โดยส่งโมเดลและพารามิเตอร์เข้าไป และตั้งค่า
cvให้เท่ากับkf - Fit
logreg_cvกับข้อมูล training - แสดงพารามิเตอร์ที่ดีที่สุดและคะแนนความแม่นยำของโมเดล
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the parameter space
params = {"penalty": ["____", "____"],
"tol": np.linspace(0.0001, 1.0, 50),
"C": np.linspace(____, ____, ____),
"class_weight": ["____", {0:____, 1:____}]}
# Instantiate the RandomizedSearchCV object
logreg_cv = ____(____, ____, cv=____)
# Fit the data to the model
logreg_cv.____(____, ____)
# Print the tuned parameters and score
print("Tuned Logistic Regression Parameters: {}".format(____.____))
print("Tuned Logistic Regression Best Accuracy Score: {}".format(____.____))