المُقدّمة
هذا الدليل هو الجزء الأول من ثلاثة أدلة حول آلات المتجهات الداعمة (SVM). في هذه السلسلة ، سنعمل على حالة استخدام أوراق نقدية مزورة ، ونتعرف على SVM البسيط ، ثم حول معلمات SVM الفائقة ، وأخيرًا ، نتعلم مفهومًا يسمى خدعة النواة واستكشف أنواعًا أخرى من SVMs.
إذا كنت ترغب في قراءة جميع الأدلة أو معرفة أي منها يثير اهتمامك أكثر ، يوجد أدناه جدول الموضوعات التي يتم تناولها في كل دليل:
1. تنفيذ SVM و Kernel SVM باستخدام لغة Scikit-Learn من Python
- حالة الاستخدام: انسى الأوراق النقدية
- خلفية SVMs
- نموذج بسيط (خطي) SVM
- حول مجموعة البيانات
- استيراد مجموعة البيانات
- استكشاف مجموعة البيانات
- تنفيذ SVM باستخدام Scikit-Learn
- تقسيم البيانات إلى تدريب / مجموعات اختبار
- تدريب النموذج
- يتنبأ
- تقييم النموذج
- تفسير النتائج
2. فهم المعلمات التشعبية SVM (قريبا!)
- C Hyperparameter
- معلمة غاما Hyperparameter
3. تطبيق نكهات SVM الأخرى باستخدام Scikit-Learn من Python (قريبا!)
- الفكرة العامة لـ SVMs (ملخص)
- نواة (خدعة) SVM
- تنفيذ SVM غير الخطي للنواة باستخدام Scikit-Learn
- استيراد مكتبات
- استيراد مجموعة البيانات
- تقسيم البيانات إلى ميزات (X) وهدف (ص)
- تقسيم البيانات إلى تدريب / مجموعات اختبار
- تدريب الخوارزمية
- نواة متعددة الحدود
- يتنبأ
- تقييم الخوارزمية
- نواة جاوس
- التنبؤ والتقييم
- نواة السيني
- التنبؤ والتقييم
- مقارنة أداء النواة غير الخطية
حالة الاستخدام: أوراق بنكية مزورة
يجد الناس أحيانًا طريقة لتزوير الأوراق النقدية. إذا كان هناك شخص ينظر إلى تلك الملاحظات ويتحقق من صحتها ، فقد يكون من الصعب أن يخدعهم.
ولكن ماذا يحدث عندما لا يكون هناك من ينظر إلى كل ملاحظة؟ هل هناك طريقة لمعرفة ما إذا كانت الأوراق النقدية مزورة أم حقيقية؟
هناك طرق عديدة للإجابة على هذه الأسئلة. تتمثل إحدى الإجابات في تصوير كل ملاحظة مستلمة ، ومقارنة صورتها بصورة مذكرة مزورة ، ثم تصنيفها على أنها حقيقية أو مزورة. بمجرد أن يكون انتظار التحقق من صحة الملاحظة مملاً أو حاسمًا ، سيكون من المثير للاهتمام أيضًا إجراء هذه المقارنة بسرعة.
نظرًا لاستخدام الصور ، يمكن ضغطها ، وتقليلها إلى درجات رمادية ، واستخراج قياساتها أو تحديد حجمها. بهذه الطريقة ، ستكون المقارنة بين قياسات الصور ، بدلاً من بكسل كل صورة.
حتى الآن ، وجدنا طريقة لمعالجة ومقارنة الأوراق النقدية ، ولكن كيف سيتم تصنيفها إلى حقيقية أو مزورة؟ يمكننا استخدام التعلم الآلي للقيام بهذا التصنيف. هناك خوارزمية تصنيف تسمى دعم شاحنات النقل، تُعرف بشكلها المختصر بشكلها المختصر: SVM.
خلفية SVMs
تم تقديم SVMs في البداية في عام 1968 ، بواسطة فلاديمير فابنيك وأليكسي تشيرفونينكيس. في ذلك الوقت ، كانت الخوارزمية الخاصة بهم مقتصرة على تصنيف البيانات التي يمكن فصلها باستخدام خط مستقيم واحد فقط ، أو البيانات التي كانت قابلة للفصل خطيًا. يمكننا أن نرى كيف سيبدو هذا الانفصال:
في الصورة أعلاه ، لدينا خط في المنتصف ، حيث توجد بعض النقاط إلى اليسار ، والبعض الآخر على يمين هذا الخط. لاحظ أن مجموعتي النقاط منفصلتان تمامًا ، ولا توجد نقاط بينهما أو حتى قريبة من الخط. يبدو أن هناك هامشًا بين النقاط المتشابهة والخط الذي يقسمها ، يسمى هذا الهامش هامش الفصل. وظيفة هامش الفصل هي جعل المسافة بين النقاط المتشابهة والخط الذي يقسمها أكبر. يقوم SVM بذلك باستخدام بعض النقاط ويحسب المتجهات العمودية لدعم قرار هامش الخط. هؤلاء هم ناقلات الدعم التي هي جزء من اسم الخوارزمية. سوف نفهم المزيد عنها لاحقًا. والخط المستقيم الذي نراه في المنتصف يمكن إيجاده بالطرق التي تعظيم تلك المسافة بين الخط والنقاط ، أو التي تزيد من هامش الفصل. هذه الأساليب تنشأ من مجال نظرية التحسين.
في المثال الذي رأيناه للتو ، يمكن فصل مجموعتي النقاط بسهولة ، نظرًا لأن كل نقطة على حدة قريبة من بعضها البعض من النقاط المتشابهة ، والمجموعتان بعيدتان عن بعضهما البعض.
ولكن ماذا يحدث إذا لم تكن هناك طريقة لفصل البيانات باستخدام خط مستقيم واحد؟ إذا كانت هناك نقاط فوضوي خارج المكان ، أو إذا كانت هناك حاجة إلى منحنى؟
لحل هذه المشكلة ، تم تحسين SVM لاحقًا في التسعينيات ليكون قادرًا أيضًا على تصنيف البيانات التي تحتوي على نقاط كانت بعيدة عن اتجاهها المركزي ، مثل القيم المتطرفة ، أو المشكلات الأكثر تعقيدًا التي لها أكثر من بعدين ولم تكن قابلة للفصل خطيًا .
المثير للفضول هو أنه في السنوات الأخيرة فقط تم اعتماد SVM على نطاق واسع ، ويرجع ذلك أساسًا إلى قدرتها على تحقيق أكثر من 90 ٪ من الإجابات الصحيحة أو دقة، للمشاكل الصعبة.
يتم تنفيذ SVMs بطريقة فريدة عند مقارنتها بخوارزميات التعلم الآلي الأخرى ، بمجرد أن تستند إلى التفسيرات الإحصائية لماهية التعلم ، أو بناءً عليه نظرية التعلم الإحصائي.
في هذه المقالة ، سنرى ما هي خوارزميات Support Vector Machines ، والنظرية الموجزة وراء آلة متجه الدعم ، وتنفيذها في مكتبة Python Scikit-Learn. سننتقل بعد ذلك نحو مفهوم SVM آخر ، يُعرف باسم نواة SVMالطرق أو خدعة نواة، وسيتم تنفيذه أيضًا بمساعدة Scikit-Learn.
نموذج بسيط (خطي) SVM
حول مجموعة البيانات
باتباع المثال الوارد في المقدمة ، سنستخدم مجموعة بيانات تحتوي على قياسات لصور الأوراق النقدية الحقيقية والمزورة.
عند النظر إلى ملاحظتين ، عادةً ما تقوم أعيننا بمسحهما ضوئيًا من اليسار إلى اليمين والتحقق من أوجه التشابه أو الاختلاف. نبحث عن نقطة سوداء تأتي قبل نقطة خضراء ، أو علامة لامعة فوق رسم توضيحي. هذا يعني أن هناك ترتيبًا ننظر فيه إلى الملاحظات. إذا علمنا أن هناك نقاطًا خضراء وسوداء ، ولكن ليس إذا كانت النقطة الخضراء تأتي قبل الأسود ، أو إذا كان الأسود يأتي قبل اللون الأخضر ، فسيكون من الصعب التمييز بين الملاحظات.
هناك طريقة مشابهة لما وصفناه للتو يمكن تطبيقها على صور الأوراق النقدية. بشكل عام ، تتكون هذه الطريقة من ترجمة وحدات البكسل في الصورة إلى إشارة ، ثم مراعاة الترتيب الذي تحدث به كل إشارة مختلفة في الصورة عن طريق تحويلها إلى موجات صغيرة ، أو المويجات. بعد الحصول على المويجات ، هناك طريقة لمعرفة الترتيب الذي تحدث به بعض الإشارات قبل أخرى ، أو الوقت ، ولكن ليس بالضبط ما الإشارة. لمعرفة ذلك ، يجب الحصول على ترددات الصورة. يتم الحصول عليها بطريقة تقوم بتحليل كل إشارة تسمى طريقة فورييه.
بمجرد الحصول على البعد الزمني من خلال الموجات ، وبعد التردد من خلال طريقة فورييه ، يتم إجراء تراكب للوقت والتردد لمعرفة متى يتطابق كلاهما ، وهذا هو التفاف تحليل. يحصل الالتواء على تناسب يطابق الموجات مع ترددات الصورة ويكتشف الترددات الأكثر بروزًا.
تسمى هذه الطريقة التي تتضمن إيجاد المويجات وتردداتها ثم تركيب كل منهما تحول موجية. يحتوي التحويل المويجي على معاملات ، وقد تم استخدام تلك المعاملات للحصول على القياسات التي لدينا في مجموعة البيانات.
استيراد مجموعة البيانات
مجموعة بيانات الأوراق النقدية التي سنستخدمها في هذا القسم هي نفسها التي تم استخدامها في قسم التصنيف في شجرة القرار التعليمي.
ملحوظة: يمكنك تنزيل مجموعة البيانات هنا.
دعنا نستورد البيانات إلى الباندا dataframe
الهيكل ، وألق نظرة على صفوفه الخمسة الأولى بامتداد head()
الأسلوب.
لاحظ أنه يتم حفظ البيانات بتنسيق txt
(نص) ، مفصولاً بفاصلات ، وبدون رأس. يمكننا إعادة بنائه كجدول من خلال قراءته على أنه ملف csv
، مع تحديد separator
كفاصلة وإضافة أسماء الأعمدة بامتداد names
جدال.
دعنا نتبع هذه الخطوات الثلاث في وقت واحد ، ثم نلقي نظرة على الصفوف الخمسة الأولى من البيانات:
import pandas as pd data_link = "https://archive.ics.uci.edu/ml/machine-learning-databases/00267/data_banknote_authentication.txt"
col_names = ["variance", "skewness", "curtosis", "entropy", "class"] bankdata = pd.read_csv(data_link, names=col_names, sep=",", header=None)
bankdata.head()
وينتج عنه:
variance skewness curtosis entropy class
0 3.62160 8.6661 -2.8073 -0.44699 0
1 4.54590 8.1674 -2.4586 -1.46210 0
2 3.86600 -2.6383 1.9242 0.10645 0
3 3.45660 9.5228 -4.0112 -3.59440 0
4 0.32924 -4.4552 4.5718 -0.98880 0
ملحوظة: يمكنك أيضًا حفظ البيانات محليًا واستبدالها data_link
For data_path
، وقم بتمرير المسار إلى ملفك المحلي.
يمكننا أن نرى أن هناك خمسة أعمدة في مجموعة البيانات لدينا ، وهي variance
, skewness
, curtosis
, entropy
و class
. في الصفوف الخمسة ، تمتلئ الأعمدة الأربعة الأولى بأرقام مثل 3.62160 ، 8.6661 ، -2.8073 أو متواصل القيم ، والأخير class
يحتوي العمود على صفوفه الخمسة الأولى المملوءة بالأصفار ، أو أ منفصل .
نظرًا لأن هدفنا هو التنبؤ بما إذا كانت ورقة العملة البنكية أصلية أم لا ، فيمكننا القيام بذلك بناءً على السمات الأربع للملاحظة:
-
variance
من صورة Wavelet Transformed. بشكل عام ، التباين هو قيمة مستمرة تقيس مدى قرب أو بعد نقاط البيانات من متوسط قيمة البيانات. إذا كانت النقاط أقرب إلى متوسط قيمة البيانات ، فإن التوزيع يكون أقرب إلى التوزيع الطبيعي ، مما يعني عادةً أن قيمها موزعة بشكل أفضل ويسهل التنبؤ بها إلى حد ما. في سياق الصورة الحالي ، هذا هو تباين المعاملات التي تنتج من تحويل المويجات. كلما قل التباين ، كلما اقتربت المعاملات من ترجمة الصورة الفعلية. -
skewness
من Wavelet Transformed image. الانحراف هو قيمة مستمرة تشير إلى عدم تناسق التوزيع. إذا كان هناك المزيد من القيم على يسار المتوسط ، فسيكون التوزيع سلبيا منحرف، إذا كان هناك المزيد من القيم على يمين الوسط ، فسيكون التوزيع انحراف إيجابي، وإذا كان الوسط والوضع والوسيط متماثلين ، فسيكون التوزيع كان الشكل أكثر تماثلا. كلما كان التوزيع أكثر تناسقًا ، كلما كان أقرب إلى التوزيع الطبيعي ، مع توزيع قيمه بشكل أفضل. في السياق الحالي ، هذا هو الانحراف في المعاملات التي تنتج من التحويل المويجي. كلما كان التناظر أكثر ، كلما اقتربنا من المعاملاتvariance
,skewness
,curtosis
,entropy
إعادة ترجمة الصورة الفعلية.
curtosis
(أو التفرطح) لصورة Wavelet Transformed. التفرطح هو قيمة مستمرة تصف أيضًا شكل التوزيع ، مثل الانحراف. اعتمادًا على معامل التفرطح (k) ، يمكن أن يكون التوزيع - عند مقارنته بالتوزيع الطبيعي مسطحًا إلى حد ما - أو يحتوي على بيانات أكثر أو أقل في أطرافه أو ذيوله. عندما يكون التوزيع أكثر انتشارًا وتملقًا ، يتم استدعاؤه بلاتيكورتيك؛ عندما يكون أقل انتشارًا وأكثر تركيزًا في الوسط ، ميسوكورتيك؛ وعندما يتركز التوزيع بالكامل تقريبًا في الوسط ، يطلق عليه ليبتوكورتيك. هذه هي نفس حالة التباين والالتواء في الحالات السابقة ، فكلما كان التوزيع أكثر دقة ، كلما اقتربت المعاملات من ترجمة الصورة الفعلية.
entropy
من الصورة. الانتروبيا هي أيضًا قيمة مستمرة ، وعادةً ما تقيس العشوائية أو الفوضى في النظام. في سياق الصورة ، يقيس الانتروبيا الفرق بين البكسل والبكسل المجاور له. بالنسبة لسياقنا ، فكلما زاد الانتروبيا في المعاملات ، زادت الخسارة عند تحويل الصورة - وكلما صغر الانتروبيا ، قل فقدان المعلومات.
المتغير الخامس كان class
متغير ، والذي ربما يحتوي على قيم 0 و 1 ، يشير إلى ما إذا كانت الملاحظة حقيقية أم مزورة.
يمكننا التحقق مما إذا كان العمود الخامس يحتوي على أصفار وآحاد مع Pandas unique()
الأسلوب:
bankdata['class'].unique()
الطريقة أعلاه تعيد:
array([0, 1])
تقوم الطريقة أعلاه بإرجاع مصفوفة ذات قيم 0 و 1. هذا يعني أن القيم الوحيدة الموجودة في صفوف الفصل لدينا هي الأصفار والآحاد. إنه جاهز للاستخدام كملف الهدف في التعلم الخاضع للإشراف لدينا.
class
من الصورة. هذه قيمة عددية ، تكون 0 عندما تكون الصورة مزورة ، و 1 عندما تكون الصورة حقيقية.
نظرًا لأن لدينا عمودًا يحتوي على التعليقات التوضيحية للصور الحقيقية والمنسية ، فهذا يعني أن نوع التعلم لدينا هو أشرف.
المشورة: لمعرفة المزيد حول الأسباب الكامنة وراء تحويل Wavelet على صور الأوراق النقدية واستخدام SVM ، اقرأ الورقة المنشورة للمؤلفين.
يمكننا أيضًا معرفة عدد السجلات ، أو الصور التي لدينا ، من خلال النظر في عدد الصفوف في البيانات عبر ملف shape
خاصية:
bankdata.shape
هذا ينتج:
(1372, 5)
السطر أعلاه يعني أن هناك 1,372،5 صفًا من صور الأوراق النقدية المحولة ، و XNUMX أعمدة. هذه هي البيانات التي سنحللها.
لقد قمنا باستيراد مجموعة البيانات الخاصة بنا وقمنا ببعض عمليات التحقق. الآن يمكننا استكشاف بياناتنا لفهمها بشكل أفضل.
استكشاف مجموعة البيانات
لقد رأينا للتو أنه لا يوجد سوى الأصفار والآحاد في عمود الفصل ، ولكن يمكننا أيضًا معرفة نسبة هذه الأصفار - بمعنى آخر - إذا كان عدد الأصفار أكثر من الآحاد ، أو عدد الأصفار أكثر من الأصفار ، أو إذا كان عدد الأصفار الأصفار هي نفس عدد الآحاد ، مما يعني أنها كذلك متوازن.
لمعرفة النسبة ، يمكننا حساب كل من القيم الصفرية والواحدة في البيانات value_counts()
الأسلوب:
bankdata['class'].value_counts()
هذا ينتج:
0 762
1 610
Name: class, dtype: int64
في النتيجة أعلاه ، يمكننا أن نرى أن هناك 762 صفرًا و 610 آحادًا ، أو 152 أكثر من الآحاد. هذا يعني أن لدينا المزيد من الصور الحقيقية المزيفة ، وإذا كان هذا التناقض أكبر ، على سبيل المثال ، 5500 أصفار و 610 آحاد ، فقد يؤثر ذلك سلبًا على نتائجنا. بمجرد أن نحاول استخدام هذه الأمثلة في نموذجنا - فكلما زاد عدد الأمثلة الموجودة ، عادة ما يعني أنه كلما زادت المعلومات التي سيتعين على النموذج أن يقررها بين الملاحظات المزورة أو الحقيقية - إذا كان هناك عدد قليل من أمثلة الملاحظات الحقيقية ، يكون النموذج عرضة لأن يكون مخطئ عند محاولة التعرف عليهم.
نحن نعلم بالفعل أن هناك 152 ملاحظة مزورة أخرى ، لكن هل يمكننا التأكد من أن هذه أمثلة كافية ليتعلمها النموذج؟ إن معرفة عدد الأمثلة اللازمة للتعلم هو سؤال يصعب الإجابة عليه ، وبدلاً من ذلك ، يمكننا محاولة فهم ، من حيث النسبة المئوية ، مقدار هذا الاختلاف بين الفصول الدراسية.
الخطوة الأولى هي استخدام الباندا value_counts()
مرة أخرى ، ولكن الآن دعونا نرى النسبة المئوية بتضمين الوسيطة normalize=True
:
bankdata['class'].value_counts(normalize=True)
• normalize=True
يحسب النسبة المئوية للبيانات لكل فئة. حتى الآن ، النسبة المئوية للبيانات المزورة (0) والحقيقية (1) هي:
0 0.555394
1 0.444606
Name: class, dtype: float64
هذا يعني أن ما يقرب من (~) 56٪ من مجموعة البيانات لدينا مزورة و 44٪ منها حقيقية. هذا يعطينا نسبة 56٪ -44٪ ، وهو نفس الفرق بنسبة 12٪. يعتبر هذا فرقًا بسيطًا من الناحية الإحصائية ، لأنه يزيد قليلاً عن 10٪ ، لذلك تعتبر البيانات متوازنة. إذا كانت هناك نسبة 56:44 أو 80:20 بدلاً من نسبة 70:30 ، فسيتم اعتبار بياناتنا غير متوازنة ، وسنحتاج إلى معالجة بعض الاختلالات ، لكن لحسن الحظ ، ليس هذا هو الحال.
يمكننا أيضًا رؤية هذا الاختلاف بصريًا ، من خلال إلقاء نظرة على توزيع الفئة أو الهدف باستخدام الرسم البياني المشبع من Pandas ، باستخدام:
bankdata['class'].plot.hist();
هذا يرسم مدرج تكراري باستخدام بنية إطار البيانات مباشرة ، بالاقتران مع matplotlib
مكتبة وراء الكواليس.
من خلال النظر إلى الرسم البياني ، يمكننا التأكد من أن قيمنا المستهدفة إما 0 أو 1 وأن البيانات متوازنة.
كان هذا تحليلًا للعمود الذي كنا نحاول التنبؤ به ، ولكن ماذا عن تحليل الأعمدة الأخرى لبياناتنا؟
يمكننا إلقاء نظرة على القياسات الإحصائية باستخدام describe()
طريقة إطار البيانات. يمكننا أيضًا استخدام ملفات .T
of Transpose - لعكس الأعمدة والصفوف ، مما يجعل المقارنة عبر القيم أكثر مباشرة:
تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!
bankdata.describe().T
وينتج عنه:
count mean std min 25% 50% 75% max
variance 1372.0 0.433735 2.842763 -7.0421 -1.773000 0.49618 2.821475 6.8248
skewness 1372.0 1.922353 5.869047 -13.7731 -1.708200 2.31965 6.814625 12.9516
curtosis 1372.0 1.397627 4.310030 -5.2861 -1.574975 0.61663 3.179250 17.9274
entropy 1372.0 -1.191657 2.101013 -8.5482 -2.413450 -0.58665 0.394810 2.4495
class 1372.0 0.444606 0.497103 0.0000 0.000000 0.00000 1.000000 1.0000
لاحظ أن أعمدة الانحراف والاختصار لها قيم متوسطة بعيدة عن قيم الانحراف المعياري ، وهذا يشير إلى أن تلك القيم البعيدة عن الاتجاه المركزي للبيانات ، أو لديها تباين أكبر.
يمكننا أيضًا إلقاء نظرة خاطفة على توزيع كل ميزة بصريًا ، من خلال رسم الرسم البياني لكل ميزة داخل حلقة for. إلى جانب النظر في التوزيع ، سيكون من المثير للاهتمام النظر في كيفية فصل نقاط كل فئة فيما يتعلق بكل ميزة. للقيام بذلك ، يمكننا رسم مخطط مبعثر يصنع مزيجًا من الميزات بينهما ، وتعيين ألوان مختلفة لكل نقطة فيما يتعلق بفئتها.
لنبدأ بتوزيع كل ميزة ، ونرسم الرسم البياني لكل عمود بيانات باستثناء class
عمود. ال class
لن يتم أخذ العمود في الاعتبار من خلال موقعه في مصفوفة أعمدة بيانات البنوك. سيتم تحديد جميع الأعمدة باستثناء العمود الأخير الذي يحتوي على columns[:-1]
:
import matplotlib.pyplot as plt for col in bankdata.columns[:-1]: plt.title(col) bankdata[col].plot.hist() plt.show();
بعد تشغيل الكود أعلاه ، يمكننا أن نرى كلاهما skewness
و entropy
توزيعات البيانات منحرفة بشكل سلبي و curtosis
منحرف بشكل إيجابي. جميع التوزيعات متناظرة و variance
هو التوزيع الوحيد القريب من الوضع الطبيعي.
يمكننا الآن الانتقال إلى الجزء الثاني ، ورسم مخطط التشتت لكل متغير. للقيام بذلك ، يمكننا أيضًا تحديد جميع الأعمدة باستثناء الفئة ، مع columns[:-1]
، استخدم Seaborn scatterplot()
وحلقتان للحصول على الاختلافات في الاقتران لكل ميزة. يمكننا أيضًا استبعاد إقران ميزة مع نفسها ، عن طريق اختبار ما إذا كانت الميزة الأولى تساوي الثانية مع if statement
.
import seaborn as sns for feature_1 in bankdata.columns[:-1]: for feature_2 in bankdata.columns[:-1]: if feature_1 != feature_2: print(feature_1, feature_2) sns.scatterplot(x=feature_1, y=feature_2, data=bankdata, hue='class') plt.show();
لاحظ أن جميع الرسوم البيانية تحتوي على نقاط بيانات حقيقية ومزورة لا تنفصل بوضوح عن بعضها البعض ، وهذا يعني أن هناك نوعًا من التراكب في الفئات. نظرًا لأن نموذج SVM يستخدم خطًا للفصل بين الفئات ، فهل يمكن فصل أي من هذه المجموعات في الرسوم البيانية باستخدام سطر واحد فقط؟ يبدو من غير المحتمل. هذا ما تبدو عليه معظم البيانات الحقيقية. أقرب ما يمكننا الوصول إليه للفصل هو الجمع بين skewness
و variance
الطرق أو entropy
و variance
المؤامرات. ربما يكون هذا بسبب variance
البيانات التي لها شكل توزيع أقرب إلى العادي.
لكن النظر إلى كل هذه الرسوم البيانية بالتسلسل قد يكون صعبًا بعض الشيء. لدينا بديل للنظر في جميع الرسوم البيانية للتوزيع والمخطط المبعثر معًا باستخدام Seaborn's pairplot()
.
يمكن استبدال كلتا حلقات for السابقة التي قمنا بها بهذا السطر فقط:
sns.pairplot(bankdata, hue='class');
بالنظر إلى الحبكة الزوجية ، يبدو أنه في الواقع ، curtosis
و variance
سيكون أسهل مجموعة من الميزات ، لذلك يمكن فصل الفئات المختلفة بخط ، أو قابلة للفصل خطيًا.
إذا كانت معظم البيانات بعيدة عن أن تكون قابلة للفصل خطيًا ، فيمكننا محاولة معالجتها مسبقًا ، عن طريق تقليل أبعادها ، وكذلك تسوية قيمها لمحاولة جعل التوزيع أقرب إلى الطبيعي.
في هذه الحالة ، دعنا نستخدم البيانات كما هي ، دون مزيد من المعالجة المسبقة ، وبعد ذلك ، يمكننا الرجوع خطوة واحدة ، وإضافة البيانات إلى المعالجة المسبقة ومقارنة النتائج.
المشورة: عند العمل مع البيانات ، عادة ما تُفقد المعلومات عند تحويلها ، لأننا نقوم بعمل تقديرات تقريبية ، بدلاً من جمع المزيد من البيانات. يوفر العمل مع البيانات الأولية أولاً كما هي ، إن أمكن ، خطًا أساسيًا قبل تجربة تقنيات المعالجة المسبقة الأخرى. عند اتباع هذا المسار ، يمكن مقارنة النتيجة الأولية باستخدام البيانات الأولية بنتيجة أخرى تستخدم تقنيات المعالجة المسبقة على البيانات.
ملحوظة: عادة في الإحصاء ، عند بناء النماذج ، من الشائع اتباع إجراء يعتمد على نوع البيانات (منفصلة ، مستمرة ، فئوية ، رقمية) وتوزيعها وافتراضات النموذج. أثناء وجودك في علوم الكمبيوتر (CS) ، هناك مساحة أكبر للتجربة والخطأ والتكرارات الجديدة. من الشائع في CS أن يكون لديك خط أساس للمقارنة به. في Scikit-Learn ، هناك تطبيق لنماذج وهمية (أو مقدرات وهمية) ، وبعضها ليس أفضل من رمي عملة معدنية ، والإجابة فقط نعم فعلا (أو 1) 50٪ من الوقت. من المثير للاهتمام استخدام النماذج الوهمية كخط أساس للنموذج الفعلي عند مقارنة النتائج. من المتوقع أن تكون نتائج النموذج الفعلي أفضل من التخمين العشوائي ، وإلا فلن يكون استخدام نموذج التعلم الآلي ضروريًا.
تنفيذ SVM باستخدام Scikit-Learn
قبل التعمق أكثر في نظرية كيفية عمل SVM ، يمكننا بناء أول نموذج أساسي لدينا باستخدام البيانات ، و Scikit-Learn's دعم مصنف النواقل or SVC فئة.
سيتلقى نموذجنا معاملات المويجات ويحاول تصنيفها بناءً على الفئة. الخطوة الأولى في هذه العملية هي فصل المعاملات أو ملامح من الفصل أو الهدف. بعد هذه الخطوة ، تتمثل الخطوة الثانية في تقسيم البيانات إلى مجموعة تُستخدم لتعلم النموذج أو مجموعة القطار وأخرى سيتم استخدامها لتقييم النموذج أو مجموعة الاختبار.
ملحوظة: قد تكون تسمية الاختبار والتقييم مربكة بعض الشيء ، لأنه يمكنك أيضًا تقسيم بياناتك بين مجموعات التدريب والتقييم والاختبار. بهذه الطريقة ، بدلاً من الحصول على مجموعتين ، سيكون لديك وسيط معين لاستخدامه فقط ومعرفة ما إذا كان أداء النموذج الخاص بك يتحسن. هذا يعني أنه سيتم تدريب النموذج باستخدام مجموعة القطار ، وتعزيزه بمجموعة التقييم ، والحصول على مقياس نهائي مع مجموعة الاختبار.
يقول بعض الناس أن التقييم هو تلك المجموعة الوسيطة ، والبعض الآخر سيقول أن مجموعة الاختبار هي المجموعة الوسيطة ، وأن مجموعة التقييم هي المجموعة النهائية. هذه طريقة أخرى لمحاولة ضمان أن النموذج لا يرى نفس المثال بأي شكل من الأشكال ، أو نوعًا ما تسرب البيانات لا يحدث ، وأن هناك تعميمًا للنموذج من خلال تحسين آخر مجموعة مقاييس. إذا كنت تريد اتباع هذا النهج ، فيمكنك تقسيم البيانات مرة أخرى كما هو موضح في هذا تدريب Scikit-Learn's train_test_split () - مجموعات التدريب والاختبار والتحقق من الصحة يرشد.
تقسيم البيانات إلى تدريب / مجموعات اختبار
في الجلسة السابقة ، فهمنا البيانات واستكشفناها. الآن ، يمكننا تقسيم بياناتنا إلى صفيفتين - واحدة للميزات الأربعة ، والأخرى للميزة الخامسة أو الهدف. نظرًا لأننا نريد التنبؤ بالفئة اعتمادًا على معاملات المويجات ، فإن لدينا y
سيكون ال class
العمود ولدينا X
سوف variance
, skewness
, curtosis
و entropy
الأعمدة.
لفصل الهدف والميزات ، يمكننا أن ننسب فقط class
العمود ل y
، وإسقاطه لاحقًا من إطار البيانات لإسناد الأعمدة المتبقية إليه X
مع .drop()
الأسلوب:
y = bankdata['class']
X = bankdata.drop('class', axis=1)
بمجرد تقسيم البيانات إلى سمات وتسميات ، يمكننا تقسيمها إلى مجموعات تدريب واختبار. يمكن أن يتم ذلك باليد ، ولكن model_selection
تحتوي مكتبة Scikit-Learn على ملف train_test_split()
الطريقة التي تسمح لنا بتقسيم البيانات بشكل عشوائي إلى مجموعات تدريب واختبار.
لاستخدامها ، يمكننا استيراد المكتبة والاتصال ب train_test_split()
طريقة تمرير X
و y
البيانات وتحديد ملف test_size
لتمريرها كحجة. في هذه الحالة ، سوف نحددها على أنها 0.20
- هذا يعني أن 20٪ من البيانات ستستخدم للاختبار ، و 80٪ أخرى للتدريب.
تأخذ هذه الطريقة بشكل عشوائي عينات تحترم النسبة المئوية التي حددناها ، ولكنها تحترم أزواج Xy ، خشية أن يخلط أخذ العينات العلاقة تمامًا.
نظرًا لأن عملية أخذ العينات عشوائية بطبيعتها ، سيكون لدينا دائمًا نتائج مختلفة عند تشغيل الطريقة. لتكون قادرًا على الحصول على نفس النتائج أو النتائج القابلة للتكرار ، يمكننا تحديد ثابت يسمى SEED بقيمة 42.
يمكنك تنفيذ البرنامج النصي التالي للقيام بذلك:
from sklearn.model_selection import train_test_split SEED = 42 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20, random_state = SEED)
لاحظ أن train_test_split()
طريقة إرجاع بالفعل X_train
, X_test
, y_train
, y_test
مجموعات بهذا الترتيب. يمكننا طباعة عدد العينات المنفصلة للتدريب والاختبار عن طريق الحصول على أول (0) عنصر من shape
إرجاع الخاصية tuple:
xtrain_samples = X_train.shape[0]
xtest_samples = X_test.shape[0] print(f'There are {xtrain_samples} samples for training and {xtest_samples} samples for testing.')
وهذا يدل على أن هناك 1097 عينة للتدريب و 275 عينة للاختبار.
تدريب النموذج
لقد قسمنا البيانات إلى مجموعات تدريب واختبار. حان الوقت الآن لإنشاء نموذج SVM وتدريبه على بيانات القطار. للقيام بذلك ، يمكننا استيراد Scikit-Learn's svm
مكتبة جنبا إلى جنب مع دعم مصنف النواقل فئة ، أو SVC
فئة.
بعد استيراد الفصل ، يمكننا إنشاء مثيل له - نظرًا لأننا نقوم بإنشاء نموذج SVM بسيط ، فإننا نحاول فصل بياناتنا خطيًا ، حتى نتمكن من رسم خط لتقسيم بياناتنا - وهو نفس استخدام دالة خطية - بالتعريف kernel='linear'
كحجة للمصنف:
from sklearn.svm import SVC
svc = SVC(kernel='linear')
بهذه الطريقة ، سيحاول المصنف إيجاد دالة خطية تفصل بين بياناتنا. بعد إنشاء النموذج ، دعنا ندربه ، أو تناسب مع بيانات القطار ، باستخدام fit()
الطريقة وإعطاء X_train
الميزات و y_train
الأهداف كحجج.
يمكننا تنفيذ الكود التالي لتدريب النموذج:
svc.fit(X_train, y_train)
تمامًا مثل هذا ، يتم تدريب النموذج. حتى الآن ، فهمنا البيانات ، وقمنا بتقسيمها ، وإنشاء نموذج SVM بسيط ، وتركيب النموذج لبيانات القطار.
تتمثل الخطوة التالية في فهم مدى نجاح ذلك في وصف بياناتنا. بمعنى آخر ، للإجابة عما إذا كان SVM الخطي خيارًا مناسبًا.
يتنبأ
هناك طريقة للإجابة على ما إذا كان النموذج قد تمكن من وصف البيانات هو الحساب والنظر إلى بعض التصنيفات المقاييس.
بالنظر إلى أن التعلم خاضع للإشراف ، يمكننا عمل تنبؤات باستخدام X_test
وقارن نتائج التوقع - التي قد نسميها y_pred
- مع الواقع y_test
الطرق أو الحقيقة الأرض.
للتنبؤ ببعض البيانات ، فإن النموذج predict()
يمكن استخدام الطريقة. تستقبل هذه الطريقة ميزات الاختبار ، X_test
، كوسيطة وإرجاع توقع ، إما 0 أو 1 ، لكل واحد من X_test
صفوف.
بعد توقع X_test
البيانات ، يتم تخزين النتائج في ملف y_pred
عامل. لذلك فإن كل فئة من الفئات التي تم توقعها باستخدام نموذج SVM الخطي البسيط موجودة الآن في y_pred
المتغير.
هذا هو رمز التنبؤ:
y_pred = svc.predict(X_test)
بالنظر إلى أن لدينا التنبؤات ، يمكننا الآن مقارنتها بالنتائج الفعلية.
تقييم النموذج
هناك عدة طرق لمقارنة التنبؤات بالنتائج الفعلية ، وهي تقيس جوانب مختلفة من التصنيف. بعض مقاييس التصنيف الأكثر استخدامًا هي:
-
الارتباك مصفوفة: عندما نحتاج إلى معرفة عدد العينات التي حصلنا عليها بشكل صحيح أو خطأ كل فئة. يتم استدعاء القيم التي كانت صحيحة ومتوقعة بشكل صحيح ايجابيات حقيقية، تلك التي تم توقعها على أنها إيجابية ولكنها لم تكن إيجابية تسمى ايجابيات مزيفة. نفس التسمية السلبيات الحقيقية و السلبيات الكاذبة يستخدم للقيم السالبة ؛
-
دقة: عندما يكون هدفنا هو فهم قيم التنبؤ الصحيحة التي اعتبرها المصنف صحيحًا. ستقسم الدقة تلك القيم الإيجابية الحقيقية على العينات التي تم توقعها على أنها إيجابية ؛
$$
الدقة = فارك {النص {الإيجابيات الحقيقية}} {النص {الإيجابيات الحقيقية} + النص {الإيجابيات الخاطئة}}
$$
- تذكر: تُحسب بشكل شائع جنبًا إلى جنب مع الدقة لفهم عدد الإيجابيات الحقيقية التي حددها المصنف لدينا. يتم حساب الاسترجاع بقسمة الإيجابيات الحقيقية على أي شيء كان ينبغي توقعه على أنه إيجابي.
$$
الاستدعاء = frac {النص {الإيجابيات الحقيقية}} {النص {الإيجابيات الحقيقية} + النص {السلبيات الكاذبة}}
$$
- نتيجة F1: هو متوازن ام الوسط التوافقي من الدقة والاستدعاء. أدنى قيمة هي 0 وأعلى قيمة هي 1. متى
f1-score
تساوي 1 ، فهذا يعني أنه تم توقع جميع الفئات بشكل صحيح - هذه درجة صعبة للغاية للحصول عليها باستخدام بيانات حقيقية (توجد استثناءات دائمًا تقريبًا).
$$
text {f1-score} = 2 * frac {text {دقة} * نص {استدعاء}} {نص {دقة} + نص {استدعاء}}
$$
لقد تعرفنا بالفعل على مصفوفة الارتباك والدقة والاستدعاء ومقاييس درجة F1. لحسابها ، يمكننا استيراد Scikit-Learn metrics
مكتبة. تحتوي هذه المكتبة على ملف classification_report
و confusion_matrix
طريقة تقرير التصنيف بإرجاع الدقة والاستدعاء والنتيجة f1. كلاهما classification_report
و confusion_matrix
يمكن استخدامها بسهولة لمعرفة القيم لجميع هذه المقاييس المهمة.
لحساب المقاييس ، نقوم باستيراد الطرق ، وندعوها وتمرير التصنيفات المتوقعة كوسيطات ، y_test
، وتسميات التصنيف ، أو y_true
.
للحصول على تصور أفضل لمصفوفة الارتباك ، يمكننا رسمها في Seaborn's heatmap
جنبًا إلى جنب مع التعليقات التوضيحية المتعلقة بالكمية ، وبالنسبة لتقرير التصنيف ، فمن الأفضل طباعة نتائجه ، بحيث يتم تنسيق نتائجه. هذا هو الكود التالي:
from sklearn.metrics import classification_report, confusion_matrix cm = confusion_matrix(y_test,y_pred)
sns.heatmap(cm, annot=True, fmt='d').set_title('Confusion matrix of linear SVM') print(classification_report(y_test,y_pred))
يعرض هذا:
precision recall f1-score support 0 0.99 0.99 0.99 148 1 0.98 0.98 0.98 127 accuracy 0.99 275 macro avg 0.99 0.99 0.99 275
weighted avg 0.99 0.99 0.99 275
في تقرير التصنيف ، نعلم أن هناك دقة تبلغ 0.99 ، واسترجاع 0.99 ودرجة f1 تبلغ 0.99 للملاحظات المزورة ، أو الفئة 0. وقد تم الحصول على هذه القياسات باستخدام 148 عينة كما هو موضح في عمود الدعم. وفي الوقت نفسه ، بالنسبة للفئة 1 ، أو الملاحظات الحقيقية ، كانت النتيجة وحدة واحدة أقل ، و 0.98 من الدقة ، و 0.98 للتذكر ، ونفس الدرجة f1. هذه المرة ، تم استخدام 127 قياسًا للصورة للحصول على تلك النتائج.
إذا نظرنا إلى مصفوفة الارتباك ، يمكننا أيضًا أن نرى أنه من 148 عينة من الفئة 0 ، تم تصنيف 146 بشكل صحيح ، وكان هناك 2 من الإيجابيات الخاطئة ، بينما بالنسبة لـ 127 عينة من الفئة 1 ، كان هناك سلبيتان خاطئتان و 2 إيجابيًا حقيقيًا.
يمكننا قراءة تقرير التصنيف ومصفوفة الارتباك ولكن ماذا يعنيان؟
تفسير النتائج
لمعرفة المعنى ، دعنا نلقي نظرة على جميع المقاييس مجتمعة.
تم تصنيف جميع عينات الفئة 1 تقريبًا بشكل صحيح ، وكان هناك خطأان في نموذجنا عند تحديد الأوراق النقدية الفعلية. هذا هو نفسه 2 ، أو 0.98٪ ، أذكر. يمكن قول شيء مشابه عن الفئة 98 ، تم تصنيف عينتين فقط بشكل غير صحيح ، في حين تم تصنيف 0 عينة سلبية حقيقية ، بإجمالي دقة 2٪.
إلى جانب هذه النتائج ، فإن جميع النتائج الأخرى تشير إلى 0.99 ، وهو ما يقرب من 1 ، وهو مقياس مرتفع جدًا. في معظم الأوقات ، عندما يحدث مثل هذا المقياس المرتفع مع بيانات الحياة الواقعية ، فقد يشير ذلك إلى نموذج تم تعديله بشكل مبالغ فيه على البيانات ، أو مهيأة.
عندما يكون هناك زيادة في التجهيز ، قد يعمل النموذج جيدًا عند التنبؤ بالبيانات المعروفة بالفعل ، لكنه يفقد القدرة على التعميم على البيانات الجديدة ، وهو أمر مهم في سيناريوهات العالم الحقيقي.
اختبار سريع لمعرفة ما إذا كان يحدث زيادة في الزي هو أيضًا مع بيانات القطار. إذا كان النموذج قد حفظ بيانات القطار إلى حد ما ، فستكون المقاييس قريبة جدًا من 1 أو 100٪. تذكر أن بيانات القطار أكبر من بيانات الاختبار - لهذا السبب - حاول أن تنظر إليها بشكل متناسب ، والمزيد من العينات ، وفرص أكبر لارتكاب الأخطاء ، ما لم يكن هناك بعض التجهيز الزائد.
للتنبؤ ببيانات القطار ، يمكننا تكرار ما فعلناه لبيانات الاختبار ، ولكن الآن مع X_train
:
y_pred_train = svc.predict(X_train) cm_train = confusion_matrix(y_train,y_pred_train)
sns.heatmap(cm_train, annot=True, fmt='d').set_title('Confusion matrix of linear SVM with train data') print(classification_report(y_train,y_pred_train))
هذا ينتج:
precision recall f1-score support 0 0.99 0.99 0.99 614 1 0.98 0.99 0.99 483 accuracy 0.99 1097 macro avg 0.99 0.99 0.99 1097
weighted avg 0.99 0.99 0.99 1097
من السهل أن ترى أنه يبدو أن هناك فائضًا ، بمجرد أن تكون مقاييس القطار 99٪ عندما يكون لديك 4 أضعاف البيانات. ما الذي يمكن عمله في هذا السيناريو؟
لعكس الزي الزائد ، يمكننا إضافة المزيد من ملاحظات القطارات ، واستخدام طريقة تدريب بأجزاء مختلفة من مجموعة البيانات ، مثل عبر المصادقة، وكذلك تغيير المعلمات الافتراضية الموجودة بالفعل قبل التدريب ، عند إنشاء نموذجنا ، أو معلمات مفرطة. في معظم الأوقات ، يقوم Scikit-Learn بتعيين بعض المعلمات على أنها افتراضية ، ويمكن أن يحدث هذا بصمت إذا لم يكن هناك الكثير من الوقت المخصص لقراءة الوثائق.
يمكنك التحقق من الجزء الثاني من هذا الدليل (قريبا!) لمعرفة كيفية تنفيذ التحقق المتقاطع وإجراء ضبط للمعلمة الفائقة.
وفي الختام
في هذه المقالة درسنا النواة الخطية البسيطة SVM. لقد حصلنا على الحدس وراء خوارزمية SVM ، واستخدمنا مجموعة بيانات حقيقية ، واستكشفنا البيانات ، ورأينا كيف يمكن استخدام هذه البيانات مع SVM من خلال تنفيذها مع مكتبة Python Scikit-Learn.
للاستمرار في التمرين ، يمكنك تجربة مجموعات البيانات الواقعية الأخرى المتوفرة في أماكن مثل Kaggle, UCI, مجموعات البيانات العامة Big Queryوالجامعات والمواقع الحكومية.
أود أيضًا أن أقترح أن تستكشف الرياضيات الفعلية وراء نموذج SVM. على الرغم من أنك لن تحتاج إليها بالضرورة من أجل استخدام خوارزمية SVM ، إلا أنه لا يزال من السهل جدًا معرفة ما يحدث بالفعل خلف الكواليس بينما تعثر الخوارزمية الخاصة بك على حدود القرار.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- بلاتوبلوكشين. Web3 Metaverse Intelligence. تضخيم المعرفة. الوصول هنا.
- سك المستقبل مع أدرين أشلي. الوصول هنا.
- المصدر https://stackabuse.com/implementing-svm-and-kernel-svm-with-pythons-scikit-learn/
- :لديها
- :يكون
- $ UP
- 1
- 10
- 11
- 7
- 70
- 8
- 9
- 98
- a
- القدرة
- ماهرون
- من نحن
- فوق
- دقة
- التأهيل
- مطلع
- في
- في الواقع
- تعديل
- اعتمد
- بعد
- ضد
- ملاحظه
- خوارزمية
- خوارزميات
- الكل
- يسمح
- على طول
- سابقا
- البديل
- بالرغم ان
- دائما
- تحليل
- تحليل
- و
- آخر
- إجابة
- الأجوبة
- أي وقت
- تطبيقي
- نهج
- ما يقرب من
- هي
- حجة
- الحجج
- مجموعة
- البند
- AS
- الجوانب
- At
- سمات
- الأصالة
- الكتاب
- تلقائيا
- متاح
- المتوسط
- الى الخلف
- مصرف
- على أساس
- خط الأساس
- BE
- لان
- أصبح
- كان
- قبل
- وراء
- خلف الكواليس
- يجري
- أقل من
- أفضل
- أفضل
- ما بين
- أكبر
- قطعة
- اسود
- الحدود
- الحدود
- نساعدك في بناء
- ابني
- بناء نماذج
- by
- حساب
- محسوب
- تحسب
- حساب
- دعوة
- تسمى
- CAN
- يستطيع الحصول على
- حقيبة
- الحالات
- مركزي
- فرص
- تغيير
- التحقق
- الشيكات
- خيار
- فئة
- فصول
- تصنيف
- مبوب
- صنف
- بوضوح
- اغلاق
- أقرب
- الكود
- عملة
- جمع
- عمود
- الأعمدة
- COM
- مجموعة
- الجمع بين
- آت
- مشترك
- عادة
- قارن
- مقارنة
- مقارنة
- مقارنة
- مجمع
- الكمبيوتر
- علوم الكمبيوتر
- مركز
- مفهوم
- اختتام
- مربك
- ارتباك
- نظر
- نظرت
- ثابت
- تحتوي على
- يحتوي
- سياق الكلام
- متواصل
- استطاع
- مغطى
- خلق
- خلق
- خلق
- حرج
- عبر
- فضولي
- العملة
- حالياًّ
- منحنى
- البيانات
- نقاط البيانات
- قواعد البيانات
- تقرر
- القرار
- مخصصة
- الترتيب
- تعريف
- تحديد
- اعتمادا
- وصف
- وصف
- الانحراف
- فرق
- مختلف
- صعبة
- بعد
- الأبعاد
- مباشرة
- مباشرة
- تناقض
- يعرض
- وزعت
- توزيع
- التوزيعات
- منقسم
- توثيق
- DOT
- بإمكانك تحميله
- رسم
- إسقاط
- كل
- أسهل
- أسهل
- بسهولة
- إما
- العنصر
- تعزيز
- تعزيز
- كاف
- تماما
- يساوي
- خطأ
- تقييم
- حتى
- بالضبط
- مثال
- أمثلة
- إلا
- تنفيذ
- متوقع
- اكتشف
- استكشاف
- العيون
- f1
- الميزات
- المميزات
- قليل
- حقل
- قم بتقديم
- معبأ
- نهائي
- أخيرا
- العثور على
- ويرى
- الاسم الأول
- تناسب
- تركيبات
- مسطحة
- تركز
- اتباع
- متابعيك
- في حالة
- إقامة
- النموذج المرفق
- شكل
- لحسن الحظ
- وجدت
- أربعة
- تردد
- تبدأ من
- وظيفة
- إضافي
- العلاجات العامة
- على العموم
- دولار فقط واحصل على خصم XNUMX% على جميع
- الحصول على
- بوابة
- معطى
- يعطي
- إعطاء
- Go
- الذهاب
- شراء مراجعات جوجل
- حكومة
- الرسوم البيانية
- الرمادي
- أكبر
- أخضر
- نقطة خضراء
- مجموعات
- ضمان
- توجيه
- دليل
- يد
- تشابك الايدى
- في المتناول
- يحدث
- حدث
- يحدث
- الثابت
- يملك
- وجود
- مساعدة
- مرتفع
- أعلى
- تحوم
- كيفية
- كيفية
- HTTPS
- ضبط Hyperparameter
- اي كون
- فكرة
- محدد
- تحديد
- صورة
- صور
- عدم التوازن
- التأثير
- تنفيذ
- التنفيذ
- نفذت
- تحقيق
- استيراد
- أهمية
- استيراد
- تحسين
- in
- في أخرى
- شامل
- بما فيه
- غير صحيح
- يشير
- فرد
- معلومات
- في البداية
- في البداية
- مثل
- بدلًا من ذلك
- وكتابة مواضيع مثيرة للاهتمام
- السريرية
- وسيط
- أدخلت
- المُقدّمة
- IT
- التكرارات
- انها
- نفسها
- واحد فقط
- احتفظ
- نوع
- علم
- معرفة
- معروف
- التفرطح
- ملصقات
- أكبر
- اسم العائلة
- تعلم
- تعلم
- LG
- المكتبات
- المكتبة
- الحياة
- مثل
- محدود
- خط
- القليل
- محلي
- محليا
- بحث
- يبدو مثل
- أبحث
- تبدو
- يفقد
- خسارة
- آلة
- آلة التعلم
- الآلات
- الماكرو
- صنع
- جعل
- القيام ب
- تمكن
- كثير
- هامش
- علامة
- مباراة
- الرياضيات
- matplotlib
- مصفوفة
- ماكس
- تعظيم
- معنى
- يعني
- في غضون
- قياس
- قياسات
- الإجراءات
- طريقة
- طرق
- متري
- المقاييس
- وسط
- ربما
- الأخطاء
- موضة
- نموذج
- عارضات ازياء
- الأكثر من ذلك
- أكثر
- خطوة
- الاسم
- أي
- أسماء
- بالضرورة
- ضروري
- حاجة
- سلبي
- سلبا
- جديد
- التالي
- عادي
- ملاحظة
- عدد
- أرقام
- موضوعي
- تحصل
- تم الحصول عليها
- الحصول على
- يحصل
- of
- عروض
- on
- ONE
- طلب
- أخرى
- أخرى
- وإلا
- لنا
- نتيجة
- على مدى
- الاقتران
- أزواج
- الباندا
- ورق
- المعلمات
- جزء
- أجزاء
- pass
- مسار
- مجتمع
- نسبة مئوية
- نفذ
- أداء
- شخص
- PHP
- بكسل
- المكان
- وجهات
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- البوينت
- نقاط
- ان يرتفع المركز
- إيجابي
- ممكن
- عملية
- دقة
- تنبأ
- وتوقع
- توقع
- تنبؤ
- تنبؤات
- يقدم
- سابق
- طباعة
- قبل
- المحتمل
- المشكلة
- مشاكل
- عملية المعالجة
- بارز
- الملكية
- نسبة
- جمهور
- نشرت
- بايثون
- كمية
- سؤال
- الأسئلة المتكررة
- سريع
- بسرعة
- عشوائية
- العشوائية
- نسبة
- الخام
- عرض
- نادي القراءة
- استعداد
- حقيقي
- الحياه الحقيقيه
- العالم الحقيقي
- سبب
- خلاصة
- تسلم
- تلقى
- يتلقى
- الأخيرة
- الاعتراف
- تسجيل
- عقار مخفض
- تقليص
- مكرر
- بخصوص
- التحيات
- صلة
- المتبقية
- تذكر
- كرر
- تقرير
- فيما يتعلق
- نتيجة
- النتائج
- عائدات
- العودة
- حلقة
- تشغيل
- s
- قال
- نفسه
- حفظ
- تفحص
- سيناريو
- سيناريوهات
- مشاهد
- علوم
- تعلم الحروف
- أحرز هدفاً
- سيبورن
- الثاني
- القسم
- بذرة
- رؤية
- يبدو
- مختار
- مستقل
- تسلسل
- مسلسلات
- الجلسة
- طقم
- باكجات
- عدة
- شادو
- الشكل
- ينبغي
- أظهرت
- يظهر
- سيجنل
- مماثل
- التشابه
- الاشارات
- منذ
- صغير
- الأصغر
- So
- حتى الآن
- حل
- بعض
- شيء
- قليلا
- الفضاء
- انقسم
- انتشار
- ستاكابوز
- معيار
- المعايير
- بداية
- إحصائي
- إحصائيات
- خطوة
- خطوات
- لا يزال
- قلة النوم
- تخزين
- مستقيم
- بناء
- مدروس
- هذه
- تراكب
- الدعم
- SVG
- نظام
- جدول
- أخذ
- يأخذ
- مع الأخذ
- الهدف
- الأهداف
- تقنيات
- سياسة الحجب وتقييد الوصول
- تجربه بالعربي
- الاختبار
- أن
- •
- المعلومات
- الخط
- من مشاركة
- منهم
- ثلاثة
- عبر
- الوقت
- مرات
- إلى
- سويا
- المواضيع
- تماما
- نحو
- قطار
- متدرب
- قادة الإيمان
- تحول
- تحول
- تحويل
- انتقال
- علاج
- محاكمة
- صحيح
- أنواع
- فهم
- فهم
- فهم
- فريد من نوعه
- وحدة
- الجامعات
- us
- تستخدم
- حالة الاستخدام
- مستعمل
- عادة
- التحقق من صحة
- قيمنا
- القيم
- Ve
- التحقق
- بواسطة
- التصور
- انتظر
- أمواج
- طريق..
- طرق
- المواقع
- حسن
- ابحث عن
- ما هي تفاصيل
- سواء
- التي
- في حين
- على نحو واسع
- ويكيبيديا
- سوف
- مع
- بدون
- كلمات
- للعمل
- عامل
- أعمال
- العالم
- سوف
- خاطئ
- X
- سنوات
- أنت
- حل متجر العقارات الشامل الخاص بك في جورجيا
- زفيرنت
- صفر