استخدام SVM للتصنيف مع sklearn
SVC وLinearSVC واختيار النواة وclass_weight='balanced' وprobability=True
استخدام SVM للتصنيف مع sklearn درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
SVMs في scikit-learn
يوفر scikit-learn عدة مُصنِّفات من نوع SVM. وأهمها SVC، الذي يدعم الحدود الخطية وحدود النواة من خلال معلمته kernel.
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=1.0, gamma="scale")
model.fit(Xtr, ytr)
print(model.score(Xte, yte))المعلمات الأساسية لـ SVC
تتحكم ثلاث معلمات في سلوك SVC:
kernelنوع الحد الفاصل (linear, rbf, poly)Cعقوبة الخطأ / الانتظامgammaعرض النواة لـ rbf/poly
from sklearn.svm import SVC
model = SVC(kernel="rbf", C=10, gamma=0.1)احرص دائمًا على التحجيم أولًا
تتأثر SVMs بمقياس السمات. ضع أداة التحجيم وSVC داخل مسار معالجة، بحيث تتم ملاءمة التحجيم باستخدام بيانات التدريب فقط، حتى داخل التحقق المتقاطع.
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
pipe.fit(Xtr, ytr)استخدام LinearSVC لمجموعات البيانات الكبيرة
لا يتوسع SVC(kernel="linear") بكفاءة عند التعامل مع عدد كبير من العينات. ويستخدم LinearSVC محلّلًا أسرع مُحسّنًا للمشكلات الخطية، كما يتعامل مع البيانات الكبيرة وعالية الأبعاد بكفاءة أكبر بكثير.
from sklearn.svm import LinearSVC
model = LinearSVC(C=1.0, max_iter=5000)
model.fit(Xtr, ytr)SVC في مقابل LinearSVC
استخدم LinearSVC مع البيانات الكبيرة أو المتناثرة (مثل النصوص). واستخدم SVC عندما تحتاج إلى نوى لإنشاء حدود فاصلة غير خطية. لاحظ أن LinearSVC يستخدم دالة خسارة مختلفة قليلًا، ولا يوفر predict_proba.
اختلال توازن الفئات
عندما تكون إحدى الفئات نادرة، يميل SVM إلى تفضيل الفئة الأكبر. ويعمل ضبط class_weight="balanced" على ترجيح الفئات تلقائيًا بعكس تكرارها.
from sklearn.svm import SVC
model = SVC(kernel="rbf", class_weight="balanced")
model.fit(Xtr, ytr)أوزان الفئات المخصصة
يمكنكم أيضًا تمرير قاموس صريح إلى class_weight لإعطاء فئة معينة وزنًا أكبر من الوزن الناتج عن الموازنة التلقائية.
from sklearn.svm import SVC
model = SVC(class_weight={0: 1, 1: 5}) # class 1 errors cost 5xتقديرات الاحتمالات
يعيد SVC التسميات القطعية افتراضيًا. عيّنوا probability=True لتمكين predict_proba (من خلال المعايرة الداخلية)، وهو أمر ضروري لحساب ROC AUC وضبط العتبة. لكن ذلك يبطئ التدريب.
from sklearn.svm import SVC
model = SVC(probability=True)
model.fit(Xtr, ytr)
proba = model.predict_proba(Xte)[:, 1]نماذج SVM متعددة الفئات
يتعامل SVC تلقائيًا مع أكثر من فئتين باستخدام مخطط one-vs-one. لا تحتاجون إلى تغيير التعليمات البرمجية؛ ما عليكم سوى التدريب باستخدام تسميات متعددة الفئات، وسيعمل النموذج.
from sklearn.svm import SVC
model = SVC(decision_function_shape="ovr")
model.fit(X_multiclass, y_multiclass)ضبط C وgamma باستخدام GridSearchCV
تتمثل الطريقة القياسية في إجراء بحث شبكي على C وgamma بمقياس لوغاريتمي، مع وضع كل ذلك داخل خط أنابيب للتحجيم.
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
param = {
"svc__C": [0.1, 1, 10, 100],
"svc__gamma": [0.001, 0.01, 0.1, 1],
}
gs = GridSearchCV(pipe, param, cv=5, scoring="f1")
gs.fit(Xtr, ytr)
print(gs.best_params_)نصائح عملية
تؤدي نماذج SVM أداءً ممتازًا على مجموعات البيانات الصغيرة إلى المتوسطة ذات الهوامش الواضحة. لكنها تواجه صعوبات مع البيانات الضخمة جدًا (استخدموا LinearSVC أو انتقلوا إلى التعزيز). احرصوا دائمًا على تحجيم الميزات، وضبط C وgamma، واستخدام class_weight لمعالجة عدم توازن الفئات.
تحقق سريع
اختبروا معرفتكم بنماذج SVM في sklearn.
خلاصة
الخلاصة: استخدموا SVC مع kernel وC وgamma للتصنيف غير الخطي، ودائمًا داخل خط أنابيب للتحجيم. انتقلوا إلى LinearSVC عند التعامل مع البيانات الضخمة أو النصوص. عالجوا عدم التوازن باستخدام class_weight="balanced"، واضبطوا C وgamma معًا باستخدام GridSearchCV.
الأسئلة الشائعة
هل درس «استخدام SVM للتصنيف مع sklearn» مجاني؟
نعم — نص درس «استخدام SVM للتصنيف مع sklearn» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «استخدام SVM للتصنيف مع sklearn»؟
SVC وLinearSVC واختيار النواة وclass_weight='balanced' وprobability=True تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «استخدام SVM للتصنيف مع sklearn»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نظرية SVM: الهوامش ومتجهات الدعم
- حيلة النواة: RBF ومتعددة الحدود وSigmoid
- استخدام SVM للتصنيف مع sklearn
- استخدام SVM للانحدار (SVR)