Menu
CoddyTech

Komşular İçin Ölçekleme

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

k-NN mesafeyi ölçer, bu nedenle büyük sayılara sahip bir özellik diğerlerini geride bırakır; 2. bölümde bu konuda uyarıda bulunmuştuk. Burada metre cinsinden nehir mesafesi, rakımı gölgede bırakıyor:

160 evin gösterildiği iki harita; yatay eksende nehir mesafesi, dikey eksende rakım, evler su basmış veya kuru. Ham: harita yalnızca mesafeye göre dikey şeritlere bölünmüş, doğruluk 0.6. Ölçeklendirilmiş: su basmış evler nehrin yakınındaki alt köşede yer alıyor, doğruluk 0.925

Önce ölçeklendirin. Ölçekleyiciyi yalnızca eğitim satırlarına fit edin, ardından her iki kümeyi de dönüştürün:

scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)
X_test_s = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_s, y_train)
print(model.score(X_test_s, y_test))

Bu, 0.6 değerinden yükselerek 0.925 yazdırır. Test satırları görülmemiş olarak kalır: ölçekleyici onlardan hiçbir şey öğrenmez.

challenge icon

Görev

Kolay

Akıllı sayaç, meter.csv dosyasındaki güç (watt) ve çalışma süresine (dakika) göre çalışan cihazı tahmin eder. Başlangıç kodu k değerini okur ve ham özelliklerle k-NN doğruluğunu yazdırır.

  1. Eğitim satırlarına bir StandardScaler uydur ve her iki kümeyi de dönüştür.
  2. Ölçeklendirilmiş satırlarla aynı k değerine sahip bir k-NN modeli uydur; doğruluğunu 3 ondalık basamağa kadar yazdır.
  3. Kazancı yazdır.

Başka bir ev ve k = 5 için:

Unscaled accuracy: 0.65
Scaled accuracy: 0.875
Scaling gains 0.225

Kendin dene

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler

# Her cihaz çalışması için bir satır: watt cinsinden güç, dakika cinsinden çalışma süresi, hangi cihaz olduğu
meter = pd.read_csv("meter.csv")
X = meter[["watts", "minutes"]]
y = meter["appliance"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())

# Ham özellikler üzerinde k-NN
raw_model = KNeighborsClassifier(n_neighbors=k)
raw_model.fit(X_train, y_train)
raw = raw_model.score(X_test, y_test)
print(f"Unscaled accuracy: {round(raw, 3)}")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

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

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

Kendi başına pratik yap: Online Python derleyicisi