如何在Julia中生成直观的混淆矩阵表格(替代EvalMetrics输出)
在Julia中生成自定义格式的混淆矩阵表格
可以通过以下两种方式实现你需要的混淆矩阵表格样式:
方法一:使用PrettyTables手动生成表格
先确保安装了PrettyTables包,然后从EvalMetrics的ConfusionMatrix对象中提取关键指标,构造表格并格式化输出:
# 安装依赖包(首次运行时执行) using Pkg Pkg.add("PrettyTables") # 加载所需包 using EvalMetrics, PrettyTables # 定义目标值和预测值 targets = [1,0,1,0,1,0,1] predicts = [0,0,1,1,0,1,1] # 生成混淆矩阵对象 cm = ConfusionMatrix(targets, predicts) # 构造混淆矩阵表格数据(行=预测值,列=实际值) confusion_table = [cm.tn cm.fn; cm.fp cm.tp] # 打印格式化后的表格 pretty_table(confusion_table, header = ["0", "1"], row_names = ["0", "1"], row_name_column_title = "pred\\act", tf = tf_unicode_rounded, # 使用Unicode边框匹配目标样式 alignment = :r) # 数值右对齐
运行后输出的表格格式如下:
┌─────────┬─────┬─────┐ │ pred\act│ 0 │ 1 │ ├─────────┼─────┼─────┤ │ 0 │ 1 │ 2 │ │ 1 │ 2 │ 2 │ └─────────┴─────┴─────┘
方法二:自定义ConfusionMatrix的显示方法
如果希望每次打印ConfusionMatrix对象时都自动输出表格样式,可以自定义其show方法:
using EvalMetrics, PrettyTables # 重定义ConfusionMatrix的显示逻辑 function Base.show(io::IO, cm::ConfusionMatrix) confusion_table = [cm.tn cm.fn; cm.fp cm.tp] pretty_table(io, confusion_table, header = ["0", "1"], row_names = ["0", "1"], row_name_column_title = "pred\\act", tf = tf_unicode_rounded, alignment = :r) end # 测试 targets = [1,0,1,0,1,0,1] predicts = [0,0,1,1,0,1,1] cm = ConfusionMatrix(targets, predicts) println(cm)
这样直接打印cm就会输出你需要的表格格式,无需额外调用格式化函数。
指标对应说明
cm.tn:实际负例(0)且预测负例(0)的数量(真阴性)cm.fp:实际负例(0)且预测正例(1)的数量(假阳性)cm.fn:实际正例(1)且预测负例(0)的数量(假阴性)cm.tp:实际正例(1)且预测正例(1)的数量(真阳性)
内容的提问来源于stack exchange,提问作者Quinten
相关产品推荐
相关产品推荐

