通过调用metrics.confusion_matrix来混淆矩阵
时间: 2024-05-14 21:18:54 浏览: 82
混淆矩阵(Confusion Matrix)是一种分类模型常用的评估指标,可以帮助我们对分类器的性能进行评估。在Python中,可以使用Scikit-learn库中的metrics模块来计算混淆矩阵。
下面是一个示例代码:
```python
from sklearn import metrics
import numpy as np
y_true = np.array([1, 1, 0, 1, 0, 0, 1, 0, 0, 0]) # 真实标签
y_pred = np.array([1, 0, 0, 1, 0, 0, 1, 1, 0, 0]) # 预测标签
confusion_matrix = metrics.confusion_matrix(y_true, y_pred)
print(confusion_matrix)
```
输出结果为:
```
[[4 1]
[2 3]]
```
其中,第一行表示真实标签为0的样本,第一列表示真实标签为1的样本。第二行、第二列分别表示预测标签为0的样本和预测标签为1的样本。
在这个例子中,有4个真实标签为0的样本被正确预测为0,有3个真实标签为1的样本被正确预测为1,有1个真实标签为0的样本被错误预测为1,有2个真实标签为1的样本被错误预测为0。
混淆矩阵可以帮助我们计算出许多其他的指标,如准确率、召回率、F1值等。
相关问题
def show_matrix(y_test, y_pred): # 定义一个函数显示混淆矩阵 y_test=y_test.detach().numpy() y_pred=y_pred.detach().numpy() print(y_test) cm = confusion_matrix(y_test,y_pred) # 调用混淆矩阵 plt.title("ANN Confusion Matrix") # 标题 sns.heatmap(cm,annot=True,cmap="Blues",fmt="d",cbar=False) # 热力图设定 plt.show() # 显示混淆矩阵
这段代码定义了一个名为`show_matrix`的函数,用于显示混淆矩阵。下面是完整的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
def show_matrix(y_test, y_pred):
y_test = y_test.detach().numpy()
y_pred = y_pred.detach().numpy()
print(y_test)
cm = confusion_matrix(y_test, y_pred)
plt.title("ANN Confusion Matrix")
sns.heatmap(cm, annot=True, cmap="Blues", fmt="d", cbar=False)
plt.show()
```
该函数的输入参数`y_test`和`y_pred`是模型的真实标签和预测结果。首先,将它们转换为NumPy数组(假设它们是PyTorch张量)。然后,使用`confusion_matrix`函数计算混淆矩阵。接下来,使用Matplotlib和Seaborn绘制热力图来可视化混淆矩阵。最后,使用`plt.show()`显示混淆矩阵。
请确保已经导入所需的库(numpy、matplotlib、seaborn、sklearn.metrics)并将真实标签和预测结果传递给`show_matrix`函数以进行调用。
def final_test(df_ft, model): ''' 验证真实比例的测试集2 ''' y_predprob_ft = model.predict_proba(df_ft.drop(['label'], axis=1))[:, 1] # 修改分类阈值 the_threshold = y_predprob_ft[y_predprob_ft.argsort(axis=0)[::-1][int(len(y_predprob_ft) * 0.25)]] y_pred_ft = np.array([1 if x >= the_threshold else 0 for x in y_predprob_ft]) # 查看结果 from sklearn.metrics import confusion_matrix, classification_report # print('accuracy_score: ', accuracy_score(df_ft['label'], y_pred_ft)) print('test real set:') print(confusion_matrix(df_ft['label'], y_pred_ft, labels=None, sample_weight=None)) report = classification_report(df_ft['label'], y_pred_ft) print(report) report = classifaction_report_csv(report) return report
这段代码是一个名为 final_test 的函数,用于对真实比例的测试集进行验证。
首先,函数使用模型 model 对 df_ft 数据框中除了 'label' 列以外的特征进行预测,并保存预测结果的概率值到 y_predprob_ft 变量中。
接着,函数根据预测概率值对分类阈值进行调整。阈值的选择是基于 y_predprob_ft 按降序排序后的第 int(len(y_predprob_ft) * 0.25) 个值。这个阈值用于将预测概率值大于等于阈值的样本预测为正例,小于阈值的样本预测为负例。
然后,函数根据预测概率值和阈值对样本进行分类,并将分类结果存储在 y_pred_ft 变量中。
接下来,函数使用 confusion_matrix 函数和 classification_report 函数计算并打印了预测结果的混淆矩阵和分类报告。其中,confusion_matrix 函数用于计算混淆矩阵,classification_report 函数用于生成分类报告。
最后,函数调用了一个名为 classifaction_report_csv 的函数,将分类报告转换为 CSV 格式,并返回转换后的结果 report。
这段代码的作用是对真实比例的测试集进行验证,并输出验证结果。其中,模型 model 用于对测试集进行预测,预测结果根据阈值进行分类,最后计算并打印验证结果的混淆矩阵和分类报告。
阅读全文