将启发式转化为分类器
您会惊讶于启发式方法竟然如此有用。因此,您决定把"唯一端口过多很可疑"这个启发式,当作一个独立的分类器来使用。做法是:以不良源计算机(其标签为 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, ____))