data daftar, kita dapat mengakses entri ITH (yang merupakan vektor) menggunakan data[0]. Untuk
menentukan
kluster atau keanggotaan grup, kita dapat menggunakan daftar tugas yang disebut pengelompokan, di
mana
pengelompokan[i] adalah jumlah grup tempat data vektor[i] ditetapkan. (Ini adalah
bilangan bulat antara 1 dan k.) (Dalam VMLS, bab 4, kami menjelaskan tugas menggunakan
vektor c atau subset Gj .) Kita dapat menyimpan perwakilan kluster k sebagai daftar Python yang disebut
sentroid, dengan centroids[j] perwakilan klaster jth. (Dalam VMLS kami jelaskan
Penugasan kelompok. Kami mendefinisikan fungsi untuk melakukan penetapan grup. Dengan diberikan
nilai awal centorids, kami menghitung jarak antara setiap sentroid dengan masing-masing
vektor dan tetapkan pengelompokan sesuai dengan jarak terkecil. Fungsi kemudian
. Clustering
Perbarui sentroid. Kami mendefinisikan fungsi untuk memperbarui sentroid setelah penetapan grup,
mengembalikan daftar sentroid grup baru.
Tujuan pengelompokan. Mengingat penugasan grup dan sentroid dengan data, kami
dapat menghitung tujuan pengelompokan sebagai kuadrat dari nilai RMS dari vektor
Jarak.
Kita dapat mendefinisikan fungsi Kmeans_alg yang menggunakan tiga fungsi yang didefinisikan dalam
In [ ]: def Kmeans_alg(data, centroids): iteration = 0 J_obj_vector = [] Stop = False while Stop == False:
grouping = group_assignment(data, centroids)
Konvergensi. Di sini kita menggunakan beberapa saat loop, yang mengeksekusi pernyataan di dalam
loop
selama kondisi Stop == False adalah true. Kami mengakhiri algoritma ketika
Atau, kita dapat menggunakan fungsi Kmeans dalam modul kluster sklearn
Paket.
Di sini kami mencoba menerapkan algoritma k-means pada data, mengelompokkan vektor ke
dalam 4 kelompok.
Perhatikan bahwa fungsi sklearn.cluster.KMeans menginisialisasi algoritma dengan acak
centroids dan dengan demikian nilai awal sentroid tidak diperlukan sebagai argumen tetapi
keadaan acak untuk menggambar inisialisasi acak adalah.
Contoh
Kami menerapkan algoritma pada set N = 300 poin yang dihasilkan secara acak, ditunjukkan dalam Gambar
tiga array vektor. Setiap set terdiri dari 100 vektor yang dipilih secara acak di sekitar satu
dari tiga poin (0,0),(1,1), dan (1,-1). Tiga array disaat menggunakan np.
concatenate() untuk mendapatkan array 300 poin. Selanjutnya, kita menerapkan fungsi KMeans dan