Menu
CoddyTech
flag Ar iconالعربيةdown icon

التنظيم

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 34 من 58.

يميل النموذج الخطي مفرط التكيّف إلى الاعتماد على أوزان كبيرة لينحني نحو كل صف مشوّش. يفرض انحدار Ridge عقوبةً على الأوزان الكبيرة، وتحدّد alpha مقدار هذه العقوبة.

إليك 20 غيتارًا مستعملًا، وست سمات مُقاسة تتنبأ بالسعر:

ستة خطوط، وزن واحد لكل سمة من سمات الغيتار، مقابل ألفا من 0.01 إلى 1000. تبدأ الحالة عند 116، والعلامة التجارية عند 104، والعمر عند ناقص 83؛ وتتقلص جميعها نحو 0 مع زيادة ألفا

يتطلب الأمر تبديلًا واحدًا لـ LinearRegression، الذي كانت أوزانه [-83. 116. 104. 27. 17. 15.]:

from sklearn.linear_model import Ridge

ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))

يَطبع هذا:

[-14.  18.  16.  10.   5.   8.]

ألفا أكبر، أوزان أصغر، وفرط مواءمة أقل. إذا كانت كبيرة جدًا، فإن النموذج يعاني من نقص المواءمة.

challenge icon

التحدي

متوسط

يتنبأ موقع لقضاء العطلات بأسعار الأكواخ لكل ليلة اعتمادًا على 8 ميزات، باستخدام 16 كوخًا فقط. يقرأ البرنامج alpha؛ ويقسّم البرنامج التمهيدي البيانات ويُجري تحجيمها.

  1. درّب نموذجًا من LinearRegression ونموذجًا من Ridge باستخدام قيمة alpha تلك.
  2. اطبع إجمالي حجم الأوزان لكل نموذج: اجمع الأوزان بعد إزالة إشاراتها، ثم قرّب الناتج.
  3. اطبع قيمة R squared لكل نموذج على مجموعة الاختبار (3 منازل عشرية) والنموذج الأفضل، كما هو موضح أدناه.

لمنطقة أخرى و5:

Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridge

جرّب بنفسك

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score

alpha = float(input())

# لا تغيّر الأسطر أدناه: 28 كوخًا للعطلات، و8 خصائص، والسعر لكل ليلة باليورو
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت