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

如何使用matplotlib/pandas按Activation分组绘制Accuracy对比图

问题分析

你之前两次代码的问题原因如下:

  • 第一种groupby后直接调用plot的问题:你取groupby("Activation")["Accuracy"]得到的是GroupBy Series对象,默认plot会为每个分组绘制折线图,x轴取的是组内的行索引,而非激活函数分类维度,无法体现类别和准确率的对应关系。
  • 第二种手动拆分的问题:plt.plot()默认绘制折线图,仅输入y值时x轴会自动取0、1、2…的序列编号,相当于把同一激活函数的多个准确率按数据行顺序连接,完全达不到分类对比的效果。
正确实现方案

pandas和matplotlib结合使用是最优方案:pandas负责高效的数据分组/预处理,matplotlib负责绘图样式自定义,既不用手动拆分数据,也能灵活调整可视化效果。
下面给两种常用的对比图实现:

方案1:分类散点图(展示所有样本点)

import pandas as pd
import matplotlib.pyplot as plt

# 读入你的csv数据集
df = pd.read_csv("你的数据集路径.csv")

plt.scatter(x=df["Activation"], y=df["Accuracy"], s=60, c="steelblue", alpha=0.8)
plt.xlabel("Activation(激活函数)")
plt.ylabel("Accuracy(准确率)")
plt.title("不同激活函数对应准确率分布")
plt.grid(axis="y", linestyle="--", alpha=0.7)
plt.show()

如果需要给不同激活函数的点配置不同颜色和图例,用分组遍历实现:

colors = {"tanh": "orange", "relu": "green"}
for act_name, group_df in df.groupby("Activation"):
    plt.scatter(
        x = [act_name]*len(group_df), 
        y = group_df["Accuracy"],
        c = colors[act_name],
        label = act_name,
        s = 60,
        alpha = 0.8
    )
plt.xlabel("Activation(激活函数)")
plt.ylabel("Accuracy(准确率)")
plt.title("不同激活函数对应准确率分布")
plt.legend()
plt.grid(axis="y", linestyle="--", alpha=0.7)
plt.show()

方案2:箱线图(展示统计分布,更适合性能对比)

箱线图可以直观展示不同激活函数的准确率最大值、最小值、中位数、四分位区间,更适合对比性能优劣:

df.boxplot(column="Accuracy", by="Activation", grid=False)
plt.xlabel("Activation(激活函数)")
plt.ylabel("Accuracy(准确率)")
plt.title("不同激活函数准确率统计分布")
plt.suptitle("") # 去掉pandas自动生成的多余顶部标题
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:06:00