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

K-Means聚类后如何统计各簇样本数及default列0/1数量?

K-Means聚类后统计default列分布的问题解决

问题背景

现有数据集包含gender、education、age、years of marriage、amount spent5列特征,执行K=5的K-Means聚类后,能正常统计各簇样本总数,但统计default列的0/1数量时出现报错:KeyError: 'Column not found: DEFAULT'。

报错原因

从代码逻辑来看:

  • 用于训练K-Means的data_norm1仅包含上述5列特征,未包含default列
  • 后续生成的df1_norm是基于data_norm1创建的,因此也没有default列
  • 此前分组default列用的是原始数据集df,但该数据集和聚类后的df1_norm未关联

解决步骤

1. 将default列合并到聚类结果中

如果原始数据集df和聚类后的df1_norm行顺序完全一致,直接添加列即可:

# 把原始df中的default列加入聚类结果df1_norm
df1_norm['default'] = df['default']

若担心行顺序不一致,可先重置索引再合并:

# 重置索引确保两行数据对齐
df = df.reset_index(drop=True)
df1_norm = df1_norm.reset_index(drop=True)

# 合并default列
df1_norm = pd.concat([df1_norm, df['default']], axis=1)

2. 统计各簇的default分布

添加列后,即可完成统计:

# 统计每个簇的样本总数
cluster_counts = df1_norm.groupby('Cluster1').size()

# 统计每个簇中default=0和default=1的数量
default_dist = df1_norm.groupby('Cluster1')['default'].value_counts().unstack(fill_value=0)

# 计算每个簇中default=1的占比(mean值即为1的比例)
default_1_ratio = df1_norm.groupby('Cluster1')['default'].mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:07:34