النماذج الخطية: الانحدار والتصنيف
درّب نماذج الانحدار الخطي والانحدار اللوجستي
النماذج الخطية: الانحدار والتصنيف درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
الانحدار الخطي
تُلاءم LinearRegression خطًا مستقيمًا (أو مستوى فائقًا) من خلال تقليل خطأ المربعات الصغرى.
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)معاملات النموذج
بعد الملاءمة، افحص coef_ (أوزان السمات) وintercept_.
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3]])
y = np.array([2, 4, 6])
model = LinearRegression().fit(X, y)
print("Coef:", model.coef_) # [2.]
print("Intercept:", model.intercept_) # ~0انحدار Ridge وLasso
يضيف كل من Ridge (L2) وLasso (L1) التنظيم لمنع فرط التخصيص. وتتحكم alpha في شدة التنظيم.
from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=15, random_state=0)
ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5]) # some are 0 (sparse)الانحدار اللوجستي
يُعد LogisticRegression مصنّفًا خطيًا للمسائل الثنائية أو متعددة الفئات. ورغم اسمه، فإنه يتنبأ باحتمالات الفئات.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))الانحدار اللوجستي متعدد الفئات
اضبط multi_class="multinomial" أو استخدم الإعداد الافتراضي OvR (واحد مقابل البقية) عند وجود 3 فئات أو أكثر.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_) # [0 1 2]
print("Accuracy:", model.score(X, y))تحجيم السمات للنماذج الخطية
احرص دائمًا على تحجيم السمات في النماذج الخطية، ولا سيما مع التنظيم. فالسمات غير المحجّمة تؤدي إلى عقوبات مختلفة بشكل مضلل.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
("scale", StandardScaler()),
("clf", LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))منحنى التعلم
يوضح منحنى التعلم كيفية تحسن أداء النموذج مع زيادة بيانات التدريب، وهو مفيد لتشخيص نقص التخصيص أو فرط التخصيص.
from sklearn.model_selection import learning_curve
import numpy as np
train_sizes, train_scores, val_scores = learning_curve(
LogisticRegression(), X, y, cv=5,
train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))درجة R² للانحدار
تقيس r2_score نسبة التباين الذي يفسره النموذج. تمثل القيمة 1.0 أداءً مثاليًا، بينما تعني القيمة 0 أن النموذج ليس أفضل من التنبؤ بالمتوسط.
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))السمات متعددة الحدود
استخدم PolynomialFeatures لملاءمة العلاقات غير الخطية باستخدام نموذج خطي.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25]) # y = x^2
pipe = Pipeline([
("poly", PolynomialFeatures(degree=2)),
("lr", LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]])) # ~36SGDClassifier وSGDRegressor
يتوسع الانحدار المتدرج العشوائي ليعالج مجموعات البيانات الكبيرة جدًا، حيث تكون الحلول القياسية بطيئة للغاية.
from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))مسارات التنظيم
غيّر قيمة alpha عبر شبكة باستخدام RidgeCV/LassoCV، إذ يختاران أفضل قيمة لـ alpha تلقائيًا من خلال التحقق المتقاطع.
from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)تحقق سريع
ما الفرق الأساسي بين انحدار Ridge وانحدار Lasso؟
مراجعة
استخدم LinearRegression للانحدار، وLogisticRegression للتصنيف. أضف Ridge/Lasso للتنظيم. احرص دائمًا على تحجيم السمات. استخدم PolynomialFeatures للمسائل غير الخطية. قيّم الأداء باستخدام r2_score (للانحدار) أو accuracy_score (للتصنيف).
الأسئلة الشائعة
هل درس «النماذج الخطية: الانحدار والتصنيف» مجاني؟
نعم — نص درس «النماذج الخطية: الانحدار والتصنيف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «النماذج الخطية: الانحدار والتصنيف»؟
درّب نماذج الانحدار الخطي والانحدار اللوجستي تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «النماذج الخطية: الانحدار والتصنيف»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- واجهة scikit-learn: fit وtransform وpredict
- النماذج الخطية: الانحدار والتصنيف
- النماذج القائمة على الأشجار: أشجار القرار والغابات العشوائية
- تقييم النماذج والتحقق المتقاطع