القائمة الرئيسية

الصفحات

خوارزمية Support Vector Machine (ألجزء ألعملي)


خوارزمية Support Vector Machine (ألجزء ألعملي)
بعد إن قمنا بشرح ألجزء ألنظري في خوارزمية Support vector Machine، الآن نأتي ألى ألجزء ألعملي ألذي يُعتبر مكمل للمسار ألتدريبي



خوارزمية Support Vector Machine (ألجزء ألعملي)


بعد إن قمنا بشرح ألجزء ألنظري في خوارزمية Support vector Machine، الآن نأتي ألى ألجزء ألعملي ألذي يُعتبر مكمل للمسار ألتدريبي لتعلم هذه ألخوارزمية ألرائعة والمهمة في عالم تعلم الآلة machine learning،حيث أثبتت فاعليتها في عمليات ألتصنيف ألمختلفة عند ألتعامل مع شتى ألبيانات.
سنقوم بأنشاء خوارزمية Support Vector Machine بلغة بايثون ألرائعة،وتحديداً بأستخدام مكتبة scikit-learn ألتي تساعدنا في تبسيط الكود البرمجي وسهولة فهمه وأستيعابه.
سنحتاج إلى بيانات عند بناء ألنموذج ألخاص بالخوارزمية ولأجراء عملية ألتصنيف classification،قمنا بأختيار بينات cancer dataset ألشهيرة في مجال تعلم الآلة ألمستخدمة في عمليات ألتصنيف ألمتعدد multi-class classification،ألتي تتكون من صور مرقمنة مأخوذة من كتلة الثدي ألتي تصف خصائص ألخلية ألموجودة في الصورة.تتكون هذه ألبيانات من 30 ميزة features سنقوم بعرضها لاحقاً من خلال الكود، وتحتوي على نوعين label من الخلايا هما ألخلايا ألخبيثة malignant والخلايا ألحميدة benign.
وتتوفر هذه ألبيانات ضمن مكتبة scikit-learn لذلك لاتوجد حاجة لتنزيلها من مصادر خارجية.
والآن لنقوم بأنشاء ألكود ألبرمجي،وكما قلنا سابقاً سيتم كتابته بلغة بايثون لذا هيا بنا للخطوة الأولى وهي تنزيل ألبيانات حيث تم أدراج بيانات cancer من ألمكتبة ألخاصة scikit-learn ووضعها في متغير أسميناه cancer.

from sklearn import datasets
cancer = datasets.load_breast_cancer()





والآن إذا أردنا أستكشاف هذه ألبيانات وماتحتويه من ميزات features و labels فيمكننا ذلك عن طريق الكود الآتي


print("Features: ", cancer.feature_names)
print("Labels: ", cancer.target_names)


:وسيكون ألناتج لدينا كلآتي


Features: ['mean radius' 'mean texture' 'mean perimeter' 'mean area'
'mean smoothness' 'mean compactness' 'mean concavity'
'mean concave points' 'mean symmetry' 'mean fractal dimension'
'radius error' 'texture error' 'perimeter error' 'area error'
'smoothness error' 'compactness error' 'concavity error'
'concave points error' 'symmetry error' 'fractal dimension error'
'worst radius' 'worst texture' 'worst perimeter' 'worst area'
'worst smoothness' 'worst compactness' 'worst concavity'
'worst concave points' 'worst symmetry' 'worst fractal dimension']
Labels: ['malignant' 'benign']




:إذا أردنا أن نعرف أبعاد هذه ألبيانات فيتم أستخدام الأيعاز الآتي



cancer.data.shape

وستكون ألنتيجة كالآتي:
(569, 30)

يعني أن لدينا 569 مثال و 30 ميزة في هذه ألبيانات.
الآن نأتي إلى فقرة مهمة وهي كيفية تقسيم ألبيانات ألى بيانات تدريب وبيانات أختبار لكي يتسنى لنا إنشاء ألنموذج ألخاص بالخوارزمية svm



from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.3,random_state=109) # 70% training 


تم تقسيم ألبيانات إلى قسمين هما X_train , y_train ألخاصة ببيانات ألتدريب و X_test ، y_test ألخاصة ببيانات الأختبار وتمأختيار أن تكون كمية بيانات الأختبار هي 30% من كمية ألبيانات ألكلية (بالطبع يمكنك أن تحدد ألنسبة حسب ماتره مناسباً في ألنموذج ألترغب ببناءه).
نأتي الآن إلى فقرة بناء ألنموذج لخوارزمية Support Vector Machine وأول خطوة هي أستيراد ألنموذج من مكتبة scikit-learn 
من خلال الأيعاز ألتالي:

from sklearn import svm

بعدها تمرير هذا ألنموذج إلى متغير ولنسميه classifier:

classifier = svm.SVC(kernel='linear') 


ولأجراء عملية ألتدريب training نستخد الأيعاز ألتالي:

classifier.fit(X_train, y_train)

ولأختباره على بيانات ألتدريب يستخد الأيعاز ألتالي:

y_pred = classifier.predict(X_test)

والآن علينا أن نتأكد من دقة تصنيف هذا ألنموذج ولنستخدم مقياس accuracy ستتم هذه ألعملية من خلال ألكود الآتي:

from sklearn import metrics
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))



:ستظهر لدينا ألنتيجة ألتالية
Accuracy: 0.9649122807017544

هذا يعني أن دقة ألنموذج وصلت تقريباً 96% وهذا شيء ممتاز ويمكن أ‘تماده في تصنيف أي بيانات مستقبلية نرغب بها.
إلى هنا نصل لى نهاية هذا ألمقال،وأتمنى أن قد أكون قد وفقت في طرح هذا ألمفهوم ألمهم،وأي سؤال أو استفسار فيمكنكم تركه لي في خانة ألتعليقات ألموجودة في الأسفل.


م.م رسول حسن

هل اعجبك الموضوع :

تعليقات