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

如何基于DataFrame的Status字段聚类并可视化?K-Means是否适用?

问题分析与解决方案

你这里不需要用K-Means算法——K-Means是无监督聚类算法,作用是让算法从无标签数据中自动发现聚类模式,但你的需求是基于已有的Status字段做明确的标签映射(Bot→Cluster1,Human→Cluster2),属于直接的规则赋值,硬用K-Means反而多余,甚至可能因为Age的分布导致聚类结果不符合预期。

步骤1:生成Cluster列

直接通过字典映射给DataFrame添加Cluster字段,代码如下:

import pandas as pd

# 构造你的数据集
data = {
    'Name': ['Xenon', 'Carrie', 'Argon', 'Carol', 'Neon'],
    'Age': [3, 16, 6, 7, 5],
    'Status': ['Bot', 'Human', 'Bot', 'Human', 'Human']
}
df = pd.DataFrame(data)

# 按Status映射Cluster
cluster_mapping = {'Bot': 1, 'Human': 2}
df['Cluster'] = df['Status'].map(cluster_mapping)

执行后得到的DataFrame:

Name Age Status Cluster
Xenon 3 Bot 1
Carrie 16 Human 2
Argon 6 Bot 1
Carol 7 Human 2
Neon 5 Human 2

步骤2:可视化实现

可以用Matplotlib或Seaborn绘制散点图,展示不同Cluster的Age分布,同时标注样本名称:

Matplotlib实现代码

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))
# 按Cluster分组绘制散点
for cluster_id in df['Cluster'].unique():
    group = df[df['Cluster'] == cluster_id]
    plt.scatter(group['Age'], [cluster_id]*len(group), s=120, label=f'Cluster {cluster_id}')
    # 标注每个样本的Name
    for _, row in group.iterrows():
        plt.text(row['Age'], row['Cluster'], row['Name'], ha='center', va='bottom', fontsize=10)

plt.yticks([1, 2], ['Cluster 1 (Bot)', 'Cluster 2 (Human)'])
plt.xlabel('Age')
plt.title('Cluster Distribution by Age')
plt.legend()
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

Seaborn简化实现代码

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))
sns.scatterplot(data=df, x='Age', y='Cluster', hue='Cluster', s=120, palette={1: '#1f77b4', 2: '#ff7f0e'})
# 标注样本名称
for _, row in df.iterrows():
    plt.text(row['Age'], row['Cluster'], row['Name'], ha='center', va='bottom', fontsize=10)

plt.yticks([1, 2], ['Cluster 1 (Bot)', 'Cluster 2 (Human)'])
plt.xlabel('Age')
plt.title('Cluster Distribution by Age')
plt.legend(title='Cluster')
plt.show()

总结

  • 直接通过Status字段映射Cluster是最准确高效的方式,完全不需要聚类算法
  • 可视化可以直观展示不同Cluster的Age分布差异,标注名称后更便于识别单个样本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:01:06