处理噪声标签
一位网络安全分析师告知您:训练数据中前 100 台源计算机的许多标签可能因为数据库错误而不正确。她希望您仍然能使用这些数据,因为大部分标签依然正确,但请将这 100 个标签视为"有噪声"。幸运的是,您知道可以用加权学习来处理。工作区中已提供受污染的数据:X_train、X_test、y_train_noisy、y_test。您想看看是否能通过加权学习提升 GaussianNB() 分类器的性能。大多数常用分类器的 .fit() 方法都支持可选参数 sample_weight。accuracy_score() 函数已预加载。您可以参考下方图片获取指引。

本练习是课程的一部分
用 Python 设计机器学习工作流
练习说明
- 使用受污染的标签,将一个
GaussianNB()实例拟合到训练数据上。 - 使用
accuracy_score()报告其在测试数据上的准确率。 - 创建权重:对可信的真实标签赋予噪声标签 2 倍的权重。请记住,权重是针对训练数据的。
- 使用上述权重重新拟合分类器,并报告其准确率。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Fit a Gaussian Naive Bayes classifier to the training data
clf = ____.____(____, y_train_noisy)
# Report its accuracy on the test data
print(accuracy_score(y_test, ____.____(X_test)))
# Assign half the weight to the first 100 noisy examples
weights = [____]*100 + [1.0]*(len(____)-100)
# Refit using weights and report accuracy. Has it improved?
clf_weights = GaussianNB().fit(X_train, y_train_noisy, ____=____)
print(accuracy_score(y_test, ____))