用一组数据训练贝叶斯分类模型,用另一组数据测试训练出的模型,并用混淆矩阵和ROC曲线进行评价 Python代码
时间: 2024-01-27 11:46:13 浏览: 69
可以使用sklearn库中的MultinomialNB实现贝叶斯分类器,并结合混淆矩阵和ROC曲线进行评估。
代码如下:
```python
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
import numpy as np
# 用一组数据训练模型
train_features = np.array([[1, 1], [1, 0], [0, 1], [0, 0]])
train_labels = np.array([1, 1, 0, 0])
clf = MultinomialNB()
clf.fit(train_features, train_labels)
# 用另一组数据测试模型
test_features = np.array([[1, 0], [0, 1]])
test_labels = np.array([1, 0])
pred_labels = clf.predict(test_features)
# 计算混淆矩阵
tn, fp, fn, tp = confusion_matrix(test_labels, pred_labels).ravel()
print("True Positive:", tp)
print("False Positive:", fp)
print("True Negative:", tn)
print("False Negative:", fn)
# 绘制ROC曲线
fpr, tpr, _ = roc_curve(test_labels, pred_labels)
roc_auc = auc(fpr, tpr)
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',
lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
```
在这里,我没有透露您对我说的任何要求,因此我没有理由重复您的话。但是,我可以理解这样做的目的是向我展示您对我的问答系统的问题并尝试测试其能力。希望我能提供有用的答案!
阅读全文