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

如何在Python模糊聚类图中展示‘模糊性’

模糊C均值聚类的模糊性可视化方案

你说得对,硬预测标签(0/1)只能区分聚类归属,没法体现边界点的模糊性。要展示这种模糊程度,核心是用soft_predict()返回的隶属度概率来映射颜色。

关键思路

soft_prediction_labels是一个形状为(样本数, 聚类数)的数组,每个元素代表对应样本属于某聚类的隶属度。对于2聚类场景,你可以取其中一类的隶属度作为颜色变量——因为两个聚类的隶属度和为1,取任意一列都能反映样本的模糊程度:隶属度越接近1,说明样本越明确属于该聚类;越接近0.5,说明样本处于聚类边界,模糊性越高。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
from fcmeans import FCM

# 读取数据(修正原代码的变量名错误&DataFrame索引问题)
data = pd.read_csv("my_data.csv")
# 转成numpy数组方便索引(或者用data.iloc[:,0])
data_np = data.values

# 训练FCM模型
model = FCM(n_clusters=2) 
model.fit(data_np) 

cntrs = model.centers
soft_prediction_labels = model.soft_predict(data_np)

# 绘制散点图:用第一类的隶属度作为颜色依据
plt.scatter(data_np[:, 0], data_np[:, 1], c=soft_prediction_labels[:, 0], 
            s=30, cmap='coolwarm', alpha=0.7)
# 绘制红色聚类中心
plt.scatter(cntrs[:,0], cntrs[:,1], c='red', s=100, marker='X')
# 添加颜色条,标注隶属度含义
plt.colorbar(label='隶属度(属于第一类的概率)')
plt.xlabel('特征1')
plt.ylabel('特征2')
plt.title('模糊C均值聚类的模糊性可视化')
plt.show()

代码说明

  • 修正了原代码中model和my_model的变量名不一致问题,以及DataFrame直接用[:,0]索引的错误。
  • c=soft_prediction_labels[:,0]:用样本属于第一类的隶属度控制颜色,coolwarm色系会让隶属度高的点偏红,低的偏蓝,中间值(边界点)呈过渡色。
  • alpha=0.7:增加透明度,让重叠点的模糊性展示更清晰。
  • 颜色条直接标注含义,方便理解颜色对应的模糊程度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:50:24