Metoda k-średnich (ang. K-means) to algorytm klasteryzacji polegający na podziale danych na k grupy tak, aby obiekty w ramach jednej grupy były podobne, a obiekty z różnych grup były od siebie odmienne. Algorytm działa następująco:
- Losowo wybiera się k punktów jako centroidy grup.
- Każdy obiekt zostaje przypisany do najbliższego centroidu.
- Dla każdej grupy oblicza się nową średnią (centroid) na podstawie przypisanych do niej obiektów.
- Powtarza się kroki 2 i 3, aż do osiągnięcia stabilności (tzn. aż centroidy nie ulegną już zmianie).
Metoda k-średnich jest często stosowana, ponieważ jest prosta w implementacji i daje dobre wyniki dla dużych zbiorów danych. Ma jednak kilka ograniczeń:
- Potrzebuje z góry zadanej liczby grup, co może być trudne do określenia.
- Może działać słabo dla danych o nieregularnym kształcie lub z dużą ilością szumu.
- Może działać suboptymalnie dla danych o różnych rozmiarach i gęstościach.
- Może działać słabo dla danych z dużą liczbą kategorii.
Mimo tych ograniczeń, metoda k-średnich jest szeroko stosowana w różnych dziedzinach, takich jak biznes, nauka, technologia i marketing. Może być używana do wyznaczania trendów w danych, segmentacji rynku lub do wyodrębnienia grup o podobnych cechach.
Przykład:
# importujemy potrzebne biblioteki
from sklearn.cluster import KMeans
import pandas as pd
# wczytujemy dane
data = pd.read_csv('customer_data.csv')
# wybieramy potrzebne nam kolumny
X = data[['age', 'income', 'spend']]
# tworzymy model KMeans
kmeans = KMeans(n_clusters=4)
# trenujemy model
kmeans.fit(X)
# przypisujemy każdy obiekt do odpowiedniego klastra
predictions = kmeans.predict(X)
# dodajemy kolumnę z przypisanym klastrem do oryginalnego zbioru danych
data['cluster'] = predictions
# wyświetlamy pierwszych kilka wierszy po dodaniu kolumny cluster
data.head()
Wynik:
wiek | dochód | wydatki | grupa |
---|---|---|---|
34 | 60000 | 6000 | 3 |
48 | 35000 | 2500 | 1 |
28 | 60000 | 5500 | 3 |
62 | 90000 | 11000 | 4 |
37 | 40000 | 6500 | 2 |
W powyższym przykładzie wczytaliśmy dane o klientach ze zbioru customer_data.csv, wybraliśmy trzy kolumny zawierające informacje o wieku, dochodach i wydatkach klientów i przeprowadziliśmy klasteryzację metodą k-średnich z 4 klastrami. Następnie przypisaliśmy każdemu klientowi odpowiedni klaster i doliczyliśmy tę informację do oryginalnych danych.