เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การปรับ 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(____.____))
แก้ไขและรันโค้ด