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

如何将机器学习评估结果列表转换为barplot(条形图)实现可视化

操作步骤

构造符合要求的DataFrame

我们可以直接把原始结果解析为pandas长表,这是seaborn绘制分组条形图最常用的输入格式,代码如下:

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

# 原始结果文本
raw_text = """euclidean ward
silhouette 0.05
completeness 0.1
homogeneity 0.3
euclidean complete
silhouette 0.09
completeness 0.1
homogeneity 0.1
euclidean average
silhouette 0.1
completeness 0.1
homogeneity 0.01
manhattan complete
silhouette 0.05
completeness 0.1
homogeneity 0.2
manhattan average
silhouette 0.1
completeness 0.1
homogeneity 0.1
cosine complete
silhouette -0.01
completeness 0.1
homogeneity 0.2
cosine average
silhouette -0.09
completeness 0.2
homogeneity 0.2"""

# 解析数据为长表结构
lines = raw_text.strip().split('\n')
data = []
# 原始数据固定每4行为一组:第1行是聚类配置,后3行是对应三个评估指标
for i in range(0, len(lines), 4):
    dist, method = lines[i].strip().split()
    group_name = f"{dist}_{method}"
    # 遍历当前组的3个评估指标
    for j in range(i+1, i+4):
        metric, val = lines[j].strip().split()
        data.append({
            "聚类配置": group_name,
            "评估指标": metric,
            "得分": float(val)
        })

df = pd.DataFrame(data)

绘制分组条形图

直接调用seaborn的barplot接口即可实现目标样式的图表:

# 设置绘图风格
sns.set_style("whitegrid")

# 初始化画布
plt.figure(figsize=(12, 6))
# 绘制分组条形图
ax = sns.barplot(
    data=df,
    x="聚类配置",  # x轴对应不同的聚类配置
    y="得分",     # y轴对应指标得分
    hue="评估指标", # 用不同颜色区分不同的评估指标
    palette="Set2"
)

# 调整图表细节避免内容遮挡
ax.set_title("不同聚类配置的评估指标对比", fontsize=14)
ax.set_xlabel("聚类配置(距离度量_聚类方法)", fontsize=12)
ax.set_ylabel("指标得分", fontsize=12)
plt.xticks(rotation=45, ha="right")
plt.tight_layout()
# 显示图表
plt.show()

如果需要调换分组逻辑,比如x轴展示评估指标、按聚类配置分组,互换x和hue的参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:06