Menu
CoddyTech

Kümeleme Öncesi Ölçekleme

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 9 / 51.

K-means uzaklığa göre gruplandırır; bu yüzden en büyük birimler belirleyici olur. Barınaktaki kedileri ağırlıklarını gram, yaşlarını yıl cinsinden kullanarak gruplandırırsan, 500 g’lık fark 10 yıllık farkı bastırır.

Barınaktaki 120 kedinin iki grafiği; yatay eksende yaş yıl cinsinden, dikey eksende ağırlık gram cinsinden. Solda, ham verilerle kümelenmiş: yetişkin kediler ağırlıklarına göre ayrılarak genç ve yaşlı kedileri karıştırıyor. Sağda, ölçeklendirme sonrasında kümelenmiş: yavru kediler, yetişkinler ve yaşlı kediler yaşlarına göre ayrılmış

k-NN'de olduğu gibi önce standartlaştırın; böylece her özellik eşit ağırlıkta olur:

X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)

make_pipeline(StandardScaler(), KMeans(...)) ikisini de tek bir modelde yapar. Ardından her grubu gerçek birimlerle okuyun: orijinal satırlarının ortalamasını alın, X[km.labels_ == c].mean(axis=0).

challenge icon

Görev

Kolay

Bir daire arama uygulaması, 100 ilanı kira bedeline ve istasyona uzaklığına göre gruplandırıyor. Başlangıç kodu ham sütunları kümeliyor ve grupların tümü yaklaşık 3 km uzakta kalıyor: dolarlar kilometreleri bastırıyor.

  1. İki sütunu StandardScaler ile ölçeklendir.
  2. Bunun yerine ölçeklendirilmiş satırları kümele. Raporu koru: her grubu gerçek birimlerle gösteriyor.

Başka bir şehir için:

38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km out

Kendin dene

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# Her daire için bir satır: dolar cinsinden aylık kira, istasyona km cinsinden uzaklık
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]

# Bu, ham sütunları kümeliyor: düzelt
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)

# Her grubu gerçek birimlerle raporla, en büyükten başla
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
    group = flats[km.labels_ == c]
    print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi