Bagaimana cara menulis algoritma pengelompokan K-means dalam Python?
Algoritma pengelompokan bermakna K ialah algoritma perlombongan data dan pembelajaran mesin yang biasa digunakan yang boleh mengelaskan dan mengelompokkan set data mengikut atributnya. Artikel ini akan memperkenalkan cara menulis algoritma pengelompokan K-means dalam Python dan memberikan contoh kod khusus.
Sebelum kita mula menulis kod, kita perlu memahami prinsip asas algoritma pengelompokan K-means.
Langkah asas algoritma pengelompokan K-means adalah seperti berikut:
Kini kita boleh mula menulis kod.
Pertama, kita perlu mengimport perpustakaan yang diperlukan seperti numpy dan matplotlib.
import numpy as np import matplotlib.pyplot as plt
Kita perlu menyediakan set data untuk pengelompokan. Di sini kami menggunakan numpy untuk menjana satu set data dua dimensi secara rawak.
data = np.random.randn(100, 2)
Kita perlu memulakan k centroid untuk algoritma pengelompokan. Di sini kita menggunakan numpy untuk memilih k titik data secara rawak sebagai centroid awal.
k = 3 centroids = data[np.random.choice(range(len(data)), k, replace=False)]
Kita perlu mentakrifkan fungsi untuk mengira jarak antara titik data dan pusat jisim. Di sini kita menggunakan jarak Euclidean.
def compute_distances(data, centroids): return np.linalg.norm(data[:, np.newaxis] - centroids, axis=2)
Kita perlu menentukan fungsi untuk menetapkan setiap titik data kepada kategori yang diwakili oleh centroid terdekat.
def assign_clusters(data, centroids): distances = compute_distances(data, centroids) return np.argmin(distances, axis=1)
Kita perlu menentukan fungsi untuk mengemas kini kedudukan centroid, iaitu menetapkannya kepada purata semua titik data dalam kategori tersebut.
def update_centroids(data, clusters, k): centroids = [] for i in range(k): centroids.append(np.mean(data[clusters == i], axis=0)) return np.array(centroids)
Akhir sekali, kita perlu mengulangi proses pengelompokan sehingga kedudukan centroid tidak lagi berubah.
def kmeans(data, k, max_iter=100): centroids = data[np.random.choice(range(len(data)), k, replace=False)] for _ in range(max_iter): clusters = assign_clusters(data, centroids) new_centroids = update_centroids(data, clusters, k) if np.all(centroids == new_centroids): break centroids = new_centroids return clusters, centroids
Kini kita boleh menjalankan algoritma pengelompokan untuk mendapatkan kategori kepunyaan setiap titik data dan centroid akhir.
clusters, centroids = kmeans(data, k)
Akhir sekali, kita boleh menggunakan matplotlib untuk memvisualisasikan hasilnya. Setiap titik data dikodkan warna mengikut kategori miliknya, dan lokasi centroid ditunjukkan oleh bulatan merah.
plt.scatter(data[:, 0], data[:, 1], c=clusters) plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red', marker='o') plt.show()
Melalui contoh kod di atas, kita boleh melaksanakan algoritma pengelompokan K-means dalam Python. Anda boleh melaraskan bilangan kluster k dan parameter lain mengikut keperluan anda. Saya harap artikel ini akan membantu anda memahami dan melaksanakan algoritma pengelompokan K-means!
Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma pengelompokan K-means dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!