Machine Learning › พื้นฐาน ML และ scikit-learn

ชุดฝึกท้าย module: พื้นฐาน ML และ scikit-learn

โจทย์คละหัวข้อทั้ง module โดยไม่บอกว่าต้องใช้เทคนิคไหน ให้เลือกวิธีเองเหมือนตอนทำงานจริง

🟢 พื้นฐานยังไม่ได้ทำ

ตาราง ml_customers.csv มีกี่แถวและกี่คอลัมน์ เก็บไว้ในตัวแปร n_rows, n_cols

🟢 พื้นฐานยังไม่ได้ทำ

สัดส่วนลูกค้าที่ซื้อซ้ำ (repeated = 1) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร repeat_rate

🟢 พื้นฐานยังไม่ได้ทำ

แบ่ง train/test (test_size=0.25, random_state=42, stratify=y) แล้วเก็บจำนวนแถว train และ test ไว้ในตัวแปร n_train, n_test

🟢 พื้นฐานยังไม่ได้ทำ

accuracy ของ majority baseline บนชุดทดสอบ ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร baseline_acc

🟢 พื้นฐานยังไม่ได้ทำ

accuracy ของ LogisticRegression(max_iter=2000) บนชุดทดสอบ ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร test_acc

🟡 ประยุกต์ยังไม่ได้ทำ

โจทย์ regression (target = first_order_value, split 75/25 random_state=42 ไม่ stratify): MAE ของ baseline ที่ทายค่าเฉลี่ย y_train ปัด 2 ตำแหน่ง เก็บไว้ในตัวแปร baseline_mae

🟡 ประยุกต์ยังไม่ได้ทำ

LinearRegression จากโจทย์ในข้อ p6: MAE และ R² บนชุดทดสอบ (MAE ปัด 2 ตำแหน่ง, R² ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร model_mae, r2

🟡 ประยุกต์ยังไม่ได้ทำ

โมเดลทำนายซื้อซ้ำ (LogisticRegression บน split มาตรฐาน): precision และ recall บนชุดทดสอบ ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร precision, recall

🟡 ประยุกต์ยังไม่ได้ทำ

ROC-AUC ของโมเดลเดียวกัน (ใช้ความน่าจะเป็น) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร auc

🟡 ประยุกต์ยังไม่ได้ทำ

จำนวนลูกค้าในชุดทดสอบที่โมเดลทำนายว่าจะซื้อซ้ำเมื่อใช้เกณฑ์ 0.7 เก็บไว้ในตัวแปร n_pos_07

🟡 ประยุกต์ยังไม่ได้ทำ

coefficient ของ channel_promo และ odds ratio (exp ของ coefficient) ปัด 3 ตำแหน่ง เก็บไว้ในตัวแปร coef_promo, odds_ratio_promo

🔴 ท้าทายยังไม่ได้ทำ

เพิ่ม feature "จำนวนออเดอร์ทั้งหมดของลูกค้า" (นับจาก data/orders.csv) แล้วเทรนใหม่บน split แบบเดิม: accuracy บนชุดทดสอบ เก็บไว้ในตัวแปร leaky_acc

🔴 ท้าทายยังไม่ได้ทำ

โจทย์ทำนายออเดอร์แรกที่ถูกยกเลิก: accuracy ของการทาย "ไม่ยกเลิก" ทุกแถว และ recall ของ LogisticRegression ปกติบนชุดทดสอบ (ปัด always0_acc 4 ตำแหน่ง) เก็บไว้ในตัวแปร always0_acc, cancel_recall

🔴 ท้าทายยังไม่ได้ทำ

โจทย์เดียวกับ p13 แต่ใช้ class_weight="balanced": recall ของคลาสยกเลิกบนชุดทดสอบ ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร recall_bal

🔴 ท้าทายยังไม่ได้ทำ

DecisionTreeClassifier(random_state=42) ไม่จำกัดความลึกบน split มาตรฐานของโจทย์ซื้อซ้ำ: train accuracy และช่องว่าง (train − test) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร full_train_acc, gap_full

🔴 ท้าทายยังไม่ได้ทำ

5-fold CV (KFold shuffle, random_state=42, X และ y ทั้งชุด) ค่าเฉลี่ย accuracy ของ DecisionTreeClassifier(max_depth=3, random_state=42) และของ LogisticRegression(max_iter=2000) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร depth3_cv_mean, logreg_cv_mean