本文展示了如何使用Python代码生成和展示混淆矩阵来评估分类模型性能。通过scikit-learn的confusion_matrix函数和pandas库,我们对两个模型(A和B)在10个样本(6恶性、4良性)上的预测结果进行分析。模型A的混淆矩阵显示其正确预测了3个恶性和3个良性病例,而模型B正确预测了6个恶性但仅1个良性。该代码演示了如何将混淆矩阵转化为更易读的表格形式,为模型性能比较提供直观依据。

代码实现

# 导入必要的库
from sklearn.metrics import confusion_matrix  # 用于生成混淆矩阵
import pandas as pd  # 用于将混淆矩阵转换为更易读的表格形式

# 准备真实结果数据
# y_test 是测试集中的真实标签,共10个样本,包含6个“恶性”(正例)和4个“良性”(反例)
y_test = ['恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '良性', '良性', '良性', '良性']

# 3. 模型A预测结果并创建混淆矩阵
# 3.1 模拟模型A的预测结果
# y_pred 是模型A对这10个样本的预测结果
y_pred = ['恶性', '恶性', '恶性', '良性', '良性', '良性', '良性', '良性', '良性', '良性']

# 3.2 创建混淆矩阵 cm_A
# confusion_matrix 是 scikit-learn 提供的函数,用于比较真实值与预测值
# 参数说明:
# - y_test: 真实标签
# - y_pred: 预测标签
# - labels=['恶性','良性']: 明确指定类别顺序,'恶性'为正类,'良性'为负类
cm_A = confusion_matrix(y_test, y_pred, labels=['恶性', '良性'])
print(f"混淆矩阵A:\n{cm_A}")

# 将混淆矩阵转换为 pandas DataFrame 以便于展示和分析
# index 行标签表示实际类别,columns 列标签表示预测类别
df_cm_A = pd.DataFrame(cm_A, index=['恶性(正例)', '良性(反例)'], columns=['恶性(正例)', '良性(反例)'])
print(f"混淆矩阵A转换后的df:\n{df_cm_A}")

# 4. 模型B预测结果并创建混淆矩阵
# 4.1 模拟模型B的预测结果
# y_pre_B 是模型B对这10个样本的预测结果
y_pre_B = ['恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '恶性', '良性']

# 4.2 创建混淆矩阵 cm_B
# 同样使用 confusion_matrix 函数计算模型B的混淆矩阵
cm_B = confusion_matrix(y_test, y_pre_B, labels=['恶性', '良性'])
print(f"混淆矩阵B:\n{cm_B}")

# 4.3 使用 DataFrame 友好展示混淆矩阵B
# index 和 columns 的定义同上,保持一致
df_cm_B = pd.DataFrame(cm_B, index=['恶性(正例)', '良性(反例)'], columns=['恶性(正例)', '良性(反例)'])
print(f"混淆矩阵B转换后的df:\n{df_cm_B}")

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐