20 KiB
البدء مع Python و Scikit-learn لنماذج الانحدار
رسم توضيحي بواسطة Tomomi Imura
اختبار ما قبل المحاضرة
هذه الدرس متوفر بلغة R!
المقدمة
في هذه الدروس الأربعة، ستتعلم كيفية بناء نماذج الانحدار. سنناقش قريبًا ما هي هذه النماذج وما الغرض منها. ولكن قبل أن تبدأ بأي شيء، تأكد من أن لديك الأدوات المناسبة للبدء!
في هذا الدرس، ستتعلم كيفية:
- إعداد جهاز الكمبيوتر الخاص بك لمهام تعلم الآلة المحلية.
- العمل مع دفاتر Jupyter.
- استخدام Scikit-learn، بما في ذلك التثبيت.
- استكشاف الانحدار الخطي من خلال تمرين عملي.
التثبيت والإعدادات
🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول إعداد جهاز الكمبيوتر الخاص بك لتعلم الآلة.
-
تثبيت Python. تأكد من أن Python مثبت على جهاز الكمبيوتر الخاص بك. ستستخدم Python للعديد من مهام علوم البيانات وتعلم الآلة. معظم أنظمة الكمبيوتر تحتوي بالفعل على تثبيت Python. هناك أيضًا حزم برمجية لـ Python مفيدة لتسهيل الإعداد لبعض المستخدمين.
بعض استخدامات Python تتطلب إصدارًا معينًا من البرنامج، بينما تتطلب أخرى إصدارًا مختلفًا. لهذا السبب، من المفيد العمل داخل بيئة افتراضية.
-
تثبيت Visual Studio Code. تأكد من أن Visual Studio Code مثبت على جهاز الكمبيوتر الخاص بك. اتبع هذه التعليمات لتثبيت Visual Studio Code للتثبيت الأساسي. ستستخدم Python في Visual Studio Code في هذه الدورة، لذا قد ترغب في مراجعة كيفية إعداد Visual Studio Code لتطوير Python.
تعرف على Python من خلال هذه المجموعة من وحدات التعلم
🎥 انقر على الصورة أعلاه لمشاهدة فيديو: استخدام Python داخل VS Code.
-
تثبيت Scikit-learn، باتباع هذه التعليمات. نظرًا لأنك تحتاج إلى التأكد من استخدام Python 3، يُوصى باستخدام بيئة افتراضية. لاحظ أنه إذا كنت تقوم بتثبيت هذه المكتبة على جهاز Mac M1، فهناك تعليمات خاصة على الصفحة المرتبطة أعلاه.
-
تثبيت Jupyter Notebook. ستحتاج إلى تثبيت حزمة Jupyter.
بيئة تأليف تعلم الآلة الخاصة بك
ستستخدم دفاتر الملاحظات لتطوير كود Python الخاص بك وإنشاء نماذج تعلم الآلة. هذا النوع من الملفات هو أداة شائعة لعلماء البيانات، ويمكن التعرف عليها من خلال لاحقتها أو امتدادها .ipynb
.
دفاتر الملاحظات هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية.
🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
تمرين - العمل مع دفتر ملاحظات
في هذا المجلد، ستجد الملف notebook.ipynb.
-
افتح notebook.ipynb في Visual Studio Code.
سيتم تشغيل خادم Jupyter مع Python 3+. ستجد مناطق في دفتر الملاحظات يمكن تشغيلها، وهي أجزاء من الكود. يمكنك تشغيل كتلة الكود عن طريق تحديد الرمز الذي يشبه زر التشغيل.
-
حدد رمز
md
وأضف بعض النصوص باستخدام Markdown، والنص التالي # مرحبًا بك في دفتر ملاحظاتك.بعد ذلك، أضف بعض كود Python.
-
اكتب print('hello notebook') في كتلة الكود.
-
حدد السهم لتشغيل الكود.
يجب أن ترى العبارة المطبوعة:
hello notebook
يمكنك دمج الكود مع التعليقات لتوثيق دفتر الملاحظات ذاتيًا.
✅ فكر للحظة في مدى اختلاف بيئة عمل مطور الويب عن بيئة عمل عالم البيانات.
البدء مع Scikit-learn
الآن بعد أن تم إعداد Python في بيئتك المحلية وأصبحت مرتاحًا مع دفاتر Jupyter، دعنا نتعرف على Scikit-learn (تُنطق sci
كما في science
). توفر Scikit-learn واجهة برمجية شاملة لمساعدتك في تنفيذ مهام تعلم الآلة.
وفقًا لموقعهم الرسمي، "Scikit-learn هي مكتبة مفتوحة المصدر لتعلم الآلة تدعم التعلم الموجه وغير الموجه. كما توفر أدوات متنوعة لتلائم النماذج، ومعالجة البيانات، واختيار النماذج وتقييمها، والعديد من الأدوات الأخرى."
في هذه الدورة، ستستخدم Scikit-learn وأدوات أخرى لبناء نماذج تعلم الآلة لتنفيذ ما نسميه مهام "تعلم الآلة التقليدي". لقد تجنبنا عمدًا الشبكات العصبية والتعلم العميق، حيث يتم تغطيتها بشكل أفضل في منهجنا القادم "الذكاء الاصطناعي للمبتدئين".
تجعل Scikit-learn بناء النماذج وتقييمها للاستخدام أمرًا بسيطًا. وهي تركز بشكل أساسي على استخدام البيانات الرقمية وتحتوي على العديد من مجموعات البيانات الجاهزة للاستخدام كأدوات تعليمية. كما تتضمن نماذج مسبقة الصنع يمكن للطلاب تجربتها. دعنا نستكشف عملية تحميل البيانات المعبأة مسبقًا واستخدام نموذج تقدير أولي مع Scikit-learn باستخدام بعض البيانات الأساسية.
تمرين - أول دفتر ملاحظات لك مع Scikit-learn
هذا الدرس مستوحى من مثال الانحدار الخطي على موقع Scikit-learn.
🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
في ملف notebook.ipynb المرتبط بهذا الدرس، قم بمسح جميع الخلايا بالضغط على رمز "سلة المهملات".
في هذا القسم، ستعمل مع مجموعة بيانات صغيرة حول مرض السكري مضمنة في Scikit-learn لأغراض التعلم. تخيل أنك تريد اختبار علاج لمرضى السكري. قد تساعدك نماذج تعلم الآلة في تحديد المرضى الذين قد يستجيبون بشكل أفضل للعلاج بناءً على مجموعات من المتغيرات. حتى نموذج الانحدار الأساسي جدًا، عند تصوره، قد يظهر معلومات حول المتغيرات التي قد تساعدك في تنظيم تجاربك السريرية النظرية.
✅ هناك العديد من أنواع طرق الانحدار، واختيارك يعتمد على الإجابة التي تبحث عنها. إذا كنت تريد التنبؤ بالطول المحتمل لشخص بناءً على عمره، ستستخدم الانحدار الخطي، حيث تبحث عن قيمة رقمية. إذا كنت مهتمًا بمعرفة ما إذا كان نوع معين من الطعام يجب اعتباره نباتيًا أم لا، فأنت تبحث عن تعيين فئة وبالتالي ستستخدم الانحدار اللوجستي. ستتعلم المزيد عن الانحدار اللوجستي لاحقًا. فكر قليلاً في بعض الأسئلة التي يمكنك طرحها على البيانات، وأي من هذه الطرق سيكون أكثر ملاءمة.
لنبدأ هذه المهمة.
استيراد المكتبات
لهذه المهمة، سنقوم باستيراد بعض المكتبات:
- matplotlib. إنها أداة رسم بياني مفيدة وسنستخدمها لإنشاء مخطط خطي.
- numpy. numpy هي مكتبة مفيدة للتعامل مع البيانات الرقمية في Python.
- sklearn. هذه هي مكتبة Scikit-learn.
قم باستيراد بعض المكتبات لمساعدتك في المهام.
-
أضف الاستيرادات بكتابة الكود التالي:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selection
أعلاه، تقوم باستيراد
matplotlib
وnumpy
وتستوردdatasets
وlinear_model
وmodel_selection
منsklearn
. يتم استخدامmodel_selection
لتقسيم البيانات إلى مجموعات تدريب واختبار.
مجموعة بيانات السكري
مجموعة بيانات السكري المدمجة تحتوي على 442 عينة من البيانات حول مرض السكري، مع 10 متغيرات مميزة، بعضها يشمل:
- العمر: العمر بالسنوات
- مؤشر كتلة الجسم (bmi): مؤشر كتلة الجسم
- ضغط الدم (bp): متوسط ضغط الدم
- خلايا T (s1 tc): نوع من خلايا الدم البيضاء
✅ تتضمن هذه المجموعة مفهوم "الجنس" كمتغير مميز مهم للبحث حول مرض السكري. العديد من مجموعات البيانات الطبية تتضمن هذا النوع من التصنيف الثنائي. فكر قليلاً في كيفية تأثير مثل هذه التصنيفات على استبعاد أجزاء معينة من السكان من العلاجات.
الآن، قم بتحميل بيانات X و y.
🎓 تذكر، هذا تعلم موجه، ونحتاج إلى هدف مسمى "y".
في خلية كود جديدة، قم بتحميل مجموعة بيانات السكري عن طريق استدعاء load_diabetes()
. الإعداد return_X_y=True
يشير إلى أن X
ستكون مصفوفة بيانات، و y
ستكون الهدف الانحداري.
-
أضف بعض أوامر الطباعة لعرض شكل مصفوفة البيانات وأول عنصر فيها:
X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0])
ما تحصل عليه كاستجابة هو مجموعة. ما تقوم به هو تعيين القيمتين الأوليين للمجموعة إلى
X
وy
على التوالي. تعرف على المزيد حول المجموعات.يمكنك رؤية أن هذه البيانات تحتوي على 442 عنصرًا مرتبة في مصفوفات تحتوي على 10 عناصر:
(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]
✅ فكر قليلاً في العلاقة بين البيانات والهدف الانحداري. الانحدار الخطي يتنبأ بالعلاقات بين الميزة X والمتغير الهدف y. هل يمكنك العثور على الهدف لمجموعة بيانات السكري في الوثائق؟ ما الذي تظهره هذه المجموعة، بالنظر إلى الهدف؟
-
بعد ذلك، اختر جزءًا من هذه المجموعة لرسمه عن طريق اختيار العمود الثالث من المجموعة. يمكنك القيام بذلك باستخدام المشغل
:
لاختيار جميع الصفوف، ثم اختيار العمود الثالث باستخدام الفهرس (2). يمكنك أيضًا إعادة تشكيل البيانات لتكون مصفوفة ثنائية الأبعاد - كما هو مطلوب للرسم - باستخدامreshape(n_rows, n_columns)
. إذا كانت إحدى المعلمات -1، يتم حساب البعد المقابل تلقائيًا.X = X[:, 2] X = X.reshape((-1,1))
✅ في أي وقت، قم بطباعة البيانات للتحقق من شكلها.
-
الآن بعد أن أصبحت البيانات جاهزة للرسم، يمكنك معرفة ما إذا كانت الآلة يمكن أن تساعد في تحديد تقسيم منطقي بين الأرقام في هذه المجموعة. للقيام بذلك، تحتاج إلى تقسيم كل من البيانات (X) والهدف (y) إلى مجموعات اختبار وتدريب. لدى Scikit-learn طريقة مباشرة للقيام بذلك؛ يمكنك تقسيم بيانات الاختبار عند نقطة معينة.
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
-
الآن أنت جاهز لتدريب النموذج الخاص بك! قم بتحميل نموذج الانحدار الخطي وقم بتدريبه باستخدام مجموعات التدريب X و y باستخدام
model.fit()
:model = linear_model.LinearRegression() model.fit(X_train, y_train)
✅
model.fit()
هي وظيفة ستراها في العديد من مكتبات تعلم الآلة مثل TensorFlow. -
بعد ذلك، قم بإنشاء توقع باستخدام بيانات الاختبار، باستخدام وظيفة
predict()
. سيتم استخدام هذا لرسم الخط بين مجموعات البيانات.y_pred = model.predict(X_test)
-
الآن حان الوقت لعرض البيانات في مخطط. Matplotlib هي أداة مفيدة جدًا لهذه المهمة. قم بإنشاء مخطط نقاط لجميع بيانات الاختبار X و y، واستخدم التوقع لرسم خط في المكان الأنسب بين مجموعات البيانات الخاصة بالنموذج.
plt.scatter(X_test, y_test, color='black') plt.plot(X_test, y_pred, color='blue', linewidth=3) plt.xlabel('Scaled BMIs') plt.ylabel('Disease Progression') plt.title('A Graph Plot Showing Diabetes Progression Against BMI') plt.show()
✅ فكر قليلاً فيما يحدث هنا. هناك خط مستقيم يمر عبر العديد من النقاط الصغيرة من البيانات، ولكن ماذا يفعل بالضبط؟ هل يمكنك أن ترى كيف يمكن استخدام هذا الخط للتنبؤ بمكان نقطة بيانات جديدة وغير مرئية بالنسبة لمحور y في الرسم البياني؟ حاول أن تصف الاستخدام العملي لهذا النموذج بالكلمات.
تهانينا، لقد قمت ببناء أول نموذج انحدار خطي، وأنشأت تنبؤًا باستخدامه، وعرضته في رسم بياني!
🚀التحدي
قم برسم متغير مختلف من هذه المجموعة البيانية. تلميح: قم بتعديل هذا السطر: X = X[:,2]
. بالنظر إلى الهدف من هذه المجموعة البيانية، ماذا يمكنك اكتشافه عن تطور مرض السكري كمرض؟
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
في هذا الدرس، عملت مع الانحدار الخطي البسيط، بدلاً من الانحدار الأحادي أو الانحدار المتعدد. اقرأ قليلاً عن الفروقات بين هذه الطرق، أو شاهد هذا الفيديو.
اقرأ المزيد عن مفهوم الانحدار وفكر في نوعية الأسئلة التي يمكن الإجابة عليها باستخدام هذه التقنية. خذ هذا الدرس لتعميق فهمك.
الواجب
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.