Kmeans Kümeleme Algoritmasına Giriş

May 01 2023
K-Means kümelemesi nedir? K-Means kümeleme, bir veri kümesinde benzer veri noktalarını kümelemek veya gruplandırmak için kullanılan denetimsiz bir makine öğrenimi algoritmasıdır. Verileri, her veri noktasının tek bir kümeye ait olduğu örtüşmeyen kümelere bölen bir bölümleme algoritmasıdır.

K-Means kümelemesi nedir?

K-Means kümeleme, bir veri kümesinde benzer veri noktalarını kümelemek veya gruplandırmak için kullanılan denetimsiz bir makine öğrenimi algoritmasıdır. Verileri, her veri noktasının tek bir kümeye ait olduğu örtüşmeyen kümelere bölen bir bölümleme algoritmasıdır. K-means kümeleme, her bir veri noktası ve atanmış merkez noktası arasındaki kare mesafelerin toplamını en aza indirmeyi amaçlar.

Teori - Nasıl çalışır?

Adım 1. Öncelikle, oluşturmak istediğimiz küme sayısı olan K değerine karar vermemiz gerekiyor. K'nin değerine rastgele veya Elbow, Silhouette gibi bir yöntem kullanılarak karar verilebilir.

Adım 2. Ardından, her küme için ilk merkez noktaları olarak hareket etmek üzere veri kümesinden rastgele K nokta seçiyoruz.

Adım 3. Daha sonra her bir veri noktası ile merkezler arasındaki Öklid mesafesini hesaplıyoruz ve veri noktasını en yakın merkeze atayarak K küme oluşturuyoruz.

Adım 4. Tüm veri noktalarını en yakın merkeze atadıktan sonra, o merkeze atanan tüm veri noktalarının ortalamasını hesaplayarak her merkezin konumunu güncelleriz.

Adım 5. Algoritma yakınsayana kadar 3. ve 4. adımları tekrarlıyoruz; bu, ağırlık merkezlerinin artık hareket etmediği veya veri noktaları ile atanmış merkez noktaları arasındaki mesafelerin karelerinin toplamındaki iyileşmenin önemsiz hale geldiği anlamına gelir.

Kod nasıl çalışır?

Gerekli kitaplıkları içe aktarın:

import numpy as np
import matplotlib.pyplot as plt

X = np.random.rand(100, 2) * 2
plt.scatter(X[:, 0], X[:, 1])
plt.show()

      
                

K = 7
centroids = X[np.random.choice(len(X), K, replace=False)]
plt.scatter(X[:, 0], X[:, 1])
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()

      
                
while True: # Assign data points to the nearest centroid distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)) labels = np.argmin(distances, axis=0) # Calculate new centroids new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(K)]) # Check for convergence if np.all(centroids == new_centroids): break # Update centroids centroids = new_centroids plt.scatter(X[:, 0], X[:, 1], c=labels) plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r') plt.show()

K sınırlamaları algoritma anlamına gelir

  1. K, kümelemenin başlangıçtaki merkez noktası seçimine duyarlı olduğu anlamına gelir. İlk merkezler uygun şekilde seçilmezse, algoritma yetersiz bir çözüme yakınsayabilir.
  2. K, kümelemenin aykırı değerlere duyarlı olduğu anlamına gelir
  3. K, kümelemenin K değerine duyarlı olduğu anlamına gelir. K doğru seçilmezse, yetersiz kümeler verebilir.