续写代码,将两种分类数据展现出来
时间: 2024-09-18 21:11:37 浏览: 40
SKchat小说续写模型
为了展示两类分类结果,我们可以添加一些可视化处理,例如使用matplotlib来绘制混淆矩阵或者简单的柱状图显示每种类别的正确与错误预测数量。下面是针对展示两类分类结果的一个简单实现:
```python
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
# 获取预测值和真实值
predictions = pred
labels = true
# 创建混淆矩阵
cm = confusion_matrix(labels, predictions)
# 混淆矩阵的标签
cm_labels = ['Ham', 'Spam']
# 绘制混淆矩阵
fig, ax = plt.subplots(figsize=(5, 5))
im = ax.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)
ax.figure.colorbar(im, ax=ax)
ax.set(
xticks=np.arange(cm.shape[1]),
yticks=np.arange(cm.shape[0]),
xticklabels=cm_labels, yticklabels=cm_labels,
ylabel="True label",
xlabel="Predicted label"
)
# 在混淆矩阵上标注数值
thresh = cm.max() / 2.
for i in range(cm.shape[0]):
for j in range(cm.shape[1]):
ax.text(j, i, format(cm[i, j], 'd'),
ha="center", va="center",
color="white" if cm[i, j] > thresh else "black")
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
rotation_mode="anchor")
plt.show()
# 显示各类别准确率的条形图
results = {'Ham': [0, 0], 'Spam': [0, 0]} # 初始化两个类别的预测正确与错误数量
for prediction, label in zip(predictions, labels):
key = 'Spam' if label == 1 else 'Ham'
results[key][prediction] += 1 # 更新对应位置的数量
barWidth = 0.3
r1 = np.arange(len(results['Ham']))
r2 = [x + barWidth for x in r1]
plt.bar(r1, results['Ham'], width=barWidth, edgecolor='white', label='Ham')
plt.bar(r2, results['Spam'], width=barWidth, edgecolor='white', label='Spam')
plt.xlabel('Prediction Status', fontweight='bold', fontsize=15)
plt.ylabel('Count', fontweight='bold', fontsize=15)
plt.xticks([r + barWidth/2 for r in range(len(results['Ham']))], ['Correct', 'Incorrect'])
plt.legend()
plt.show()
```
上述代码首先利用`confusion_matrix`函数创建了一个表示预测性能的混淆矩阵,并通过Matplotlib进行了图形化展示。然后,它以条形图的形式比较了两类邮件预测正确的数目和错误的数目。这有助于直观地了解模型在这两个类别上的表现如何。
阅读全文