Menu
CoddyTech

Özet: Kaykay Tamiri

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

challenge icon

Görev

Orta

Bir kaykay parkının kiralama masası, iade edilen kaykaylardan tamir edilmesi gerekenleri belirleyen bir model istiyor. Program, denenecek en büyük k değerini okur.

  1. %25'ini test satırları olarak ayır (random_state=0).
  2. ks içindeki her k için eğitim satırlarında k-NN çapraz doğrulaması yap (cv=5). Ortalamaları çubuklar olarak çiz ve en iyi k değerini yazdır.
  3. Bir ağacın max_depth değerini depths üzerinde ızgara aramasıyla bul (cv=5, random_state=0) ve en iyisini yazdır.
  4. Daha yüksek ortalama kazanır: test doğruluğuyla birlikte Winner: k-NN veya Winner: tree yazdır.

Başka bir park ve 13 için:

Best k: 13 (mean 0.785)
Best depth: 5 (mean 0.763)
Winner: k-NN, test accuracy 0.822

Coddy daha sonra grafiğini açıklar. Onlarınki şöyle görünüyor:

Skateboard Repairs: Accuracy by k başlıklı, 1'den 13'e kadar her k için birer çubuk bulunan, 0.6'dan 0.9'a kadar uzanan eksenli grafik. Küçük k değerlerinde 0.72 civarında dalgalanıyor, sonra k = 13 değerinde 0.785'e yükseliyor.

Kendin dene

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier

# Denenecek en büyük k değeri, örneğin 15
max_k = int(input())

# İade edilen her kaykay için bir satır: son bakımından bu yana kiralanma sayısı, 0 ile 10 arasında aşınma puanları
# ve kaykay tahtasındaki çatlaklar; repair sütunundaki 1, kaykayın atölyeye gittiği anlamına gelir
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# Her özellik küçük bir sayı veya puan olduğundan k-NN için burada ölçekleyici gerekmez
ks = list(range(1, max_k + 1, 2))
depths = [2, 3, 4, 5, 6, 7, 8]

fig, ax = plt.subplots()
ax.set_title("Skateboard Repairs: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Mean CV accuracy")
ax.set_xticks(ks)
ax.set_ylim(0.6, 0.9)  # küçük farkların görünmesi için 0.6'dan başlar

# Kodunuzu aşağıya yazın

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

Kendi başına pratik yap: Online Python derleyicisi