Machine Learning › Feature engineering

ชุดฝึกท้าย module: Feature engineering

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

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

คอลัมน์ city มีกี่หมวด และ pd.get_dummies(df["city"], drop_first=True) ได้กี่คอลัมน์ เก็บไว้ในตัวแปร n_cities, n_dummy_drop

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

เมืองที่มีลูกค้ามากที่สุด (string) เก็บไว้ในตัวแปร top_city

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

หมวดทั้งหมดของ first_payment_method ตามที่ OrdinalEncoder รู้จัก (list เรียงตามตัวอักษร) เก็บไว้ในตัวแปร payment_cats

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

fit OneHotEncoder(handle_unknown="ignore") บนลูกค้าที่ไม่ใช่ Hat Yai แล้ว transform ลูกค้า Hat Yai: เก็บผลรวมของค่าทั้งหมดหลัง transform ไว้ในตัวแปร unseen_sum

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

mean และ std (scale_) ของ days_to_first_order ที่ StandardScaler เรียนรู้จากชุด train ปัด 3 ตำแหน่ง เก็บไว้ในตัวแปร train_mean, train_scale

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

หลังจำลอง NaN (customer_id หาร 10 ลงตัว → days_to_first_order เป็น NaN) มีกี่แถวที่หาย และมัธยฐานที่ SimpleImputer เรียนรู้จาก train คือเท่าไร เก็บไว้ในตัวแปร n_missing, train_median

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

KNN (n_neighbors=15) บน feature ตัวเลข 6 ตัว: accuracy บนชุดทดสอบเมื่อไม่ scale และเมื่อ scale (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร knn_acc_unscaled, knn_acc_scaled

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

fit pipeline (StandardScaler + OneHotEncoder + LogisticRegression) บน train: จำนวน feature หลังแปลง และ ROC-AUC บนชุดทดสอบ (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร n_features_out, test_auc

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

ค่าเฉลี่ยและ std ของ ROC-AUC จาก 5-fold StratifiedKFold(shuffle=True, random_state=42) ทั้ง pipeline (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร cv_auc_mean, cv_auc_std

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

fit pipeline บน train แล้วทำนายความน่าจะเป็นที่จะซื้อซ้ำของลูกค้าใหม่ที่มาจากช่องทาง promo และ organic (ฟังก์ชัน new_customer ที่ให้ไว้ ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร proba_promo, proba_organic

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

skew ของ first_order_value ก่อนและหลัง np.log1p ปัด 3 ตำแหน่ง เก็บไว้ในตัวแปร skew_raw, skew_log

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

อัตราซื้อซ้ำของลูกค้าที่ fast_first (days_to_first_order <= 3) เป็น 1 และ 0 ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร repeat_fast, repeat_slow

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

อัตราซื้อซ้ำเฉลี่ยแยกตามไตรมาสที่สมัคร (signup_q = (signup_month - 1) // 3 + 1) ปัด 4 ตำแหน่ง เป็น Series เก็บไว้ในตัวแปร result

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

CV AUC เฉลี่ยของ baseline (ใช้ฟังก์ชัน cv_auc ที่ให้ไว้) และเมื่อเพิ่ม fast_first เข้า feature ตัวเลข (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร auc_base, auc_with_fast

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

target encoding: อัตราซื้อซ้ำของ promo จากชุด train เท่านั้น และผลต่างเมื่อคำนวณจากข้อมูลทั้งชุด (full − train) ปัด 4 ตำแหน่ง เก็บไว้ในตัวแปร te_train_promo, te_gap

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

ค่าเฉลี่ย accuracy จาก 5-fold CV เดียวกันของทั้ง pipeline และจำนวนขั้นตอนของ pipeline (ปัด 4 ตำแหน่ง) เก็บไว้ในตัวแปร cv_acc_mean, n_steps