مراجعة: إصلاح ألواح التزلج
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 40 من 58.
التحدي
متوسطيريد مكتب التأجير في حديقة تزلج نموذجًا يكتشف ألواح التزلج المُعادة التي تحتاج إلى إصلاح. يقرأ البرنامج أكبر قيمة لـ k لتجربتها.
- افصل 25% من الصفوف للاختبار (
random_state=0). - لكل قيمة k في
ks، أجرِ تحققًا متقاطعًا لـ k-NN على صفوف التدريب (cv=5). اعرض المتوسطات على شكل أعمدة واطبع أفضل قيمة لـ k. - ابحث شبكيًا عن أفضل قيمة لـ
max_depthللشجرة ضمنdepths(cv=5،random_state=0) واطبع الأفضل. - يفوز المتوسط الأعلى: اطبع
Winner: k-NNأوWinner: treeمع دقة الاختبار الخاصة به.
لحديقة أخرى ومع 13:
Best k: 13 (mean 0.785)
Best depth: 5 (mean 0.763)
Winner: k-NN, test accuracy 0.822يصف Coddy بعد ذلك مخططك. ويبدو مخططهم هكذا:
جرّب بنفسك
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
# أكبر قيمة لـ k سنجرّبها، مثل 15
max_k = int(input())
# صف واحد لكل لوح تزلج أُعيد: عدد مرات التأجير منذ آخر صيانة له، ودرجات التآكل من 0 إلى 10
# والتشققات في سطح اللوح؛ تعني القيمة 1 في repair أنه أُرسل إلى الورشة
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# كل ميزة هي عدد صغير أو درجة، لذا لا يحتاج k-NN إلى مقياس هنا
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) # يبدأ عند 0.6 لإظهار الفروق الصغيرة
# اكتب الكود الخاص بك أدناه
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت