Menu
CoddyTech

Rekap: Perbaikan Skateboard

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 40 dari 58.

challenge icon

Tantangan

Sedang

Meja penyewaan di taman skateboard menginginkan model yang dapat mendeteksi papan yang dikembalikan dan perlu diperbaiki. Program membaca nilai k terbesar yang akan dicoba.

  1. Pisahkan 25% baris sebagai data uji (random_state=0).
  2. Untuk setiap k dalam ks, lakukan validasi silang k-NN pada baris pelatihan (cv=5). Gambarkan nilai rata-ratanya sebagai batang dan cetak k terbaik.
  3. Lakukan pencarian grid untuk max_depth pada pohon menggunakan depths (cv=5, random_state=0) dan cetak nilai terbaik.
  4. Nilai rata-rata yang lebih tinggi menang: cetak Winner: k-NN atau Winner: tree beserta akurasi ujinya.

Untuk taman lain dan 13:

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

Coddy kemudian menjelaskan grafikmu. Grafik mereka terlihat seperti ini:

Batang berjudul Perbaikan Skateboard: Akurasi berdasarkan k, satu batang untuk setiap k dari 1 hingga 13, sumbu dari 0.6 hingga 0.9. Nilainya berfluktuasi di sekitar 0.72 untuk k kecil, lalu naik hingga 0.785 pada k = 13

Coba sendiri

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

# Nilai k terbesar yang akan dicoba, misalnya 15
max_k = int(input())

# Satu baris untuk setiap skateboard yang dikembalikan: jumlah penyewaan sejak servis terakhir, skor keausan dari 0 hingga 10
# dan retakan pada papan; 1 pada repair berarti skateboard dibawa ke bengkel
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# Setiap fitur berupa hitungan atau skor kecil, jadi k-NN tidak memerlukan scaler di sini
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)  # dimulai dari 0.6 agar perbedaan kecil terlihat

# Tulis kodemu di bawah ini

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online