Keras二分类直方图:展示各输入类型的准确率
解决方案:生成各输入类型准确率的直方图
数据准备
首先你需要把40次试验中每个输入类型对应的准确率整理成结构化数据,比如用字典或Pandas DataFrame存储,键/列名为输入类型,值为对应40次试验的准确率列表。
方法1:每个输入类型单独绘制分布直方图(子图形式)
这种方式适合清晰展示单个输入类型的准确率波动分布:
import pandas as pd import matplotlib.pyplot as plt # 替换为你的真实数据:每个输入类型对应40个准确率值 accuracy_results = { "文本类输入": [0.81, 0.83, 0.80, 0.85, ...], # 补全40个数值 "图像类输入": [0.75, 0.77, 0.74, 0.79, ...], "音频类输入": [0.90, 0.92, 0.88, 0.91, ...] } # 转换为DataFrame方便处理 df = pd.DataFrame(accuracy_results) # 创建子图布局 fig, axes = plt.subplots(nrows=1, ncols=len(df.columns), figsize=(16, 5)) # 遍历每个输入类型绘制直方图 for ax, input_type in zip(axes, df.columns): # 绘制直方图,bins控制区间数量,edgecolor添加边框 ax.hist(df[input_type], bins=7, edgecolor='black', alpha=0.7) ax.set_title(f"{input_type} 准确率分布") ax.set_xlabel("准确率") ax.set_ylabel("试验次数") # 自动调整子图间距 plt.tight_layout() plt.show()
方法2:同一画布展示所有输入类型的分布(分组直方图)
如果需要对比不同输入类型的准确率分布,用这种方式更直观:
import seaborn as sns # 将数据转换为长格式(Seaborn偏好的格式) df_long = df.melt(var_name="输入类型", value_name="准确率") plt.figure(figsize=(12, 6)) # multiple="dodge" 让直方图并列展示,避免重叠 sns.histplot(data=df_long, x="准确率", hue="输入类型", bins=7, multiple="dodge", edgecolor='black', alpha=0.7) plt.title("各输入类型40次试验准确率分布对比") plt.xlabel("准确率") plt.ylabel("试验次数") plt.legend(title="输入类型") plt.show()
额外补充:结合平均准确率与误差棒
如果需要同时展示平均水平和波动情况,可以在直方图基础上补充统计指标:
# 计算每个输入类型的平均准确率和标准差 stats = df.agg(['mean', 'std']).T plt.figure(figsize=(10, 6)) # 绘制带误差棒的柱状图(标准差) bars = plt.bar(stats.index, stats['mean'], yerr=stats['std'], capsize=6, edgecolor='black', alpha=0.7) plt.title("各输入类型40次试验平均准确率(含标准差)") plt.xlabel("输入类型") plt.ylabel("平均准确率") # 在柱子上标注具体数值 for bar in bars: height = bar.get_height() plt.text(bar.get_x() + bar.get_width()/2., height, f'{height:.2f}', ha='center', va='bottom', fontsize=10) plt.show()
注意事项
- 调整
bins参数可以改变直方图的区间数量,让分布展示更贴合你的数据 - 如果输入类型数量较多,可调整子图布局为多行多列(比如
nrows=2, ncols=4) - 确保你的准确率数据是按输入类型分组的,每个类型对应完整的40次试验结果
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

