Karar Sınırları
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 8 / 58.
Bir karar sınırı, modelin yanıtının değiştiği yerdir. Bunu görmek için modele grafikteki her noktada, noktalar ızgara şeklinde düzenlenmişken sorun:
np.meshgrid her x değerini her y değeriyle eşleştirir. Eşleşmeleri satırlara düzleştirin, hepsi için tahmin yapın ve sonuçları yeniden ızgaranın şekline dönüştürün:
xx, yy = np.meshgrid(np.linspace(2, 16, 100), np.linspace(0.5, 6.5, 100))
grid = np.column_stack([xx.flatten(), yy.flatten()])
zz = model.predict(grid).reshape(xx.shape)
ax.contourf(xx, yy, zz, levels=[-0.5, 0.5, 1.5], colors=["C0", "C1"], alpha=0.3)contourf her sınıf kodunun alanını doldurur: levels kodların tam ortasına sınırlar koyar, colors noktalarla eşleşir. Noktaları ardından, üstüne çiz.
Görev
KolayBir otomat madeni paraları boyutlarına ve ağırlıklarına göre sınıflandırır. Başlangıç kodu, coins.csv dosyasındaki verilerle k-NN modelini eğitir (sınıf kodları 0'dan 2'ye kadar); draw_coins(ax) ise paraları çizer.
- 100'e 100'lük bir
xx,yyızgarası oluştur: yatayda 18 ile 26 mm, dikeyde 3 ile 9 g arası. - Her nokta için tahmin yap ve ızgarayla aynı şekle sahip
zzdizisine kaydet. - Haritayı C0'dan C2'ye kadar renklerle doldur, ardından paraları çiz ve göster.
Şunun gibi:
Başka bir ülkenin madeni paraları, dolayısıyla bölgeler de farklı.
Coddy haritanı açıklar.
Kendin dene
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
# Makinenin ölçtüğü her madeni para için bir satır: çap (mm), ağırlık (g), sent cinsinden değer
coins = pd.read_csv("coins.csv")
X = np.column_stack([coins["diameter_mm"], coins["weight_g"]])
# Sınıf kodları: 10c için 0, 20c için 1, 50c için 2
y = coins["value_c"].map({10: 0, 20: 1, 50: 2})
names = ["10c", "20c", "50c"]
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X, y)
# Madeni paraları ax üzerinde, her sınıf için farklı bir renkle çizer: C0, C1, C2
def draw_coins(ax):
for code in range(3):
ax.scatter(X[y == code, 0], X[y == code, 1], s=20, label=names[code])
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Coin Sorter Map")
ax.set_xlabel("Diameter (mm)")
ax.set_ylabel("Weight (g)")
# Kodunuzu aşağıya yazın
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
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi