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

基于UMAP聚类结果,如何用箱线图对比各簇特征差异?

聚类簇间特征对比可视化方案

数据准备

首先需要将特征数据集与聚类归属数据合并,确保样本顺序完全匹配:

import pandas as pd

# 拼接特征数据和聚类归属数据
combined_df = pd.concat([data, df_cluster], axis=1)
# 将聚类列重命名为更清晰的'cluster'(可根据实际列名调整)
combined_df.rename(columns={df_cluster.columns[0]: 'cluster'}, inplace=True)

箱线图绘制(Seaborn)

箱线图能直观展示各聚类簇的特征中位数、四分位数范围及异常值,适合对比离散程度:

import seaborn as sns
import matplotlib.pyplot as plt

sns.set_style("whitegrid")
# 提取所有特征列(排除聚类标识列)
feature_cols = [col for col in combined_df.columns if col != 'cluster']

# 逐个特征绘制箱线图
for feature in feature_cols:
    plt.figure(figsize=(8, 5))
    sns.boxplot(x='cluster', y=feature, data=combined_df, palette='Set2')
    plt.title(f'Cluster Comparison: {feature}')
    plt.xlabel('Cluster')
    plt.ylabel(feature)
    plt.show()

小提琴图绘制(Seaborn)

小提琴图结合箱线图与核密度估计,能同时展示数据的统计量和分布形态:

# 逐个特征绘制小提琴图
for feature in feature_cols:
    plt.figure(figsize=(8, 5))
    sns.violinplot(x='cluster', y=feature, data=combined_df, palette='Set2')
    plt.title(f'Cluster Distribution: {feature}')
    plt.xlabel('Cluster')
    plt.ylabel(feature)
    plt.show()

批量子图展示(可选)

如果特征数量较多,可将多个图整合到同一张画布,提升浏览效率:

import math

n_features = len(feature_cols)
n_cols = 2
n_rows = math.ceil(n_features / n_cols)

plt.figure(figsize=(15, 5*n_rows))
for idx, feature in enumerate(feature_cols, 1):
    plt.subplot(n_rows, n_cols, idx)
    sns.boxplot(x='cluster', y=feature, data=combined_df, palette='Set2')
    plt.title(feature)
    plt.xlabel('')  # 隐藏子图x轴标签避免重复
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:55:27