You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中绘制多分类器在多组数据集上的准确率对比图

Python绘制二分类器多组合准确率分组柱状图方法

1. 安装所需依赖

你需要提前安装三个核心工具库,执行以下命令安装:

pip install pandas matplotlib seaborn

如果还需要自行完成分类任务计算准确率,可以额外安装scikit-learn:

pip install scikit-learn

2. 整理准确率数据

你需要先完成所有分类实验得到结果:10组「单个攻击+良性」的组合,每组对应3个分类器的准确率数值。可以直接替换下方代码中的模拟数据为你的真实值:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 模拟数据,可替换为你的真实数据
attack_names = [f"攻击{i+1}" for i in range(10)] # 10个攻击的名称,可自定义为你实际的攻击名
classifier_names = ["分类器A", "分类器B", "分类器C"] # 3个分类器的名称
# 准确率数据,shape为[10组攻击, 3个分类器],数值范围0~1或者0~100都可以
accuracy_data = [
    [0.92, 0.88, 0.95],
    [0.87, 0.82, 0.89],
    [0.94, 0.90, 0.96],
    [0.78, 0.75, 0.81],
    [0.91, 0.87, 0.93],
    [0.85, 0.81, 0.87],
    [0.93, 0.89, 0.95],
    [0.89, 0.84, 0.91],
    [0.90, 0.86, 0.92],
    [0.83, 0.79, 0.86]
]

# 转换为绘图需要的DataFrame格式
df_list = []
for attack_idx, attack in enumerate(attack_names):
    for cls_idx, cls in enumerate(classifier_names):
        df_list.append({
            "攻击组合": attack,
            "分类器": cls,
            "准确率": accuracy_data[attack_idx][cls_idx]
        })
df = pd.DataFrame(df_list)

3. 绘制分组柱状图

# 设置绘图样式
sns.set_style("whitegrid")
plt.rcParams["font.sans-serif"] = ["SimHei"] # 解决中文显示问题
plt.rcParams["axes.unicode_minus"] = False
plt.figure(figsize=(14, 6)) # 调整画布大小

# 绘制分组柱状图
ax = sns.barplot(data=df, x="攻击组合", y="准确率", hue="分类器", palette="viridis")

# 添加图表元素
ax.set_title("各攻击与良性数据组合下的分类器准确率", fontsize=14, pad=20)
ax.set_xlabel("攻击+良性组合类型", fontsize=12)
ax.set_ylabel("准确率", fontsize=12)
plt.xticks(rotation=30) # 旋转x轴标签避免重叠
plt.ylim(0, 1.1) # 如果你的准确率是百分比(0~100),这里改成0, 110即可

# 可选:在柱子上方显示准确率数值
for p in ax.patches:
    height = p.get_height()
    ax.text(p.get_x() + p.get_width()/2., height + 0.01,
            f"{height:.2f}",
            ha='center', va='bottom', fontsize=10)

plt.tight_layout() # 自动调整布局避免元素被截断
# plt.savefig("分类器准确率对比.png", dpi=300) # 可选:保存为本地图片
plt.show()

可自定义调整项

  • 替换palette参数可以修改柱子的配色,可选值比如Blues、Reds、Set2等
  • 修改figsize参数调整画布的宽高
  • 修改xticks的rotation值调整x轴标签的旋转角度
  • 如果你使用百分比准确率,需要把ylim改为(0, 110),同时数值显示的代码里height + 0.01改为height + 1

内容的提问来源于stack exchange,提问作者Zara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:12:00