Почему FCM так кластеризует?
Почему в Fuzzy C-Means (FCM) при указанном n_clusters=10 все равно количество кластеров скачет туда-сюда? Например, на рисунке ниже выводит только 9 кластеров. Понимаю, что он может иметь меньше 10 элементов для вывода, и тогда результат будет как в 1 строчке. Но почему 10 строчка пуста?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import *
from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
import skfuzzy as fuzz
digits = load_digits()
X = digits.data
y = digits.target
n_clusters = 10
FCMmodel = fuzz.cluster.cmeans(X.T, n_clusters, 2, error=0.005, maxiter=1000)
FCMlabels = np.argmax(FCMmodel[1], axis=0)
print("FCM")
fig, ax = plt.subplots(n_clusters, 10, figsize=(10, n_clusters))
for i in range(n_clusters):
cluster_imgs = X[FCMlabels == i]
for j in range(min(10, len(cluster_imgs))):
ax[i, j].imshow(cluster_imgs[j].reshape((8, 8)), cmap=plt.cm.gray_r)
ax[i, j].axis('off')
plt.show()
Результат работы видно на картинке ниже.
Почему на изображении ниже кластера всего восемь, я могу лишь догадываться.