Grunderna i k-means-klustring

Klusteranalys i Python

Shaumik Daityari

Business Analyst

Varför k-means-klustring?

  • En stor nackdel med hierarkisk klustring: körtiden
  • K-means är betydligt snabbare på stora datamängder
Klusteranalys i Python

Steg 1: Generera klustercenter

kmeans(obs, k_or_guess, iter, thresh, check_finite)
  • obs: standardiserade observationer
  • k_or_guess: antal kluster
  • iter: antal iterationer (standard: 20)
  • thres: tröskel (standard: 1e-05)
  • check_finite: om observationerna ska kontrolleras för ändliga tal (standard: True)

Returnerar två objekt: klustercenter, distorsion

Klusteranalys i Python

Hur beräknas distorsion?

Klusteranalys i Python

Steg 2: Generera klusteretiketter

vq(obs, code_book, check_finite=True)
  • obs: standardiserade observationer
  • code_book: klustercenter
  • check_finite: om observationerna ska kontrolleras för ändliga tal (standard: True)

Returnerar två objekt: en lista med klusteretikett, en lista med distorsioner

Klusteranalys i Python

Om distorsioner

  • kmeans returnerar ett enda distorsionsvärde
  • vq returnerar en lista med distorsioner.
Klusteranalys i Python

Köra k-means

# Import kmeans and vq functions
from scipy.cluster.vq import kmeans, vq
# Generate cluster centers and labels
cluster_centers, _ = kmeans(df[['scaled_x', 'scaled_y']], 3)
df['cluster_labels'], _ = vq(df[['scaled_x', 'scaled_y']], cluster_centers)
# Plot clusters
sns.scatterplot(x='scaled_x', y='scaled_y', hue='cluster_labels', data=df)
plt.show()
Klusteranalys i Python

Klusteranalys i Python

Nu kör vi en övning!

Klusteranalys i Python

Preparing Video For Download...