Menu
CoddyTech

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:

Küçük noktalardan oluşan bir ızgaranın üzerinde 80 acı biber. Her nokta, modelin oradaki yanıtına göre renklendirilmiştir: solda acı için turuncu, sağda hafif acı için mavi; renkler basamaklı bir çizgi boyunca buluşuyor

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.

challenge icon

Görev

Kolay

Bir 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.

  1. 100'e 100'lük bir xx, yy ızgarası oluştur: yatayda 18 ile 26 mm, dikeyde 3 ile 9 g arası.
  2. Her nokta için tahmin yap ve ızgarayla aynı şekle sahip zz dizisine kaydet.
  3. Haritayı C0'dan C2'ye kadar renklerle doldur, ardından paraları çiz ve göster.

Şunun gibi:

Madeni para sınıflandırma haritası: üç yumuşak bölge; sol altta 10c için mavi, ortada 5c için turuncu, sağda 25c için yeşil; her bölgenin üzerinde kendi madeni paraları ve bir açıklama bulunuyor

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
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