我使用 fuzzy-c-means聚类实现,我希望数据X形成我在算法中定义的聚类数量(我相信它是这样工作的)。但行为令人困惑。
cm = FCM(n_clusters=6)
cm.fit(X)
此代码生成一个带有 4 个标签的图 - [0,2,4,6]
cm = FCM(n_clusters=4)
cm.fit(X)
此代码生成一个带有 4 个标签的图 - [0,1,2,3]
当我将簇号初始化为 6 时,我希望标签 [0,1,2,3,4,5]。
代码:
from fcmeans import FCM
from matplotlib import pyplot as plt
from seaborn import scatterplot as scatter
# fit the fuzzy-c-means
fcm = FCM(n_clusters=6)
fcm.fit(X)
# outputs
fcm_centers = fcm.centers
fcm_labels = fcm.u.argmax(axis=1)
# plot result
%matplotlib inline
f, axes = plt.subplots(1, 2, figsize=(11,5))
scatter(X[:,0], X[:,1], ax=axes[0])
scatter(X[:,0], X[:,1], ax=axes[1], hue=fcm_labels)
scatter(fcm_centers[:,0], fcm_centers[:,1], ax=axes[1],marker="s",s=200)
plt.show()