def account_metrics ( baxminchi , ma'lumotlar, teglar) :
# Hisoblash ko'rsatkichlarini
chop etish ( 'Klasterlar soni: {}' .format(estimator.n_clusters))
chop etish ( 'Inersiya: {}' .format(baxminchi.inertia_))
print( 'Bir hillik: {}' .format(metrics.homogeneity_score(yorliqlar, estimator.labels_)))
Endi biz ko'rsatkichlarni aniqladik, keling, turli xil klasterlar soni uchun modelni ishga tushiramiz.
klasterlar = [ 10 , 16 , 36 , 64 , 144 , 256 ]
# n_clusters uchun turli sonli klasterlarni sinab ko'ring turli ko'ring :
baholovchi = MiniBatchKMeans(n_klasterlar = n_klasterlar)
estimator.fit(X)
# bosma klaster koʻrsatkichlari
hisoblash_ko'rsatkichlari (baholovchi, X, Y)
# bashorat qilingan teglarni aniqlang
cluster_labels = cluster_labels_infer(baxminchi, Y)
bashorat qilingan_Y = data_labels_infer(baxminchi.labels_, klaster_yorliqlari)
# aniqlikni hisoblash
chop etish( 'Aniqlik: {}\n' .format(metrics.accuracy_score(Y, bashorat qilingan_Y))))
Modelni test to'plamida klasterlar soni sifatida 256 bilan ishlatamiz, chunki u aniq raqam uchun aniqroqdir.
# test
# har bir tasvirni 1 D massiviga aylantirish
X_test = x_test.reshape(len(x_test), -1 )
# ma'lumotlarni 0 - 1
X_test = X_test.astype(float) / 255 ga normallashtirish.
# fit KMeans algoritmi
kmeans = MiniBatchKMeans (n_klasterlar = 256 )
kmeans.fit(X)
cluster_labels = cluster_labels_infer(kmeans, Y)
# bashorat qilish
test_klasterlari = kmeans.predict(X_test)
bashorat qilingan_yorliqlar = data_labels_infer(kmeans.predict(X_test),
klaster_yorliqlari)
# aniqlikni hisoblash
chop etish ( 'Aniqlik: {}\n' .format(metrics.accuracy_score(y_test,)
bashorat qilingan_yorliqlar)))
Klaster markazlarini vizualizatsiya qilish
Markaz har bir klasterda vakili bo'lgan nuqtadir. Agar biz A, B nuqtalari bilan ishlagan bo'lsak, markaz shunchaki grafikdagi nuqta bo'lar edi. Biz 784 uzunlikdagi massivdan foydalanayotganimiz sababli, bizning markazimiz ham 784 uzunlikdagi massiv bo'ladi. Biz bu massivni qaytadan 28×28 pikselli tasvirga o'zgartirishimiz va uni chizishimiz mumkin.
#fit KMeans algoritmi
kmeans = MiniBatchKMeans(n_clusters = 36 )
kmeans.fit(X)
# centroid qiymatlarini qayd etish
centroids = kmeans.cluster_centers_
# centroidlarni tasvirlarga o'zgartirish
= centroids.reshape ( 36 , 28 , 28 ) )
rasmlar *= 255
tasvirlar = images.astype(np.uint8)
# klaster belgilarini aniqlash
cluster_labels = cluster_labels_infer(kmeans, Y)
#
subplots fig, axs = plt.subplots( 6 , 6 , figsize = ( 20 , 20 ))
plt.gray()
Do'stlaringiz bilan baham: |