我有一个正态分布的2D数据集,我使用fcmeans库来执行模糊c-均值聚类。我可以用红色的点来表示聚类中心。但是,我需要在出现模糊的地方显示一个梯度。我不知道如何在Python中实现这一点,我在网上也找不到类似的东西。
from fcmeans import FCM
data = pd.read_csv("my_data.csv")
model = FCM(n_clusters=2)
model.fit(data)
centers = my_model.centers
hard_prediction_labels = my_model.predict(data)
soft_prediction_labels = my_model.soft_predict(data)
plt.scatter(data[:, 0], data[:, 1], c=hard_prediction_labels, s=30);
plt.scatter(data[:, 0].mean(), data[:, 1].mean(), s=60, c='red', label = 'Cntrds');
我相信我的错误来自于我的标签是1或0的事实;但是,我不确定如何定义它,以确定哪些点是边界。我可以使用soft_predict()函数从软预测中获得概率(数据点属于每个聚类的概率),但是我不确定如何使用它创建颜色渐变。
1条答案
按热度按时间nukf8bse1#
假设你已经计算了
(n_points, n_clusters)
数组prob
,当n_clusters
为2时,看起来像然后你可以这样做,当你有一个更高的概率属于它的集群时,有一个更不透明的点,当它有一个较低的概率时,有一个更透明的点。我想这是你想要的...
NB我没有
fcmeans
,所以我的代码未经测试,基本上是基于有根据的推测。你可能需要调整一些东西使它工作。编辑
用不同的大小和透明度对每个数据簇绘制两次,可能会给予数据更直观。