You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
20 KiB
239 lines
20 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
|
|
"translation_date": "2025-09-04T20:40:45+00:00",
|
|
"source_file": "2-Regression/1-Tools/README.md",
|
|
"language_code": "ar"
|
|
}
|
|
-->
|
|
# البدء مع Python و Scikit-learn لنماذج الانحدار
|
|
|
|

|
|
|
|
> رسم توضيحي بواسطة [Tomomi Imura](https://www.twitter.com/girlie_mac)
|
|
|
|
## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
> ### [هذه الدرس متوفر بلغة R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
|
|
|
|
## المقدمة
|
|
|
|
في هذه الدروس الأربعة، ستتعلم كيفية بناء نماذج الانحدار. سنناقش قريبًا ما هي هذه النماذج وما الغرض منها. ولكن قبل أن تبدأ بأي شيء، تأكد من أن لديك الأدوات المناسبة للبدء!
|
|
|
|
في هذا الدرس، ستتعلم كيفية:
|
|
|
|
- إعداد جهاز الكمبيوتر الخاص بك لمهام تعلم الآلة المحلية.
|
|
- العمل مع دفاتر Jupyter.
|
|
- استخدام Scikit-learn، بما في ذلك التثبيت.
|
|
- استكشاف الانحدار الخطي من خلال تمرين عملي.
|
|
|
|
## التثبيت والإعدادات
|
|
|
|
[](https://youtu.be/-DfeD2k2Kj0 "تعلم الآلة للمبتدئين - إعداد أدواتك لبناء نماذج تعلم الآلة")
|
|
|
|
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول إعداد جهاز الكمبيوتر الخاص بك لتعلم الآلة.
|
|
|
|
1. **تثبيت Python**. تأكد من أن [Python](https://www.python.org/downloads/) مثبت على جهاز الكمبيوتر الخاص بك. ستستخدم Python للعديد من مهام علوم البيانات وتعلم الآلة. معظم أنظمة الكمبيوتر تحتوي بالفعل على تثبيت Python. هناك أيضًا [حزم برمجية لـ Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) مفيدة لتسهيل الإعداد لبعض المستخدمين.
|
|
|
|
بعض استخدامات Python تتطلب إصدارًا معينًا من البرنامج، بينما تتطلب أخرى إصدارًا مختلفًا. لهذا السبب، من المفيد العمل داخل [بيئة افتراضية](https://docs.python.org/3/library/venv.html).
|
|
|
|
2. **تثبيت Visual Studio Code**. تأكد من أن Visual Studio Code مثبت على جهاز الكمبيوتر الخاص بك. اتبع هذه التعليمات لتثبيت [Visual Studio Code](https://code.visualstudio.com/) للتثبيت الأساسي. ستستخدم Python في Visual Studio Code في هذه الدورة، لذا قد ترغب في مراجعة كيفية [إعداد Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) لتطوير Python.
|
|
|
|
> تعرف على Python من خلال هذه المجموعة من [وحدات التعلم](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
|
|
>
|
|
> [](https://youtu.be/yyQM70vi7V8 "إعداد Python مع Visual Studio Code")
|
|
>
|
|
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: استخدام Python داخل VS Code.
|
|
|
|
3. **تثبيت Scikit-learn**، باتباع [هذه التعليمات](https://scikit-learn.org/stable/install.html). نظرًا لأنك تحتاج إلى التأكد من استخدام Python 3، يُوصى باستخدام بيئة افتراضية. لاحظ أنه إذا كنت تقوم بتثبيت هذه المكتبة على جهاز Mac M1، فهناك تعليمات خاصة على الصفحة المرتبطة أعلاه.
|
|
|
|
4. **تثبيت Jupyter Notebook**. ستحتاج إلى [تثبيت حزمة Jupyter](https://pypi.org/project/jupyter/).
|
|
|
|
## بيئة تأليف تعلم الآلة الخاصة بك
|
|
|
|
ستستخدم **دفاتر الملاحظات** لتطوير كود Python الخاص بك وإنشاء نماذج تعلم الآلة. هذا النوع من الملفات هو أداة شائعة لعلماء البيانات، ويمكن التعرف عليها من خلال لاحقتها أو امتدادها `.ipynb`.
|
|
|
|
دفاتر الملاحظات هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية.
|
|
|
|
[](https://youtu.be/7E-jC8FLA2E "تعلم الآلة للمبتدئين - إعداد دفاتر Jupyter للبدء في بناء نماذج الانحدار")
|
|
|
|
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
|
|
|
|
### تمرين - العمل مع دفتر ملاحظات
|
|
|
|
في هذا المجلد، ستجد الملف _notebook.ipynb_.
|
|
|
|
1. افتح _notebook.ipynb_ في Visual Studio Code.
|
|
|
|
سيتم تشغيل خادم Jupyter مع Python 3+. ستجد مناطق في دفتر الملاحظات يمكن تشغيلها، وهي أجزاء من الكود. يمكنك تشغيل كتلة الكود عن طريق تحديد الرمز الذي يشبه زر التشغيل.
|
|
|
|
2. حدد رمز `md` وأضف بعض النصوص باستخدام Markdown، والنص التالي **# مرحبًا بك في دفتر ملاحظاتك**.
|
|
|
|
بعد ذلك، أضف بعض كود Python.
|
|
|
|
3. اكتب **print('hello notebook')** في كتلة الكود.
|
|
4. حدد السهم لتشغيل الكود.
|
|
|
|
يجب أن ترى العبارة المطبوعة:
|
|
|
|
```output
|
|
hello notebook
|
|
```
|
|
|
|

|
|
|
|
يمكنك دمج الكود مع التعليقات لتوثيق دفتر الملاحظات ذاتيًا.
|
|
|
|
✅ فكر للحظة في مدى اختلاف بيئة عمل مطور الويب عن بيئة عمل عالم البيانات.
|
|
|
|
## البدء مع Scikit-learn
|
|
|
|
الآن بعد أن تم إعداد Python في بيئتك المحلية وأصبحت مرتاحًا مع دفاتر Jupyter، دعنا نتعرف على Scikit-learn (تُنطق `sci` كما في `science`). توفر Scikit-learn [واجهة برمجية شاملة](https://scikit-learn.org/stable/modules/classes.html#api-ref) لمساعدتك في تنفيذ مهام تعلم الآلة.
|
|
|
|
وفقًا لموقعهم [الرسمي](https://scikit-learn.org/stable/getting_started.html)، "Scikit-learn هي مكتبة مفتوحة المصدر لتعلم الآلة تدعم التعلم الموجه وغير الموجه. كما توفر أدوات متنوعة لتلائم النماذج، ومعالجة البيانات، واختيار النماذج وتقييمها، والعديد من الأدوات الأخرى."
|
|
|
|
في هذه الدورة، ستستخدم Scikit-learn وأدوات أخرى لبناء نماذج تعلم الآلة لتنفيذ ما نسميه مهام "تعلم الآلة التقليدي". لقد تجنبنا عمدًا الشبكات العصبية والتعلم العميق، حيث يتم تغطيتها بشكل أفضل في منهجنا القادم "الذكاء الاصطناعي للمبتدئين".
|
|
|
|
تجعل Scikit-learn بناء النماذج وتقييمها للاستخدام أمرًا بسيطًا. وهي تركز بشكل أساسي على استخدام البيانات الرقمية وتحتوي على العديد من مجموعات البيانات الجاهزة للاستخدام كأدوات تعليمية. كما تتضمن نماذج مسبقة الصنع يمكن للطلاب تجربتها. دعنا نستكشف عملية تحميل البيانات المعبأة مسبقًا واستخدام نموذج تقدير أولي مع Scikit-learn باستخدام بعض البيانات الأساسية.
|
|
|
|
## تمرين - أول دفتر ملاحظات لك مع Scikit-learn
|
|
|
|
> هذا الدرس مستوحى من [مثال الانحدار الخطي](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) على موقع Scikit-learn.
|
|
|
|
[](https://youtu.be/2xkXL5EUpS0 "تعلم الآلة للمبتدئين - مشروعك الأول للانحدار الخطي في Python")
|
|
|
|
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
|
|
|
|
في ملف _notebook.ipynb_ المرتبط بهذا الدرس، قم بمسح جميع الخلايا بالضغط على رمز "سلة المهملات".
|
|
|
|
في هذا القسم، ستعمل مع مجموعة بيانات صغيرة حول مرض السكري مضمنة في Scikit-learn لأغراض التعلم. تخيل أنك تريد اختبار علاج لمرضى السكري. قد تساعدك نماذج تعلم الآلة في تحديد المرضى الذين قد يستجيبون بشكل أفضل للعلاج بناءً على مجموعات من المتغيرات. حتى نموذج الانحدار الأساسي جدًا، عند تصوره، قد يظهر معلومات حول المتغيرات التي قد تساعدك في تنظيم تجاربك السريرية النظرية.
|
|
|
|
✅ هناك العديد من أنواع طرق الانحدار، واختيارك يعتمد على الإجابة التي تبحث عنها. إذا كنت تريد التنبؤ بالطول المحتمل لشخص بناءً على عمره، ستستخدم الانحدار الخطي، حيث تبحث عن **قيمة رقمية**. إذا كنت مهتمًا بمعرفة ما إذا كان نوع معين من الطعام يجب اعتباره نباتيًا أم لا، فأنت تبحث عن **تعيين فئة** وبالتالي ستستخدم الانحدار اللوجستي. ستتعلم المزيد عن الانحدار اللوجستي لاحقًا. فكر قليلاً في بعض الأسئلة التي يمكنك طرحها على البيانات، وأي من هذه الطرق سيكون أكثر ملاءمة.
|
|
|
|
لنبدأ هذه المهمة.
|
|
|
|
### استيراد المكتبات
|
|
|
|
لهذه المهمة، سنقوم باستيراد بعض المكتبات:
|
|
|
|
- **matplotlib**. إنها أداة [رسم بياني](https://matplotlib.org/) مفيدة وسنستخدمها لإنشاء مخطط خطي.
|
|
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) هي مكتبة مفيدة للتعامل مع البيانات الرقمية في Python.
|
|
- **sklearn**. هذه هي مكتبة [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
|
|
|
|
قم باستيراد بعض المكتبات لمساعدتك في المهام.
|
|
|
|
1. أضف الاستيرادات بكتابة الكود التالي:
|
|
|
|
```python
|
|
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` لتقسيم البيانات إلى مجموعات تدريب واختبار.
|
|
|
|
### مجموعة بيانات السكري
|
|
|
|
مجموعة بيانات [السكري المدمجة](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) تحتوي على 442 عينة من البيانات حول مرض السكري، مع 10 متغيرات مميزة، بعضها يشمل:
|
|
|
|
- العمر: العمر بالسنوات
|
|
- مؤشر كتلة الجسم (bmi): مؤشر كتلة الجسم
|
|
- ضغط الدم (bp): متوسط ضغط الدم
|
|
- خلايا T (s1 tc): نوع من خلايا الدم البيضاء
|
|
|
|
✅ تتضمن هذه المجموعة مفهوم "الجنس" كمتغير مميز مهم للبحث حول مرض السكري. العديد من مجموعات البيانات الطبية تتضمن هذا النوع من التصنيف الثنائي. فكر قليلاً في كيفية تأثير مثل هذه التصنيفات على استبعاد أجزاء معينة من السكان من العلاجات.
|
|
|
|
الآن، قم بتحميل بيانات X و y.
|
|
|
|
> 🎓 تذكر، هذا تعلم موجه، ونحتاج إلى هدف مسمى "y".
|
|
|
|
في خلية كود جديدة، قم بتحميل مجموعة بيانات السكري عن طريق استدعاء `load_diabetes()`. الإعداد `return_X_y=True` يشير إلى أن `X` ستكون مصفوفة بيانات، و `y` ستكون الهدف الانحداري.
|
|
|
|
1. أضف بعض أوامر الطباعة لعرض شكل مصفوفة البيانات وأول عنصر فيها:
|
|
|
|
```python
|
|
X, y = datasets.load_diabetes(return_X_y=True)
|
|
print(X.shape)
|
|
print(X[0])
|
|
```
|
|
|
|
ما تحصل عليه كاستجابة هو مجموعة. ما تقوم به هو تعيين القيمتين الأوليين للمجموعة إلى `X` و `y` على التوالي. تعرف على المزيد [حول المجموعات](https://wikipedia.org/wiki/Tuple).
|
|
|
|
يمكنك رؤية أن هذه البيانات تحتوي على 442 عنصرًا مرتبة في مصفوفات تحتوي على 10 عناصر:
|
|
|
|
```text
|
|
(442, 10)
|
|
[ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
|
|
-0.04340085 -0.00259226 0.01990842 -0.01764613]
|
|
```
|
|
|
|
✅ فكر قليلاً في العلاقة بين البيانات والهدف الانحداري. الانحدار الخطي يتنبأ بالعلاقات بين الميزة X والمتغير الهدف y. هل يمكنك العثور على [الهدف](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) لمجموعة بيانات السكري في الوثائق؟ ما الذي تظهره هذه المجموعة، بالنظر إلى الهدف؟
|
|
|
|
2. بعد ذلك، اختر جزءًا من هذه المجموعة لرسمه عن طريق اختيار العمود الثالث من المجموعة. يمكنك القيام بذلك باستخدام المشغل `:` لاختيار جميع الصفوف، ثم اختيار العمود الثالث باستخدام الفهرس (2). يمكنك أيضًا إعادة تشكيل البيانات لتكون مصفوفة ثنائية الأبعاد - كما هو مطلوب للرسم - باستخدام `reshape(n_rows, n_columns)`. إذا كانت إحدى المعلمات -1، يتم حساب البعد المقابل تلقائيًا.
|
|
|
|
```python
|
|
X = X[:, 2]
|
|
X = X.reshape((-1,1))
|
|
```
|
|
|
|
✅ في أي وقت، قم بطباعة البيانات للتحقق من شكلها.
|
|
|
|
3. الآن بعد أن أصبحت البيانات جاهزة للرسم، يمكنك معرفة ما إذا كانت الآلة يمكن أن تساعد في تحديد تقسيم منطقي بين الأرقام في هذه المجموعة. للقيام بذلك، تحتاج إلى تقسيم كل من البيانات (X) والهدف (y) إلى مجموعات اختبار وتدريب. لدى Scikit-learn طريقة مباشرة للقيام بذلك؛ يمكنك تقسيم بيانات الاختبار عند نقطة معينة.
|
|
|
|
```python
|
|
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
|
|
```
|
|
|
|
4. الآن أنت جاهز لتدريب النموذج الخاص بك! قم بتحميل نموذج الانحدار الخطي وقم بتدريبه باستخدام مجموعات التدريب X و y باستخدام `model.fit()`:
|
|
|
|
```python
|
|
model = linear_model.LinearRegression()
|
|
model.fit(X_train, y_train)
|
|
```
|
|
|
|
✅ `model.fit()` هي وظيفة ستراها في العديد من مكتبات تعلم الآلة مثل TensorFlow.
|
|
|
|
5. بعد ذلك، قم بإنشاء توقع باستخدام بيانات الاختبار، باستخدام وظيفة `predict()`. سيتم استخدام هذا لرسم الخط بين مجموعات البيانات.
|
|
|
|
```python
|
|
y_pred = model.predict(X_test)
|
|
```
|
|
|
|
6. الآن حان الوقت لعرض البيانات في مخطط. Matplotlib هي أداة مفيدة جدًا لهذه المهمة. قم بإنشاء مخطط نقاط لجميع بيانات الاختبار X و y، واستخدم التوقع لرسم خط في المكان الأنسب بين مجموعات البيانات الخاصة بالنموذج.
|
|
|
|
```python
|
|
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]`. بالنظر إلى الهدف من هذه المجموعة البيانية، ماذا يمكنك اكتشافه عن تطور مرض السكري كمرض؟
|
|
|
|
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
## المراجعة والدراسة الذاتية
|
|
|
|
في هذا الدرس، عملت مع الانحدار الخطي البسيط، بدلاً من الانحدار الأحادي أو الانحدار المتعدد. اقرأ قليلاً عن الفروقات بين هذه الطرق، أو شاهد [هذا الفيديو](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
|
|
|
|
اقرأ المزيد عن مفهوم الانحدار وفكر في نوعية الأسئلة التي يمكن الإجابة عليها باستخدام هذه التقنية. خذ [هذا الدرس](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) لتعميق فهمك.
|
|
|
|
## الواجب
|
|
|
|
[مجموعة بيانات مختلفة](assignment.md)
|
|
|
|
---
|
|
|
|
**إخلاء المسؤولية**:
|
|
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة. |