Algoritma K-means ialah algoritma pembelajaran tanpa pengawasan yang biasa digunakan untuk mengumpulkan data ke dalam kategori yang berbeza. Algoritma K-means++ ialah versi algoritma K-means yang dipertingkatkan, bertujuan untuk meningkatkan kecekapan dan ketepatan pemilihan pusat kluster awal. Artikel ini akan memperkenalkan secara terperinci prinsip, pelaksanaan kod dan aplikasi algoritma K-means++ dalam Python.
Algoritma K-means ialah algoritma berulang Proses setiap lelaran ialah: mula-mula pilih K pusat pengelompokan awal secara rawak, Kemudian setiap satu titik data diperuntukkan kepada kategori pusat kluster awal yang paling hampir dengannya, dan kemudian pusat semua kluster dikira semula dan pusat kluster dikemas kini. Ulangi proses di atas sehingga syarat penumpuan dipenuhi.
K-bermaksud proses algoritma:
Algoritma K-means++ ialah versi algoritma K-means yang dipertingkatkan, yang terutamanya mengoptimumkan pemilihan pusat pengelompokan awal. Langkah pemilihan pusat kluster awal bagi algoritma K-means++ adalah seperti berikut:
Seterusnya, kami akan melaksanakan algoritma K-means++ melalui Python.
Mula-mula, import perpustakaan yang diperlukan:
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.cluster import KMeans
Seterusnya, kami menjana satu set data untuk pengelompokan:
n_samples = 1500 random_state = 170 X, y = make_blobs(n_samples=n_samples, random_state=random_state)
Kemudian, kami melatih melalui model K-means++ modul KMeans sklearn :
kmeans = KMeans(init="k-means++", n_clusters=3, n_init=10) kmeans.fit(X)
Akhir sekali, kami memvisualisasikan hasil pengelompokan:
plt.figure(figsize=(12, 12)) h = 0.02 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) Z = kmeans.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.imshow(Z, interpolation="nearest", extent=(xx.min(), xx.max(), yy.min(), yy.max()), cmap=plt.cm.Pastel1, aspect="auto", origin="lower") plt.scatter(X[:, 0], X[:, 1], s=30, c=kmeans.labels_, cmap=plt.cm.Paired) plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker="^", s=100, linewidths=3, color='black', zorder=10) plt.title("K-means++ clustering") plt.xlim(x_min, x_max) plt.ylim(y_min, y_max) plt.show()
Algoritma K-means Sesuai untuk masalah pengelompokan data tanpa maklumat label. Berbanding dengan algoritma K-means, algoritma K-means++ lebih sesuai untuk situasi di mana terdapat banyak data atau pengagihan data secara relatifnya berselerak bagi memastikan rasional dan keunikan pusat pengelompokan awal.
Algoritma K-means++ boleh digunakan dalam perlombongan data, pemprosesan imej, pemprosesan bahasa semula jadi dan bidang lain. Algoritma pengelompokan boleh digunakan untuk mencari sampel dengan persamaan yang lebih tinggi, yang juga sangat berguna untuk visualisasi data besar.
Ringkasnya, algoritma K-means++ mempunyai prospek aplikasi yang baik dalam perlombongan data, analisis kelompok, pengecaman imej, pemprosesan bahasa semula jadi dan bidang lain.
Atas ialah kandungan terperinci Penjelasan terperinci algoritma K-means++ dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!