把啟發式轉成分類器
你對啟發式方法竟然這麼有幫助感到意外。於是你決定把「不同連接埠太多很可疑」這個啟發式,直接當成一個分類器來使用。做法是:以不良來源電腦(其標籤為 True)所使用的不同連接埠數量的平均值,作為每個來源的連接埠數門檻。資料集已預先載入並切分為訓練與測試,因此記憶體中已有 X_train、X_test、y_train 和 y_test。你也已匯入 accuracy_score(),以及將 numpy 匯入為 np。說明一下:這個練習你不會訓練任何 scikit-learn 的分類器,而是要明確地定義你自己的分類規則!
本練習屬於課程
在 Python 設計機器學習工作流程
練習說明
- 從
X_train子集化出所有不良主機,形成新資料集X_train_bad。請注意,y_train是布林陣列。 - 計算不良主機在
unique_ports欄位的平均值,並存成avg_bad_ports。 - 現在考慮一個分類器:凡是
unique_ports大於avg_bad_ports的樣本,一律預測為正類。將此分類器在測試資料上的預測存到新變數pred_port。 - 使用
accuracy_score()計算此分類器在測試資料上的準確率。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create a new dataset X_train_bad by subselecting bad hosts
X_train_bad = ____[____]
# Calculate the average of unique_ports in bad examples
avg_bad_ports = np.____(____['unique_ports'])
# Label as positive sources that use more ports than that
pred_port = ____['unique_ports'] > ____
# Print the accuracy of the heuristic
print(____(y_test, ____))