目錄
使用說明
怎麼用? 收到真正的作業資料後,把資料檔(例如
train.csv、test.csv)放進專案資料夾,
在 Cursor / VS Code 的 AI 對話框中,貼上下方任一段 Prompt 即可。
重要:資料結構未知。 下方 Prompt 已改成「不預設任何欄位名稱」,會要求 AI 先自動偵測:標籤欄、類別/數值欄、髒資料、無意義欄位等。
文中提到的銀行客戶流失(churn、country、age…)只是舉例參考,AI 應以實際資料為準,不要硬套。預期輸出為二元(0/1);若實際為多類別,Prompt 也已要求 AI 自動調整。
想拿冠亞季軍? 光靠基本流程只能「拿滿作業分」,要在排行榜奪牌,請務必:
① 先確認官方評分指標(Accuracy / F1 / AUC…,整條流程對準它最佳化)→ 用「一鍵完整版」建好底 →
② 再貼「⑨ 奪冠強化」(特徵工程 + XGBoost/LightGBM + 交叉驗證 OOF + 門檻調校 + 模型融合)。
冠軍分數多半來自特徵工程與模型融合,不是單一模型。
- 方式一(推薦懶人):直接用「一鍵完整版」,一次產出整個專案。
- 方式二(推薦學習):依 ①~⑧ 分段貼上,每一步看懂再進行下一步,最能學到東西也最容易除錯。
- 方式三(衝獎項):先跑「一鍵完整版」,再加上 ⑨ 奪冠強化,把分數推到最高。
- 每個框右上角都有 「複製」 按鈕,點一下即可複製整段文字。
- 貼上前,建議在 Prompt 開頭補一句:「這是我實際的資料,請以此為準」,並把 作業說明 / 資料欄位表 / 官方評分指標 一起附給 AI,效果最佳。
一鍵完整版 Prompt(One-Shot)
貼上後 AI 會一次完成:資料清理 → 切分 → 多模型比較 → 評估 → 調參 → 預測輸出 → 報告與 README。適合想快速拿到完整成果者。
完整專案一次產出
涵蓋所有評分重點
涵蓋所有評分重點
你是一位資深機器學習工程師。請「直接、完整地幫我做完」這份分類作業,並產出可直接繳交的所有檔案,不要只給教學或步驟建議、不要留 TODO 給我自己補。 【重要:資料結構未知】 我稍後會把實際的資料檔(例如 train.csv、test.csv)與作業說明放進專案。請「以實際資料為準」,不要預設任何欄位名稱。請先用程式自動偵測: - 標籤欄(label):若作業有指定就用指定的;否則自動推斷(通常是 test 沒有、train 才有的那一欄,或名稱像 target/label/churn/y)。預期為「二元分類(0/1)」;若偵測到是多類別,請自動改用適合多類別的設定與指標。 - 每一欄的型別(數值 / 類別)、缺失值、以及「異常值或雜訊」。 (下述銀行客戶流失 churn、country、age、credit_score… 只是格式參考範例,切勿硬套到實際資料。) 【環境與硬性規定】 - 使用 Python 3.12,套件:pandas、numpy、scikit-learn、matplotlib、seaborn。 - 程式必須「可重現」:固定 random_state=42,檔首集中管理 import 與路徑。 - 全部程式碼註解與報告文字一律使用「繁體中文」。 【最重要:先對準評分指標】 0. 先從作業說明找出「官方排行榜的評分指標」(例如 Accuracy / F1 / macro-F1 / ROC-AUC)。整條流程、調參的 scoring、以及決策門檻,全部要對準「這個指標」最佳化。若說明沒寫,請合理推斷並在報告中註明假設。 【請直接完成以下全部工作,輸出成可執行的 .py 檔案,並實際跑出結果】 1. 資料探索(EDA):shape、head、info、describe、逐欄缺失值、標籤 value_counts(判斷是否類別不平衡),並存圖。 2. 資料清理(Data Cleansing):自動找出並處理——非數字符號/亂碼(清洗成數值或標記無效)、不合理數值(如負年齡)、缺失值(數值補中位數、類別補眾數)、以及明顯無意義/雜訊欄位(全隨機、與標籤無關、或像 index、id 的欄位)自動移除。對 test 套用「與 train 完全相同」的清理,統計量只從 train 計算(避免資料洩漏)。 3. 特徵工程(Feature Engineering):除了基本編碼(類別欄用 One-Hot 或目標編碼)與數值標準化外,請「主動衍生新特徵」以提升分數,例如:欄位間比率/差值、數值分箱(binning)、群組聚合統計、多項式/交互特徵等;並用交叉驗證比較加了特徵後分數是否上升,保留有用的、砍掉沒用的。(特徵工程通常是冠軍分數的最大來源。) 4. 驗證策略(Validation):以 StratifiedKFold(5 折、random_state=42)做交叉驗證,產生 out-of-fold(OOF) 預測作為「可信的本地分數」,避免只用單次 train_test_split 造成過擬合。所有前處理/編碼都要放進 CV 折內或用 Pipeline,避免資料洩漏。 5. 模型選擇(Model Selection):公平比較多個模型:KNN、GaussianNB、DecisionTree、SVC、RandomForest、Bagging、AdaBoost、GradientBoosting;並「務必加入」高效梯度提升模型:XGBoost、LightGBM、CatBoost。若環境不允許安裝額外套件,改用 sklearn 內建 HistGradientBoostingClassifier(效能接近)。用表格依「官方指標」排序彙整所有模型的 CV 分數。 6. 模型評估(Model Evaluation):輸出 accuracy、precision、recall、F1、classification_report、confusion matrix,畫 ROC 並算 AUC。若指標為 F1/accuracy,請用 OOF 預測「調校最佳決策門檻(threshold)」,不要固定用 0.5。 7. 調參與過擬合處理:對最強的模型用 RandomizedSearchCV 或 Optuna(cv=StratifiedKFold、scoring=官方指標)調關鍵超參數(n_estimators、max_depth、learning_rate、min_child_weight/min_samples_leaf、subsample、colsample、reg_lambda 等);比較訓練 vs OOF 分數判斷過擬合並用正則化/early stopping 抑制。處理類別不平衡(class_weight / scale_pos_weight,並用 CV 決定是否用 SMOTE)。 8. 模型融合(Ensembling):把表現最好的幾個模型用 StackingClassifier 或機率加權平均(blending) 融合;並用「多個隨機種子平均」降低變異。用 OOF 分數證明融合優於單一模型。 9. 模型預測與輸出:挑「分散押注」的兩個最佳方法各出一份繳交檔——建議一份為「單一最強調參模型(如 LightGBM/XGBoost)」,另一份為「Stacking/Blending 融合模型」。用 OOF 調得的門檻做最終預測。檔名依作業要求(若無規定用 GID_submission_1_method.csv;GID 先用變數佔位)。輸出格式(欄位名、順序、有無 index、id 對應)請嚴格比對作業說明。 10. 交付文件: - 繁體中文書面報告(任務目標、解題流程、方法選擇理由、所用方法、實驗評估、實驗結果、結論);務必包含「消融實驗表(ablation)」顯示每個步驟(清理→特徵→調參→融合)帶來的 CV 分數提升,以及 SHAP/feature_importances 的特徵重要性與商業解讀。輸出可轉 PDF(Report_GID),封面含全體組員姓名與學號(先用【請填入】佔位)。 - README.md:隊伍編號、學校名稱、指導老師、全體組員、所有繳交檔案的簡短說明與執行方式,並列出所需套件版本(含 requirements.txt)。 請先規劃檔案結構,接著「一次把每個檔案的完整程式碼寫出來並執行」,最後附上「從頭執行到產生繳交檔」的指令。若中途遇到錯誤,請自行修正到能成功跑完為止。
① 專案設定與資料探索(EDA)
環境設定 + 資料探索
先看懂資料長什麼樣
先看懂資料長什麼樣
請用 Python 3.12(pandas、numpy、matplotlib、seaborn、scikit-learn)直接幫我完成一個二元分類專案的第一步。資料結構未知,請以我專案內的實際檔案為準,不要預設欄位名稱。全部註解用繁體中文,固定 random_state=42。 請建立並執行 explore.py: 1. 讀入 train 與 test 資料檔(自動找出檔案)。 2. 印出兩份資料的 shape、head()、info()、describe(include='all')。 3. 自動推斷「標籤欄」:優先用作業指定;否則取「train 有、test 沒有」的欄位,或名稱像 target/label/y 的欄位。印出它的 value_counts()(含比例),判斷是否類別不平衡。 4. 逐欄計算缺失值數量與比例;自動判斷每欄是數值型還是類別型。 5. 自動掃描「疑似髒資料」:數值欄裡的非數字符號/亂碼、不合理極端值、以及疑似無意義欄位(幾乎唯一值的 id、與標籤幾乎無關或全隨機的欄位)。把發現條列成繁體中文。 6. 用 seaborn/matplotlib 畫出:標籤分布圖、數值特徵直方圖、類別特徵計數圖,存成 png。 最後用繁體中文總結「資料有哪些問題、下一步清理計畫」。
② 資料清理(Data Cleansing)
處理髒資料與雜訊欄位
評分重點 1
評分重點 1
接續同一個專案。請直接建立並執行 clean_data.py,寫一個通用、可重複使用的 clean(df, ...) 函式,對 train 與 test 做「完全一致」的清理。資料結構未知,請自動偵測處理,不要寫死欄位名稱。全部註解用繁體中文: 1. 數值欄位:把夾雜的非數字符號/亂碼(如 '~'、'!!!'、'@@@' 等)清掉後嘗試轉成數值;無法轉換者設為 NaN。 2. 不合理數值:自動偵測明顯異常(如應為正數卻出現負值、離群極端值),轉成 NaN。 3. 缺失值:數值欄用中位數補、類別欄用眾數補。 4. 類別欄位:亂碼/無效類別值改成眾數或 "Unknown"。 5. 無意義/雜訊欄位自動移除:例如幾乎每列都唯一的 id 欄、名稱像 index/Unnamed 的欄、與標籤相關性極低或全隨機的欄位(請列出被移除的欄位與理由)。 6. 重要:為避免資料洩漏(data leakage),所有補值統計量(中位數、平均、眾數)與被移除欄位清單都只從「訓練資料」決定,再原封不動套用到 test。 7. 回傳清理後的 DataFrame,並印出清理前後的缺失值與欄位對照。 (以上規則以實際資料為準;銀行 churn 資料只是範例。)請直接產出程式碼並示範產生 train_clean 與 test_clean。
③ 特徵工程與訓練/測試切分
編碼、標準化、Train-Test Split
評分重點 2
評分重點 2
接續同一個專案,使用清理後的資料。請直接建立並執行 features.py,全部繁體中文註解(不要寫死欄位名稱,自動處理): 1. 特徵/標籤分離:y = 前面偵測到的標籤欄;X = 其餘欄位。 2. 自動找出類別欄位做編碼(LabelEncoder 或 One-Hot,二擇一並簡述理由);數值欄位用 StandardScaler(或 MinMaxScaler)標準化。強調 encoder 與 scaler 只能 fit 在訓練資料,再 transform 到驗證集與 test,以避免資料洩漏。 3. 用 train_test_split 切出訓練集與驗證集:test_size=0.2、random_state=42、二元分類時 stratify=y。簡述為何 stratify、為何固定 random_state。 4. 印出切分後各集合形狀與標籤比例,確認正確。 5. 用 joblib 把 encoder 與 scaler 存起來,方便之後對 test 做完全相同的轉換。 請直接產出完整程式碼。
④ 模型選擇(Model Selection)
多模型比較(含集成方法)
評分重點 3
評分重點 3
接續同一個專案。請直接建立並執行 train_models.py,用相同的訓練集公平地訓練並比較多個分類模型,全部繁體中文註解: 必含模型: - KNeighborsClassifier(KNN) - GaussianNB(單純貝氏) - DecisionTreeClassifier(決策樹) - SVC(支援向量機,probability=True) - RandomForestClassifier(隨機森林) - BaggingClassifier - AdaBoostClassifier - GradientBoostingClassifier 要求: 1. 用一個字典存放所有模型,用迴圈統一訓練與評估,避免重複程式碼。 2. 對每個模型用 5-fold cross_val_score(scoring='f1')估計穩定表現。 3. 在驗證集上輸出每個模型的 accuracy、precision、recall、F1-score。 4. 用一個 pandas DataFrame 彙整所有模型的分數並依 F1 排序,印出比較表。 5. 用繁體中文說明「本題重點是集成方法(Ensemble)、為何集成方法通常較穩定(bagging 降變異、boosting 降偏差)」,並指出目前表現最好的前兩名。 6. 若要衝獎項,請再加入 XGBoost、LightGBM、CatBoost(無法安裝時用 sklearn 內建 HistGradientBoostingClassifier)一起比較——這些通常在表格資料上最強。
⑤ 模型評估(Model Evaluation)
完整評估指標與圖表
評分重點 4
評分重點 4
接續同一個專案。請直接建立並執行 evaluate.py,對前兩名模型做深入評估,全部繁體中文說明: 1. 產生並印出 classification_report(precision/recall/f1)。 2. 畫出 confusion matrix(seaborn heatmap),並用繁體中文解讀 TP/FP/FN/TN 的實際意義(依實際任務情境說明,例如漏判正類的代價)。 3. 畫出 ROC 曲線並計算 AUC。 4. 說明在「類別不平衡」情境下,為何 F1-score / recall / AUC 比單純 accuracy 更重要。 5. 把所有圖表存成 png,並寫一段繁體中文「結果解讀」,比較兩名模型優缺點與最終選擇理由。
⑥ 調參與過擬合處理
GridSearchCV 調參 + 抑制過擬合
加分:展示調參能力
加分:展示調參能力
接續同一個專案。請直接建立並執行 tuning.py,對表現最好的 1~2 個集成模型(例如 RandomForest、GradientBoosting)做超參數調校,全部繁體中文說明: 1. 用 GridSearchCV(cv=5、scoring='f1')搜尋關鍵超參數: - RandomForest:n_estimators、max_depth、min_samples_leaf、max_features - GradientBoosting / AdaBoost:n_estimators、learning_rate、max_depth 2. 印出 best_params_ 與 best_score_,並用最佳參數重新訓練模型。 3. 過擬合(Overfitting)診斷:比較「訓練集分數」與「驗證集分數」的差距,用繁體中文說明差距太大代表過擬合。 4. 示範用 max_depth、min_samples_leaf、ccp_alpha(成本複雜度剪枝)等方式抑制過擬合,並畫出不同 max_depth 下訓練/驗證分數的變化曲線。 5. 用繁體中文總結調參前後 F1 的提升與最終選定的參數。
⑦ 模型預測與繳交檔輸出
預測 test.csv 並輸出兩份 submission
評分重點 5
評分重點 5
接續同一個專案。請直接建立並執行 predict.py,用最終選定的「最佳兩個方法(以集成方法為主)」對 test 資料做預測並輸出繳交檔,全部繁體中文說明: 1. 用先前存下的 encoder 與 scaler,對清理後的 test 做「與訓練時完全相同」的轉換。 2. 分別用兩個最佳模型產生預測(二元輸出 0/1;若題目要機率或多類別,請自動配合)。 3. 依「作業說明要求的格式」輸出兩個 CSV;若無明確規定,檔名用 GID_submission_1_method.csv - GID 為隊伍編號,先用變數 GID = "G01" 佔位。 - method 換成模型名稱,例如 G01_submission_1_RandomForest.csv、G01_submission_2_GradientBoosting.csv。 4. 確認輸出格式與作業要求一致(欄位名、順序、有無 index、id 對應),並印出前幾列檢查。 5. 用繁體中文說明從讀檔到產出繳交檔的完整重現步驟。
⑧ 報告、README 與封面
產出繁體中文報告 + README
符合繳交規範
符合繳交規範
接續同一個專案。請幫我產出兩份繳交文件,內容全部使用繁體中文: 一、書面報告(輸出成 Markdown,並說明如何轉成 Report_GID.pdf),需包含以下段落: 1. 封面:專案名稱、隊伍編號、學校名稱、指導老師、全體組員姓名與學號。 2. 任務目標:說明銀行客戶流失預測的商業意義。 3. 解題流程:逐步描述資料前處理 → 模型選擇 → 訓練 → 評估 → 最終預測。 4. 方法選擇的理由:為什麼選這些前處理與模型(尤其集成方法)、為什麼用這些調參步驟。 5. 所用方法:列出使用到的演算法與工具。 6. 實驗評估:說明評估指標(F1、AUC 等)與驗證方式(train-test split、交叉驗證)。 7. 實驗結果:用表格呈現各模型分數,附上混淆矩陣、ROC 圖,並解讀。另外加一張「消融實驗表(ablation)」,顯示資料清理→特徵工程→調參→模型融合每一步各帶來多少 CV 分數提升;以及 SHAP / feature_importances 的特徵重要性圖與商業解讀。 8. 結論:最終選擇、成效、限制與可改進方向。 二、README.md,包含:隊伍編號、學校名稱、指導老師、全體組員姓名、每個繳交檔案(.py、兩份 submission.csv、報告)的簡短繁體中文說明與執行方式,並附 requirements.txt(含套件版本)。 請直接產生這兩份文件的完整內容,隊伍與組員資訊先用【請填入】佔位。
⑨ 奪冠強化(進階必看)
在「一鍵完整版」或 ①~⑧ 跑完後,貼上這段把分數推到排行榜前段。這一段涵蓋特徵工程、強模型、穩健交叉驗證、門檻調校、模型融合——競賽奪牌的關鍵幾乎都在這裡。
競賽級強化流程(衝冠亞季軍)
特徵工程 + XGBoost/LightGBM + OOF + 融合
特徵工程 + XGBoost/LightGBM + OOF + 融合
接續同一個專案。目標是「在官方排行榜拿到前段名次」。請直接建立並執行 competition.py,把整個管線升級到競賽等級,全部繁體中文說明,固定 random_state 並盡量 seed everything: 0. 先確認官方評分指標(Accuracy / F1 / macro-F1 / ROC-AUC…),之後所有 scoring、門檻、融合都對準它。若不確定就合理推斷並註明。 1. 穩健驗證(Validation):改用 StratifiedKFold(n_splits=5,shuffle=True,random_state=42)建立交叉驗證框架,並產生每個模型的 out-of-fold(OOF) 預測,作為可信的本地分數(本地 CV 要能對應排行榜)。所有前處理/編碼一律用 sklearn Pipeline + ColumnTransformer 包起來、在每個 fold 內 fit,杜絕資料洩漏。 2. 特徵工程(Feature Engineering):主動衍生新特徵並用 CV 驗證是否有效(保留有用、砍掉沒用): - 數值:欄位間比率/差/乘積、分箱(binning)、log/開根號等轉換、離群標記。 - 類別:目標編碼(target/mean encoding,需在 CV 折內做避免洩漏)、頻率編碼、重要類別的 One-Hot、類別組合。 - 群組聚合:以某類別為 key 對數值欄做 mean/std/count 等聚合再併回。 請用「加特徵前 vs 後」的 OOF 分數證明提升。 3. 強模型(Models):訓練並比較 XGBoost、LightGBM、CatBoost、sklearn HistGradientBoostingClassifier、RandomForest(若無法安裝額外套件,全部退回 sklearn 內建的 HistGradientBoosting/RandomForest/GradientBoosting)。用早停(early stopping)避免過擬合。 4. 超參數優化(Tuning):用 Optuna(或 RandomizedSearchCV)以 StratifiedKFold + 官方指標為目標,搜尋每個強模型的關鍵超參數(learning_rate、max_depth/num_leaves、n_estimators、min_child_weight、subsample、colsample_bytree、reg_alpha、reg_lambda 等)。印出最佳參數與 OOF 分數。 5. 類別不平衡:比較 class_weight / scale_pos_weight / (謹慎使用)SMOTE 對官方指標的影響,用 CV 決定採用哪個。 6. 決策門檻調校(Threshold):若指標是 F1/accuracy 等需 0/1 的指標,請在 OOF 機率上搜尋最佳門檻(而非固定 0.5),並套用到最終預測。 7. 模型融合(Ensembling):用 StackingClassifier(以 Logistic Regression 當 meta learner)或對多個模型的 OOF 機率做加權平均(blending);也可多個 random seed 平均降低變異。用 OOF 分數證明融合優於任何單一模型。 8. 產出「分散押注」的兩份最終繳交檔:一份用單一最強的調參模型、另一份用融合模型;都套用調好的門檻,並嚴格符合作業要求的輸出格式。 9. 產出「消融實驗表」:條列 baseline → +清理 → +特徵工程 → +調參 → +融合,各步驟的 OOF 分數,證明每一步的貢獻;並用 SHAP 畫特徵重要性與解讀。 請完整寫出程式碼、實際跑出 OOF 分數與最終兩份繳交檔,若出錯請自行修正到成功。
加分技巧
追求滿分的進階要求
選用
選用
請在現有專案上再加上以下進階內容,全部繁體中文說明: 1. 處理類別不平衡:比較「class_weight='balanced'」與 SMOTE 過採樣對 F1 的影響。 2. 特徵重要性:用 RandomForest / GradientBoosting 的 feature_importances_ 畫出重要特徵長條圖,並解讀哪些欄位最影響預測結果。 3. 用 VotingClassifier 或 StackingClassifier 把多個模型組合,看能否再提升 F1。 4. 加上 Pipeline 把「前處理 + 模型」串成一條龍,避免資料洩漏並方便重現。 5. 用繁體中文補一段「錯誤分析」:看模型最常判錯哪一類客戶、可能原因。
交付前檢查清單
基本(拿滿作業分)
- 程式可從頭跑到尾且結果可重現(已固定 random_state=42)。
- train 與 test 使用「完全相同」的清理與轉換流程,且無資料洩漏。
- 已比較多個模型,並以集成方法為主選出最佳兩名。
- 評估同時看 F1、precision、recall、confusion matrix、ROC/AUC,而非只看 accuracy。
- 已展示調參與過擬合處理。
- 輸出兩份繳交 CSV,檔名符合作業要求(如 GID_submission_1_method.csv)。
- 書面報告含七大段落與封面(姓名、學號齊全),可轉成 Report_GID.pdf。
- README.md 含隊伍編號、學校、指導老師、組員與檔案說明。
- 所有報告、說明、註解均為繁體中文。
進階(衝冠亞季軍)
- 已確認並對準「官方評分指標」最佳化整條流程。
- 用 StratifiedKFold + OOF 交叉驗證(本地 CV 對得上排行榜),非單次切分。
- 有做「特徵工程」並用 CV 證明分數提升。
- 已加入 XGBoost / LightGBM / CatBoost(或 HistGradientBoosting)等強模型。
- 二元指標有做決策門檻(threshold)調校,非固定 0.5。
- 最終有做 Stacking / Blending 模型融合,並優於單一模型。
- 兩份繳交檔採「分散押注」(單一強模型 + 融合模型)。
- 報告含「消融實驗表(ablation)」與 SHAP 特徵重要性解讀。
- 附 requirements.txt,套件版本鎖定,確保評審可重現。