في هذا الدرس، تعلمت عن أدوات الذكاء الاصطناعي المسؤول، وهو "مشروع مفتوح المصدر يقوده المجتمع لمساعدة علماء البيانات في تحليل وتحسين أنظمة الذكاء الاصطناعي." في هذه المهمة، قم باستكشاف أحد [دفاتر الملاحظات](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) الخاصة بأدوات الذكاء الاصطناعي المسؤول وقدم نتائجك في ورقة أو عرض تقديمي.
في هذا الدرس تعلمت عن مجموعة أدوات الذكاء الاصطناعي المسؤول، وهو "مشروع مفتوح المصدر وموجه من قبل المجتمع لمساعدة علماء البيانات على تحليل وتحسين أنظمة الذكاء الاصطناعي." لمهمة هذا، استكشف أحد دفاتر ملاحظات مجموعة أدوات الذكاء الاصطناعي المسؤول [notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) وقدم تقريرك في ورقة أو عرض تقديمي.
## معايير التقييم
## مقياس التقييم
| المعايير | ممتاز | مقبول | يحتاج إلى تحسين |
| -------- | ------ | ------ | --------------- |
| | يتم تقديم ورقة أو عرض تقديمي يناقش أنظمة Fairlearn، دفتر الملاحظات الذي تم تشغيله، والاستنتاجات المستخلصة من تشغيله | يتم تقديم ورقة بدون استنتاجات | لم يتم تقديم أي ورقة |
| | تم تقديم ورقة أو عرض تقديمي يناقش أنظمة Fairlearn، دفتر الملاحظات الذي تم تشغيله، والاستنتاجات المستخلصة من تشغيله | تم تقديم ورقة بدون استنتاجات | لم يتم تقديم ورقة |
---
**إخلاء المسؤولية**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**تنويه**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى جاهدين لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والموثوق. بالنسبة للمعلومات الحساسة أو الحرجة، يُفضل الاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
حتى الآن، قمت باستكشاف مفهوم الانحدار باستخدام بيانات عينة مأخوذة من مجموعة بيانات تسعير القرع التي سنستخدمها طوال هذا الدرس. كما قمت بتصورها باستخدام مكتبة Matplotlib.
حتى الآن، لقد استكشفت ما هو الانحدار باستخدام بيانات عينة جمعت من مجموعة بيانات تسعير القرع التي سنستخدمها طوال هذا الدرس. كما قمت بتصويرها باستخدام Matplotlib.
الآن أنت جاهز للتعمق أكثر في الانحدار في تعلم الآلة. بينما يسمح التصور بفهم البيانات، فإن القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. يتم تدريب النماذج على البيانات التاريخية لالتقاط العلاقات بين البيانات تلقائيًا، وتتيح لك التنبؤ بالنتائج للبيانات الجديدة التي لم يرها النموذج من قبل.
الآن أنت مستعد للتعمق أكثر في الانحدار لتعلم الآلة. بينما يتيح التصوير فهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. يتم تدريب النماذج على بيانات تاريخية لالتقاط الاعتمادات ضمن البيانات تلقائياً، وتتيح لك التنبؤ بالنتائج لبيانات جديدة، لم يسبق للنموذج رؤيتها من قبل.
في هذا الدرس، ستتعلم المزيد عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و _الانحدار متعدد الحدود_، إلى جانب بعض الرياضيات الأساسية لهذه التقنيات. ستتيح لنا هذه النماذج التنبؤ بأسعار القرع بناءً على بيانات الإدخال المختلفة.
في هذا الدرس، ستتعلم المزيد عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و _الانحدار كثير الحدود_، جنبًا إلى جنب مع بعض الرياضيات التي تقوم عليها هذه التقنيات. تلك النماذج ستتيح لنا التنبؤ بأسعار القرع اعتمادًا على بيانات مختلفة.
[](https://youtu.be/CRxFT8oTDMg "تعلّم الآلة للمبتدئين - فهم الانحدار الخطي")
[](https://youtu.be/CRxFT8oTDMg "تعلم الآلة للمبتدئين - فهم الانحدار الخطي")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن الانحدار الخطي.
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الانحدار الخطي.
> خلال هذه المنهجية، نفترض معرفة بسيطة بالرياضيات، ونسعى لجعلها سهلة الوصول للطلاب القادمين من مجالات أخرى، لذا ابحث عن الملاحظات، 🧮 التنبيهات، الرسوم البيانية، وأدوات التعلم الأخرى لتسهيل الفهم.
> طوال هذا المنهج، نفترض معرفة دنيا بالرياضيات، ونسعى لجعلها في متناول الطلاب القادمين من مجالات أخرى، لذا راقب الملاحظات، ونداءات 🧮، والرسوم البيانية، وأدوات التعلم الأخرى لمساعدتك على الفهم.
### المتطلبات الأساسية
### المتطلبات السابقة
يجب أن تكون الآن على دراية ببنية بيانات القرع التي نقوم بفحصها. يمكنك العثور عليها محملة مسبقًا ومُنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يتم عرض سعر القرع لكل بوشل في إطار بيانات جديد. تأكد من أنك تستطيع تشغيل هذه الدفاتر في النواة الخاصة بـ Visual Studio Code.
يجب أن تكون الآن على دراية بهيكل بيانات القرع التي نفحصها. يمكنك العثور عليها محملة مسبقًا ومنقحة في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يتم عرض سعر القرع لكل بوشل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه الدفاتر في النوى داخل Visual Studio Code.
### التحضير
كتذكير، أنت تقوم بتحميل هذه البيانات لطرح أسئلة عليها.
كمذكرة، تقوم بتحميل هذه البيانات لكي تطرح عليها أسئلة.
- متى يكون أفضل وقت لشراء القرع؟
- ما السعر المتوقع لصندوق من القرع الصغير؟
- هل يجب أن أشتريه في سلال نصف بوشل أو في صناديق بوشل 1 1/9؟
دعونا نستمر في استكشاف هذه البيانات.
- ما السعر الذي يمكنني توقعه لصندوق قرع صغير؟
- هل يجب أن أشتريه في سلال نصف بوشل أم في صندوق 1 1/9 بوشل؟
لنستمر في التعمق في هذه البيانات.
في الدرس السابق، قمت بإنشاء إطار بيانات Pandas وملأته بجزء من مجموعة البيانات الأصلية، مع توحيد الأسعار حسب البوشل. من خلال ذلك، تمكنت من جمع حوالي 400 نقطة بيانات فقط وللأشهر الخريفية فقط.
ألق نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المرفق بهذا الدرس. البيانات محملة مسبقًا ورسم أولي لنقاط مبعثرة يظهر بيانات الشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات عن طريق تنظيفها أكثر.
في الدرس السابق، قمت بإنشاء إطار بيانات باستخدام Pandas وملأته بجزء من مجموعة البيانات الأصلية، موحدًا التسعير حسب البوشل. ومع ذلك، من خلال القيام بذلك، تمكنت فقط من جمع حوالي 400 نقطة بيانات وفقط للأشهر الخريفية.
## خط انحدار خطي
ألقِ نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المرافق لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر أولي لإظهار بيانات الأشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات من خلال تنظيفها أكثر.
كما تعلمت في الدرس 1، الهدف من تمرين الانحدار الخطي هو القدرة على رسم خط ل:
## خط الانحدار الخطي
- **إظهار علاقات المتغيرات**. إظهار العلاقة بين المتغيرات
- **إجراء التنبؤات**. إجراء تنبؤات دقيقة عن موقع نقطة بيانات جديدة بالنسبة لهذا الخط.
كما تعلمت في الدرس الأول، الهدف من تمرين الانحدار الخطي هو القدرة على رسم خط لـ:
من المعتاد أن يرسم الانحدار الخطي بمعيار المربعات الصغرى هذا النوع من الخطوط. يشير مصطلح "المربعات الصغرى" إلى عملية تقليل الخطأ الإجمالي في نموذجنا. لكل نقطة بيانات، نقيس المسافة العمودية (المسماة الباقي) بين النقطة الفعلية وخط الانحدار الخاص بنا.
- **إظهار العلاقات بين المتغيرات**. إظهار العلاقة بين المتغيرات
- **إجراء التنبؤات**. إجراء تنبؤات دقيقة حول مكان وقوع نقطة بيانات جديدة بالنسبة لذلك الخط.
نقوم بتربيع هذه المسافات لسببين رئيسيين:
من المعتاد استخدام **انحدار المربعات الصغرى** لرسم هذا النوع من الخطوط. مصطلح "المربعات الصغرى" يعني أن جميع نقاط البيانات المحيطة بخط الانحدار يتم تربيعها ثم جمعها. من الناحية المثالية، يكون المجموع النهائي صغيرًا قدر الإمكان، لأننا نريد عددًا منخفضًا من الأخطاء، أو `المربعات الصغرى`.
1. **المقدار على الاتجاه:** نريد معاملة خطأ -5 بنفس الطريقة التي يعامل بها خطأ +5. التربيع يحول جميع القيم إلى موجبة.
نقوم بذلك لأننا نريد نمذجة خط يحتوي على أقل مسافة تراكمية من جميع نقاط البيانات لدينا. كما نقوم بتربيع المصطلحات قبل جمعها لأننا نهتم بحجمها بدلاً من اتجاهها.
2. **معاقبة القيم الشاذة:** التربيع يعطي وزنًا أكبر للأخطاء الكبيرة، مما يجبر الخط على البقاء أقرب إلى النقاط البعيدة.
> **🧮 أرني الرياضيات**
بعد ذلك نضيف كل هذه القيم المربعة معًا. هدفنا هو إيجاد الخط المحدد حيث يكون هذا المجموع النهائي هو الأدنى (القيمة الممكنة الأصغر) — ومن هنا جاء اسم "المربعات الصغرى".
> **🧮 أرني الرياضيات**
>
> يمكن التعبير عن هذا الخط، المسمى _خط أفضل تطابق_، بواسطة [معادلة](https://en.wikipedia.org/wiki/Simple_linear_regression):
> هذا الخط، المسمى بـ _خط الانحدار الأفضل_ يمكن التعبير عنه بـ [معادلة](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` هو "المتغير التوضيحي". `Y` هو "المتغير التابع". ميل الخط هو `b` و `a` هو نقطة تقاطع المحور Y، والتي تشير إلى قيمة `Y` عندما يكون `X = 0`.
> `X` هو 'المتغير التوضيحي'. `Y` هو 'المتغير التابع'. ميل الخط هو `b` و `a` هو قيمة التقاطع الصادي، الذي يشير إلى قيمة `Y` عندما تكون `X = 0`.
> احسب قيمة Y. إذا كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! مخطط معلوماتي بواسطة [Jen Looper](https://twitter.com/jenlooper)
> حساب قيمة Y. إذا كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! رسم معلوماتي بواسطة [Jen Looper](https://twitter.com/jenlooper)
>
> يجب أن تُظهر الرياضيات التي تحسب الخط ميل الخط، والذي يعتمد أيضًا على نقطة التقاطع، أو مكان وجود `Y` عندما يكون `X = 0`.
> يجب أن توضح الرياضيات التي تحسب الخط ميل الخط، والذي يعتمد أيضاً على نقطة التقاطع، أو حيث يقع `Y` عندما تكون `X = 0`.
>
> يمكنك مشاهدة طريقة الحساب لهذه القيم على موقع [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). كما يمكنك زيارة [آلة حاسبة المربعات الصغرى](https://www.mathsisfun.com/data/least-squares-calculator.html) لمشاهدة كيف تؤثر قيم الأرقام على الخط.
> يمكنك ملاحظة طريقة الحساب لهذه القيم على موقع [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). كما يمكنك زيارة [آلة حاسبة للمربعات الصغرى](https://www.mathsisfun.com/data/least-squares-calculator.html) لترى كيف تؤثر قيم الأرقام على الخط.
## الارتباط
مصطلح آخر يجب فهمه هو **معامل الارتباط** بين المتغيرين X و Y المعطىين. باستخدام مخطط مبعثر، يمكنك بسرعة تصور هذا المعامل. مخطط يحتوي على نقاط بيانات متناثرة في خط مرتب لديه ارتباط عالي، ولكن مخطط يحتوي على نقاط بيانات متناثرة في كل مكان بين X و Y لديه ارتباط منخفض.
مصطلح آخر يجب فهمه هو **معامل الارتباط** بين متغيري X و Y معينين. باستخدام مخطط مبعثر، يمكنك تصور هذا المعامل بسرعة. المخطط الذي تنتشر فيه نقاط البيانات على خط مرتب تكون له ارتباط عالي، أما المخطط الذي تنتشر فيه نقاط البيانات في كل مكان بين X و Y فيكون له ارتباط منخفض.
نموذج الانحدار الخطي الجيد سيكون النموذج الذي يحتوي على معامل ارتباط عالي (أقرب إلى 1 من 0) باستخدام طريقة انحدار المربعات الصغرى مع خط الانحدار.
نموذج انحدار خطي جيد سيكون له معامل ارتباط مرتفع (أقرب إلى 1 من 0) باستخدام طريقة الانحدار بالمربعات الصغرى مع خط الانحدار.
✅ قم بتشغيل دفتر الملاحظات المرافق لهذا الدرس وانظر إلى مخطط الشهر مقابل السعر. هل تبدو البيانات التي تربط الشهر بالسعر لمبيعات القرع ذات ارتباط عالي أو منخفض، وفقًا لتفسيرك البصري للمخطط المبعثر؟ هل يتغير ذلك إذا استخدمت مقياسًا أكثر دقة بدلاً من `الشهر`، مثل *اليوم من السنة* (أي عدد الأيام منذ بداية السنة)؟
✅ شغل دفتر الملاحظات المرافق لهذا الدرس وانظر إلى مخطط مبعثر الشهر إلى السعر. هل تبدو البيانات التي تربط الشهر بالسعر لمبيعات القرع ذات ارتباط عالي أو منخفض، وفقًا لتفسيرك البصري للمخطط المبعثر؟ هل يتغير هذا إذا استخدمت مقياسًا أكثر دقة بدلاً من `Month`، مثل *اليوم من السنة* (أي عدد الأيام منذ بداية السنة)؟
في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، مشابه لما يلي:
في الكود أدناه، سنفترض أننا نظفنا البيانات، وحصلنا على إطار بيانات يُسمى `new_pumpkins` مشابهًا لما يلي:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> الكود لتنظيف البيانات متوفر في [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). قمنا بتنفيذ نفس خطوات التنظيف كما في الدرس السابق، وقمنا بحساب عمود `DayOfYear` باستخدام التعبير التالي:
> الشيفرة الخاصة بتنظيف البيانات متاحة في [`notebook.ipynb`](notebook.ipynb). لقد أجرينا نفس خطوات التنظيف كما في الدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي:
الآن بعد أن أصبحت لديك فهم للرياضيات وراء الانحدار الخطي، دعنا ننشئ نموذج انحدار لنرى ما إذا كان بإمكاننا التنبؤ بأي حزمة من القرع ستحتوي على أفضل أسعار القرع. قد يرغب شخص يشتري القرع لحديقة قرع العطلات في هذه المعلومات ليتمكن من تحسين مشترياته من حزم القرع للحديقة.
الآن بعد أن فهمت الرياضيات وراء الانحدار الخطي، دعنا ننشئ نموذج انحدار لنرى إن كان بإمكاننا التنبؤ بأفضل عبوة للقرع تكون بأسعار قرع أفضل. من المحتمل أن يرغب شخص يشتري قرعًا لحديقة قرع العيد في هذه المعلومة لكي يستطيع تحسين شراء عبوات القرع.
## البحث عن الارتباط
[](https://youtu.be/uoRq-lW2eQo "تعلّم الآلة للمبتدئين - البحث عن الارتباط: المفتاح للانحدار الخطي")
[](https://youtu.be/uoRq-lW2eQo "تعلم الآلة للمبتدئين - البحث عن الارتباط: مفتاح الانحدار الخطي")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن الارتباط.
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الارتباط.
من الدرس السابق ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو كالتالي:
من الدرس السابق ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو بهذا الشكل:
<imgalt="متوسط السعر حسب الشهر"src="../../../../translated_images/ar/barchart.a833ea9194346d76.webp"width="50%"/>
هذا يشير إلى أنه يجب أن يكون هناك بعض الارتباط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `الشهر` و `السعر`، أو بين `اليوم من السنة` و `السعر`. إليك المخطط المبعثر الذي يظهر العلاقة الأخيرة:
هذا يوحي بوجود ارتباط ما، ويمكننا تجربة تدريب نموذج انحدار خطي لتوقع العلاقة بين `Month` و `Price`، أو بين `DayOfYear` و `Price`. إليك المخطط المبعثر الذي يوضح هذه العلاقة الأخيرة:
<imgalt="مخطط مبعثر للسعر مقابل اليوم من السنة" src="../../../../translated_images/ar/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="مخطط مبعثر للسعر مقابل يوم السنة" src="../../../../translated_images/ar/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
دعونا نرى ما إذا كان هناك ارتباط باستخدام وظيفة `corr`:
دعنا نرى إذا كان هناك ارتباط باستخدام دالة `corr`:
يبدو أن الارتباط صغير جدًا، -0.15 حسب `الشهر` و -0.17 حسب `اليوم من الشهر`، ولكن قد تكون هناك علاقة مهمة أخرى. يبدو أن هناك مجموعات مختلفة من الأسعار تتوافق مع أنواع مختلفة من القرع. لتأكيد هذه الفرضية، دعونا نرسم كل فئة من القرع باستخدام لون مختلف. من خلال تمرير معلمة `ax` إلى وظيفة الرسم المبعثر، يمكننا رسم جميع النقاط على نفس الرسم البياني:
يبدو أن الارتباط صغير جداً، -0.15 حسب `Month` و -0.17 حسب `DayOfMonth`، لكن قد توجد علاقة مهمة أخرى. يبدو أن هناك تجمعات مختلفة من الأسعار التي تناسب أصناف مختلفة من القرع. لتأكيد هذا الافتراض، دعنا نرسم كل فئة قرع بلون مختلف. بتمرير معامل `ax` إلى دالة الرسم `scatter` يمكننا رسم جميع النقاط على نفس الرسم البياني:
```python
ax=None
@ -128,40 +140,40 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="مخطط مبعثر للسعر مقابل اليوم من السنة" src="../../../../translated_images/ar/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="مخطط مبعثر للسعر مقابل يوم السنة" src="../../../../translated_images/ar/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
إذا قمنا الآن بحساب الارتباط بين `السعر` و `اليوم من السنة` باستخدام وظيفة `corr`، سنحصل على شيء مثل `-0.27` - مما يعني أن تدريب نموذج تنبؤي يبدو منطقيًا.
إذا حسبنا الآن الارتباط بين `Price` و `DayOfYear` باستخدام دالة `corr` سنحصل على شيء مثل `-0.27` - مما يعني أن تدريب نموذج تنبؤي منطق.
> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من أن بياناتنا نظيفة. لا يعمل الانحدار الخطي جيدًا مع القيم المفقودة، لذا من المنطقي التخلص من جميع الخلايا الفارغة:
> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من نظافةالبيانات. الانحدار الخطي لا يعمل جيدًا مع القيم المفقودة، لذا من المنطقي التخلص من كل الخلايا الفارغة:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
نهج آخر سيكون ملء تلك القيم الفارغة بالقيم المتوسطة من العمود المقابل.
طريقة أخرى هي ملء تلك القيم الفارغة بمتوسط القيم من العمود المقابل.
## الانحدار الخطي البسيط
[](https://youtu.be/e4c_UP2fSjg "تعلّم الآلة للمبتدئين - الانحدار الخطي ومتعدد الحدود باستخدام Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "تعلم الآلة للمبتدئين - الانحدار الخطي والانحدار كثير الحدود باستخدام Scikit-learn")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن الانحدار الخطي ومتعدد الحدود.
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الانحدار الخطي والانحدار كثير الحدود.
لتدريب نموذج الانحدار الخطي الخاص بنا، سنستخدم مكتبة **Scikit-learn**.
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> لاحظ أننا اضطررنا إلى تنفيذ `reshape` على بيانات الإدخال لكي يفهمها حزمة الانحدار الخطي بشكل صحيح. يتوقع الانحدار الخطي مصفوفة ثنائية الأبعاد كمدخل، حيث يمثل كل صف من المصفوفة متجهًا لميزات الإدخال. في حالتنا، نظرًا لأن لدينا مدخلًا واحدًا فقط - نحتاج إلى مصفوفة ذات شكل N×1، حيث N هو حجم مجموعة البيانات.
> لاحظ أننا اضطررنا لأداء `reshape` على البيانات المدخلة لكي يفهمها حزمة الانحدار الخطي بشكل صحيح. الانحدار الخطي يتوقع مصفوفة ذات بعدين كمدخل، حيث كل صف من المصفوفة يمثل متجهًا من الميزات المدخلة. في حالتنا، بما أن لدينا مدخلاً واحداً فقط - فالاحتياج لمصفوفة شكلها N×1، حيث N هو حجم مجموعة البيانات.
ثم، نحتاج إلى تقسيم البيانات إلى مجموعات تدريب واختبار، حتى نتمكن من التحقق من صحة النموذج بعد التدريب:
بعد ذلك، نحتاج إلى تقسيم البيانات إلى مجموعات تدريب واختبار، لكي نتمكن من التحقق من صحة نموذجنا بعد التدريب:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
أخيرًا، تدريب نموذج الانحدار الخطي الفعلي يستغرق فقط سطرين من الكود. نقوم بتعريف كائن `LinearRegression`، ونقوم بتدريبهعلى بياناتنا باستخدام طريقة `fit`:
أخيرًا، يستغرق تدريب نموذج الانحدار الخطي الفعلي سطرين فقط من الشفرة. نُعرّف كائن `LinearRegression`، ونقوم بملاءمته لبياناتنا باستخدام طريقة `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
يحتوي كائن `LinearRegression` بعد عملية `fit` على جميع معاملات الانحدار، والتي يمكن الوصول إليها باستخدام خاصية `.coef_`. في حالتنا، هناك معامل واحد فقط، والذي يجب أن يكون حوالي `-0.017`. هذا يعني أن الأسعار تبدو وكأنها تنخفض قليلاً مع مرور الوقت، ولكن ليس كثيرًا، حوالي 2 سنت في اليوم. يمكننا أيضًا الوصول إلى نقطة تقاطع الانحدار مع المحور Y باستخدام `lin_reg.intercept_` - ستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية السنة.
يحتوي كائن `LinearRegression` بعد إجراء عملية `fit` على جميع معاملات الانحدار، والتي يمكن الوصول إليها باستخدام خاصية `.coef_`. في حالتنا، هناك معاملة واحدة فقط، والتي يجب أن تكون حوالي `-0.017`. هذا يعني أن الأسعار يبدو أنها تنخفض قليلاً مع مرور الوقت، ولكن ليس كثيرًا، حوالي سنتين في اليوم. يمكننا أيضًا الوصول إلى نقطة تقاطع الانحدار مع محور Y باستخدام `lin_reg.intercept_` - ستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية العام.
لرؤية مدى دقة نموذجنا، يمكننا توقع الأسعار على مجموعة بيانات الاختبار، ثم قياس مدى قرب توقعاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس متوسط الخطأ التربيعي (MSE)، وهو متوسط جميع الفروقات المربعة بين القيمة المتوقعة والقيمة المتنبأ بها.
لمعرفة مدى دقة نموذجنا، يمكننا التنبؤ بالأسعار على مجموعة اختبار، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقاييس متوسط الخطأ التربيعي (MSE)، وهو متوسط جميع الفروق التربيعية بين القيمة المتوقعة والقيمة المتنبأ بها.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
يبدو أن الخطأ لدينا يتمحور حول نقطتين، أي حوالي 17%. ليس جيدًا جدًا. مؤشر آخر لجودة النموذج هو **معامل التحديد**، والذي يمكن الحصول عليه بهذه الطريقة:
يبدو أن خطأنا حوالي نقطتين، وهو ~17٪. ليس جيدًا جدًا. مؤشر آخر لجودة النموذج هو **معامل التحديد**، والذي يمكن الحصول عليه على النحو التالي:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
إذا كانت القيمة 0، فهذا يعني أن النموذج لا يأخذ بيانات الإدخال في الاعتبار، ويعمل كـ *أسوأ متنبئ خطي*، وهو ببساطة متوسط القيمة للنتيجة. أما إذا كانت القيمة 1، فهذا يعني أننا يمكننا التنبؤ بجميع النتائج المتوقعة بشكل مثالي. في حالتنا، معامل التحديد حوالي 0.06، وهو منخفض جدًا.
```
إذا كانت القيمة 0، فهذا يعني أن النموذج لا يأخذ بيانات الإدخال في الاعتبار، ويتصرف كـ *أسوأ متنبئ خطي*، وهو ببساطة القيمة المتوسطة للنتيجة. والقيمة 1 تعني أننا نستطيع التنبؤ بجميع المخرجات المتوقعة بدقة تامة. في حالتنا، المعامل حوالي 0.06، وهو منخفض جدًا.
يمكننا أيضًا رسم بيانات الاختبار مع خط الانحدار لنرى بشكل أفضل كيف يعمل الانحدار في حالتنا:
يمكننا أيضًا رسم بيانات الاختبار مع خط الانحدار لنرى كيف يعمل الانحدار في حالتنا بشكل أفضل:
نوع آخر من الانحدار الخطي هو الانحدار متعدد الحدود. في بعض الأحيان تكون هناك علاقة خطية بين المتغيرات - كلما زاد حجم اليقطين، زاد السعر - ولكن في أحيان أخرى لا يمكن رسم هذه العلاقات كطائرة أو خط مستقيم.
نوع آخر من الانحدار الخطي هو الانحدار متعدد الحدود. بينما في بعض الأحيان يوجد علاقة خطية بين المتغيرات - كلما كان حجم اليقطين أكبر، ارتفع السعر - في بعض الأحيان لا يمكن تمثيل هذه العلاقات بمستوى أو خط مستقيم.
✅ إليك [بعض الأمثلة](https://online.stat.psu.edu/stat501/lesson/9/9.8) على البيانات التي يمكن استخدام الانحدار متعدد الحدود معها.
✅ إليك [بعض الأمثلة الإضافية](https://online.stat.psu.edu/stat501/lesson/9/9.8) للبيانات التي يمكن استخدام الانحدار متعدد الحدود معها.
ألقِ نظرة أخرى على العلاقة بين التاريخ والسعر. هل يبدو هذا الرسم البياني وكأنه يجب تحليله بخط مستقيم؟ ألا يمكن أن تتقلب الأسعار؟ في هذه الحالة، يمكنك تجربة الانحدار متعدد الحدود.
انظر مرة أخرى إلى العلاقة بين التاريخ والسعر. هل يبدو أن مخطط التشتت هذا يجب تحليله بالضرورة بواسطة خط مستقيم؟ ألا يمكن أن تتقلب الأسعار؟ في هذه الحالة، يمكنك تجربة الانحدار متعدد الحدود.
✅ الحدوديات هي تعبيرات رياضية قد تتكون من متغير واحد أو أكثر ومعاملات.
✅ كثيرات الحدود هي تعبيرات رياضية قد تتكون من متغير واحد أو أكثر ومعاملات.
الانحدار متعدد الحدود ينشئ خطًا منحنيًا ليتناسب بشكل أفضل مع البيانات غير الخطية. في حالتنا، إذا قمنا بإضافة متغير `DayOfYear` المربع إلى بيانات الإدخال، يجب أن نتمكن من ملاءمة بياناتنا بمنحنى شبه مكافئ، والذي سيكون له حد أدنى في نقطة معينة خلال السنة.
يقوم الانحدار متعدد الحدود بإنشاء خط منحني ليتناسب بشكل أفضل مع البيانات غير الخطية. في حالتنا، إذا قمنا بإدراج متغير `DayOfYear` تربيعي في بيانات الإدخال، يجب أن نتمكن من ملائمة بياناتنا بمنحنى قطع مكافئ، يكون لديه حد أدنى في نقطة معينة خلال العام.
تتضمن مكتبة Scikit-learn واجهة [API للأنابيب](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) لتجميع خطوات معالجة البيانات المختلفة معًا. **الأنبوب** هو سلسلة من **المقدّرين**. في حالتنا، سننشئ أنبوبًا يضيف أولاً ميزات متعددة الحدود إلى النموذج، ثم يدرب الانحدار:
يشمل Scikit-learn [واجهة برمجة التطبيقات pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفيدة لدمج خطوات معالجة البيانات المختلفة معًا. **pipeline** هو سلسلة من **المقدِرات**. في حالتنا، سننشئ pipeline يضيف أولاً ميزات متعددة الحدود إلى نموذجنا، ثم يدرب الانحدار:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +254,62 @@ from sklearn.pipeline import make_pipeline
استخدام `PolynomialFeatures(2)` يعني أننا سنضيف جميع الحدوديات من الدرجة الثانية من بيانات الإدخال. في حالتنا، هذا يعني فقط `DayOfYear`<sup>2</sup>، ولكن إذا كان لدينا متغيران مدخلان X و Y، فسيتم إضافة X<sup>2</sup>، XY و Y<sup>2</sup>. يمكننا أيضًا استخدام حدوديات من درجات أعلى إذا أردنا.
استخدام `PolynomialFeatures(2)` يعني أننا سنشمل جميع كثيرات الحدود من الدرجة الثانية من بيانات الإدخال. في حالتنا، هذا يعني فقط `DayOfYear`<sup>2</sup>، ولكن إذا كان لدينا متغيرين إدخال X و Y، فسيضيف هذا X<sup>2</sup>، XY و Y<sup>2</sup>. يمكننا أيضًا استخدام كثيرات حدود بدرجة أعلى إذا أردنا.
يمكن استخدام الأنابيب بنفس الطريقة التي يتم بها استخدام كائن `LinearRegression` الأصلي، أي يمكننا `fit`الأنبوب، ثم استخدام `predict` للحصول على نتائج التنبؤ. إليك الرسم البياني الذي يظهر بيانات الاختبار ومنحنى التقريب:
يمكن استخدام الأنابيب بنفس الطريقة التي يستخدم بها كائن `LinearRegression` الأصلي، أي يمكننا `fit`للpipeline، ثم استخدام `predict` للحصول على نتائج التنبؤ. هذا هو الرسم البياني الذي يظهر بيانات الاختبار ومنحنى التقريب:
باستخدام الانحدار متعدد الحدود، يمكننا الحصول على MSE أقل قليلاً ومعامل تحديد أعلى، ولكن ليس بشكل كبير. يجب أن نأخذ في الاعتبار ميزات أخرى!
باستخدام الانحدار متعدد الحدود، يمكننا الحصول على خطأ متوسط تربيعي أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحتاج إلى أخذ ميزات أخرى في الاعتبار!
> يمكنك أن ترى أن أدنى أسعار اليقطين تُلاحظ في مكان ما حول عيد الهالوين. كيف يمكنك تفسير ذلك؟
> يمكنك أن ترى أن أدنى أسعار اليقطين يتم ملاحظتها في مكان ما حول عيد الهالوين. كيف تشرح هذا؟
🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في التنبؤ بسعر فطائر اليقطين. ربما يمكنك تكرار نفس الإجراء لجميع أنواع اليقطين، ولكن سيكون ذلك مرهقًا. دعنا نتعلم الآن كيفية أخذ نوع اليقطين في الاعتبار في نموذجنا!
🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في التنبؤ بسعر يقطين الفطيرة. ربما يمكنك تكرار نفس الإجراء لجميع أنواع اليقطين، لكن هذا سيكون مملًا. دعنا نتعلم الآن كيفية أخذ نوع اليقطين في الاعتبار في نموذجنا!
## الميزات الفئوية
## الميزات التصنيفية
في العالم المثالي، نريد أن نكون قادرين على التنبؤ بالأسعار لأنواع مختلفة من اليقطين باستخدام نفس النموذج. ومع ذلك، فإن العمود `Variety` يختلف قليلاً عن الأعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تُعرف هذه الأعمدة بـ **الفئوية**.
في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أصناف اليقطين المختلفة باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` مختلف قليلاً عن أعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تسمى هذه الأعمدة **تصنيفية**.
[](https://youtu.be/DYGliioIAE0 "تعلم الآلة للمبتدئين - التنبؤ بالميزات الفئوية باستخدام الانحدار الخطي")
[](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤات باستخدام الميزات التصنيفية مع الانحدار الخطي")
> 🎥 انقر على الصورة أعلاه للحصول على نظرة عامة قصيرة حول استخدام الميزات الفئوية.
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يلخص استخدام الميزات التصنيفية.
هنا يمكنك رؤية كيف يعتمد السعر المتوسط على النوع:
هنا يمكنك رؤية كيف يعتمد متوسط السعر على النوع:
<imgalt="السعر المتوسط حسب النوع" src="../../../../translated_images/ar/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Average price by variety" src="../../../../translated_images/ar/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها:
* **الترميز الرقمي البسيط** سيقوم ببناء جدول لأنواع مختلفة، ثم استبدال اسم النوع برقم في هذا الجدول. هذه ليست أفضل فكرة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للرقم، ويضيفها إلى النتيجة، مضروبًا بمعامل معين. في حالتنا، العلاقة بين رقم الفهرس والسعر غير خطية بوضوح، حتى لو تأكدنا من أن الأرقام مرتبة بطريقة معينة.
* **الترميز الواحد الساخن** سيقوم باستبدال العمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع. يحتوي كل عمود على `1` إذا كانت الصف المقابل من نوع معين، و`0` خلاف ذلك. هذا يعني أنه سيكون هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع من أنواع اليقطين، مسؤول عن "السعر الأساسي" (أو بالأحرى "السعر الإضافي") لذلك النوع المحدد.
* **الترميز الرقمي** البسيط سيبني جدولًا للأنواع المختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة بالنسبة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر ويضيفها إلى النتيجة مضروبًا في بعض المعاملات. في حالتنا، العلاقة بين رقم المؤشر والسعر غير خطية بوضوح، حتى لو تأكدنا من ترتيب المؤشرات بطريقة معينة.
* **الترميز الأحادي (One-hot encoding)** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل صنف. يحتوي كل عمود على `1` إذا كان الصف المقابل من ذلك النوع، و`0` غير ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع يقطين، مسؤول عن "سعر البداية" (أو بالأحرى "السعر الإضافي") لذلك النوع المعين.
الكود أدناه يظهر كيف يمكننا ترميز النوع الواحد الساخن:
يُظهر الكود أدناه كيفية ترميز النوع بطريقة one-hot:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
لتدريب الانحدار الخطي باستخدام النوع المرمز الواحد الساخن كمدخل، نحتاج فقط إلى تهيئة بيانات `X` و `y` بشكل صحيح:
لتدريب الانحدار الخطي باستخدام النوع المشفر بطريقة one-hot كمدخلات، نحتاج فقط إلى تهيئة بيانات `X` و `y` بشكل صحيح:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
بقية الكود هي نفسها التي استخدمناها أعلاه لتدريب الانحدار الخطي. إذا جربتها، سترى أن متوسط الخطأ التربيعي مشابه، ولكن نحصل على معامل تحديد أعلى بكثير (~77%). للحصول على تنبؤات أكثر دقة، يمكننا أخذ المزيد من الميزات الفئوية في الاعتبار، بالإضافة إلى الميزات الرقمية، مثل `Month` أو `DayOfYear`. للحصول على مصفوفة كبيرة من الميزات، يمكننا استخدام `join`:
باقي الكود هو نفسه الذي استخدمناه أعلاه لتدريب الانحدار الخطي. إذا جربته، سترى أن متوسط الخطأ التربيعي تقريبا نفسه، لكننا نحصل على معامل تحديد أعلى بكثير (~77٪). للحصول على توقعات أكثر دقة، يمكننا أخذ المزيد من الميزات التصنيفية وكذلك الميزات الرقمية، مثل `Month` أو `DayOfYear`. للحصول على مصفوفة كبيرة واحدة من الميزات، يمكننا استخدام `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,69 +317,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، مما يعطينا MSE 2.84 (10%)، ومعامل تحديد 0.94!
هنا نأخذ في الاعتبار أيضًا `City` و `Package`، مما يعطينا MSE بقيمة 2.84 (10٪)، ومعامل تحديد 0.94!
## تجميع كل شيء معًا
## تجميع كل شيء معًا
لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (الميزات الفئوية المرمزة الواحد الساخن + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. إليك الكود الكامل لراحتك:
لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (الميزات التصنيفية المشفرة بطريقة one-hot + الميزات الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. إليك الكود الكامل لراحتك:
```python
# set up training data
# إعداد بيانات التدريب
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# إجراء تقسم البيانات إلى تدريب واختبار
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
هذا يجب أن يعطينا أفضل معامل تحديد تقريبًا 97%، و MSE=2.23 (~8% خطأ في التنبؤ).
يجب أن يمنحنا هذا أفضل معامل تحديد يقارب 97٪، و MSE=2.23 (~8٪ خطأ في التنبؤ).
| النموذج | MSE | معامل التحديد |
|---------|-----|---------------|
| `DayOfYear` خطي | 2.77 (17.2%) | 0.07 |
| `DayOfYear` متعدد الحدود | 2.73 (17.0%) | 0.08 |
| `Variety` خطي | 5.24 (19.7%) | 0.77 |
| جميع الميزات خطي | 2.84 (10.5%) | 0.94 |
| جميع الميزات متعدد الحدود | 2.23 (8.25%) | 0.97 |
| النموذج | MSE | معامل التحديد |
|-------|-----|---------------|
| `DayOfYear` خطي | 2.77 (17.2٪) | 0.07 |
| `DayOfYear` متعدد الحدود | 2.73 (17.0٪) | 0.08 |
| `Variety` خطي | 5.24 (19.7٪) | 0.77 |
| جميع الميزات خطي | 2.84 (10.5٪) | 0.94 |
| جميع الميزات متعدد الحدود | 2.23 (8.25٪) | 0.97 |
🏆 أحسنت! لقد أنشأت أربعة نماذج انحدار في درس واحد، وحسّنت جودة النموذج إلى 97%. في القسم الأخير حول الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات.
🏆 عمل رائع! لقد أنشأت أربعة نماذج انحدار في درس واحد، وحسنت جودة النموذج إلى 97٪. في القسم النهائي عن الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات.
---
## 🚀التحدي
## 🚀التحدي
اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف تتوافق العلاقة مع دقة النموذج.
اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف يتوافق الارتباط مع دقة النموذج.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## المراجعة والدراسة الذاتية
## المراجعة والدراسة الذاتية
في هذا الدرس تعلمنا عن الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات Stepwise، Ridge، Lasso و Elasticnet. دورة جيدة للدراسة لتعلم المزيد هي [دورة التعلم الإحصائي من جامعة ستانفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
في هذا الدرس تعلمنا عن الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات Stepwise و Ridge و Lasso و Elasticnet. دورة جيدة للدراسة والتعلم أكثر هي دورة [Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## الواجب
## الواجب
[قم ببناء نموذج](assignment.md)
[بناء نموذج](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**إخلاء المسؤولية**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). على الرغم من أننا نسعى إلى الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. بالنسبة للمعلومات الحساسة أو الهامة، يُنصح باستخدام الترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
في درس التصنيف الثاني هذا، ستستكشف طرقًا إضافية لتصنيف البيانات الرقمية. كما ستتعرف على العواقب المترتبة على اختيار مصنف معين بدلاً من آخر.
في درس التصنيف الثاني هذا، ستستكشف المزيد من الطرق لتصنيف البيانات الرقمية. ستتعرف أيضًا على التداعيات لاختيار مصنّف واحد على حساب الآخر.
## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
### المتطلبات الأساسية
### المتطلبات السابقة
نفترض أنك قد أكملت الدروس السابقة ولديك مجموعة بيانات نظيفة في مجلد `data` باسم _cleaned_cuisines.csv_ في جذر هذا المجلد المكون من 4 دروس.
نفترض أنك أنهيت الدروس السابقة ولديك مجموعة بيانات مُنظَّفة في مجلد `data` باسم _cleaned_cuisines.csv_ في جذر مجلد الدروس الأربعة هذا.
### التحضير
قمنا بتحميل ملف _notebook.ipynb_ الخاص بك مع مجموعة البيانات النظيفة وقمنا بتقسيمها إلى إطاري بيانات X و y، وهي جاهزة لعملية بناء النموذج.
لقد حمّلنا ملف _notebook.ipynb_ الخاص بك مع مجموعة البيانات المُنظّفة وقسمناها إلى أطر بيانات X و y، جاهزة لعملية بناء النموذج.
## خريطة التصنيف
في الدرس السابق، تعلمت عن الخيارات المختلفة المتاحة لتصنيف البيانات باستخدام ورقة الغش الخاصة بمايكروسوفت. تقدم مكتبة Scikit-learn ورقة غش مشابهة ولكن أكثر تفصيلًا يمكن أن تساعدك بشكل أكبر في تضييق نطاق المصنفات (وهو مصطلح آخر للمصنفات):
في السابق، تعلّمت عن الخيارات المختلفة التي تملكها عند تصنيف البيانات باستخدام ورقة غش لمايكروسوفت. يقدم Scikit-learn ورقة غش مماثلة، لكنها أكثر تفصيلاً تساعدك على تضييق خيارات مقدّري النموذج (مصطلح آخر للمصنّفات):

> نصيحة: [قم بزيارة هذه الخريطة عبر الإنترنت](https://scikit-learn.org/stable/tutorial/machine_learning_map/) وانقر على المسارات لقراءة الوثائق.

> تلميح: [زر هذه الخريطة على الإنترنت](https://scikit-learn.org/stable/tutorial/machine_learning_map/) وانقر على المسار لقراءة التوثيق.
### الخطة
تعد هذه الخريطة مفيدة جدًا بمجرد أن تكون لديك فكرة واضحة عن بياناتك، حيث يمكنك "السير" على طول مساراتها لاتخاذ قرار:
هذه الخريطة مفيدة جدًا بمجرد أن يكون لديك فهم واضح لبياناتك، حيث يمكنك 'المشي' على مساراتها نحو اتخاذ القرار:
- لدينا >50 عينة
- لدينا أكثر من 50 عينة
- نريد التنبؤ بفئة
- لدينا بيانات معنونة
- لدينا أقل من 100 ألف عينة
- ✨ يمكننا اختيار Linear SVC
- إذا لم ينجح ذلك، بما أن لدينا بيانات رقمية
- يمكننا تجربة ✨ KNeighbors Classifier
- إذا لم ينجح ذلك، جرب ✨ SVC و ✨ Ensemble Classifiers
- إذا لم ينجح ذلك، ولأن لدينا بيانات رقمية
- يمكننا تجربة ✨ KNeighbors Classifier
- إذا لم ينجح، جرب ✨ SVC و ✨ Ensemble Classifiers
هذا مسار مفيد جدًا للمتابعة.
هذا مسار مفيد جدًا للاتباع.
## تمرين - تقسيم البيانات
## التمرين - تقسيم البيانات
باتباع هذا المسار، يجب أن نبدأ باستيراد بعض المكتبات اللازمة.
باتباع هذا المسار، يجب أن نبدأ باستيراد بعض المكتبات للاستخدام.
1. استيراد المكتبات المطلوبة:
1. استورد المكتبات المطلوبة:
```python
from sklearn.neighbors import KNeighborsClassifier
يعد Support-Vector Clustering (SVC) أحد أفراد عائلة تقنيات تعلم الآلة Support-Vector Machines (تعرف على المزيد عنها أدناه). في هذه الطريقة، يمكنك اختيار "نواة" لتحديد كيفية تجميع العلامات. يشير المعامل 'C' إلى "التنظيم" الذي ينظم تأثير المعاملات. يمكن أن تكون النواة واحدة من [عدة خيارات](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)؛ هنا نضبطها على 'linear' لضمان استخدام Linear SVC. يتم ضبط الاحتمالية افتراضيًا على 'false'؛ هنا نضبطها على 'true' للحصول على تقديرات الاحتمالية. نضبط الحالة العشوائية على '0' لخلط البيانات للحصول على الاحتمالات.
التجميع بواسطة آلة المتجهات الداعمة (SVC) هو فرع من عائلة تقنيات آلات المتجهات الداعمة في تعلم الآلة (تعرف على المزيد عن هذه أدناه). في هذه الطريقة، يمكنك اختيار 'نواة' لتحديد كيفية تجميع الفئات. يشير معامل 'C' إلى 'التنظيم' الذي ينظّم التأثير المحتمل للمعاملات. يمكن أن تكون النواة واحدة من [عدة](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)؛ هنا نحددها على 'linear' لضمان الاستفادة من Linear SVC. الافتراضي للاحتمالية هو 'false'؛ هنا نحددها على 'true' لجمع تقديرات الاحتمالية. نحدد الحالة العشوائية على '0' لخلط البيانات للحصول على الاحتمالات.
### تمرين - تطبيق Linear SVC
ابدأ بإنشاء مصفوفة من المصنفات. ستضيف تدريجيًا إلى هذه المصفوفة أثناء الاختبار.
ابدأ بإنشاء مصفوفة من المصنّفات. ستضيف تدريجيًا إلى هذه المصفوفة أثناء الاختبار.
2. قم بتدريب النموذج باستخدام Linear SVC واطبع تقريرًا:
2. قم بتدريب نموذجك باستخدام Linear SVC واطبع تقريرًا:
```python
n_classifiers = len(classifiers)
@ -105,21 +105,21 @@
weighted avg 0.79 0.79 0.79 1199
```
## مصنف K-Neighbors
## مصنّف K-Neighbors
K-Neighbors هو جزء من عائلة "الجيران" لطرق تعلم الآلة، والتي يمكن استخدامها للتعلم الموجه وغير الموجه. في هذه الطريقة، يتم إنشاء عدد محدد مسبقًا من النقاط ويتم جمع البيانات حول هذه النقاط بحيث يمكن التنبؤ بالعلامات العامة للبيانات.
K-Neighbors هو جزء من عائلة "الجيران" في طرق تعلم الآلة، والتي يمكن استخدامها في التعلم المُوجَّه وغير المُوجَّه. في هذه الطريقة، يتم إنشاء عدد محدد مسبقًا من النقاط ويتم تجميع البيانات حول هذه النقاط بحيث يمكن التنبؤ بتسميات معممة للبيانات.
### تمرين - تطبيق مصنف K-Neighbors
### تمرين - تطبيق مصنّف K-Neighbors
كان المصنف السابق جيدًا وعمل بشكل جيد مع البيانات، ولكن ربما يمكننا تحقيق دقة أفضل. جرب مصنف K-Neighbors.
كان المصنّف السابق جيدًا، وعمل بشكل جيد مع البيانات، لكن ربما يمكننا الحصول على دقة أفضل. جرب مصنّف K-Neighbors.
1. أضف سطرًا إلى مصفوفة المصنفات (أضف فاصلة بعد عنصر Linear SVC):
1. أضف سطرًا إلى مصفوفة المصنّفات الخاصة بك (أضف فاصلة بعد عنصر Linear SVC):
```python
'KNN classifier': KNeighborsClassifier(C),
```
النتيجة أسوأ قليلاً:
النتيجة أسوأ قليلًا:
```output
Accuracy (train) for KNN classifier: 73.8%
@ -136,15 +136,15 @@ K-Neighbors هو جزء من عائلة "الجيران" لطرق تعلم ال
weighted avg 0.76 0.74 0.74 1199
```
✅ تعرف على المزيد حول [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ تعرف على [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## مصنف Support Vector
## مصنّف Support Vector
مصنفات Support-Vector هي جزء من عائلة [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) لطرق تعلم الآلة التي تُستخدم لمهام التصنيف والانحدار. تقوم SVMs "برسم أمثلة التدريب كنقاط في الفضاء" لزيادة المسافة بين فئتين. يتم بعد ذلك رسم البيانات اللاحقة في هذا الفضاء بحيث يمكن التنبؤ بفئتها.
مصنّفات المتجهات الداعمة هي جزء من عائلة [آلات المتجهات الداعمة](https://wikipedia.org/wiki/Support-vector_machine) في طرق تعلم الآلة التي تُستخدم لمهام التصنيف والانحدار. تقوم آلات الدعم "بتمثيل أمثلة التدريب كنقاط في الفضاء" لزيادة المسافة بين فئتين. تُرسم البيانات اللاحقة في هذا الفضاء ليتم التنبؤ بفئتها.
### تمرين - تطبيق مصنف Support Vector
### تمرين - تطبيق مصنّف Support Vector
دعنا نحاول تحقيق دقة أفضل قليلاً باستخدام مصنف Support Vector.
دعونا نحاول تحسين الدقة باستخدام مصنّف Support Vector.
1. أضف فاصلة بعد عنصر K-Neighbors، ثم أضف هذا السطر:
@ -169,18 +169,18 @@ K-Neighbors هو جزء من عائلة "الجيران" لطرق تعلم ال
weighted avg 0.84 0.83 0.83 1199
```
✅ تعرف على المزيد حول [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ تعرف على [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## المصنفات المجمعة (Ensemble Classifiers)
## مصنّفات التجميع (Ensemble)
دعنا نتبع المسار حتى النهاية، على الرغم من أن الاختبار السابق كان جيدًا جدًا. دعنا نجرب بعض "المصنفات المجمعة"، وتحديدًا Random Forest و AdaBoost:
لننتقل في المسار حتى النهاية، بالرغم من أن الاختبار السابق كان جيدًا جدًا. دعونا نجرب بعض "مصنّفات التجميع"، تحديدًا Random Forest و AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
النتيجة جيدة جدًا، خاصة بالنسبة لـ Random Forest:
النتيجة جيدة جدًا، خصوصًا مع Random Forest:
```output
Accuracy (train) for RFST: 84.5%
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ تعرف على المزيد حول [المصنفات المجمعة](https://scikit-learn.org/stable/modules/ensemble.html)
✅ تعرف على [مصنّفات التجميع](https://scikit-learn.org/stable/modules/ensemble.html)
تجمع هذه الطريقة في تعلم الآلة "تنبؤات عدة مصنفات أساسية" لتحسين جودة النموذج. في مثالنا، استخدمنا Random Trees و AdaBoost.
تجمع هذه الطريقة في تعلم الآلة "تنبؤات عدة مقدّرين أساسيين" لتحسين جودة النموذج. في مثالنا، استخدمنا أشجار عشوائية و AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، وهي طريقة تعتمد على المتوسط، تبني "غابة" من "أشجار القرار" مع إضافة العشوائية لتجنب الإفراط في التخصيص. يتم ضبط معامل n_estimators على عدد الأشجار.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)، طريقة التجميع، تبني 'غابة' من 'أشجار القرار' محقونة بالعشوائية لتجنب الإفراط في التكيّف. يتم ضبط معامل n_estimators على عدد الأشجار.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) يقوم بتدريب مصنف على مجموعة بيانات ثم يقوم بتدريب نسخ من هذا المصنف على نفس مجموعة البيانات. يركز على أوزان العناصر التي تم تصنيفها بشكل خاطئ ويعدل التخصيص للمصنف التالي لتصحيحها.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) يركب مصنّفًا على مجموعة بيانات ثم يركب نسخًا من ذلك المصنّف على ذات البيانات. يركز على أوزان العناصر التي تم تصنيفها بشكل خاطئ ويضبط التركيب للمصنّف التالي لتصحيحها.
---
## 🚀تحدي
## 🚀التحدي
كل من هذه التقنيات لديها عدد كبير من المعاملات التي يمكنك تعديلها. قم بالبحث عن المعاملات الافتراضية لكل تقنية وفكر في ما يعنيه تعديل هذه المعاملات لجودة النموذج.
كل من هذه التقنيات لديها عدد كبير من المعاملات التي يمكنك تعديلها. ابحث عن المعاملات الافتراضية لكل منها وفكر فيما يعنيه تعديل هذه المعاملات لجودة النموذج.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## المراجعة والدراسة الذاتية
## مراجعة ودراسة ذاتية
هناك الكثير من المصطلحات في هذه الدروس، لذا خذ دقيقة لمراجعة [هذه القائمة](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) من المصطلحات المفيدة!
هناك الكثير من المصطلحات المتخصصة في هذه الدروس، فخذ دقيقة لمراجعة [هذه القائمة](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) للمصطلحات المفيدة!
## الواجب
## الواجب
[لعب المعاملات](assignment.md)
[لعب بالمعاملات](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**إخلاء المسؤولية**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يُرجى العلم بأن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. ينبغي اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق والمرجعي. للمعلومات الحيوية، يُنصح باستخدام الترجمة المهنية من قبل مترجمين بشريين. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
"\n---\n\n**إخلاء المسؤولية**: \nتمت ترجمة هذه الوثيقة باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**إخلاء مسؤولية**: \nتمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم بأن الترجمات التلقائية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر المعتمد. بالنسبة للمعلومات الحساسة، يُنصح بالترجمة اليدوية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير خاطئ ناتج عن استخدام هذه الترجمة.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**إخلاء المسؤولية**: \nتمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**تنويه**:\nتمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للحفاظ على الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر المعتمد. وللحصول على معلومات دقيقة وهامة، نوصي بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
لدينا سلسلة تعلم على ديسكورد مع الذكاء الاصطناعي، تعرّف أكثر وانضم إلينا في [سلسلة التعلم مع الذكاء الاصطناعي](https://aka.ms/learnwithai/discord) من 18 - 30 سبتمبر 2025. ستحصل على نصائح وحيل لاستخدام GitHub Copilot لعلوم البيانات.
لدينا سلسلة "تعلم مع الذكاء الاصطناعي" مستمرة على Discord، تعرف أكثر وانضم إلينا على [سلسلة التعلم مع الذكاء الاصطناعي](https://aka.ms/learnwithai/discord) في الفترة من 18 إلى 30 سبتمبر 2025. ستحصل على نصائح وحيل لاستخدام GitHub Copilot في علوم البيانات.


# تعلم الآلة للمبتدئين - منهج دراسي
> 🌍 سافر حول العالم ونحن نستكشف تعلم الآلة من خلال ثقافات العالم 🌍
> 🌍 سافر حول العالم بينما نستكشف تعلم الآلة عبر ثقافات العالم 🌍
يسر فريق مدافعي السحابة في مايكروسوفت أن يقدم منهجًا دراسيًا لمدة 12 أسبوعًا يحتوي على 26 درسًا حول **تعلم الآلة**. في هذا المنهج، سوف تتعلم عن ما يُسمى أحيانًا **تعلم الآلة التقليدي** باستخدام مكتبة Scikit-learn بشكل أساسي وتجنّب التعلم العميق، الذي يتم تغطيته في منهجنا [الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai4beginners). قم بمزج هذه الدروس مع منهجنا ['علوم البيانات للمبتدئين'](https://aka.ms/ds4beginners) أيضًا!
يسعد دعاة الحوسبة السحابية في مايكروسوفت أن يقدموا منهجًا دراسيًا مكونًا من 12 أسبوعًا و26 درسًا حول **تعلم الآلة**. في هذا المنهج، ستتعلم ما يسمى أحيانًا **تعلم الآلة الكلاسيكي**، باستخدام مكتبة Scikit-learn بشكل أساسي وتجنب التعلم العميق، الذي يُغطى في منهجنا [الذكاء الاصطناعي للمبتدئين](https://aka.ms/ai4beginners). كما يمكنك الجمع بين هذه الدروس ومنهجنا ['علوم البيانات للمبتدئين'](https://aka.ms/ds4beginners)!
سافر معنا حول العالم مطبقًا هذه التقنيات التقليدية على بيانات من مناطق عديدة حول العالم. كل درس يتضمن اختبارات قبل وبعد الدرس، تعليمات مكتوبة لإكمال الدرس، الحل، مهمة، وأكثر. تسمح أسلوبنا التعليمي القائم على المشاريع بأن تتعلم أثناء البناء، وهي طريقة مثبتة لترسيخ المهارات الجديدة.
سافر معنا حول العالم بينما نطبق هذه التقنيات الكلاسيكية على بيانات من مناطق مختلفة من العالم. يتضمن كل درس اختبارات قبل وبعد الدرس، تعليمات مكتوبة لإكمال الدرس، حل، مهمة، وأكثر. منهجيتنا القائمة على المشاريع تسمح لك بالتعلم أثناء البناء، وهي طريقة مثبتة لتثبيت المهارات الجديدة.
> [اعثر على جميع الموارد الإضافية لهذه الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **هل تحتاج مساعدة؟** راجع [دليل حل المشكلات](TROUBLESHOOTING.md) للحصول على حلول للمشكلات الشائعة حول التثبيت والإعداد وتشغيل الدروس.
> 🔧 **هل تحتاج إلى مساعدة؟** تحقق من [دليل استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md) لحلول للمشكلات الشائعة في التثبيت، الإعداد، وتشغيل الدروس.
**[الطلاب](https://aka.ms/student-page)**، لاستخدام هذا المنهج الدراسي، انشئ فرع للمستودع بالكامل إلى حسابك على GitHub وابدأ في إكمال التمارين بنفسك أو في مجموعة:
**[الطلاب](https://aka.ms/student-page)**، لاستخدام هذا المنهج، أنشئ فرعًا من المستودع بالكامل إلى حساب GitHub الخاص بك وأكمل التمارين بنفسك أو مع مجموعة:
- ابدأ باختبار تمهيدي.
- اقرأ المحاضرة وأكمل الأنشطة، توقف وتأمل عند كل فحص للمعرفة.
- حاول إنشاء المشاريع من خلال استيعاب الدروس بدلاً من تشغيل كود الحل; ومع ذلك، يتوفر هذا الكود في مجلدات `/solution` في كل درس موجه نحو المشروع.
- خذ اختبار بعد المحاضرة.
- ابدأ باختبار تمهيدي قبل المحاضرة.
- اقرأ المحاضرة وأكمل الأنشطة، توقف وفكر عند كل نقطة تحقق معرفي.
- حاول إنشاء المشاريع بفهم الدروس بدلاً من تشغيل شفرة الحل مباشرة؛ رغم أن الشفرة متوفرة في مجلدات `/solution` في كل درس موجه للمشاريع.
- خذ اختبار ما بعد المحاضرة.
- أكمل التحدي.
- أكمل المهمة.
- بعد إكمال مجموعة دروس، زر [لوحة النقاش](https://github.com/microsoft/ML-For-Beginners/discussions) و"تعلم بصوت عالٍ" بملء نموذج PAT المناسب. ال'PAT' هو أداة لتقييم التقدم تقوم بملئها لتعزيز تعلمك. يمكنك أيضًا التفاعل مع PATs الآخرين لنتعلم معًا.
- بعد إكمال مجموعة دروس، زر [لوحة النقاش](https://github.com/microsoft/ML-For-Beginners/discussions) و"تعلّم علنًا" بملء قائمتك PAT المناسبة. "PAT" هي أداة تقييم تقدم تقوم بملئها لتعزيز تعلمك. يمكنك أيضًا التفاعل مع أدوات تقييم أخرى لنتعلم معًا.
> للدراسة المتقدمة، نوصي باتباع هذه الوحدات ومسارات التعلم من [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
> لمزيد من الدراسة، نوصي بمتابعة هذه الوحدات ومسارات التعلم على [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**المعلمون**، لقد أدرجنا [بعض الاقتراحات](for-teachers.md) حول كيفية استخدام هذا المنهج.
**المعلمون**, لقد قمنا [بإضافة بعض الاقتراحات](for-teachers.md) حول كيفية استخدام هذا المنهج.
---
## عروض الفيديو التوضيحية
## فيديوهات إرشادية
بعض الدروس متوفرة على شكل فيديوهات قصيرة. يمكنك إيجاد جميع هذه الفيديوهات ضمن الدروس، أو على [قائمة تشغيل ML للمبتدئين على قناة Microsoft Developer على YouTube](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه.
بعض الدروس متوفرة على هيئة فيديوهات قصيرة. يمكنك إيجادها مضمنة داخل الدروس، أو على [قائمة تشغيل ML للمبتدئين على قناة Microsoft Developer على YouTube](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
**جيف من تصميم** [موهيت جيسال](https://linkedin.com/in/mohitjaisal)
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو عن المشروع والأشخاص الذين أنشأوه!
---
## المنهجية التربوية
## المنهجية التعليمية
اخترنا مبدأين تربويين أثناء بناء هذا المنهج: التأكد من أنه قائم على **المشاريع العملية** وأنه يتضمن **اختبارات متكررة**. بالإضافة إلى ذلك، يتضمن هذا المنهج **موضوعًا** موحدًا ليعطيه ترابطًا.
اخترنا مبدأين تربويين أثناء بناء هذا المنهج: التأكد من أنه عملي **معتمد على المشاريع**، وأنه يتضمن **اختبارات متكررة**. بالإضافة إلى ذلك، هذا المنهج له **موضوع** مشترك ليمنحه تماسكًا.
من خلال ضمان توافق المحتوى مع المشاريع، تصبح العملية أكثر تشويقًا للطلاب ويتعزز حفظ المفاهيم. بالإضافة إلى ذلك، اختبار منخفض المخاطر قبل الدرس يحدد نية الطالب لتعلم موضوع، في حين اختبار آخر بعد المحاضرة يضمن تقييمًا إضافيًا للحفظ. تم تصميم هذا المنهج ليكون مرنًا وممتعًا ويمكن أخذه ككل أو جزئيًا. تبدأ المشاريع صغيرة وتزداد تعقيدًا في نهاية دورة الـ 12 أسبوعًا. كما يتضمن هذا المنهج خاتمة حول تطبيقات تعلم الآلة في العالم الحقيقي، والتي يمكن استخدامها كرصيد إضافي أو كأساس للنقاش.
عبر التأكد من توافق المحتوى مع المشاريع، يُصبح التعلم أكثر تفاعلًا للطلاب وتزداد فرص حفظ المفاهيم. أيضًا، اختبار منخفض المخاطر قبل الدرس يوجه نية الطالب نحو تعلم الموضوع، بينما اختبار آخر بعد الدرس يعزز الحفظ. تم تصميم هذا المنهج ليكون مرنًا وممتعًا ويمكن أخذه كاملاً أو جزئيًا. تبدأ المشاريع صغيرة وتزداد تعقيدًا بنهاية الدورة ذات الـ 12 أسبوعًا. يحتوى المنهج أيضًا على خاتمة عن تطبيقات تعلم الآلة في العالم الحقيقي، يمكن استخدامها كتقدير إضافي أو كقاعدة للنقاش.
> يمكنك العثور على [قواعد السلوك](CODE_OF_CONDUCT.md)، [المساهمة](CONTRIBUTING.md)، [الترجمة](TRANSLATIONS.md)، و[استكشاف الأخطاء وإصلاحها](TROUBLESHOOTING.md). نرحب بملاحظاتكم البناءة!
## يتضمن كل درس
- ملاحظات رسمية اختيارية
- ملاحظات اختيارية بالرسم التخطيطي
- فيديو تكميلي اختياري
- فيديو شرح (بعض الدروس فقط)
- [اختبار تسخين قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
- فيديو إرشادي (لبعض الدروس فقط)
- [اختبار تمهيدي قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
- درس مكتوب
- للدروس المعتمدة على المشاريع، دلائل خطوة بخطوة لبناء المشروع
- اختبارات معرفة
- للدروس المعتمدة على المشاريع، أدلة خطوة بخطوة لبناء المشروع
- نقاط تحقق معرفية
- تحدي
- قراءة مكملة
- قراءة إضافية
- مهمة
- [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
> **ملاحظة حول اللغات**: معظم هذه الدروس مكتوبة بلغة بايثون، لكن العديد منها متوفر أيضًا بلغة R. لإكمال درس R، انتقل إلى مجلد `/solution` وابحث عن دروس R. تحتوي على امتداد .rmd الذي يمثل ملف **R Markdown**، والذي يمكن تعريفه ببساطة على أنه تضمين لـ `كتل الأكواد` (بلغة R أو لغات أخرى) و`رأس YAML` (الذي يوجه كيفية تنسيق المخرجات مثل PDF) في وثيقة `Markdown`. لذلك، يعد إطار عمل مثالي في التأليف لعلوم البيانات، لأنه يسمح لك بدمج شفرتك ومخرجاتها وأفكارك من خلال كتابتها في Markdown. علاوة على ذلك، يمكن تحويل مستندات R Markdown إلى صيغ مخرجات مثل PDF أو HTML أو Word.
> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة في [مجلد تطبيق الاختبار](../../quiz-app)، بإجمالي 52 اختبارًا، كل واحد منها يحتوي على ثلاثة أسئلة. وهي مرتبطة من داخل الدروس، ولكن يمكن تشغيل تطبيق الاختبار محليًا؛ اتبع التعليمات في مجلد `quiz-app` لاستضافته محليًا أو نشره على Azure.
| رقم الدرس | الموضوع | تجميع الدروس | أهداف التعلم | الدرس المرتبط | المؤلف |
| 01 | مقدمة في تعلم الآلة | [مقدمة](1-Introduction/README.md) | تعلّم المفاهيم الأساسية وراء تعلم الآلة | [درس](1-Introduction/1-intro-to-ML/README.md) | محمد |
| 02 | تاريخ تعلم الآلة | [مقدمة](1-Introduction/README.md) | تعرّف على التاريخ الكامن وراء هذا المجال | [درس](1-Introduction/2-history-of-ML/README.md) | جن وآمي |
| 03 | العدالة وتعلم الآلة | [مقدمة](1-Introduction/README.md)| ما هي القضايا الفلسفية الهامة حول العدالة التي يجب على الطلاب النظر فيها عند بناء وتطبيق نماذج تعلم الآلة؟ | [درس](1-Introduction/3-fairness/README.md) | تومومي |
| 04 | تقنيات تعلم الآلة | [مقدمة](1-Introduction/README.md) | ما هي التقنيات التي يستخدمها الباحثون في تعلم الآلة لبناء النماذج؟ | [درس](1-Introduction/4-techniques-of-ML/README.md) | كريس وجن |
| 05 | مقدمة في الانحدار| [انحدار](2-Regression/README.md) | ابدأ باستخدام بايثون وScikit-learn لنماذج الانحدار | [بايثون](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • إريك وانجاو |
| 06 | أسعار القرع في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md)| تصور ونظف البيانات تحضيرًا لتعلم الآلة | [بايثون](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • إريك وانجاو |
| 07 | أسعار القرع في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md) | بناء نماذج انحدار خطية ومتعددة الحدود | [بايثون](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن ودمتري • إريك وانجاو |
| 08 | أسعار القرع في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md) | بناء نموذج انحدار لوجستي | [بايثون](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • إريك وانجاو |
| 09 | تطبيق ويب 🔌 | [تطبيق ويب](3-Web-App/README.md) | بناء تطبيق ويب لاستخدام النموذج المدرب | [بايثون](3-Web-App/1-Web-App/README.md) | جن |
| 10 | مقدمة في التصنيف | [تصنيف](4-Classification/README.md) | تنظيف، التحضير، وتصوير بياناتك؛ مقدمة في التصنيف | [بايثون](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن وكاسي • إريك وانجاو |
| 11 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [تصنيف](4-Classification/README.md) | مقدمة إلى المصنّفات | [بايثون](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن وكاسي • إريك وانجا |
| 12 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [تصنيف](4-Classification/README.md) | المزيد من المصنّفات | [بايثون](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن وكاسي • إريك وانجا |
| 13 | المأكولات الآسيوية والهندية اللذيذة 🍜 | [تصنيف](4-Classification/README.md) | بناء تطبيق ويب للتوصية باستخدام النموذج | [بايثون](4-Classification/4-Applied/README.md) | جن |
| 14 | مقدمة في التجميع | [تجميع](5-Clustering/README.md) | تنظيف، التحضير، وتصوير بياناتك؛ مقدمة في التجميع | [بايثون](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • إريك وانجاو |
| 15 | استكشاف الأذواق الموسيقية النيجيرية 🎧 | [تجميع](5-Clustering/README.md) | استكشاف طريقة تجميع K-Means | [بايثون](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جن • إريك وانجا |
| 16 | مقدمة في معالجة اللغة الطبيعية ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعلّم الأساسيات حول معالجة اللغة الطبيعية من خلال بناء روبوت بسيط | [بايثون](6-NLP/1-Introduction-to-NLP/README.md) | ستيفن |
| 17 | المهام الشائعة في معالجة اللغة الطبيعية ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعميق معرفتك بمعالجة اللغة الطبيعية من خلال فهم المهام الشائعة المطلوبة عند التعامل مع تراكيب اللغة | [بايثون](6-NLP/2-Tasks/README.md) | ستيفن |
| 19 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر من خلال مراجعات الفنادق 1 | [بايثون](6-NLP/4-Hotel-Reviews-1/README.md) | ستيفن |
| 20 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر من خلال مراجعات الفنادق 2 | [بايثون](6-NLP/5-Hotel-Reviews-2/README.md) | ستيفن |
| 21 | مقدمة في التنبؤ بالسلاسل الزمنية | [السلاسل الزمنية](7-TimeSeries/README.md) | مقدمة في التنبؤ بالسلاسل الزمنية | [بايثون](7-TimeSeries/1-Introduction/README.md) | فرانسيسكا |
| 22 | ⚡️ استخدام الطاقة العالمية ⚡️ - التنبؤ بالسلاسل الزمنية مع ARIMA | [السلاسل الزمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية مع ARIMA | [بايثون](7-TimeSeries/2-ARIMA/README.md) | فرانسيسكا |
| 23 | ⚡️ استخدام الطاقة العالمية ⚡️ - التنبؤ بالسلاسل الزمنية مع SVR | [السلاسل الزمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية مع دعم ناقلات الانحدار | [بايثون](7-TimeSeries/3-SVR/README.md) | أنيربان |
| 24 | مقدمة في التعلم المعزز | [التعلم المعزز](8-Reinforcement/README.md) | مقدمة في التعلم المعزز باستخدام التعلم بواسطة Q | [بايثون](8-Reinforcement/1-QLearning/README.md) | دميتري |
| خاتمة | تطبيقات وسيناريوهات تعلم الآلة الواقعية | [ML in the Wild](9-Real-World/README.md) | تطبيقات مثيرة ومكشوفة لتعلم الآلة الكلاسيكي في العالم الحقيقي | [درس](9-Real-World/1-Applications/README.md) | الفريق |
| خاتمة | تصحيح أخطاء النماذج في تعلم الآلة باستخدام لوحة RAI | [ML in the Wild](9-Real-World/README.md) | تصحيح أخطاء النماذج في تعلم الآلة باستخدام مكونات لوحة ذكية مسؤولة | [درس](9-Real-World/2-Debugging-ML-Models/README.md) | روث ياكوبو |
> [اعثر على جميع الموارد الإضافية لهذه الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
- [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
> **ملاحظة حول اللغات**: تم كتابة هذه الدروس في الأساس بلغة بايثون، لكن العديد منها متاح أيضًا بلغة R. لإكمال درس بلغة R، انتقل إلى مجلد `/solution` وابحث عن دروس R. تتضمن هذه الملفات امتداد .rmd الذي يمثل ملف **R Markdown** والذي يمكن تعريفه ببساطة على أنه تضمين لـ `كتل الشيفرة` (من R أو لغات أخرى) و `رأس YAML` (يرشد كيفية تنسيق المخرجات مثل PDF) في `وثيقة Markdown`. وبذلك، فهو يعمل كإطار تأليف نموذجي لعلم البيانات لأنه يسمح لك بدمج الشيفرة الخاصة بك، ومخرجاتها، وأفكارك عن طريق السماح لك بكتابتها في Markdown. علاوة على ذلك، يمكن تقديم مستندات R Markdown إلى صيغ مخرجات مثل PDF أو HTML أو Word.
> **ملاحظة حول الاختبارات**: جميع الاختبارات موجودة في [مجلد تطبيق الاختبار](../../quiz-app)، ويتضمن ذلك 52 اختبارًا بإجمالي ثلاثة أسئلة لكل اختبار. ترتبط هذه الاختبارات من داخل الدروس، لكن يمكن تشغيل تطبيق الاختبار محليًا؛ اتبع التعليمات في مجلد `quiz-app` للاستضافة أو النشر المحلي على أزور.
| رقم الدرس | الموضوع | تجميع الدرس | أهداف التعلم | الدرس المرتبط | المؤلف |
| 01 | مقدمة في تعلم الآلة | [مقدمة](1-Introduction/README.md) | تعلّم المفاهيم الأساسية وراء تعلم الآلة | [درس](1-Introduction/1-intro-to-ML/README.md) | محمد |
| 02 | تاريخ تعلم الآلة | [مقدمة](1-Introduction/README.md) | تعلّم التاريخ الكامن وراء هذا المجال | [درس](1-Introduction/2-history-of-ML/README.md) | جن وآمي |
| 03 | العدالة وتعلم الآلة | [مقدمة](1-Introduction/README.md) | ما هي القضايا الفلسفية المهمة حول العدالة التي يجب على الطلاب أخذها بعين الاعتبار عند بناء وتطبيق نماذج تعلم الآلة؟ | [درس](1-Introduction/3-fairness/README.md) | تومومي |
| 04 | تقنيات تعلم الآلة | [مقدمة](1-Introduction/README.md) | ما هي التقنيات التي يستخدمها باحثو تعلم الآلة لبناء نماذج التعلم؟ | [درس](1-Introduction/4-techniques-of-ML/README.md) | كريس وجن |
| 05 | مقدمة في الانحدار | [انحدار](2-Regression/README.md) | ابدأ بتعلم بايثون و Scikit-learn لنماذج الانحدار | [بايثون](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | جن • إريك وانجاو |
| 06 | أسعار اليقطين في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md) | تصور وتنظيف البيانات تحضيرًا لتعلم الآلة | [بايثون](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | جن • إريك وانجاو |
| 07 | أسعار اليقطين في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md) | بناء نماذج الانحدار الخطي والمتعدد الحدود | [بايثون](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | جن وديمتري • إريك وانجاو |
| 08 | أسعار اليقطين في أمريكا الشمالية 🎃 | [انحدار](2-Regression/README.md) | بناء نموذج انحدار لوجستي | [بايثون](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | جن • إريك وانجاو |
| 09 | تطبيق ويب 🔌 | [تطبيق ويب](3-Web-App/README.md) | بناء تطبيق ويب لاستخدام نموذجك المدرب | [بايثون](3-Web-App/1-Web-App/README.md) | جن |
| 10 | مقدمة في التصنيف | [تصنيف](4-Classification/README.md) | تنظيف وتحضير وتصوير بياناتك؛ مقدمة في التصنيف | [بايثون](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | جن وكاسي • إريك وانجاو |
| 11 | المطابخ اللذيذة الآسيوية والهندية 🍜 | [تصنيف](4-Classification/README.md) | مقدمة إلى المصنفات | [بايثون](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | جن وكاسي • إريك وانجاو |
| 12 | المطابخ اللذيذة الآسيوية والهندية 🍜 | [تصنيف](4-Classification/README.md) | المزيد من المصنفات | [بايثون](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | جن وكاسي • إريك وانجاو |
| 13 | المطابخ اللذيذة الآسيوية والهندية 🍜 | [تصنيف](4-Classification/README.md) | بناء تطبيق ويب توصية باستخدام نموذجك | [بايثون](4-Classification/4-Applied/README.md) | جن |
| 14 | مقدمة في التجميع | [تجميع](5-Clustering/README.md) | تنظيف وتحضير وتصوير بياناتك؛ مقدمة في التجميع | [بايثون](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | جن • إريك وانجاو |
| 15 | استكشاف الأذواق الموسيقية النيجيرية 🎧 | [تجميع](5-Clustering/README.md) | استكشاف طريقة تجميع K-Means | [بايثون](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | جن • إريك وانجاو |
| 16 | مقدمة في معالجة اللغة الطبيعية ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعلّم أساسيات معالجة اللغة الطبيعية ببناء بوت بسيط | [بايثون](6-NLP/1-Introduction-to-NLP/README.md) | ستيفن |
| 17 | المهام الشائعة في معالجة اللغة الطبيعية ☕️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تعميق معرفتك بمعالجة اللغة الطبيعية من خلال فهم المهام الشائعة عند التعامل مع تراكيب اللغة | [بايثون](6-NLP/2-Tasks/README.md) | ستيفن |
| 19 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 1 | [بايثون](6-NLP/4-Hotel-Reviews-1/README.md) | ستيفن |
| 20 | الفنادق الرومانسية في أوروبا ♥️ | [معالجة اللغة الطبيعية](6-NLP/README.md) | تحليل المشاعر مع مراجعات الفنادق 2 | [بايثون](6-NLP/5-Hotel-Reviews-2/README.md) | ستيفن |
| 21 | مقدمة في التنبؤ بالسلاسل الزمنية | [سلاسل زمنية](7-TimeSeries/README.md) | مقدمة في التنبؤ بالسلاسل الزمنية | [بايثون](7-TimeSeries/1-Introduction/README.md) | فرانسيسكا |
| 22 | ⚡️ استهلاك الطاقة العالمية ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [سلاسل زمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام ARIMA | [بايثون](7-TimeSeries/2-ARIMA/README.md) | فرانسيسكا |
| 23 | ⚡️ استهلاك الطاقة العالمية ⚡️ - التنبؤ بالسلاسل الزمنية باستخدام SVR | [سلاسل زمنية](7-TimeSeries/README.md) | التنبؤ بالسلاسل الزمنية باستخدام الانحدار الناقل الدعم | [بايثون](7-TimeSeries/3-SVR/README.md) | أنيربان |
| 24 | مقدمة في التعلم التعزيزي | [التعلم التعزيزي](8-Reinforcement/README.md) | مقدمة في التعلم التعزيزي باستخدام التعلم Q | [بايثون](8-Reinforcement/1-QLearning/README.md) | ديمتري |
| خاتمة | سيناريوهات وتطبيقات تعلم الآلة في العالم الحقيقي | [تعلم الآلة في العالم الحقيقي](9-Real-World/README.md) | تطبيقات تعلم الآلة الكلاسيكية المثيرة والمفيدة في العالم الحقيقي | [درس](9-Real-World/1-Applications/README.md) | الفريق |
| خاتمة | تصحيح نماذج تعلم الآلة باستخدام لوحة معلومات RAI | [تعلم الآلة في العالم الحقيقي](9-Real-World/README.md) | تصحيح نماذج تعلم الآلة باستخدام مكونات لوحة معلومات الذكاء الاصطناعي المسؤولة | [درس](9-Real-World/2-Debugging-ML-Models/README.md) | روث ياكوبو |
> [اعثر على جميع الموارد الإضافية لهذا الدورة في مجموعة Microsoft Learn الخاصة بنا](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## الوصول دون اتصال
يمكنك تشغيل هذا التوثيق دون اتصال باستخدام [Docsify](https://docsify.js.org/#/). قم بعمل فورك لهذا المستودع، وقم بـ [تثبيت Docsify](https://docsify.js.org/#/quickstart) على جهازك المحلي، ثم في المجلد الجذر لهذا المستودع، اكتب `docsify serve`. سيتم تشغيل الموقع على المنفذ 3000 على مضيفك المحلي: `localhost:3000`.
يمكنك تشغيل هذا التوثيق دون اتصال باستخدام [Docsify](https://docsify.js.org/#/). انسخ هذا المستودع، [قم بتثبيت Docsify](https://docsify.js.org/#/quickstart) على جهازك المحلي، ثم في مجلد الجذر لهذا المستودع، اكتب `docsify serve`. سيتم تقديم الموقع على المنفذ 3000 على جهازك المحلي: `localhost:3000`.
## ملفات PDF
تعثر على نسخة PDF من المنهج الدراسي مع الروابط [هنا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
اعثر على ملف PDF للمنهج مع الروابط [هنا](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
إذا واجهت صعوبة أو كانت لديك أي أسئلة حول بناء تطبيقات الذكاء الاصطناعي، انضم إلى المتعلمين الآخرين والمطورين ذوي الخبرة في مناقشات MCP. إنها مجتمع داعم حيث تُرحب الأسئلة ويتم تبادل المعرفة بحرية.
إذا واجهت مشكلة أو كان لديك أي أسئلة حول بناء تطبيقات الذكاء الاصطناعي، انضم إلى المتعلمين الآخرين والمطورين ذوي الخبرة في مناقشات حول MCP. إنها مجتمع داعم حيث تُرحب بالأسئلة ويُشارك المعرفة بحرية.
[](https://discord.gg/nTYy5BXMWG)
إذا كان لديك ملاحظات على المنتج أو واجهت أخطاء أثناء البناء، قم بزيارة:
إذا كان لديك ملاحظات على المنتج أو أخطاء أثناء البناء، قم بزيارة:
[](https://aka.ms/foundry/forum)
## نصائح تعلم إضافية
- راجع دفاتر الملاحظات بعد كل درس لفهم أفضل.
- تدرب على تنفيذ الخوارزميات بنفسك.
- استكشف مجموعات بيانات العالم الحقيقي باستخدام المفاهيم التي تعلمتها.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**تنويه**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بالرغم من حرصنا على الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الحيوية، يُنصح بالاعتماد على الترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.
**إخلاء المسؤولية**:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم بأن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والموثوق. للمعلومات الحساسة أو الهامة، يُنصح بالاستعانة بالترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.
In dieser Lektion haben Sie das Responsible AI Toolbox kennengelernt, ein "Open-Source-Community-Projekt, das Datenwissenschaftler dabei unterstützt, KI-Systeme zu analysieren und zu verbessern." Für diese Aufgabe sollen Sie eines der [Notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) des RAI Toolbox erkunden und Ihre Erkenntnisse in einem Bericht oder einer Präsentation festhalten.
In dieser Lektion haben Sie die Responsible AI Toolbox kennengelernt, ein „Open-Source-, gemeinschaftlich vorangetriebenes Projekt, das Data Scientists dabei unterstützt, KI-Systeme zu analysieren und zu verbessern.“ Für diese Aufgabe erkunden Sie eines der RAI Toolbox [Notebooks](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) und berichten Ihre Erkenntnisse in einem Bericht oder einer Präsentation.
| | Ein Bericht oder eine PowerPoint-Präsentation wird vorgelegt, die Fairlearns Systeme, das ausgeführte Notebook und die daraus gezogenen Schlussfolgerungen diskutiert. | Ein Bericht wird vorgelegt, jedoch ohne Schlussfolgerungen. | Es wird kein Bericht vorgelegt. |
| | Ein Bericht oder eine Powerpoint-Präsentation wird präsentiert, die Fairlearns Systeme, das ausgeführte Notebook und die aus dessen Ausführung gezogenen Schlussfolgerungen behandelt | Ein Bericht wird präsentiert, jedoch ohne Schlussfolgerungen | Es wird kein Bericht präsentiert |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Haftungsausschluss**:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatische Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das ursprüngliche Dokument in seiner Originalsprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen.
> ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Einführung
### Einführung
Bisher haben Sie untersucht, was Regression ist, anhand von Beispieldaten aus dem Kürbispreisdataset, das wir in dieser Lektion verwenden werden. Sie haben es auch mit Matplotlib visualisiert.
Bisher haben Sie erkundet, was Regression mit Beispieldaten aus dem Kürbisdaten-Set ist, das wir im Verlauf dieser Lektion verwenden werden. Sie haben es auch mit Matplotlib visualisiert.
Jetzt sind Sie bereit, tiefer in die Regression für maschinelles Lernen einzutauchen. Während die Visualisierung Ihnen hilft, Daten zu verstehen, liegt die wahre Stärke des maschinellen Lernens im _Trainieren von Modellen_. Modelle werden mit historischen Daten trainiert, um automatisch Datenabhängigkeiten zu erfassen, und sie ermöglichen es Ihnen, Ergebnisse für neue Daten vorherzusagen, die das Modell zuvor nicht gesehen hat.
Nun sind Sie bereit, tiefer in Regression für ML einzutauchen. Während Visualisierung Ihnen hilft, Daten zu verstehen, liegt die wahre Kraft des maschinellen Lernens im _Trainieren von Modellen_. Modelle werden anhand historischer Daten trainiert, um Datenabhängigkeiten automatisch zu erfassen, und ermöglichen es Ihnen, Ergebnisse für neue Daten vorherzusagen, die das Modell noch nicht gesehen hat.
In dieser Lektion lernen Sie mehr über zwei Arten von Regression: _einfache lineare Regression_ und _polynomiale Regression_, zusammen mit einigen mathematischen Grundlagen dieser Techniken. Diese Modelle ermöglichen es uns, Kürbispreise basierend auf verschiedenen Eingabedaten vorherzusagen.
In dieser Lektion lernen Sie zwei Arten der Regression näher kennen: _einfache lineare Regression_ und _polynomiale Regression_, zusammen mit der Mathematik hinter diesen Techniken. Diese Modelle ermöglichen es uns, Kürbisspreise basierend auf verschiedenen Eingabedaten vorherzusagen.
[](https://youtu.be/CRxFT8oTDMg "ML für Anfänger - Verständnis der linearen Regression")
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zur linearen Regression.
> Im gesamten Lehrplan gehen wir von minimalen mathematischen Kenntnissen aus und versuchen, das Thema für Studierende aus anderen Fachbereichen zugänglich zu machen. Achten Sie auf Notizen, 🧮 Hinweise, Diagramme und andere Lernhilfen, die das Verständnis erleichtern.
> Im gesamten Curriculum gehen wir von minimalen Mathematikkenntnissen aus und bemühen uns, es für Studierende aus anderen Fachrichtungen zugänglich zu machen. Achten Sie daher auf Hinweise, 🧮 Mathe-Abschnitte, Diagramme und andere Lernhilfen zur besseren Verständlichkeit.
### Voraussetzungen
Sie sollten inzwischen mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Sie finden sie vorab geladen und bereinigt in der Datei _notebook.ipynb_ dieser Lektion. In der Datei wird der Kürbispreis pro Scheffel in einem neuen DataFrame angezeigt. Stellen Sie sicher, dass Sie diese Notebooks in Visual Studio Code-Kernels ausführen können.
Sie sollten inzwischen mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Sie finden diese vorab geladen und bereinigt in der _notebook.ipynb_-Datei dieser Lektion. Dort wird der Kürbisspreis pro Scheffel in einem neuen DataFrame angezeigt. Stellen Sie sicher, dass Sie diese Notebooks in Visual Studio Code ausführen können.
### Vorbereitung
Zur Erinnerung: Sie laden diese Daten, um Fragen dazu zu stellen.
Zur Erinnerung: Sie laden diese Daten, um Fragen an sie zu stellen.
- Wann ist die beste Zeit, Kürbisse zu kaufen?
- Wann ist die beste Zeit, Kürbisse zu kaufen?
- Welchen Preis kann ich für eine Kiste Miniaturkürbisse erwarten?
- Sollte ich sie in halben Scheffelkörben oder in 1 1/9 Scheffelkisten kaufen?
- Sollte ich sie in halben Scheffel-Körben oder im 1 1/9 Scheffel-Karton kaufen?
Lassen Sie uns weiter in diese Daten eintauchen.
In der vorherigen Lektion haben Sie einen Pandas-DataFrame erstellt und ihn mit einem Teil des ursprünglichen Datasets gefüllt, indem Sie die Preise pro Scheffel standardisiert haben. Dadurch konnten Sie jedoch nur etwa 400 Datenpunkte sammeln, und das nur für die Herbstmonate.
In der vorherigen Lektion haben Sie einen Pandas-DataFrame erstellt und mit Teilen des ursprünglichen Datensatzes gefüllt, wobei die Preise standardisiert pro Scheffel angegeben wurden. Dadurch hatten Sie allerdings nur etwa 400 Datenpunkte und nur für die Herbstmonate.
Werfen Sie einen Blick auf die Daten, die wir in dem begleitenden Notebook dieser Lektion vorab geladen haben. Die Daten sind vorab geladen, und ein erster Streudiagramm wurde erstellt, um Monatsdaten darzustellen. Vielleicht können wir durch eine gründlichere Bereinigung der Daten noch mehr Details über die Natur der Daten erhalten.
Sehen Sie sich die Daten an, die wir im begleitenden Notebook dieser Lektion vorladen. Die Daten sind vorab geladen und ein erster Streudiagramm wird geplottet, um Monatsdaten anzuzeigen. Vielleicht können wir durch weitere Bereinigung mehr Details über die Art der Daten herausfinden.
## Eine lineare Regressionslinie
Wie Sie in Lektion 1 gelernt haben, besteht das Ziel einer linearen Regression darin, eine Linie zu zeichnen, um:
Wie Sie in Lektion 1 gelernt haben, ist das Ziel einer linearen Regression, eine Linie zu plotten, die:
- **Variable Beziehungen zeigt.** Zeigt die Beziehung zwischen Variablen.
- **Vorhersagen macht.** Macht genaue Vorhersagen darüber, wo ein neuer Datenpunkt in Bezug auf diese Linie liegen würde.
Typischerweise wird diese Art Linie mit **Methode der kleinsten Quadrate** (Least-Squares Regression) gezeichnet. Der Begriff „kleinste Quadrate“ bezieht sich auf den Prozess, den Gesamtfehler unseres Modells zu minimieren. Für jeden Datenpunkt messen wir die vertikale Entfernung (Residual genannt) zwischen dem tatsächlichen Punkt und unserer Regressionslinie.
- **Beziehungen zwischen Variablen zu zeigen**. Die Beziehung zwischen Variablen darzustellen.
- **Vorhersagen zu treffen**. Genaue Vorhersagen darüber zu machen, wo ein neuer Datenpunkt im Verhältnis zu dieser Linie liegen würde.
Diese Abstände quadrieren wir aus zwei Hauptgründen:
Typisch für die **Methode der kleinsten Quadrate** ist es, diese Art von Linie zu zeichnen. Der Begriff "kleinste Quadrate" bedeutet, dass alle Datenpunkte um die Regressionslinie quadriert und dann addiert werden. Idealerweise ist diese endgültige Summe so klein wie möglich, da wir eine geringe Anzahl von Fehlern oder `kleinste Quadrate` wünschen.
1. **Betrag vor Richtung:** Wir wollen einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv.
Wir tun dies, da wir eine Linie modellieren möchten, die die geringste kumulative Entfernung von allen unseren Datenpunkten hat. Wir quadrieren die Terme vor dem Addieren, da uns die Größe der Abweichung wichtiger ist als ihre Richtung.
2. **Bestrafung von Ausreißern:** Durch Quadrieren erhalten größere Fehler ein größeres Gewicht, was die Linie dazu zwingt, näher an entfernten Punkten zu bleiben.
> **🧮 Zeig mir die Mathematik**
Anschließend summieren wir alle quadrierten Werte. Unser Ziel ist es, genau die Linie zu finden, bei der diese endgültige Summe am kleinsten ist (der kleinstmögliche Wert) – daher der Name „Methode der kleinsten Quadrate“.
> **🧮 Zeig mir die Mathematik**
>
> Diese Linie, die als _Linie der besten Anpassung_ bezeichnet wird, kann durch [eine Gleichung](https://en.wikipedia.org/wiki/Simple_linear_regression) ausgedrückt werden:
> Diese Linie, auch als _Line of Best Fit_ bezeichnet, kann durch [eine Gleichung](https://en.wikipedia.org/wiki/Simple_linear_regression) ausgedrückt werden:
>
> ```
> Y = a + bX
> ```
>
> `X` ist die 'erklärende Variable'. `Y` ist die 'abhängige Variable'. Die Steigung der Linie ist `b`, und `a` ist der y-Achsenabschnitt, der den Wert von `Y` angibt, wenn `X = 0`.
> `X` ist die ‚erklärende Variable‘. `Y` ist die ‚abhängige Variable‘. Die Steigung der Linie ist `b` und `a` ist der y-Achsenabschnitt, also der Wert von `Y`, wenn `X = 0` ist.
>
>
>
>
> Zuerst berechnen Sie die Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper)
> Berechnung der Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> Mit anderen Worten, und bezogen auf die ursprüngliche Frage zu den Kürbisdaten: "Vorhersage des Preises eines Kürbisses pro Scheffel nach Monat", würde sich `X`auf den Preis und `Y`auf den Verkaufsmonat beziehen.
> Anders ausgedrückt und im Hinblick auf die ursprüngliche Fragestellung unserer Kürbisdaten: "Vorhersage des Preises eines Kürbisses pro Scheffel nach Monat" würde `X` für den Preis stehen und `Y` für den Verkaufsmonat.
>
>
> Berechnen Sie den Wert von Y. Wenn Sie etwa 4 $ zahlen, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper)
> Berechnung des Werts von Y. Wenn man ungefähr 4 $ bezahlt, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> Die Mathematik, die die Linie berechnet, muss die Steigung der Linie demonstrieren, die auch vom Achsenabschnitt abhängt, oder wo `Y` liegt, wenn `X = 0`.
> Die Formel, die die Linie berechnet, muss die Steigung der Linie darstellen, die auch vom Achsenabschnitt abhängt, also dem Ort, wo `Y` liegt, wenn `X = 0`.
>
> Sie können die Methode zur Berechnung dieser Werte auf der Website [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) beobachten. Besuchen Sie auch [diesen Rechner für die Methode der kleinsten Quadrate](https://www.mathsisfun.com/data/least-squares-calculator.html), um zu sehen, wie die Werte der Zahlen die Linie beeinflussen.
> Die Berechnung der Werte kann auf der Webseite [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) nachvollzogen werden. Besuchen Sie auch [diesen Methode-der-kleinsten-Quadrate-Rechner](https://www.mathsisfun.com/data/least-squares-calculator.html), um zu sehen, wie sich Werte auf die Linie auswirken.
## Korrelation
Ein weiterer Begriff, den Sie verstehen sollten, ist der **Korrelationskoeffizient** zwischen den gegebenen X- und Y-Variablen. Mit einem Streudiagramm können Sie diesen Koeffizienten schnell visualisieren. Ein Diagramm mit Datenpunkten, die in einer ordentlichen Linie verstreut sind, hat eine hohe Korrelation, aber ein Diagramm mit Datenpunkten, die überall zwischen X und Y verstreut sind, hat eine niedrige Korrelation.
Ein weiterer Begriff, den Sie verstehen sollten, ist der **Korrelationskoeffizient** zwischen bestimmten X- und Y-Variablen. Mittels Streudiagramm können Sie diesen Koeffizienten schnell visualisieren. Ein Plot mit Punkten, die auf einer sauberen Linie liegen, weist eine hohe Korrelation auf, während Punkte, die überall verstreut sind, eine niedrige Korrelation anzeigen.
Ein gutes lineares Regressionsmodell ist eines, das einen hohen (näher an 1 als an 0) Korrelationskoeffizienten mit der Methode der kleinsten Quadrate und einer Regressionslinie hat.
Ein gutes lineares Regressionsmodell weist mit der Methode der kleinsten Quadrate eine hohe (näher an 1 als an 0) Korrelation für die Regressionslinie auf.
✅ Führen Sie das begleitende Notebook dieser Lektion aus und betrachten Sie das Streudiagramm von Monat zu Preis. Scheint die Datenassoziation zwischen Monat und Preis für Kürbisverkäufe Ihrer visuellen Interpretation des Streudiagramms zufolge eine hohe oder niedrige Korrelation zu haben? Ändert sich das, wenn Sie eine feinere Messung anstelle von `Monat` verwenden, z. B. *Tag des Jahres* (d. h. Anzahl der Tage seit Jahresbeginn)?
✅ Führen Sie das zugehörige Notebook dieser Lektion aus und betrachten Sie das Streudiagramm von Monat zu Preis. Scheint laut Ihrer visuellen Interpretation der Punktverteilung die Zuordnung Monat zu Preis bei Kürbisverkäufen eine hohe oder niedrige Korrelation zu haben? Ändert sich das, wenn Sie anstatt des `Monats` eine feinere Messgröße verwenden, z. B. den *Tag des Jahres* (also die Anzahl der Tage seit Jahresbeginn)?
Im folgenden Code nehmen wir an, dass wir die Daten bereinigt und einen DataFrame namens `new_pumpkins` erhalten haben, ähnlich dem folgenden:
Im folgenden Code nehmen wir an, dass wir die Daten bereinigt haben und einen DataFrame namens `new_pumpkins` erhalten haben, der etwa so aussieht:
ID | Monat | TagDesJahres | Sorte | Stadt | Verpackung | Niedriger Preis | Hoher Preis | Preis
> Der Code zur Bereinigung der Daten ist verfügbar in [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Wir haben die gleichen Bereinigungsschritte wie in der vorherigen Lektion durchgeführt und die Spalte `TagDesJahres` mit dem folgenden Ausdruck berechnet:
> Der Code zum Bereinigen der Daten ist in [`notebook.ipynb`](notebook.ipynb) verfügbar. Wir haben die gleichen Bereinigungsschritte wie in der vorherigen Lektion durchgeführt und die Spalte `TagImJahr` mit folgendem Ausdruck berechnet:
Jetzt, da Sie die Mathematik hinter der linearen Regression verstanden haben, lassen Sie uns ein Regressionsmodell erstellen, um zu sehen, ob wir vorhersagen können, welches Kürbispaket die besten Kürbispreise haben wird. Jemand, der Kürbisse für einen Feiertags-Kürbisstand kauft, könnte diese Informationen benötigen, um seine Einkäufe von Kürbispaketen für den Stand zu optimieren.
Jetzt, wo Sie das mathematische Fundament der linearen Regression verstanden haben, erstellen wir ein Regressionsmodell, um zu sehen, ob wir vorhersagen können, welches Verpackungspaket die besten Kürbisspreise haben wird. Jemand, der für ein Urlaubskürbisfeld Kürbisse kauft, möchte diese Information, um seine Käufe zu optimieren.
## Auf der Suche nach Korrelation
## Suche nach Korrelation
[](https://youtu.be/uoRq-lW2eQo "ML für Anfänger - Auf der Suche nach Korrelation: Der Schlüssel zur linearen Regression")
[](https://youtu.be/uoRq-lW2eQo "ML für Anfänger – Suche nach Korrelation: Der Schlüssel zur linearen Regression")
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zur Korrelation.
Aus der vorherigen Lektion haben Sie wahrscheinlich gesehen, dass der Durchschnittspreis für verschiedene Monate wie folgt aussieht:
Aus der vorherigen Lektion wissen Sie wahrscheinlich, dass der Durchschnittspreis für verschiedene Monate so aussieht:
<imgalt="Durchschnittspreis nach Monat"src="../../../../translated_images/de/barchart.a833ea9194346d76.webp"width="50%"/>
Dies deutet darauf hin, dass es eine gewisse Korrelation geben sollte, und wir können versuchen, ein lineares Regressionsmodell zu trainieren, um die Beziehung zwischen `Monat` und `Preis` oder zwischen `TagDesJahres` und `Preis` vorherzusagen. Hier ist das Streudiagramm, das die letztere Beziehung zeigt:
Das deutet darauf hin, dass eine Korrelation bestehen sollte, und wir können versuchen, ein lineares Regressionsmodell zu trainieren, um die Beziehung zwischen `Monat` und `Preis` oder zwischen `TagImJahr` und `Preis` vorherzusagen. Hier ist das Streudiagramm, das letztere Beziehung zeigt:
<imgalt="Streudiagramm von Preis vs. Tag des Jahres" src="../../../../translated_images/de/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Streudiagramm von Preis vs. Tag im Jahr" src="../../../../translated_images/de/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Lassen Sie uns sehen, ob es eine Korrelation gibt, indem wir die Funktion `corr` verwenden:
Sehen wir nach, ob eine Korrelation mit der Funktion `corr` besteht:
Es sieht so aus, als ob die Korrelation ziemlich gering ist, -0.15 nach `Monat` und -0.17 nach `TagDesMonats`, aber es könnte eine andere wichtige Beziehung geben. Es scheint, dass es verschiedene Preiscluster gibt, die mit verschiedenen Kürbissorten korrespondieren. Um diese Hypothese zu bestätigen, lassen Sie uns jede Kürbiskategorie mit einer anderen Farbe darstellen. Indem wir einen `ax`-Parameter an die `scatter`-Plot-Funktion übergeben, können wir alle Punkte im selben Diagramm darstellen:
Die Korrelation ist offenbar recht klein, -0,15 beim `Monat` und -0,17 beim `TagImMonat`, aber es könnte einen weiteren wichtigen Zusammenhang geben. Es scheint verschiedene Preisgruppen zu geben, die verschiedenen Kürbissorten entsprechen. Um diese Hypothese zu bestätigen, plotten wir jede Kürbissorte mit einer anderen Farbe. Indem wir der `scatter`-Plotfunktion einen `ax`-Parameter übergeben, können wir alle Punkte auf demselben Diagramm darstellen:
```python
ax=None
@ -128,9 +140,9 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Streudiagramm von Preis vs. Tag des Jahres" src="../../../../translated_images/de/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Streudiagramm von Preis vs. Tag im Jahr" src="../../../../translated_images/de/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Unsere Untersuchung legt nahe, dass die Sorte einen größeren Einfluss auf den Gesamtpreis hat als das tatsächliche Verkaufsdatum. Wir können dies mit einem Balkendiagramm sehen:
Unsere Untersuchung legt nahe, dass die Sorte einen größeren Einfluss auf den Gesamtpreis hat als das tatsächliche Verkaufsdatum. Das sehen wir auch in einem Balkendiagramm:
<imgalt="Streudiagramm von Preis vs. Tag des Jahres" src="../../../../translated_images/de/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Streudiagramm von Preis vs. Tag im Jahr" src="../../../../translated_images/de/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Wenn wir jetzt die Korrelation zwischen `Preis` und `TagDesJahres` mit der Funktion `corr` berechnen, erhalten wir etwa `-0.27` - was bedeutet, dass das Trainieren eines Vorhersagemodells sinnvoll ist.
Wenn wir nun die Korrelation zwischen `Preis` und `TagImJahr` mit der Funktion `corr` berechnen, erhalten wir etwa `-0.27`– was bedeutet, dass es sinnvoll ist, ein Vorhersagemodell zu trainieren.
> Bevor Sie ein lineares Regressionsmodell trainieren, ist es wichtig sicherzustellen, dass Ihre Daten sauber sind. Lineare Regression funktioniert nicht gut mit fehlenden Werten, daher ist es sinnvoll, alle leeren Zellen zu entfernen:
> Bevor Sie ein lineares Regressionsmodell trainieren, ist es wichtig sicherzustellen, dass unsere Daten sauber sind. Lineare Regression funktioniert nicht gut mit fehlenden Werten, daher macht es Sinn, alle leeren Zellen zu entfernen:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Eine andere Herangehensweise wäre, diese leeren Werte mit den Mittelwerten der entsprechenden Spalte zu füllen.
Eine weitere Möglichkeit wäre, diese leeren Werte mit Mittelwerten aus der entsprechenden Spalte zu füllen.
## Einfache lineare Regression
## Einfache Lineare Regression
[](https://youtu.be/e4c_UP2fSjg "ML für Anfänger - Lineare und polynomiale Regression mit Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML für Anfänger – Lineare und Polynomiale Regression mit Scikit-learn")
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zur linearen und polynomialen Regression.
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zu linearer und polynomialer Regression.
Um unser lineares Regressionsmodell zu trainieren, verwenden wir die **Scikit-learn**-Bibliothek.
@ -171,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Wir beginnen damit, Eingabewerte (Features) und die erwartete Ausgabe (Label) in separate numpy-Arrays zu trennen:
Wir beginnen damit, Eingabewerte (Features) und die erwartete Ausgabe (Label) in separate numpy-Arrays aufzuteilen:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Beachten Sie, dass wir `reshape` auf die Eingabedaten anwenden mussten, damit das Paket für lineare Regression sie korrekt versteht. Lineare Regression erwartet ein 2D-Array als Eingabe, wobei jede Zeile des Arrays einem Vektor von Eingabefeatures entspricht. In unserem Fall, da wir nur eine Eingabe haben, benötigen wir ein Array mit der Form N×1, wobei N die Größe des Datasets ist.
> Beachten Sie, dass wir die Eingabedaten `reshape`-en mussten, damit das Linear Regression Paket sie korrekt versteht. Lineare Regression erwartet ein 2D-Array als Eingabe, bei dem jede Zeile einem Vektor von Eingabe-Features entspricht. Da wir nur ein Feature haben, benötigen wir ein Array der Form N×1, wobei N die Datensatzgröße ist.
Dann müssen wir die Daten in Trainings- und Testdatensätze aufteilen, damit wir unser Modell nach dem Training validieren können:
Anschließend teilen wir die Daten in Trainings- und Testdatensätze auf, damit wir unser Modell nach dem Training validieren können:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Schließlich dauert das Training des eigentlichen linearen Regressionsmodells nur zwei Codezeilen. Wir definieren das `LinearRegression`-Objekt und passen es mit der Methode `fit` an unsere Daten an:
Das Training des eigentlichen linearen Regressionsmodells benötigt nur zwei Codezeilen. Wir definieren das `LinearRegression`-Objekt und passen es mit der Methode `fit` an unsere Daten an:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Das `LinearRegression`-Objekt enthält nach dem `fit`-Vorgang alle Koeffizienten der Regression, die über die Eigenschaft `.coef_` abgerufen werden können. In unserem Fall gibt es nur einen Koeffizienten, der etwa `-0.017` sein sollte. Das bedeutet, dass die Preise mit der Zeit etwas sinken, aber nicht zu stark, etwa um 2 Cent pro Tag. Wir können auch den Schnittpunkt der Regression mit der Y-Achse über `lin_reg.intercept_` abrufen - er wird in unserem Fall etwa `21` betragen, was den Preis zu Jahresbeginn angibt.
Das `LinearRegression`-Objekt enthält nach dem `fit`-ten alle Koeffizienten der Regression, auf die über die `.coef_`-Eigenschaft zugegriffen werden kann. In unserem Fall gibt es nur einen Koeffizienten, der etwa `-0.017` sein sollte. Das bedeutet, dass die Preise mit der Zeit etwas zu sinken scheinen, aber nicht zu stark, etwa 2 Cent pro Tag. Wir können auch den Schnittpunkt der Regression mit der Y-Achse über `lin_reg.intercept_` abrufen – dieser wird in unserem Fall etwa `21` betragen und zeigt den Preis zu Beginn des Jahres an.
Um zu sehen, wie genau unser Modell ist, können wir die Preise auf einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten liegen. Dies kann mit der Mean-Square-Error (MSE)-Metrik erfolgen, die den Mittelwert aller quadrierten Unterschiede zwischen erwartetem und vorhergesagtem Wert darstellt.
Um zu sehen, wie genau unser Modell ist, können wir die Preise auf einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten liegen. Dies kann mit der mittleren quadratischen Abweichung (MSE) gemessen werden, die der Mittelwert aller quadrierten Differenzen zwischen erwarteten und vorhergesagten Werten ist.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +215,37 @@ pred = lin_reg.predict(X_test)
Unser Fehler scheint sich auf 2 Punkte zu konzentrieren, was etwa 17 % entspricht. Nicht besonders gut. Ein weiterer Indikator für die Modellqualität ist der **Bestimmtheitskoeffizient**, der wie folgt berechnet werden kann:
Unser Fehler scheint bei etwa 2 Punkten zu liegen, was ~17 % entspricht. Nicht besonders gut. Ein weiterer Indikator für die Modellgüte ist der **Bestimmtheitsmaß**, der wie folgt erhalten werden kann:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Wenn der Wert 0 ist, bedeutet das, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor*agiert, was einfach der Mittelwert des Ergebnisses ist. Ein Wert von 1 bedeutet, dass wir alle erwarteten Ausgaben perfekt vorhersagen können. In unserem Fall liegt der Koeffizient bei etwa 0,06, was ziemlich niedrig ist.
```
Wenn der Wert 0 ist, bedeutet das, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor*fungiert, der einfach der Mittelwert der Ergebnisse ist. Ein Wert von 1 bedeutet, dass wir alle erwarteten Ausgaben perfekt vorhersagen können. In unserem Fall liegt der Koeffizient bei etwa 0,06, was ziemlich niedrig ist.
Wir können auch die Testdaten zusammen mit der Regressionslinie plotten, um besser zu sehen, wie die Regression in unserem Fall funktioniert:
Eine andere Art der linearen Regression ist die polynomiale Regression. Während es manchmal eine lineare Beziehung zwischen Variablen gibt – je größer der Kürbis im Volumen, desto höher der Preis – können diese Beziehungen manchmal nicht als Ebene oder gerade Linie dargestellt werden.
Eine weitere Form der linearen Regression ist die polynomiale Regression. Während manchmal eine lineare Beziehung zwischen Variablen besteht – je größer der Kürbis im Volumen, desto höher der Preis –, können diese Zusammenhänge manchmal nicht als Ebene oder Gerade dargestellt werden.
✅ Hier sind [einige weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die polynomiale Regression verwenden könnten.
✅ Hier sind [einige weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, bei denen polynomiale Regression verwendet werden könnte.
Schauen Sie sich die Beziehung zwischen Datum und Preis noch einmal an. Sieht dieses Streudiagramm so aus, als sollte es unbedingt durch eine gerade Linie analysiert werden? Können Preise nicht schwanken? In diesem Fall können Sie polynomiale Regression ausprobieren.
Werfen Sie einen weiteren Blick auf die Beziehung zwischen Datum und Preis. Sieht dieses Streudiagramm so aus, als sollte es unbedingt durch eine Gerade analysiert werden? Können sich Preise nicht schwanken? In diesem Fall können Sie polynomiale Regression ausprobieren.
✅ Polynome sind mathematische Ausdrücke, die aus einer oder mehreren Variablen und Koeffizienten bestehen können.
Die polynomiale Regression erstellt eine gekrümmte Linie, um nichtlineare Daten besser anzupassen. In unserem Fall sollten wir, wenn wir eine quadrierte `DayOfYear`-Variable in die Eingabedaten aufnehmen, unsere Daten mit einer parabolischen Kurve anpassen können, die an einem bestimmten Punkt im Jahr ein Minimum hat.
Die polynomiale Regression erstellt eine gebogene Linie, um nichtlineare Daten besser zu modellieren. In unserem Fall, wenn wir eine quadrierte `DayOfYear`-Variable in die Eingabedaten aufnehmen, sollten wir in der Lage sein, unsere Daten mit einer parabolischen Kurve zu approximieren, die einen Minimalwert an einem bestimmten Punkt im Jahr hat.
Scikit-learn enthält eine hilfreiche [Pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), um verschiedene Schritte der Datenverarbeitung zu kombinieren. Eine **Pipeline** ist eine Kette von **Schätzern**. In unserem Fall erstellen wir eine Pipeline, die zuerst polynomiale Merkmale zu unserem Modell hinzufügt und dann die Regression trainiert:
Scikit-learn bietet eine hilfreiche [Pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), um verschiedene Schritte der Datenverarbeitung zu kombinieren. Eine **Pipeline** ist eine Kette von **Estimatoren**. In unserem Fall erstellen wir eine Pipeline, die zuerst polynomiale Merkmale zum Modell hinzufügt und dann die Regression trainiert:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +254,62 @@ from sklearn.pipeline import make_pipeline
Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass wir alle Polynome zweiten Grades aus den Eingabedaten einbeziehen. In unserem Fall bedeutet das einfach`DayOfYear`<sup>2</sup>, aber bei zwei Eingabevariablen X und Y würde dies X<sup>2</sup>, XY und Y<sup>2</sup> hinzufügen. Wir können auch Polynome höheren Grades verwenden, wenn wir möchten.
Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass alle Polynome zweiten Grades aus den Eingabedaten enthalten sind. In unserem Fall heißt das nur`DayOfYear`<sup>2</sup>, aber bei zwei Eingabevariablen X und Y fügt dies X<sup>2</sup>, XY und Y<sup>2</sup> hinzu. Wir können auch Polynome höheren Grades verwenden, wenn wir möchten.
Pipelines können genauso verwendet werden wie das ursprüngliche `LinearRegression`-Objekt, d. h. wir können die Pipeline `fit`ten und dann `predict` verwenden, um die Vorhersageergebnisse zu erhalten. Hier ist das Diagramm, das die Testdaten und die Annäherungskurve zeigt:
Pipelines können auf die gleiche Weise wie das ursprüngliche `LinearRegression`-Objekt verwendet werden, d.h. wir können die Pipeline `fit`-ten und dann mit `predict` die Vorhersagen erhalten. Hier ist die Grafik, die die Testdaten und die Approximationskurve zeigt:
Mit polynomialer Regression können wir einen etwas niedrigeren MSE und eine höhere Bestimmtheit erreichen, aber nicht signifikant. Wir müssen andere Merkmale berücksichtigen!
Mit Polynomial Regression können wir etwas niedrigere MSE und höhere Bestimmtheitsmaßwerte erreichen, aber nicht signifikant. Wir müssen auch andere Merkmale berücksichtigen!
> Sie können sehen, dass die minimalen Kürbispreise irgendwo um Halloween herum beobachtet werden. Wie können Sie das erklären?
> Sie können sehen, dass die minimalen Kürbisspreise irgendwo rund um Halloween beobachtet werden. Wie können Sie das erklären?
🎃 Herzlichen Glückwunsch, Sie haben gerade ein Modell erstellt, das helfen kann, den Preis von Kürbissen für Kuchen vorherzusagen. Sie könnten wahrscheinlich das gleiche Verfahren für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir jetzt, wie man Kürbissorten in unser Modell einbezieht!
🎃 Herzlichen Glückwunsch, Sie haben gerade ein Modell erstellt, das helfen kann, den Preis von Pie-Kürbissen vorherzusagen. Sie können das gleiche Verfahren wahrscheinlich für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir nun, wie wir Kürbissorten in unser Modell einbeziehen können!
## Kategorische Merkmale
## Kategorielle Merkmale
In der idealen Welt möchten wir in der Lage sein, Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Die Spalte `Variety`unterscheidet sich jedoch etwas von Spalten wie `Month`, da sie nicht-numerische Werte enthält. Solche Spalten werden als **kategorisch** bezeichnet.
In einer idealen Welt möchten wir in der Lage sein, Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Die Spalte `Variety`ist jedoch etwas anders als Spalten wie `Month`, da sie nichtnumerische Werte enthält. Solche Spalten nennt man **kategorisch**.
[](https://youtu.be/DYGliioIAE0 "ML für Anfänger – Kategorische Merkmalsvorhersagen mit linearer Regression")
[](https://youtu.be/DYGliioIAE0 "Maschinelles Lernen für Anfänger – Vorhersagen mit kategorialen Merkmalen und linearer Regression")
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zur Verwendung kategorischer Merkmale.
> 🎥 Klicken Sie auf das obige Bild für eine kurze Videoübersicht zur Verwendung kategorialer Merkmale.
Hier können Sie sehen, wie der Durchschnittspreis von der Sorte abhängt:
Hier sehen Sie, wie der Durchschnittspreis von der Sorte abhängt:
<imgalt="Durchschnittspreis nach Sorte"src="../../../../translated_images/de/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Um die Sorte zu berücksichtigen, müssen wir sie zuerst in numerische Form umwandeln, also**kodieren**. Es gibt mehrere Möglichkeiten, dies zu tun:
Um die Sorte zu berücksichtigen, müssen wir sie zunächst in eine numerische Form umwandeln oder**kodieren**. Es gibt mehrere Möglichkeiten, dies zu tun:
* Eine einfache **numerische Kodierung** erstellt eine Tabelle mit verschiedenen Sorten und ersetzt dann den Sortennamen durch einen Index in dieser Tabelle. Dies ist keine gute Idee für die lineare Regression, da die lineare Regression den tatsächlichen numerischen Wert des Indexes nimmt und ihn mit einem Koeffizienten multipliziert, um ihn zum Ergebnis hinzuzufügen. In unserem Fall ist die Beziehung zwischen der Indexnummer und dem Preis eindeutig nicht linear, selbst wenn wir sicherstellen, dass die Indizes in einer bestimmten Reihenfolge angeordnet sind.
* **One-Hot-Encoding** ersetzt die Spalte `Variety` durch 4 verschiedene Spalten, eine für jede Sorte. Jede Spalte enthält `1`, wenn die entsprechende Zeile einer bestimmten Sorte entspricht, und `0` andernfalls. Das bedeutet, dass es in der linearen Regression vier Koeffizienten gibt, einen für jede Kürbissorte, die für den "Startpreis" (oder eher den "zusätzlichen Preis") für diese bestimmte Sorte verantwortlich sind.
* Eine einfache **numerische Kodierung** erstellt eine Tabelle mit verschiedenen Sorten und ersetzt dann den Sortennamen durch einen Index in dieser Tabelle. Dies ist keine gute Idee für lineare Regression, da lineare Regression den tatsächlichen numerischen Wert des Index nimmt und diesen mit einem Koeffizienten multipliziert und zum Ergebnis addiert. In unserem Fall ist der Zusammenhang zwischen der Indexnummer und dem Preis eindeutig nicht linear, selbst wenn wir sicherstellen, dass die Indizes in einer bestimmten Reihenfolge angeordnet sind.
* **One-Hot-Kodierung** ersetzt die Spalte `Variety` durch 4 verschiedene Spalten, eine für jede Sorte. Jede Spalte enthält `1`, wenn die entsprechende Zeile zu dieser Sorte gehört, und `0` sonst. Das bedeutet, dass es vier Koeffizienten in der linearen Regression gibt, einen für jede Kürbissorte, der für den „Startpreis“ (bzw. „zusätzlichen Preis“) für diese Sorte verantwortlich ist.
Der folgende Code zeigt, wie wir eine Sorte mit One-Hot-Encoding kodieren können:
Der folgende Code zeigt, wie wir eine Sorte one-hot kodieren können:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
Um die lineare Regression mit One-Hot-kodierter Sorte als Eingabe zu trainieren, müssen wir nur die `X`- und `y`-Daten korrekt initialisieren:
Um die lineare Regression mit der one-hot-kodierten Sorte als Eingabe zu trainieren, müssen wir `X` und `y` nur richtig initialisieren:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
Der Rest des Codes ist derselbe wie der, den wir oben verwendet haben, um die lineare Regression zu trainieren. Wenn Sie es ausprobieren, werden Sie sehen, dass der mittlere quadratische Fehler ungefähr gleich bleibt, aber wir erhalten einen viel höheren Bestimmtheitskoeffizienten (~77 %). Um noch genauere Vorhersagen zu erhalten, können wir mehr kategorische Merkmale sowie numerische Merkmale wie `Month` oder `DayOfYear` berücksichtigen. Um ein großes Array von Merkmalen zu erhalten, können wir `join` verwenden:
Der Rest des Codes ist derselbe wie oben beim Trainieren der linearen Regression. Wenn Sie es ausprobieren, werden Sie sehen, dass die mittlere quadratische Abweichung ungefähr gleich ist, aber wir einen viel höheren Bestimmtheitsmaß (~77 %) erreichen. Um noch genauere Vorhersagen zu erhalten, können wir weitere kategoriale Merkmale sowie numerische Merkmale wie `Month` oder `DayOfYear` berücksichtigen. Um ein großes Array von Merkmalen zu erhalten, können wir `join` verwenden:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,55 +317,54 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
Hier berücksichtigen wir auch `City` und `Package`-Typ, was uns einen MSE von 2,84 (10 %) und eine Bestimmtheit von 0,94 gibt!
Hier berücksichtigen wir auch die `City` und den`Package`-Typ, was uns eine MSE von 2,84 (10 %) und eine Bestimmtheit von 0,94 ergibt!
## Alles zusammenfügen
## Alles zusammenführen
Um das beste Modell zu erstellen, können wir kombinierte (One-Hot-kodierte kategorische + numerische) Daten aus dem obigen Beispiel zusammen mit polynomialer Regression verwenden. Hier ist der vollständige Code für Ihre Bequemlichkeit:
Um das beste Modell zu erstellen, können wir kombinierte (one-hot-kodierte kategoriale + numerische) Daten aus dem obigen Beispiel zusammen mit polynomialer Regression verwenden. Hier ist der vollständige Code für Ihre Bequemlichkeit:
```python
# set up training data
# Trainingsdaten einrichten
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# Zug- und Testaufteilung durchführen
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
🏆 Gut gemacht! Sie haben in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im letzten Abschnitt zur Regression lernen Sie die logistische Regression kennen, um Kategorien zu bestimmen.
🏆 Gut gemacht! Sie haben in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im abschließenden Abschnitt über Regression werden Sie etwas über logistische Regression lernen, um Kategorien zu bestimmen.
---
## 🚀 Herausforderung
## 🚀Herausforderung
Testen Sie in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korrelation mit der Modellgenauigkeit zusammenhängt.
@ -360,13 +372,15 @@ Testen Sie in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korre
## Rückblick & Selbststudium
In dieser Lektion haben wir über lineare Regression gelernt. Es gibt andere wichtige Arten der Regression. Lesen Sie über Stepwise-, Ridge-, Lasso- und Elasticnet-Techniken. Ein guter Kurs, um mehr zu lernen, ist der [Stanford Statistical Learning Course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
In dieser Lektion haben wir lineare Regression kennengelernt. Es gibt weitere wichtige Arten von Regressionen. Lesen Sie über Stepwise, Ridge, Lasso und Elasticnet-Techniken. Ein guter Kurs zum Weiterlernen ist der [Stanford Statistical Learning Kurs](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
## Aufgabe
[Erstellen Sie ein Modell](assignment.md)
[Modell erstellen](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Haftungsausschluss**:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache ist als maßgebliche Quelle zu betrachten. Bei wichtigen Informationen wird eine professionelle, menschliche Übersetzung empfohlen. Für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen, übernehmen wir keine Haftung.
In dieser zweiten Lektion zur Klassifikation wirst du weitere Methoden zur Klassifikation numerischer Daten erkunden. Außerdem lernst du die Konsequenzen kennen, die sich aus der Wahl eines Klassifikators ergeben.
In dieser zweiten Klassifikationslektion werden Sie weitere Möglichkeiten zur Klassifikation numerischer Daten erkunden. Außerdem erfahren Sie die Auswirkungen der Wahl eines Klassifikators gegenüber einem anderen.
## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
Wir gehen davon aus, dass du die vorherigen Lektionen abgeschlossen hast und ein bereinigtes Dataset in deinem `data`-Ordner namens _cleaned_cuisines.csv_ im Hauptverzeichnis dieses 4-Lektionen-Ordners hast.
Wir gehen davon aus, dass Sie die vorherigen Lektionen abgeschlossen haben und einen bereinigten Datensatz in Ihrem `data`-Ordner mit dem Namen _cleaned_cuisines.csv_ im Stammverzeichnis dieses 4-Lektionen-Ordners haben.
### Vorbereitung
Wir haben deine Datei _notebook.ipynb_ mit dem bereinigten Dataset geladen und in X- und y-Datenframes aufgeteilt, die bereit für den Modellierungsprozess sind.
Wir haben Ihre _notebook.ipynb_-Datei mit dem bereinigten Datensatz geladen und in X- und y-Datenrahmen aufgeteilt, bereit für den Modellierungsprozess.
## Eine Klassifikationskarte
Zuvor hast du die verschiedenen Optionen kennengelernt, die dir bei der Klassifikation von Daten mithilfe des Microsoft-Spickzettels zur Verfügung stehen. Scikit-learn bietet einen ähnlichen, aber detaillierteren Spickzettel, der dir dabei helfen kann, deine Auswahl an Schätzern (ein anderer Begriff für Klassifikatoren) weiter einzugrenzen:
Zuvor haben Sie die verschiedenen Optionen kennengelernt, die Sie bei der Klassifikation von Daten anhand des Cheat Sheets von Microsoft haben. Scikit-learn bietet ein ähnliches, aber detaillierteres Cheat Sheet, das Ihnen dabei helfen kann, Ihre Schätzer (ein anderer Begriff für Klassifikatoren) weiter einzugrenzen:

> Tipp: [Besuche diese Karte online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) und klicke entlang des Pfads, um die Dokumentation zu lesen.

> Tipp: [besuchen Sie diese Karte online](https://scikit-learn.org/stable/tutorial/machine_learning_map/) und klicken Sie dem Pfad entlang, um die Dokumentation zu lesen.
### Der Plan
Diese Karte ist sehr hilfreich, sobald du ein klares Verständnis deiner Daten hast, da du ihre Pfade entlanggehen kannst, um eine Entscheidung zu treffen:
Diese Karte ist sehr hilfreich, sobald Sie ein klares Verständnis Ihrer Daten haben, da Sie den Pfaden zu einer Entscheidung folgen können:
- Wir haben >50 Stichproben
- Wir möchten eine Kategorie vorhersagen
- Wir haben beschriftete Daten
- Wir wollen eine Kategorie vorhersagen
- Wir haben gelabelte Daten
- Wir haben weniger als 100.000 Stichproben
- ✨ Wir können einen Linearen SVC wählen
- Falls das nicht funktioniert, da wir numerische Daten haben:
- Können wir einen ✨ KNeighbors-Klassifikator ausprobieren
- Falls das nicht funktioniert, probiere ✨ SVC und ✨ Ensemble-Klassifikatoren
- ✨ Wir können einen Linear SVC wählen
- Falls das nicht funktioniert, da wir numerische Daten haben
- Können wir einen ✨ KNeighbors Classifier ausprobieren
- Wenn das nicht funktioniert, versuchen Sie ✨ SVC und ✨ Ensemble Classifier
Dies ist ein sehr hilfreicher Pfad, dem man folgen kann.
Dies ist eine sehr hilfreiche Vorgehensweise.
## Übung – Daten aufteilen
## Übung - Daten aufteilen
Entlang dieses Pfades sollten wir zunächst einige Bibliotheken importieren, die wir verwenden möchten.
Folgen wir diesem Pfad, sollten wir zunächst einige Bibliotheken zum Verwenden importieren.
1. Importiere die benötigten Bibliotheken:
1. Importieren Sie die benötigten Bibliotheken:
```python
from sklearn.neighbors import KNeighborsClassifier
@ -50,31 +50,31 @@ Entlang dieses Pfades sollten wir zunächst einige Bibliotheken importieren, die
Support-Vector Clustering (SVC) ist ein Mitglied der Familie der Support-Vector-Maschinen (SVM), einer Technik des maschinellen Lernens (mehr dazu unten). Bei dieser Methode kannst du einen 'Kernel' auswählen, um zu entscheiden, wie die Labels gruppiert werden. Der Parameter 'C' steht für 'Regularisierung', der den Einfluss der Parameter reguliert. Der Kernel kann einer von [mehreren](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) sein; hier setzen wir ihn auf 'linear', um sicherzustellen, dass wir linearen SVC nutzen. Die Wahrscheinlichkeit ist standardmäßig auf 'false' gesetzt; hier setzen wir sie auf 'true', um Wahrscheinlichkeitsabschätzungen zu erhalten. Wir setzen den Zufallszustand auf '0', um die Daten zu mischen und Wahrscheinlichkeiten zu erhalten.
Support-Vektor-Clustering (SVC) ist ein Teil der Familie der Support-Vektor-Maschinen (lernen Sie unten mehr über diese kennen). Bei dieser Methode können Sie einen „Kernel“ auswählen, um zu entscheiden, wie die Labels gruppiert werden. Der Parameter „C“ bezieht sich auf „Regularisierung“, also die Regulierung des Einflusses von Parametern. Der Kernel kann einer von [mehreren](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) sein; hier setzen wir ihn auf „linear“, um linear SVC zu verwenden. Die Wahrscheinlichkeit ist standardmäßig „false“; hier setzen wir sie auf „true“, um Wahrscheinlichkeitsabschätzungen zu erhalten. Wir setzen den Zufallszustand auf „0“, um die Daten zu mischen und Wahrscheinlichkeiten zu ermitteln.
### Übung – Linearen SVC anwenden
### Übung - Anwenden eines Linear SVC
Beginne damit, ein Array von Klassifikatoren zu erstellen. Du wirst dieses Array schrittweise erweitern, während wir testen.
Beginnen Sie damit, ein Array von Klassifikatoren zu erstellen. Sie werden dieses Array nach und nach erweitern, während wir testen.
2. Trainiere dein Modell mit dem Linearen SVC und gib einen Bericht aus:
2. Trainieren Sie Ihr Modell mit dem Linear SVC und geben Sie einen Bericht aus:
```python
n_classifiers = len(classifiers)
@ -88,7 +88,7 @@ Beginne damit, ein Array von Klassifikatoren zu erstellen. Du wirst dieses Array
print(classification_report(y_test,y_pred))
```
Das Ergebnis ist ziemlich gut:
Das Ergebnis ist recht gut:
```output
Accuracy (train) for Linear SVC: 78.6%
@ -105,15 +105,15 @@ Beginne damit, ein Array von Klassifikatoren zu erstellen. Du wirst dieses Array
weighted avg 0.79 0.79 0.79 1199
```
## K-Neighbors-Klassifikator
## K-NeighborsKlassifikator
K-Neighbors gehört zur Familie der "Nachbarn"-Methoden des maschinellen Lernens, die sowohl für überwachtes als auch unüberwachtes Lernen verwendet werden können. Bei dieser Methode wird eine vordefinierte Anzahl von Punkten erstellt, und Daten werden um diese Punkte herum gesammelt, sodass generalisierte Labels für die Daten vorhergesagt werden können.
K-Neighbors gehört zur Familie der „Nachbarn“-ML-Methoden, die für überwachtes und unüberwachtes Lernen eingesetzt werden können. Bei dieser Methode wird eine vordefinierte Anzahl an Punkten erstellt, und die Daten werden um diese Punkte gruppiert, sodass verallgemeinerte Labels für die Daten vorhergesagt werden können.
### Übung – K-Neighbors-Klassifikator anwenden
### Übung - Anwenden des K-Neighbors Klassifikators
Der vorherige Klassifikator war gut und funktionierte gut mit den Daten, aber vielleicht können wir eine bessere Genauigkeit erzielen. Probiere einen K-Neighbors-Klassifikator aus.
Der vorherige Klassifikator war gut und funktionierte gut mit den Daten, aber vielleicht können wir eine bessere Genauigkeit erreichen. Versuchen Sie einen K-Neighbors Klassifikator.
1. Füge eine Zeile zu deinem Klassifikator-Array hinzu (füge ein Komma nach dem Linearen SVC-Element hinzu):
1. Fügen Sie Ihrem Klassifikator-Array eine Linie hinzu (setzen Sie ein Komma nach dem Linear SVC-Element):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -136,17 +136,17 @@ Der vorherige Klassifikator war gut und funktionierte gut mit den Daten, aber vi
weighted avg 0.76 0.74 0.74 1199
```
✅ Erfahre mehr über [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Lernen Sie mehr über [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Support-Vector-Klassifikator
## Support Vector Classifier
Support-Vector-Klassifikatoren gehören zur [Support-Vector-Maschine](https://wikipedia.org/wiki/Support-vector_machine)-Familie von ML-Methoden, die für Klassifikations- und Regressionsaufgaben verwendet werden. SVMs "mappen Trainingsbeispiele auf Punkte im Raum", um den Abstand zwischen zwei Kategorien zu maximieren. Nachfolgende Daten werden in diesen Raum gemappt, sodass ihre Kategorie vorhergesagt werden kann.
Support-Vektor-Klassifikatoren sind Teil der Familie der [Support-Vektor-Maschinen](https://wikipedia.org/wiki/Support-vector_machine), die für Klassifikations- und Regressionsaufgaben eingesetzt werden. SVMs „bilden Trainingsbeispiele als Punkte im Raum ab“, um den Abstand zwischen zwei Kategorien zu maximieren. Nachfolgende Daten werden in diesen Raum abgebildet, sodass ihre Kategorie vorhergesagt werden kann.
### Übung – Support-Vector-Klassifikator anwenden
### Übung - Anwenden eines Support Vector Classifier
Versuchen wir, mit einem Support-Vector-Klassifikator eine etwas bessere Genauigkeit zu erzielen.
Versuchen wir eine etwas bessere Genauigkeit mit einem Support Vector Classifier.
1. Füge ein Komma nach dem K-Neighbors-Element hinzu und füge dann diese Zeile hinzu:
1. Fügen Sie nach dem K-Neighbors-Element ein Komma ein und dann diese Zeile:
```python
'SVC': SVC(),
@ -169,11 +169,11 @@ Versuchen wir, mit einem Support-Vector-Klassifikator eine etwas bessere Genauig
weighted avg 0.84 0.83 0.83 1199
```
✅ Erfahre mehr über [Support-Vektoren](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Lernen Sie mehr über [Support-Vektoren](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ensemble-Klassifikatoren
Lass uns den Pfad bis zum Ende verfolgen, auch wenn der vorherige Test ziemlich gut war. Probieren wir einige 'Ensemble-Klassifikatoren' aus, insbesondere Random Forest und AdaBoost:
Folgen wir dem Pfad bis zum Ende, obwohl der vorherige Test recht gut war. Versuchen wir einige „Ensemble-Klassifikatoren“, speziell Random Forest und AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Erfahre mehr über [Ensemble-Klassifikatoren](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Lernen Sie mehr über [Ensemble-Klassifikatoren](https://scikit-learn.org/stable/modules/ensemble.html)
Diese Methode des maschinellen Lernens "kombiniert die Vorhersagen mehrerer Basis-Schätzer", um die Qualität des Modells zu verbessern. In unserem Beispiel haben wir Random Trees und AdaBoost verwendet.
Diese Methode des Maschinellen Lernens „kombiniert die Vorhersagen mehrerer Basis-Schätzer“, um die Qualität des Modells zu verbessern. In unserem Beispiel verwendeten wir Random Trees und AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), eine Mittelungsmethode, erstellt einen 'Wald' aus 'Entscheidungsbäumen', die mit Zufälligkeit durchsetzt sind, um Überanpassung zu vermeiden. Der Parameter n_estimators gibt die Anzahl der Bäume an.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), eine Mittelungsmethode, baut einen „Wald“ aus „Entscheidungsbäumen“, der mit Zufälligkeit versehen ist, um Overfitting zu vermeiden. Der Parameter n_estimators wird auf die Anzahl der Bäume gesetzt.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) passt einen Klassifikator an ein Dataset an und passt dann Kopien dieses Klassifikators an dasselbe Dataset an. Dabei wird der Fokus auf die Gewichte falsch klassifizierter Elemente gelegt, und die Anpassung für den nächsten Klassifikator wird entsprechend korrigiert.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) passt einen Klassifikator an einen Datensatz an und passt dann Kopien dieses Klassifikators an denselben Datensatz an. Es fokussiert sich auf die Gewichte falsch klassifizierter Elemente und passt die Gewichtung für den nächsten Klassifikator an, um Fehler zu korrigieren.
---
## 🚀Herausforderung
## 🚀Herausforderung
Jede dieser Techniken hat eine große Anzahl von Parametern, die du anpassen kannst. Recherchiere die Standardparameter jeder Technik und überlege, was das Anpassen dieser Parameter für die Qualität des Modells bedeuten würde.
Jede dieser Techniken hat eine große Anzahl von Parametern, die Sie anpassen können. Recherchieren Sie die Standardparameter jedes Verfahrens und denken Sie darüber nach, was die Anpassung dieser Parameter für die Qualität des Modells bedeuten würde.
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
Es gibt viele Fachbegriffe in diesen Lektionen, also nimm dir einen Moment Zeit, um [diese Liste](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) nützlicher Begriffe zu überprüfen!
In diesen Lektionen gibt es viele Fachbegriffe, nehmen Sie sich also eine Minute, um [diese Liste](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) mit nützlichen Begriffen durchzugehen!
## Aufgabe
## Aufgabe
[Parameter-Spielerei](assignment.md)
[Parameter spielen](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Haftungsausschluss**:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache ist als maßgebliche Quelle zu betrachten. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen.
"\n---\n\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache ist als maßgebliche Quelle zu betrachten. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, kann es bei automatischen Übersetzungen zu Fehlern oder Ungenauigkeiten kommen. Das Originaldokument in seiner Originalsprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Dieses Repository enthält 50+ Sprachübersetzungen, die die Downloadgröße erheblich erhöhen. Um ohne Übersetzungen zu klonen, verwenden Sie Sparse Checkout:
> **Möchten Sie lokal klonen?**
>
> Dieses Repository enthält über 50 Sprachübersetzungen, was die Download-Größe erheblich erhöht. Um ohne Übersetzungen zu klonen, verwenden Sie Sparse Checkout:
Wir haben eine laufende Discord Lernserie mit KI, erfahren Sie mehr und machen Sie mit unter [Learn with AI Series](https://aka.ms/learnwithai/discord) vom 18. bis 30. September 2025. Sie erhalten Tipps und Tricks zur Nutzung von GitHub Copilot für Data Science.
Wir führen eine laufende Discord-Lernserie mit KI durch, erfahren Sie mehr und machen Sie mit bei [Learn with AI Series](https://aka.ms/learnwithai/discord) vom 18. bis 30. September 2025. Sie erhalten Tipps und Tricks zur Nutzung von GitHub Copilot für Data Science.

# Maschinelles Lernen für Anfänger – Ein Lehrplan
# Machine Learning für Anfänger – Ein Lehrplan
> 🌍 Reisen Sie um die Welt, während wir Maschinelles Lernen anhand von Weltkulturen erkunden 🌍
> 🌍 Reisen Sie um die Welt, während wir Machine Learning anhand von Weltkulturen erkunden 🌍
Cloud Advocates bei Microsoft bieten einen 12-wöchigen Lehrplan mit 26 Lektionen rund um **Maschinelles Lernen** an. In diesem Lehrplan lernen Sie das, was manchmal als **klassisches maschinelles Lernen** bezeichnet wird, hauptsächlich unter Verwendung von Scikit-learn als Bibliothek und ohne Deep Learning, das in unserem [„KI für Anfänger“ Lehrplan](https://aka.ms/ai4beginners) behandelt wird. Kombinieren Sie diese Lektionen auch mit unserem ['Data Science für Anfänger' Lehrplan](https://aka.ms/ds4beginners)!
Cloud Advocates bei Microsoft freuen sich, einen 12-wöchigen Lehrplan mit 26 Lektionen zum Thema **Machine Learning** anzubieten. In diesem Lehrplan lernen Sie, was manchmal als **klassisches Machine Learning** bezeichnet wird, wobei vor allem Scikit-learn als Bibliothek verwendet wird, und Deep Learning vermieden wird, das in unserem [AI for Beginners Lehrplan](https://aka.ms/ai4beginners) behandelt wird. Kombinieren Sie diese Lektionen auch mit unserem ['Data Science for Beginners' Lehrplan](https://aka.ms/ds4beginners)!
Reisen Sie mit uns um die Welt, während wir diese klassischen Techniken auf Daten aus vielen Regionen anwenden. Jede Lektion beinhaltet Quizze vor und nach der Lektion, schriftliche Anweisungen zur Durchführung der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Pädagogik erlaubt es Ihnen, beim Bauen zu lernen – ein bewährter Weg, neue Fähigkeiten dauerhaft zu verankern.
Reisen Sie mit uns um die Welt, während wir diese klassischen Techniken auf Daten aus vielen Regionen anwenden. Jede Lektion umfasst Pre- und Post-Lektionen-Quiz, schriftliche Anweisungen zur Durchführung der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Didaktik ermöglicht es Ihnen, beim Bauen zu lernen – eine bewährte Methode, damit neue Kenntnisse 'haften bleiben'.
**✍️ Herzlichen Dank an unsere Autoren** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu und Amy Boyd
**🎨 Danke auch an unsere Illustratoren** Tomomi Imura, Dasani Madipalli, und Jen Looper
**🎨 Vielen Dank auch an unsere Illustratoren** Tomomi Imura, Dasani Madipalli und Jen Looper
**🙏 Besonderer Dank 🙏 an unsere Microsoft Student Ambassador Autoren, Gutachter und Inhaltsbeiträger**, insbesondere Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila und Snigdha Agarwal
**🙏 Besonderer Dank 🙏 an unsere Microsoft Student Ambassador Autoren, Gutachter und Beitragenden**, insbesondere Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila und Snigdha Agarwal
**🤩 ExtraDank an Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi und Vidushi Gupta für unsere R-Lektionen!**
**🤩 Extra-Dank an Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi und Vidushi Gupta für unsere R-Lektionen!**
# Erste Schritte
Folgen Sie diesen Schritten:
1. **Forken Sie das Repository**: Klicken Sie oben rechts auf dieser Seite auf die Schaltfläche „Fork“.
1. **Forken Sie das Repository**: Klicken Sie auf die Schaltfläche „Fork“ oben rechts auf dieser Seite.
2. **Klonen Sie das Repository**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [Finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Brauchen Sie Hilfe?** Sehen Sie in unserem [Fehlerbehebungsleitfaden](TROUBLESHOOTING.md) nach Lösungen zu häufigen Problemen bei Installation, Einrichtung und Ausführung der Lektionen.
> 🔧 **Brauchen Sie Hilfe?** Schauen Sie in unseren [Fehlerbehebungsleitfaden](TROUBLESHOOTING.md) für Lösungen zu häufigen Problemen bei Installation, Einrichtung und Ausführen der Lektionen.
**[Schüler](https://aka.ms/student-page)**, um diesen Lehrplan zu nutzen, forken Sie das gesamte Repository auf Ihr eigenes GitHub-Konto und bearbeiten Sie die Übungen allein oder in einer Gruppe:
**[Schüler](https://aka.ms/student-page)**, um diesen Lehrplan zu verwenden, forken Sie das gesamte Repo auf Ihr eigenes GitHub-Konto und absolvieren Sie die Übungen allein oder in einer Gruppe:
- Beginnen Sie mit einem Pre-Lecture-Quiz.
- Lesen Sie die Vorlesung und führen Sie die Aktivitäten aus, pausieren Sie und reflektieren Sie bei jedem Wissens-Check.
- Versuchen Sie, die Projekte zu erstellen, indem Sie die Lektionen verstehen, anstatt einfach den Lösungscode auszuführen; der Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar.
- Lesen Sie die Vorlesung und führen Sie die Aktivitäten durch, pausieren und reflektieren Sie bei jeder Wissensüberprüfung.
- Versuchen Sie, die Projekte zu erstellen, indem Sie die Lektionen verstehen, anstatt den Lösungscode auszuführen; dieser Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar.
- Machen Sie das Post-Lecture-Quiz.
- Schließen Sie die Challenge ab.
- Beenden Sie die Challenge.
- Erledigen Sie die Aufgabe.
- Nach Abschluss einer Lektionengruppe besuchen Sie das [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) und „lernen laut“, indem Sie die entsprechende PAT-Rubrik ausfüllen. Ein 'PAT' ist ein Fortschrittsbewertungstool, eine Rubrik, die Sie zum Vertiefen Ihres Lernens ausfüllen. Sie können auch auf andere PATs reagieren, sodass wir gemeinsam lernen können.
- Nach Abschluss einer Lektionengruppe besuchen Sie das [Diskussionsboard](https://github.com/microsoft/ML-For-Beginners/discussions) und „lernen laut“ durch Ausfüllen der entsprechenden PAT-Rubrik. Ein „PAT“ ist ein Progress Assessment Tool, eine Rubrik, die Sie ausfüllen, um Ihr Lernen zu vertiefen. Sie können auch auf andere PATs reagieren, sodass wir gemeinsam lernen können.
> Für weitere Studien empfehlen wir diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) Module und Lernpfade.
> Für weiterführendes Studium empfehlen wir diese [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) Module und Lernpfade.
**Lehrer**, wir haben [einige Vorschläge](for-teachers.md) zum Einsatz dieses Lehrplans aufgenommen.
**Lehrkräfte**, wir haben [einige Vorschläge](for-teachers.md) zur Verwendung dieses Lehrplans bereitgestellt.
---
## Video-Durchgänge
## Videoanleitungen
Einige Lektionen sind als Kurzvideos verfügbar. Sie finden diese alle direkt in den Lektionen oder in der [ML for Beginners-Playlist auf dem Microsoft Developer YouTube-Kanal](https://aka.ms/ml-beginners-videos), indem Sie auf das Bild unten klicken.
Einige Lektionen sind als Kurzvideos verfügbar. Sie finden diese alle inline in den Lektionen oder auf der [ML for Beginners Playlist auf dem Microsoft Developer YouTube-Kanal](https://aka.ms/ml-beginners-videos), indem Sie auf das Bild unten klicken.
[](https://aka.ms/ml-beginners-videos)
@ -91,79 +101,78 @@ Einige Lektionen sind als Kurzvideos verfügbar. Sie finden diese alle direkt in
> 🎥 Klicken Sie auf das Bild oben für ein Video über das Projekt und die Personen, die es erstellt haben!
> 🎥 Klicken Sie auf das Bild oben für ein Video über das Projekt und die Leute, die es erstellt haben!
---
## Pädagogik
## Didaktik
Wir haben zwei pädagogische Grundsätze gewählt, während wir diesen Lehrplan aufgebaut haben: die Sicherstellung, dass er praktisch, **projektbasiert** ist, und dass er **häufige Quizze** beinhaltet. Zusätzlich hat dieser Lehrplan ein gemeinsames **Thema** um für Kohärenz zu sorgen.
Wir haben beim Aufbau dieses Lehrplans zwei didaktische Grundsätze gewählt: sicherzustellen, dass er **projektbasiert** und praxisnah ist, und dass er **häufige Quizze** enthält. Zudem hat dieser Lehrplan ein gemeinsames **Thema**, um ihm Kohärenz zu verleihen.
Indem der Inhalt an Projekten ausgerichtet wird, wird der Prozess für die Lernenden ansprechender und die Aufnahme der Konzepte wird verbessert. Zudem setzt ein niedrigschwelliges Quiz vor einer Klasse die Absicht des Lernenden, ein Thema zu lernen, während ein zweites Quiz nach der Klasse für eine weitere Festigung sorgt. Dieser Lehrplan wurde flexibel und spaßig gestaltet und kann ganz oder teilweise durchlaufen werden. Die Projekte starten klein und werden zum Ende des 12-Wochen-Zyklus zunehmend komplexer. Zusätzlich enthält dieser Lehrplan einen Nachspann zu realen Anwendungen von ML, der als Zusatzpunkt oder Diskussionsgrundlage verwendet werden kann.
Indem sichergestellt wird, dass die Inhalte zu Projekten passen, wird der Prozess für Lernende ansprechender und das Behalten der Konzepte wird gefördert. Ein Low-Stakes-Quiz vor der Unterrichtsstunde setzt die Lernabsicht des Schülers, während ein zweites Quiz nach der Stunde die Erinnerung weiter festigt. Dieser Lehrplan ist flexibel und macht Spaß, er kann vollständig oder teilweise absolviert werden. Die Projekte beginnen klein und werden bis zum Ende des 12-Wochen-Zyklus zunehmend komplexer. Dieser Lehrplan enthält außerdem ein Nachwort zu realen Anwendungen von ML, das als Bonus oder Diskussionsgrundlage verwendet werden kann.
> Finden Sie unsere [Verhaltenskodex](CODE_OF_CONDUCT.md), [Beitragsrichtlinien](CONTRIBUTING.md), [Übersetzungsrichtlinien](TRANSLATIONS.md) und [Fehlerbehebung](TROUBLESHOOTING.md). Wir freuen uns auf Ihr konstruktives Feedback!
> Finden Sie unsere [Verhaltensregeln](CODE_OF_CONDUCT.md), [Beitragsrichtlinien](CONTRIBUTING.md), [Übersetzungsinformationen](TRANSLATIONS.md) und [Fehlerbehebungsanleitungen](TROUBLESHOOTING.md). Wir freuen uns über konstruktives Feedback!
> **Ein Hinweis zu Sprachen**: Diese Lektionen sind hauptsächlich in Python geschrieben, viele sind jedoch auch in R verfügbar. Um eine R-Lektion abzuschließen, gehen Sie in den `/solution`-Ordner und suchen Sie nach R-Lektionen. Diese beinhalten eine .rmd-Erweiterung, die eine **R Markdown**-Datei darstellt – einfach definiert als eine Einbettung von `Code-Blöcken` (von R oder anderen Sprachen) und einem `YAML-Header` (der steuert, wie Ausgaben wie PDF formatiert werden) in einem `Markdown-Dokument`. Dadurch fungiert es als beispielhaftes Autoren-Framework für Data Science, da es Ihnen erlaubt, Ihren Code, dessen Ausgabe und Ihre Gedanken zu kombinieren, indem Sie diese in Markdown niederschreiben. Darüber hinaus können R Markdown-Dokumente in Ausgabefomate wie PDF, HTML oder Word gerendert werden.
> **Eine Anmerkung zu den Quizzen**: Alle Quizze befinden sich im Ordner [Quiz App folder](../../quiz-app), insgesamt 52 Quizze mit jeweils drei Fragen. Sie sind innerhalb der Lektionen verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folgen Sie den Anweisungen im `quiz-app`-Ordner, um sie lokal zu hosten oder in Azure bereitzustellen.
| Lektion Nummer | Thema | Lektion Gruppierung | Lernziele | Verknüpfte Lektion | Autor |
| 01 | Einführung in maschinelles Lernen | [Einführung](1-Introduction/README.md) | Lernen Sie die grundlegenden Konzepte hinter maschinellem Lernen | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Die Geschichte des maschinellen Lernens | [Einführung](1-Introduction/README.md) | Lernen Sie die Geschichte dieses Fachgebiets | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen und Amy |
| 03 | Fairness und maschinelles Lernen | [Einführung](1-Introduction/README.md) | Welche wichtigen philosophischen Fragen zur Fairness sollten Studierende bei der Erstellung und Anwendung von ML-Modellen beachten? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Techniken des maschinellen Lernens | [Einführung](1-Introduction/README.md) | Welche Techniken verwenden ML-Forscher, um ML-Modelle zu erstellen? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris und Jen |
| 05 | Einführung in Regression | [Regression](2-Regression/README.md) | Einstieg in Python und Scikit-learn für Regressionsmodelle | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Daten visualisieren und bereinigen zur Vorbereitung auf ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Lineare und polynomiale Regressionsmodelle erstellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen und Dmitry • Eric Wanjau |
| 08 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md) | Ein logistisches Regressionsmodell erstellen | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Eine Web-App 🔌 | [Web App](3-Web-App/README.md) | Erstellen Sie eine Web-App zur Nutzung Ihres trainierten Modells | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Einführung in Klassifikation | [Klassifikation](4-Classification/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in die Klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen und Cassie • Eric Wanjau |
| 11 | Köstliche asiatische und indische Küchen 🍜 | [Klassifikation](4-Classification/README.md) | Einführung in Klassifikatoren | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen und Cassie • Eric Wanjau |
| 12 | Köstliche asiatische und indische Küchen 🍜 | [Klassifikation](4-Classification/README.md) | Weitere Klassifikatoren | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen und Cassie • Eric Wanjau |
| 13 | Köstliche asiatische und indische Küchen 🍜 | [Klassifikation](4-Classification/README.md) | Erstellen Sie eine Empfehlungs-Web-App mit Ihrem Modell | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Einführung in Clustering | [Clustering](5-Clustering/README.md) | Daten bereinigen, vorbereiten und visualisieren; Einführung in Clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Erkundung nigerianischer Musiktendenzen 🎧 | [Clustering](5-Clustering/README.md) | Erkunden Sie die K-Means-Clustering-Methode | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Einführung in die Verarbeitung natürlicher Sprache ☕️ | [Natürliche Sprachverarbeitung](6-NLP/README.md) | Lernen Sie die Grundlagen der NLP durch den Bau eines einfachen Bots | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Häufige NLP-Aufgaben ☕️ | [Natürliche Sprachverarbeitung](6-NLP/README.md) | Vertiefen Sie Ihr NLP-Wissen durch das Verständnis gängiger Aufgaben bei der Verarbeitung von Sprachstrukturen | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Übersetzung und Sentiment-Analyse ♥️ | [Natürliche Sprachverarbeitung](6-NLP/README.md) | Übersetzung und Sentiment-Analyse mit Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantische Hotels in Europa ♥️ | [Natürliche Sprachverarbeitung](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantische Hotels in Europa ♥️ | [Natürliche Sprachverarbeitung](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Einführung in Zeitreihenprognosen | [Zeitreihen](7-TimeSeries/README.md) | Einführung in Zeitreihenprognosen | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Weltstromverbrauch ⚡️ - Zeitreihenprognosen mit SVR | [Zeitreihen](7-TimeSeries/README.md) | Zeitreihenprognosen mit Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Einführung in Reinforcement Learning | [Reinforcement learning](8-Reinforcement/README.md) | Einführung in Reinforcement Learning mit Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hilf Peter, den Wolf zu vermeiden! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement Learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Nachwort | ML-Szenarien und Anwendungen aus der Praxis | [ML in der Wildnis](9-Real-World/README.md) | Interessante und aufschlussreiche reale Anwendungen des klassischen ML | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Nachwort | Modell-Debugging im ML mit RAI-Dashboard | [ML in der Wildnis](9-Real-World/README.md) | Modell-Debugging im maschinellen Lernen mit Komponenten des Responsible AI-Dashboards | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [finden Sie alle zusätzlichen Ressourcen für diesen Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> **Eine Anmerkung zu den Sprachen**: Diese Lektionen sind hauptsächlich in Python verfasst, aber viele sind auch in R verfügbar. Um eine R-Lektion abzuschließen, gehen Sie in den Ordner `/solution` und suchen Sie nach R-Lektionen. Diese enthalten eine .rmd-Erweiterung, die eine **R Markdown**-Datei darstellt, die einfach als Einbettung von `Codeabschnitten` (in R oder anderen Sprachen) und einem `YAML-Header` (der steuert, wie Ausgaben wie PDF formatiert werden) in einem `Markdown-Dokument` definiert werden kann. Somit dient es als beispielhaftes Autorensystem für Data Science, da es Ihnen erlaubt, Ihren Code, dessen Ausgabe und Ihre Gedanken zu kombinieren und diese in Markdown niederzuschreiben. Darüber hinaus können R Markdown-Dokumente in Ausgabeformate wie PDF, HTML oder Word gerendert werden.
> **Eine Anmerkung zu Quizzen**: Alle Quizze befinden sich im [Quiz App Ordner](../../quiz-app), für insgesamt 52 Quizze mit jeweils drei Fragen. Sie sind in den Lektionen verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folgen Sie den Anweisungen im `quiz-app`-Ordner, um diese lokal zu hosten oder auf Azure zu deployen.
| Lektion Nummer | Thema | Lektion Gruppierung | Lernziele | Verlinkte Lektion | Autor |
| 01 | Einführung in maschinelles Lernen | [Einführung](1-Introduction/README.md) | Lernen Sie die grundlegenden Konzepte des maschinellen Lernens | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Die Geschichte des maschinellen Lernens | [Einführung](1-Introduction/README.md)| Lernen Sie die Geschichte dieses Fachgebiets | [Lektion](1-Introduction/2-history-of-ML/README.md) | Jen und Amy |
| 03 | Fairness und maschinelles Lernen | [Einführung](1-Introduction/README.md) | Was sind die wichtigen philosophischen Fragen zur Fairness, die man beim Aufbau und der Anwendung von ML-Modellen beachten sollte? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Techniken für maschinelles Lernen | [Einführung](1-Introduction/README.md) | Welche Techniken verwenden ML-Forscher zum Aufbau von ML-Modellen? | [Lektion](1-Introduction/4-techniques-of-ML/README.md) | Chris und Jen |
| 05 | Einführung in Regression | [Regression](2-Regression/README.md) | Einstieg in Python und Scikit-learn für Regressionsmodelle | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md)| Daten visualisieren und bereinigen zur Vorbereitung auf ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md)| Lineare und polynomiale Regressionsmodelle erstellen | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html)| Jen und Dmitry • Eric Wanjau |
| 08 | Nordamerikanische Kürbisspreise 🎃 | [Regression](2-Regression/README.md)| Ein logistisches Regressionsmodell erstellen | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Eine Web-App 🔌 | [Web App](3-Web-App/README.md) | Baue eine Web-App, um dein trainiertes Modell zu nutzen | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Einführung in die Klassifikation | [Classification](4-Classification/README.md) | Bereinigen, vorbereiten und visualisieren der Daten; Einführung in Klassifikation | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen und Cassie • Eric Wanjau |
| 11 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Einführung in Klassifikatoren | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen und Cassie • Eric Wanjau |
| 12 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Weitere Klassifikatoren | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen und Cassie • Eric Wanjau |
| 13 | Köstliche asiatische und indische Küchen 🍜 | [Classification](4-Classification/README.md) | Baue eine Empfehlungs-Web-App mithilfe deines Modells | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Einführung in Clustering |[Clustering](5-Clustering/README.md) | Bereinigen, vorbereiten und visualisieren der Daten; Einführung in Clustering | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Erforschung nigerianischer Musikgeschmäcker 🎧 | [Clustering](5-Clustering/README.md) | Erforsche das K-Means Clustering-Verfahren | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Einführung in die Verarbeitung natürlicher Sprache ☕️ | [Natural language processing](6-NLP/README.md) | Lerne die Grundlagen von NLP durch den Bau eines einfachen Bots | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Häufige NLP-Aufgaben ☕️ | [Natural language processing](6-NLP/README.md) | Vertiefe dein NLP-Wissen durch Verständnis der gängigen Aufgaben beim Umgang mit Sprachstrukturen | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Übersetzung und Sentiment-Analyse ♥️ | [Natural language processing](6-NLP/README.md) | Übersetzung und Sentiment-Analyse mit Jane Austen |[Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantische Hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantische Hotels in Europa ♥️ | [Natural language processing](6-NLP/README.md) | Sentiment-Analyse mit Hotelbewertungen 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Einführung in Zeitreihen-Vorhersage | [Time series](7-TimeSeries/README.md) | Einführung in die Zeitreihen-Vorhersage | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Weltstromverbrauch ⚡️ - Zeitreihen-Vorhersage mit SVR | [Time series](7-TimeSeries/README.md) | Zeitreihen-Vorhersage mit Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Einführung in Reinforcement Learning| [Reinforcement learning](8-Reinforcement/README.md) | Einführung in Reinforcement Learning mit Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Hilf Peter, dem Wolf auszuweichen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement Learning mit Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Nachwort | Szenarien und Anwendungen von ML in der Praxis | [ML in the Wild](9-Real-World/README.md) | Interessante und aufschlussreiche reale Anwendungsfälle klassischer ML | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Nachwort | Modell-Debugging im ML mit RAI-Dashboard | [ML in the Wild](9-Real-World/README.md) | Modell-Debugging im maschinellen Lernen mit Responsible AI Dashboard-Komponenten | [Lektion](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [Finden Sie alle zusätzlichen Ressourcen zu diesem Kurs in unserer Microsoft Learn Sammlung](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline-Zugriff
Sie können diese Dokumentation offline mit [Docsify](https://docsify.js.org/#/) ausführen. Forken Sie dieses Repo, [installieren Sie Docsify](https://docsify.js.org/#/quickstart) auf Ihrem lokalen Rechner und geben Sie dann im Stammordner dieses Repos `docsify serve` ein. Die Website wird auf Port 3000 auf Ihrem localhost bereitgestellt: `localhost:3000`.
Sie können diese Dokumentation offline nutzen, indem Sie [Docsify](https://docsify.js.org/#/) verwenden. Forken Sie dieses Repo, [installieren Sie Docsify](https://docsify.js.org/#/quickstart) auf Ihrem lokalen Computer und geben Sie dann im Stammverzeichnis dieses Repos `docsify serve` ein. Die Website wird auf Port 3000 auf Ihrem lokalen Host gehostet: `localhost:3000`.
## PDFs
Hier finden Sie ein PDF des Lehrplans mit Links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Finden Sie eine PDF-Version des Lehrplans mit Links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andere Kurse
Unser Team erstellt weitere Kurse! Schauen Sie mal rein:
Unser Team produziert weitere Kurse! Schauen Sie sich an:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -175,49 +184,54 @@ Unser Team erstellt weitere Kurse! Schauen Sie mal rein:
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Generative AI Series
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
### Generative KI-Serie
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### Grundlegendes Lernen
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
### Kernwissen
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot-Reihe
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Wenn Sie nicht weiterkommen oder Fragen zum Erstellen von KI-Anwendungen haben. Treten Sie anderen Lernenden und erfahrenen Entwicklern in Diskussionen über MCP bei. Es ist eine unterstützende Gemeinschaft, in der Fragen willkommen sind und Wissen frei geteilt wird.
Wenn Sie feststecken oder Fragen zum Erstellen von KI-Apps haben, schließen Sie sich Lernenden und erfahrenen Entwicklern in Diskussionen über MCP an. Es ist eine unterstützende Gemeinschaft, in der Fragen willkommen sind und Wissen frei geteilt wird.
- Überprüfen Sie Notizbücher nach jeder Lektion für ein besseres Verständnis.
- Üben Sie, Algorithmen selbst umzusetzen.
- Erkunden Sie reale Datensätze mit den gelernten Konzepten.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Haftungsausschluss**:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir um Genauigkeit bemüht sind, können automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir haften nicht für Missverständnisse oder Fehlinterpretationen, die durch die Nutzung dieser Übersetzung entstehen.
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, kann es vorkommen, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten. Das Originaldokument in seiner ursprünglichen Sprache ist als maßgebliche Quelle zu betrachten. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
В этом уроке вы узнали об инструментах ответственного ИИ, "проекте с открытым исходным кодом, созданном сообществом, чтобы помочь специалистам по данным анализировать и улучшать системы ИИ". Для этого задания изучите один из [ноутбуков](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) из набора инструментов RAI и представьте свои выводы в виде статьи или презентации.
В этом уроке вы узнали оНаборе Инструментов Ответственного ИИ (Responsible AI Toolbox), «проекте с открытым исходным кодом, управляемом сообществом, который помогает специалистам по данным анализировать и улучшать системы ИИ». Для этого задания ознакомьтесь с одним из [блокнотов](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/tabular/getting-started.ipynb) Набора Инструментов RAI и подготовьте отчёт в виде статьи или презентации с результатами.
## Критерии оценки
| Критерии | Превосходно | Удовлетворительно | Требует улучшений |
| | Представлена статья или презентация PowerPoint, обсуждающая системы Fairlearn, выполненный ноутбук и выводы, сделанные на основе его выполнения | Представлена статья без выводов | Статья не представлена |
| Критерий | Отлично | Удовлетворительно | Требуется улучшение |
| | Представлена статья или презентация, обсуждающая системы Fairlearn, использованный блокнот и сделанные выводы по результатам его выполнения | Представлена статья без выводов | Статья не представлена |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, просим учитывать, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его языке считается авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неверные толкования, возникшие в результате использования данного перевода.
# Построение модели регрессии с использованием Scikit-learn: четыре способа регрессии
# Создание регрессионной модели с использованием Scikit-learn: регрессия четырьмя способами

## Заметка для начинающих
Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, стоимость дома, температуру или продажи). Она работает, находя прямую линию, которая наилучшим образом представляет связь между входными признаками и выходными данными.
В этом уроке мы сосредотачиваемся на понимании концепции, прежде чем изучать более продвинутые методы регрессии.

> Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
> ### [Этот урок доступен на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Введение
До этого момента вы изучали, что такое регрессия, используя пример данных из набора данных о ценах на тыквы, который мы будем использовать на протяжении всего урока. Вы также визуализировали данные с помощью Matplotlib.
До сих пор вы исследовали, что такое регрессия, используя пример данных, собранных из датасета с ценами на тыквы, который мы будем использовать на протяжении всего урока. Вы также визуализировали данные с помощью Matplotlib.
Теперь вы готовы углубиться в регрессию для машинного обучения. Визуализация помогает понять данные, но настоящая сила машинного обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически выявлять зависимости в данных, и позволяют предсказывать результаты для новых данных, которые модель ранее не видела.
Теперь вы готовы глубже погрузиться в регрессию для машинного обучения. В то время как визуализация позволяет понять данные, реальная сила Машинного Обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически улавливать зависимости данных, и они позволяют предсказывать результаты для новых данных, которые модель ранее не видела.
В этом уроке вы узнаете больше о двух типах регрессии: _основной линейной регрессии_ и _полиномиальной регрессии_, а также о некоторых математических основах этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных.
В этом уроке вы узнаете больше о двух типах регрессии: _базовая линейная регрессия_ и _полиномиальная регрессия_, а также о математике, лежащей в основе этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных.
[](https://youtu.be/CRxFT8oTDMg "Машинное обучение для начинающих - Понимание линейной регрессии")
[](https://youtu.be/CRxFT8oTDMg "Машинное обучение для начинающих - понимание линейной регрессии")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткий видеообзор линейной регрессии.
> 🎥 Нажмите на изображение выше для краткого видеообзора линейной регрессии.
> В рамках этой программы мы предполагаем минимальные знания математики и стремимся сделать материал доступным для студентов из других областей. Следите за заметками, 🧮 подсказками, диаграммами и другими инструментами обучения, которые помогут вам понять материал.
> В рамках этой учебной программы мы предполагаем минимальные знания математики и стремимся сделать материал доступным для студентов из других областей, поэтому следите за примечаниями, 🧮 подсказками, диаграммами и другими средствами обучения для облегчения понимания.
### Предварительные знания
### Предварительные требования
На данный момент вы должны быть знакомы со структурой данных о тыквах, которые мы изучаем. Вы можете найти их предварительно загруженными и очищенными в файле _notebook.ipynb_ этого урока. В файле цена на тыквы отображается за бушель в новом датафрейме. Убедитесь, что вы можете запускать эти ноутбуки в ядрах Visual Studio Code.
К этому моменту вы должны быть знакомы со структурой данных по тыквам, которые мы изучаем. Вы можете найти их заранее загруженными и предварительно очищенными в файле _notebook.ipynb_ этого урока. В файле цена на тыквы отображается за бушель в новой таблице данных. Убедитесь, что вы можете запускать эти ноутбуки в ядрах Visual Studio Code.
### Подготовка
Напомним, что вы загружаете эти данные, чтобы задавать им вопросы.
Напоминаем, что вы загружаете эти данные, чтобы задавать вопросы и анализировать их.
- Когда лучше всего покупать тыквы?
- Какую цену можно ожидать за коробку миниатюрных тыкв?
- Стоит ли покупать их в корзинах на полбушеля или в коробках на 1 1/9 бушеля?
Давайте продолжим изучение этих данных.
- Какую цену я могу ожидать за ящик мини-тыкв?
- Стоит ли покупать их в полубушельных корзинах или в ящике на 1 1/9 бушеля?
Продолжим изучение этих данных.
В предыдущем уроке вы создали датафрейм Pandas и заполнили его частью исходного набора данных, стандартизировав цены по бушелю. Однако, сделав это, вы смогли собрать только около 400 точек данных, и только за осенние месяцы.
В предыдущем уроке вы создали фрейм данных Pandas и заполнили его частью исходного датасета, стандартизировав цены на бушель. Однако, при этом вы смогли собрать только около 400 точек данных и только за осенние месяцы.
Посмотрите на данные, которые предварительно загружены в ноутбуке, сопровождающем этот урок. Данные предварительно загружены, и начальный диаграмма рассеяния построена, чтобы показать данные по месяцам. Возможно, мы сможем получить немного больше информации о природе данных, если очистим их более тщательно.
Взгляните на данные, которые мы заранее загрузили в сопроводительном ноутбуке этого урока. Они сразу загружены, и построен начальный диаграмм разброса для отображения данных по месяцам. Возможно, мы можем получить немного больше информации о природе данных, очистив их более подробно.
## Линия линейной регрессии
Как вы узнали в Уроке 1, цель упражнения по линейной регрессии — построить линию, чтобы:
- **Показать взаимосвязь переменных**. Показать связь между переменными.
- **Сделать прогнозы**. Сделать точные прогнозы о том, где новая точка данных окажется относительно этой линии.
- **Показать взаимосвязь переменных**. Показать связь между переменными
- **Делать предсказания**. Точно предсказывать, где новый datapoint будет расположена относительно этой линии.
Обычно **метод наименьших квадратов** используется для построения такой линии. Термин «наименьшие квадраты» относится к процессу минимизации общей ошибки модели. Для каждой точки данных мы измеряем вертикальное расстояние (называемое остатком) между фактической точкой и нашей линией регрессии.
Мы возводим эти расстояния в квадрат по двум основным причинам:
Обычно для построения такой линии используется метод **наименьших квадратов**. Термин "наименьшие квадраты" означает, что все точки данных вокруг линии регрессии возводятся в квадрат, а затем складываются. В идеале, итоговая сумма должна быть как можно меньше, так как мы хотим минимизировать количество ошибок, или `наименьшие квадраты`.
1. **Величина, а не направление:** Мы хотим одинаково воспринимать ошибку -5 и +5. Квадрат превращает все значения в положительные.
Мы делаем это, потому что хотим смоделировать линию, которая имеет наименьшее суммарное расстояние от всех наших точек данных. Мы также возводим термины в квадрат перед их сложением, так как нас интересует их величина, а не направление.
2. **Штраф для выбросов:** Квадрат придаёт больший вес большим ошибкам, заставляя линию оставаться ближе к точкам, которые находятся далеко.
Затем мы суммируем все эти квадраты. Наша цель — найти такую линию, для которой эта сумма будет минимальной (самой маленькой возможной) — отсюда и название «наименьшие квадраты».
> **🧮 Покажите мне математику**
>
> Эта линия, называемая _линией наилучшего соответствия_, может быть выражена [уравнением](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
>
> Эта линия, называемая _линией наилучшего попадания_, может быть выражена [уравнением](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` — это "объясняющая переменная". `Y` — это "зависимая переменная". Наклон линии — это `b`, а`a` — это пересечение с осью Y, которое относится к значению `Y`, когда`X = 0`.
> `X` — это «объясняющая переменная». `Y` — «зависимая переменная». Наклон линии — `b`, а`a` — пересечение с осью Y, то есть значение `Y` при`X = 0`.
> Сначала вычислите наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper)
> Сначала вычисляем наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper)
>
> Другими словами, если обратиться к исходному вопросу о данных о тыквах: "предсказать цену тыквы за бушель по месяцам", `X` будет относиться к цене, а`Y` — к месяцу продажи.
> Другими словами, говоря о нашем исходном вопросе из данных о тыквах: "предсказать цену тыквы за бушель по месяцам", `X` будет ссылаться на цену, а`Y` — на месяц продажи.
> Вычислите значение Y. Если вы платите около $4, значит, это апрель! Инфографика от [Jen Looper](https://twitter.com/jenlooper)
> Вычислите значение Y. Если вы платите около $4, значит пора апрель! Инфографика от [Jen Looper](https://twitter.com/jenlooper)
>
> Математика, которая вычисляет линию, должна демонстрировать наклон линии, который также зависит от пересечения, или от того, где `Y` находится, когда `X = 0`.
> Математика, вычисляющая линию, должна демонстрировать наклон, который также зависит от пересечения, или где расположен `Y`, когда `X = 0`.
>
> Вы можете ознакомиться с методом вычисления этих значений на сайте [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Также посетите [этот калькулятор наименьших квадратов](https://www.mathsisfun.com/data/least-squares-calculator.html), чтобы увидеть, как значения чисел влияют на линию.
> Метод вычисления этих значений можно посмотреть на сайте [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Также посетите [калькулятор наименьших квадратов](https://www.mathsisfun.com/data/least-squares-calculator.html), чтобы увидеть, как значения чисел влияют на линию.
## Корреляция
Еще один термин, который важно понять, — это **коэффициент корреляции** между заданными переменными X и Y. Используя диаграмму рассеяния, вы можете быстро визуализировать этот коэффициент. Диаграмма с точками данных, расположенными в аккуратной линии, имеет высокую корреляцию, а диаграмма с точками данных, разбросанными повсюду между X и Y, имеет низкую корреляцию.
Еще один термин, который нужно понять — это **коэффициент корреляции** между заданными переменными X и Y. Используя диаграмму рассеяния, вы можете быстро визуализировать этот коэффициент. График с точками, разбросанными в аккуратной линии, имеет высокую корреляцию, а график с точками, разбросанными повсюду между X и Y — низкую корреляцию.
Хорошая модель линейной регрессии будет той, которая имеет высокий коэффициент корреляции (ближе к 1, чем к 0) при использовании метода наименьших квадратов с линией регрессии.
Хорошая модель линейной регрессии — это та, у которой высокий (ближе к 1, чем к 0) коэффициент корреляции при использовании метода наименьших квадратов с линией регрессии.
✅ Запустите ноутбук, сопровождающий этот урок, и посмотрите на диаграмму рассеяния "Месяц к цене". Кажется ли, что данные, связывающие месяц с ценой продаж тыкв, имеют высокую или низкую корреляцию, согласно вашему визуальному восприятию диаграммы рассеяния? Изменится ли это, если использовать более точную меру вместо `Месяц`, например, *день года* (т.е. количество дней с начала года)?
✅ Запустите ноутбук, сопровождающий этот урок, и посмотрите на диаграмму разброса «Месяц — цена». Кажется ли вам, что данные о зависимости Месяца от Цены для продаж тыкв имеют высокую или низкую корреляцию, исходя из вашего визуального восприятия диаграммы разброса? Изменится ли это, если использовать более точный показатель, например *день года* (то есть количество дней с начала года)?
Вприведенном ниже коде мы предполагаем, что мы очистили данные и получили датафрейм под названием `new_pumpkins`, похожий на следующий:
Вкоде ниже мы предполагаем, что данные очищены, и получен фрейм данных с названием `new_pumpkins`, похожий на следующий:
ID | Месяц | ДеньГода | Сорт | Город | Упаковка | Низкая цена | Высокая цена | Цена
> Код для очистки данных доступен в [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и вычислили столбец `DayOfYear`с использованием следующего выражения:
> Код для очистки данных доступен в [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear`с помощью следующего выражения:
Теперь, когда вы понимаете математику линейной регрессии, давайте создадим модель регрессии, чтобы выяснить, какой пакет тыкв будет иметь лучшие цены на тыквы. Кто-то, покупающий тыквы для праздничного тыквенного поля, может захотеть получить эту информацию, чтобы оптимизировать свои покупки пакетов тыкв для поля.
Теперь, когда у вас есть понимание математики, стоящей за линейной регрессией, давайте создадим регрессионную модель, чтобы проверить, можем ли мы предсказать, какой пакет тыкв будет иметь лучшие цены. Кто-то, покупающий тыквы для праздничного тыквенного участка, может захотеть иметь такую информацию, чтобы оптимизировать покупки пакетов для участка.
## Поиск корреляции
[](https://youtu.be/uoRq-lW2eQo "Машинное обучение для начинающих - Поиск корреляции: ключ к линейной регрессии")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткий видеообзор корреляции.
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор корреляции.
Из предыдущего урока вы, вероятно, видели, что средняя цена за разные месяцы выглядит следующим образом:
Из предыдущего урока вы, вероятно, видели, что средняя цена по месяцам выглядит так:
<imgalt="Средняя цена по месяцам"src="../../../../translated_images/ru/barchart.a833ea9194346d76.webp"width="50%"/>
Это предполагает, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии, чтобы предсказать связь между `Месяцем` и `Ценой`, или между `ДнемГода` и `Ценой`. Вот диаграмма рассеяния, показывающая последнюю связь:
Это предполагает, что существует некоторая корреляция, и мы можем попытаться обучить модель линейной регрессии, чтобы предсказать связь между `Month` и `Price`, или между `DayOfYear` и `Price`. Вот диаграмма разброса, показывающая вторую связь:
<imgalt="Диаграмма рассеяния: Цена vs День года" src="../../../../translated_images/ru/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Диаграмма разброса Цена против Дня года" src="../../../../translated_images/ru/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Давайте проверим наличие корреляциис помощью функции `corr`:
Давайте проверим корреляциюс помощью функции `corr`:
Кажется, что корреляция довольно мала, -0.15 для `Месяца` и -0.17 для `ДняГода`, но может быть другая важная связь. Похоже, что существуют разные кластеры цен, соответствующие различным сортам тыкв. Чтобы подтвердить эту гипотезу, давайте построим график, где каждая категория тыкв будет отображаться разным цветом. Передавая параметр `ax` в функцию построения диаграммы рассеяния, мы можем построить все точки на одном графике:
Похоже, что корреляция довольно низкая: -0.15 для `Month` и -0.17 для `DayOfMonth`, но возможно есть еще одна важная зависимость. Кажется, что существуют разные кластеры цен, соответствующие различным сортам тыкв. Чтобы подтвердить это предположение, давайте построим график для каждой категории тыкв разным цветом. Передавая параметр `ax` в функцию `scatter`, мы можем отобразить все точки на одном графике:
```python
ax=None
@ -128,42 +139,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Диаграмма рассеяния: Цена vs День года" src="../../../../translated_images/ru/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Диаграмма рассеяния Цена против Дня года с цветом" src="../../../../translated_images/ru/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Наше исследование предполагает, что сорт тыкв оказывает большее влияние на общую цену, чем фактическая дата продажи. Мы можем увидеть это на столбчатом графике:
Наше исследование указывает, что сорт тыкв оказывает большее влияние на цену, чем фактическая дата продажи. Это можно увидеть на столбчатой диаграмме:
<imgalt="Диаграмма рассеяния: Цена vs День года" src="../../../../translated_images/ru/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Диаграмма рассеяния Цена против Дня года для 'pie type'" src="../../../../translated_images/ru/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Если теперь рассчитать корреляцию между `Ценой` и `ДнемГода` с помощью функции `corr`, мы получим что-то около `-0.27`, что означает, что обучение предсказательной модели имеет смысл.
Если теперь вычислить корреляцию между `Price` и `DayOfYear` с помощью функции `corr`, мы получим что-то около `-0.27` — что означает, что обучение предсказательной модели имеет смысл.
> Перед обучением модели линейной регрессии важно убедиться, что наши данные чистые. Линейная регрессия плохо работает с пропущенными значениями, поэтому имеет смысл избавиться от всех пустых ячеек:
> Перед обучением модели линейной регрессии важно убедиться, что данные чисты. Линейная регрессия плохо работает с пропущенными значениями, поэтому разумно избавиться от всех пустых ячеек:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Другой подход — заполнить эти пустые значения средними значениями из соответствующего столбца.
Другой подход — заполнить пустые значения средними значениями по соответствующему столбцу.
## Простая линейная регрессия
[](https://youtu.be/e4c_UP2fSjg "Машинное обучение для начинающих - Линейная и полиномиальная регрессия с использованием Scikit-learn")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткий видеообзор линейной и полиномиальной регрессии.
> 🎥 Нажмите на изображение выше для краткого видеообзора линейной и полиномиальной регрессии.
Для обучения нашей модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**.
Для обучения модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
@ -171,31 +182,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Начнем с разделения входных значений (признаков) и ожидаемого результата (метки) на отдельные массивы numpy:
Начнем с разделения входных значений (признаков) и ожидаемого выходного значения (метки) в отдельные массивы numpy:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Обратите внимание, что нам пришлось выполнить `reshape` для входных данных, чтобы пакет линейной регрессии понял их правильно. Линейная регрессия ожидает 2D-массив в качестве входных данных, где каждая строка массива соответствует вектору входных признаков. В нашем случае, поскольку у нас есть только один вход, нам нужен массив с формой N×1, где N — размер набора данных.
> Обратите внимание, что нам пришлось выполнить `reshape` для входных данных, чтобы пакет Linear Regression корректно их понял. Линейная регрессия ожидает на вход 2D-массив, где каждая строка массива соответствует вектору входных признаков. В нашем случае, поскольку у нас только один вход, нам нужен массив формы N×1, где N — размер набора данных.
Затем нам нужно разделить данные на обучающий и тестовый наборы, чтобы мы могли проверить нашу модель после обучения:
Далее нужно разделить данные на обучающую и тестовую выборки, чтобы после обучения мы могли проверить модель:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Наконец, обучение самой модели линейной регрессии занимает всего две строки кода. Мы определяем объект `LinearRegression` и обучаем его на наших данныхс помощью метода `fit`:
Наконец, обучение самой модели линейной регрессии занимает всего две строки кода. Определяем объект `LinearRegression` и подгоняем его под наши данныес помощью метода `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Объект `LinearRegression` после выполнения метода `fit` содержит все коэффициенты регрессии, которые можно получить с помощью свойства`.coef_`. В нашем случае есть только один коэффициент, который должен быть около `-0.017`. Это означает, что цены, кажется, немного снижаютсясо временем, но не слишком сильно, примерно на 2 цента в день. Мы также можем получить точку пересечения регрессии с осью Y, используя `lin_reg.intercept_` — она будет около `21` в нашем случае, что указывает на цену в начале года.
Объект `LinearRegression` после выполнения метода `fit` содержит все коэффициенты регрессии, к которым можно получить доступ через свойство`.coef_`. В нашем случае есть только один коэффициент, который должен быть около `-0.017`. Это означает, что цены, похоже, немного падаютсо временем, но не слишком сильно, примерно на 2 цента в день. Также мы можем получить точку пересечения регрессии с осью Y с помощью `lin_reg.intercept_` — в нашем случае это будет около `21`, что указывает на цену в начале года.
Чтобы увидеть, насколько точна наша модель, мы можем предсказать цены на тестовом наборе данных, а затем измерить, насколько близки наши прогнозы к ожидаемым значениям. Это можно сделать с помощью метрики среднеквадратичной ошибки (MSE), которая представляет собой среднее всех квадратов разностей между ожидаемым и предсказанным значением.
Чтобы увидеть, насколько точна наша модель, мы можем предсказать цены на тестовом наборе данных, а затем измерить, насколько близки наши прогнозы к ожидаемым значениям. Это можно сделать с помощью метрики средней квадратичной ошибки (MSE), которая является средним всех квадратов разниц между ожидаемым и предсказанным значением.
```python
pred = lin_reg.predict(X_test)
@ -203,36 +214,37 @@ pred = lin_reg.predict(X_test)
Наша ошибка составляет около 2 пунктов, что примерно 17%. Не слишком хорошо. Еще один показатель качества модели — **коэффициент детерминации**, который можно получить следующим образом:
Наша ошибка кажется примерно равной 2 баллам, что составляет ~17%. Не очень хорошо. Еще одним показателем качества модели является **коэффициент детерминации**, который можно получить следующим образом:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Если значение равно 0, это означает, что модель не учитывает входные данные и действует как *худший линейный предсказатель*, который просто является средним значением результата. Значение 1 означает, что мы можем идеально предсказать все ожидаемые выходные данные. В нашем случае коэффициент составляет около 0.06, что довольно низко.
```
Если значение равно 0, это означает, что модель не учитывает входные данные и действует как *худший линейный предсказатель*, который просто возвращает среднее значение результата. Значение 1 означает, что мы можем идеально предсказать все ожидаемые выходы. В нашем случае коэффициент около 0.06, что довольно низко.
Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше понять, как работает регрессия в нашем случае:
Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше увидеть, как работает регрессия в нашем случае:
Другой тип линейной регрессии — это полиномиальная регрессия. Хотя иногда между переменными существует линейная зависимость — например, чем больше объем тыквы, тем выше цена — иногда эти зависимости нельзя изобразить в виде плоскости или прямой линии.
Другим типом линейной регрессии является полиномиальная регрессия. Хотя иногда существует линейная зависимость между переменными — чем больше объем тыквы, тем выше цена — иногда такие зависимости нельзя представить в виде плоскости или прямой линии.
✅ Вот [несколько примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, которые могут использовать полиномиальную регрессию.
✅ Вот [еще несколько примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, для которых может подойти полиномиальная регрессия
Посмотрите еще раз на зависимость между датой и ценой. Кажется ли, что этот график обязательно должен быть проанализирован прямой линией? Разве цены не могут колебаться? В этом случае можно попробовать полиномиальную регрессию.
Еще раз взгляните на зависимость между Датой и Ценой. Кажется ли этот диаграмма рассеяния такой, которую обязательно нужно анализировать прямой линией? Может ли цена колебаться? В этом случае вы можете попробовать полиномиальную регрессию.
✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов.
✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов
Полиномиальная регрессия создает кривую линию, чтобы лучше соответствовать нелинейным данным. В нашем случае, если мы включим квадратную переменную `DayOfYear` во входные данные, мы сможем подогнать наши данные под параболическую кривую, которая будет иметь минимум в определенный момент года.
Полиномиальная регрессия строит кривую, чтобы лучше подогнать нелинейные данные. В нашем случае, если мы добавим в входные данные переменную `DayOfYear` в квадрате, мы сможем аппроксимировать наши данные параболой, у которой будет минимум в определенной точке в течение года.
Scikit-learn включает удобный [API для создания конвейеров](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), чтобы объединить различные этапы обработки данных. **Конвейер** — это цепочка **оценщиков**. В нашем случае мы создадим конвейер, который сначала добавит полиномиальные признаки в нашу модель, а затем обучит регрессию:
Scikit-learn включает полезный [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для объединения разных этапов обработки данных. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавляет полиномиальные признаки в нашу модель, а затем обучает регрессию:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -241,62 +253,62 @@ from sklearn.pipeline import make_pipeline
Использование `PolynomialFeatures(2)` означает, что мы включим все полиномы второй степени из входных данных. В нашем случае это просто будет `DayOfYear`<sup>2</sup>, но если есть две входные переменные X и Y, это добавит X<sup>2</sup>, XY и Y<sup>2</sup>. Мы также можем использовать полиномы более высокой степени, если захотим.
Использование `PolynomialFeatures(2)` означает, что мы включаем все полиномы второй степени из входных данных. В нашем случае это просто `DayOfYear`<sup>2</sup>, но если есть две переменные X и Y, то это будет X<sup>2</sup>, XY и Y<sup>2</sup>. Мы также можем использовать полиномы более высокого порядка, если хотим.
Конвейеры можно использовать так же, как и оригинальный объект `LinearRegression`, то есть мы можем выполнить `fit` для конвейера, а затем использовать `predict`, чтобы получить результаты предсказания. Вот график, показывающий тестовые данные и аппроксимационную кривую:
Pipeline можно использовать так же, как и исходный объект `LinearRegression`, то есть мы можем `fit` pipeline, а затем использовать `predict` для получения результатов предсказания. Вот график, показывающий тестовые данные и аппроксимирующую кривую:
Используя полиномиальную регрессию, мы можем получить немного более низкий MSE и более высокий коэффициент детерминации, но не значительно. Нам нужно учитывать другие признаки!
Используя полиномиальную регрессию, мы можем получить слегка меньшую MSE и более высокий коэффициент детерминации, но не значительно. Нам нужно учитывать другие признаки!
> Вы можете заметить, что минимальные цены на тыквы наблюдаются примерно в период Хэллоуина. Как вы можете это объяснить?
> Вы можете заметить, что минимальные цены на тыквы наблюдаются примерно около Хэллоуина. Как вы это объясните?
🎃 Поздравляем, вы только что создали модель, которая может помочь предсказывать цену тыкв для пирогов. Вы, вероятно, можете повторить ту же процедуру для всех типов тыкв, но это было бы утомительно. Давайте теперь узнаем, как учитывать разновидности тыкв в нашей модели!
🎃 Поздравляем, вы только что создали модель, которая может помочь предсказывать цену пироговых тыкв. Вероятно, вы можете повторить ту же процедуру для всех видов тыкв, но это будет утомительно. Давайте теперь научимся учитывать сорт тыквы в нашей модели!
## Категориальные признаки
## Категориальные признаки
В идеальном мире мы хотим иметь возможность предсказывать цены для разных разновидностей тыкв, используя одну и ту же модель. Однако столбец `Variety` несколько отличается от таких столбцов, как `Month`, потому что он содержит нечисловые значения. Такие столбцы называются**категориальными**.
В идеальном мире мы хотим иметь возможность предсказывать цены для разных сортов тыкв, используя одну модель. Однако столбец `Variety` отличается от таких столбцов, как `Month`, потому что он содержит нечисловые значения. Такие столбцы называют **категориальными**.
[](https://youtu.be/DYGliioIAE0 "ML для начинающих — предсказания с категориальными признаками в линейной регрессии")
[](https://youtu.be/DYGliioIAE0 "ML для начинающих - Прогнозы с категориальными признаками через линейную регрессию")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткий видеообзор использования категориальных признаков.
> 🎥 Нажмите на изображение выше для короткого видеообзора по использованию категориальных признаков.
Здесь вы можете увидеть, как средняя цена зависит от разновидности:
Здесь вы видите, как средняя цена зависит от сорта:
<imgalt="Средняя цена по разновидности" src="../../../../translated_images/ru/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
<imgalt="Средняя цена по сортам" src="../../../../translated_images/ru/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Чтобы учитывать разновидность, сначала нужно преобразовать ее в числовую форму, или**закодировать**. Существует несколько способов сделать это:
Чтобы учесть сорт, сначала нужно преобразовать его в числовой формат, то есть**закодировать**. Существует несколько способов сделать это:
* Простое**числовое кодирование** создаст таблицу различных разновидностей, а затем заменит название разновидности индексом в этой таблице. Это не лучший вариант для линейной регрессии, потому что линейная регрессия учитывает фактическое числовое значение индекса и добавляет его к результату, умножая на некоторый коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейна, даже если мы убедимся, что индексы упорядочены каким-то определенным образом.
* **One-hot кодирование** заменит столбец `Variety` на 4 разных столбца, по одному для каждой разновидности. Каждый столбец будет содержать `1`, если соответствующая строка относится к данной разновидности, и `0` в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждой разновидности тыкв, отвечающих за "начальную цену" (или скорее "дополнительную цену") для этой конкретной разновидности.
* Простой **числовой кодировкой** построится таблица разных сортов, и затем имя сорта будет заменено индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия воспринимает числовое значение индекса напрямую и добавляет его к результату, умножая на коэффициент. В нашем случае зависимость между номером индекса и ценой явно нелинейна, даже если мы упорядочим индексы в каком-то определенном порядке.
* **One-hot кодирование** заменит столбец `Variety` на 4 отдельных столбца, по одному на каждый сорт. Каждый столбец будет содержать `1`, если соответствующая строка относится к данному сорту, и `0` иначе. Это означает, что в регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, ответственных за "стартовую цену" (или скорее "дополнительную цену") для конкретного сорта.
Код ниже показывает, как можно выполнить one-hot кодирование для разновидности:
Ниже показано, как можно закодировать сорт с помощью one-hot кодирования:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
```
ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
Чтобы обучить линейную регрессию, используя one-hot кодированную разновидность в качестве входных данных, нам просто нужно правильно инициализировать данные `X` и `y`:
Для обучения линейной регрессии с one-hot кодированным сортом в качестве входных данных, нам просто нужно правильно инициализировать данные `X` и `y`:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
```
Остальной код такой же, как тот, который мы использовали выше для обучения линейной регрессии. Если вы попробуете его, то увидите, что среднеквадратичная ошибка примерно такая же, но мы получаем гораздо более высокий коэффициент детерминации (~77%). Чтобы получить еще более точные предсказания, мы можем учитывать больше категориальных признаков, а также числовые признаки, такие как `Month` или `DayOfYear`. Чтобы получить один большой массив признаков, мы можем использовать `join`:
Остальная часть кода такая же, как и использованная выше для обучения линейной регрессии. Если попробовать, вы увидите, что средняя квадратичная ошибка примерно такая же, но мы получаем значительно более высокий коэффициент детерминации (~77%). Чтобы получить еще более точные предсказания, можно учитывать больше категориальных признаков, а также числовые признаки, такие как `Month` или `DayOfYear`. Чтобы получить один большой массив признаков, можно использовать `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -304,68 +316,70 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
```
Здесь мы также учитываем `City` и тип упаковки `Package`, что дает нам MSE 2.84 (10%) и коэффициент детерминации 0.94!
Здесь мы также учитываем `City` и тип `Package`, что дает нам MSE 2.84 (10%) и коэффициент детерминации 0.94!
## Собираем все вместе
## Итоговый сбор
Чтобы создать лучшую модель, мы можем использовать комбинированные данные (one-hot кодированные категориальные + числовые) из примера выше вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
Чтобы получить лучшую модель, мы можем использовать объединённые (one-hot кодированные категориальные + числовые) данные из приведенного примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
```python
# set up training data
# подготовить обучающие данные
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# make train-test split
# сделать разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
| Линейная регрессия со всеми признаками | 2.84 (10.5%) | 0.94 |
| Полиномиальная регрессия со всеми признаками | 2.23 (8.25%) | 0.97 |
🏆 Отличная работа! Вы создали четыре модели регрессии за один урок и улучшили качество модели до 97%. В последнем разделе о регрессии вы узнаете о логистической регрессии для определения категорий.
🏆 Отличная работа! Вы создали четыре модели регрессии за один урок и повысили качество модели до 97%. В заключительном разделе про регрессию вы узнаете о логистической регрессии для определения категорий.
---
## 🚀Задание
---
## 🚀Задание
Протестируйте несколько различных переменных в этом ноутбуке, чтобы увидеть, как корреляция влияет на точность модели.
Попробуйте проверить разные переменные в этом блокноте, чтобы понять, как корреляция влияет на точность модели.
## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/)
## [Викторина после урока](https://ff-quizzes.netlify.app/en/ml/)
## Обзор и самостоятельное изучение
## Обзор и самостоятельное изучение
В этом уроке мы изучили линейную регрессию. Существуют и другие важные типы регрессии. Прочитайте о методах Stepwise, Ridge, Lasso и Elasticnet. Хороший курс для изучения — [курс статистического обучения Стэнфорда](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
В этом уроке мы изучили линейную регрессию. Существует и другие важные типы регрессий. Ознакомьтесь с техниками пошаговой (Stepwise), Ridge, Lasso и Elasticnet регрессии. Хороший курс для изучения — [курс статистического обучения Стэнфорда](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
## Задание
## Домашнее задание
[Создайте модель](assignment.md)
[Построить модель](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.
Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному переводчику. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.
Во втором уроке по классификации вы изучите дополнительные методы классификации числовых данных. Вы также узнаете о последствиях выбора одного классификатора вместо другого.
Во втором уроке по классификации вы изучите дополнительные способы классификации числовых данных. Вы также узнаете о последствиях выбора одного классификатора вместо другого.
## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
## [Викторина перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
### Предварительные знания
### Предварительные требования
Мы предполагаем, что вы завершили предыдущие уроки и у вас есть очищенный набор данных в папке `data`под названием _cleaned_cuisines.csv_ в корневой папке этого курса из 4 уроков.
Мы предполагаем, что вы прошли предыдущие уроки и у вас есть очищенный набор данных в папке `data`с именем _cleaned_cuisines.csv_ в корне этой папки с 4 уроками.
### Подготовка
Мы загрузили ваш файл _notebook.ipynb_с очищенным набором данных и разделили его на датафреймы X и y, готовые для процесса построения модели.
Мы загрузили ваш файл _notebook.ipynb_с очищенным набором данных и разделили его на датафреймы X и y, готовые к процессу построения модели.
## Карта классификации
Ранее вы узнали о различных вариантах классификации данных, используя шпаргалку Microsoft. Scikit-learn предлагает похожую, но более детализированную шпаргалку, которая поможет сузить выбор оценщиков (другое название классификаторов):
Ранее вы узнали о различных вариантах классификации данных, используя шпаргалку Microsoft. Scikit-learn предлагает похожую, но более детальную шпаргалку, которая поможет сузить выбор оценщиков (другой термин для классификаторов):

> Совет: [посетите эту карту онлайн](https://scikit-learn.org/stable/tutorial/machine_learning_map/) и следуйте по пути, чтобы изучить документацию.

> Подсказка: [посетите эту карту онлайн](https://scikit-learn.org/stable/tutorial/machine_learning_map/) и переходите по пути, чтобы читать документацию.
### План
Эта карта очень полезна, если вы хорошо понимаете свои данные, так как вы можете "пройти" по её путям к решению:
Эта карта очень полезна, когда у вас есть четкое понимание ваших данных, поскольку вы можете «идти» по ее путям к принятию решения:
- У нас есть >50 образцов
- У нас более 50 образцов
- Мы хотим предсказать категорию
- У нас есть размеченные данные
- У нас менее 100K образцов
- У нас менее 100 тысяч образцов
- ✨ Мы можем выбрать Linear SVC
- Если это не сработает, так как у нас числовые данные:
- Если это не сработает, так как у нас числовые данные
- Мы можем попробовать ✨ KNeighbors Classifier
- Если это не сработает, попробуйте ✨ SVC и ✨ Ensemble Classifiers
Это очень полезный путь для следования.
## Упражнение - разделите данные
## Упражнение - разделение данных
Следуя этому пути, начнем с импорта необходимых библиотек.
Следуя этому пути, начнем с импорта нужных библиотек.
1. Импортируйте нужные библиотеки:
1. Импортируйте необходимые библиотеки:
```python
from sklearn.neighbors import KNeighborsClassifier
@ -50,17 +50,17 @@
import numpy as np
```
1. Разделите данные на тренировочные и тестовые:
1. Разделите ваши тренировочные и тестовые данные:
Кластеризация с использованием метода опорных векторов (SVC) является частью семейства методов машинного обучения Support-Vector Machines (SVM). В этом методе вы можете выбрать "ядро" для определения способа кластеризации меток. Параметр 'C' относится к "регуляризации", которая регулирует влияние параметров. Ядро может быть одним из [нескольких](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); здесь мы устанавливаем его как 'linear', чтобы использовать линейный SVC. По умолчанию вероятность установлена как 'false'; здесь мы устанавливаем её как 'true', чтобы получить оценки вероятности. Мы устанавливаем random state как '0', чтобы перемешать данные для получения вероятностей.
Support-Vector clustering (SVC) является представителем семейства методов машинного обучения Support-Vector machines (узнайте больше ниже). В этом методе вы можете выбрать «ядро» для определения того, как кластеризовать метки. Параметр «C» относится к «регуляризации», которая регулирует влияние параметров. Ядро может быть одним из [нескольких](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC); здесь мы установили его на 'linear', чтобы использовать линейный SVC. По умолчанию вероятность установлена в 'false'; здесь мы ставим ее в 'true' для получения оценок вероятности. Мы устанавливаем случайное состояние в '0' для перемешивания данных и получения вероятностей.
### Упражнение - примените Linear SVC
### Упражнение - примените линейный SVC
Начните с создания массива классификаторов. Вы будете постепенно добавлять в этот массив по мере тестирования.
2. Обучите вашу модель, используя Linear SVC, и выведите отчет:
2. Обучите свою модель с использованием Linear SVC и выведите отчет:
```python
n_classifiers = len(classifiers)
@ -107,13 +107,13 @@
## Классификатор K-Neighbors
K-Neighbors является частью семейства методов машинного обучения "соседи", которые могут использоваться как для контролируемого, так и для неконтролируемого обучения. В этом методе создается заранее определенное количество точек, и данные собираются вокруг этих точек таким образом, чтобы можно было предсказать обобщенные метки для данных.
K-Neighbors принадлежит к семейству методов «neighbors» машинного обучения, которые можно использовать как для контролируемого, так и для неконтролируемого обучения. В этом методе создается заранее определенное количество точек, и данные собираются вокруг этих точек так, чтобы можно было предсказывать обобщенные метки для данных.
Предыдущий классификатор был хорош и хорошо работал с данными, но, возможно, мы можем добиться лучшей точности. Попробуйте классификатор K-Neighbors.
Предыдущий классификатор был хорош и хорошо работал с данными, но возможно, мы можем получить лучшую точность. Попробуйте классификатор K-Neighbors.
1. Добавьте строку в массив классификаторов (добавьте запятую после элемента Linear SVC):
1. Добавьте строку в ваш массив классификаторов (добавьте запятую после элемента Linear SVC):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -136,11 +136,11 @@ K-Neighbors является частью семейства методов ма
weighted avg 0.76 0.74 0.74 1199
```
✅ Узнайте больше о [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
✅ Узнайте о [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors)
## Классификатор Support Vector
Классификаторы Support Vector являются частью семейства методов машинного обучения [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine), которые используются для задач классификации и регрессии. SVM "отображают обучающие примеры в точки в пространстве", чтобы максимизировать расстояние между двумя категориями. Последующие данные отображаются в этом пространстве, чтобы предсказать их категорию.
Классификаторы Support-Vector относятся к семейству методов [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) для задач классификации и регрессии. SVM «отображает тренировочные примеры в точки в пространстве» для максимизации расстояния между двумя категориями. Последующие данные отображаются в это пространство, чтобы предсказать их категорию.
### Упражнение - примените классификатор Support Vector
@ -169,11 +169,11 @@ K-Neighbors является частью семейства методов ма
weighted avg 0.84 0.83 0.83 1199
```
✅ Узнайте больше о [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
✅ Узнайте о [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm)
## Ансамблевые классификаторы
Давайте пройдем путь до самого конца, даже если предыдущий тест был довольно хорош. Попробуем некоторые ансамблевые классификаторы, в частности Random Forest и AdaBoost:
Давайте пройдем путь до самого конца, хотя предыдущий тест был довольно хорошим. Попробуем «Ансамблевые классификаторы», а именно Random Forest и AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -210,31 +210,33 @@ Accuracy (train) for ADA: 72.4%
weighted avg 0.73 0.72 0.72 1199
```
✅ Узнайте больше о [Ансамблевых классификаторах](https://scikit-learn.org/stable/modules/ensemble.html)
✅ Узнайте об [Ансамблевых классификаторах](https://scikit-learn.org/stable/modules/ensemble.html)
Этот метод машинного обучения "объединяет предсказания нескольких базовых оценщиков", чтобы улучшить качество модели. В нашем примере мы использовали Random Trees и AdaBoost.
Этот метод машинного обучения «комбинирует предсказания нескольких базовых оценщиков», чтобы улучшить качество модели. В нашем примере мы использовали случайные деревья и AdaBoost.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), метод усреднения, строит "лес" из "деревьев решений", насыщенных случайностью, чтобы избежать переобучения. Параметр n_estimators устанавливается как количество деревьев.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), метод усреднения, строит «лес» из «решающих деревьев», наполненный случайностью, чтобы избежать переобучения. Параметр n_estimators установлен на количество деревьев.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) обучает классификатор на наборе данных, а затем обучает копии этого классификатора на том же наборе данных. Он фокусируется на весах неправильно классифицированных элементов и корректирует подгонку для следующего классификатора, чтобы исправить ошибки.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) подгоняет классификатор к набору данных, а затем снова подгоняет копии этого классификатора к тому же набору данных. Он фокусируется на весах неправильно классифицированных объектов и корректирует подгонку для следующего классификатора, чтобы исправить ошибки.
---
## 🚀Задача
## 🚀Вызов
У каждого из этих методов есть множество параметров, которые можно настроить. Изучите параметры по умолчанию для каждого метода и подумайте, что изменение этих параметров может означать для качества модели.
Каждая из этих техник имеет множество параметров, которые вы можете настроить. Изучите параметры по умолчанию каждого и подумайте, что изменение этих параметров будет означать для качества модели.
## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/)
## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/)
## Обзор и самостоятельное изучение
## Обзор и самостоятельное обучение
В этих уроках много терминологии, поэтому уделите минуту, чтобы изучить [этот список](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) полезных терминов!
В этих уроках много терминов, поэтому найдите минуту, чтобы просмотреть [этот список](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) полезной терминологии!
## Задание
## Задание
[Игра с параметрами](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Отказ от ответственности**:
Этот документ был переведен с использованием сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.
Этот документ был переведен с использованием сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, пожалуйста, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
"\n---\n\n**Отказ от ответственности**: \nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на егородном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Отказ от ответственности**: \nДанный документ был переведен с помощью автоматического переводческого сервиса [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, пожалуйста, учтите, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или искажения смысла, возникшие в результате использования данного перевода.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
"\n---\n\n**Отказ от ответственности**:\nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ наего исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Отказ от ответственности**:\nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
> Этот репозиторий включает более 50 языковых переводов, что значительно увеличивает размер загрузки. Чтобы клонировать без переводов, используйте sparse checkout:
>
> В этом репозитории содержится более 50 переводов на разные языки, что значительно увеличивает размер скачивания. Чтобы клонировать без переводов, используйте разреженную загрузку:
Сейчас у нас в Discord проходит серия занятий Learn with AI, узнайте больше и присоединяйтесь к нам на [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы получите советы и подсказки по использованию GitHub Copilot для Data Science.
У нас проходит серия занятий в Discord по обучению с AI, узнайте подробнее и присоединяйтесь к нам на [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы получите советы и рекомендации по использованию GitHub Copilot для Data Science.


# Машинное обучение для начинающих - Учебная программа
# Машинное обучение для начинающих — Учебная программа
> 🌍 Путешествуйте по миру, изучая Машинное обучение через культуры мира 🌍
> 🌍 Путешествуйте по миру, изучая Машинное Обучение через культуры разных народов 🌍
Cloud Advocates в Microsoft рады предложить 12-недельную программу из 26 уроков, полностью посвящённую **машинному обучению**. В рамках этой программы вы познакомитесь с так называемым **классическим машинным обучением**, используя в основном библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашей программе [AI для начинающих](https://aka.ms/ai4beginners). Также совмещайте эти уроки с нашей программой ['Data Science для начинающих'](https://aka.ms/ds4beginners)!
Облачные активисты Microsoft рады предложить 12-недельную программу из 26 уроков, полностью посвящённых **Машинному Обучению**. В этой программе вы познакомитесь с тем, что иногда называют **классическим машинным обучением**, используя преимущественно библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашей программе [AI for Beginners' curriculum](https://aka.ms/ai4beginners). Совместите эти уроки с нашей программой ['Data Science for Beginners' curriculum](https://aka.ms/ds4beginners) для ещё лучшего понимания!
Путешествуйте вместе с нами по миру, применяя классические методы к данным из разных регионов. Каждый урок включает контрольные тесты до и после занятия, письменные инструкции для выполнения урока, решение, задание и многое другое. Наша проектная методика обучения позволяет учиться путем создания проектов — проверенный способ лучшего усвоения новых знаний.
Путешествуйте с нами по всему миру, применяя классические методы к данным из различных уголков планеты. Каждый урок включает предварительный и итоговый тесты, письменные инструкции по выполнению, решение, задание и многое другое. Наша проектно-ориентированная методика обучения позволяет учиться через практику, что доказано способствует лучшему усвоению новых навыков.
**✍️ Искренняя благодарность нашим авторам** Джен Лупер, Стивен Хауэлл, Франческа Лаццери, Томоми Имура, Кэсси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукерджи, Орнелла Алтунян, Рут Якобу и Эми Бойд
**✍️ Сердечная благодарность нашим авторам** Джен Лупер, Стивен Хауэлл, Франческа Лаззери, Томоми Имура, Кэсси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукхерджи, Орнелла Алтунян, Рут Якобу и Эми Бойд
**🎨 Благодарность также нашим иллюстраторам** Томоми Имура, Дасани Мадипалли и Джен Лупер
**🎨 Спасибо также нашим иллюстраторам** Томоми Имура, Дасани Мадипалли и Джен Лупер
**🙏 Особая благодарность 🙏 авторам, рецензентам и участникам из Microsoft Student Ambassador**, в частности Ришиту Дагли, Мухаммаду Сакибу Хану Инану, Рохану Раджу, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуиле и Снигдхе Агарвал
**🙏 Особая благодарность 🙏 нашим студентам-послам Microsoft, авторам, рецензентам и контрибьюторам**, в частности Ришиту Дагли, Мухаммаду Сакибу Хану Инану, Рохану Раджу, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуиле и Снигдхе Агарвал
**🤩 Дополнительная благодарность студентам Microsoft Ambassadors Эрику Ванджау, Джаслин Сонди и Видуши Гупте за уроки на R!**
**🤩 Дополнительная благодарность студентам-послам Microsoft Эрику Ванжау, Джаслин Сонди и Видущи Гупте за наши уроки на R!**
# Начало работы
Выполните следующие шаги:
1. **Создайте форк репозитория**: Нажмите кнопку "Fork" в правом верхнем углу этой страницы.
1. **Создайте форк репозитория**: Нажмите кнопку "Fork" в верхнем правом углу этой страницы.
> [найдите все дополнительные материалы для этого курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Нужна помощь?** Ознакомьтесь с нашим [руководством по устранению неполадок](TROUBLESHOOTING.md) для решения распространенных проблем с установкой, настройкой и запуском уроков.
> [Все дополнительные ресурсы по этому курсу доступны в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Нужна помощь?** Ознакомьтесь с нашим [Руководством по решению проблем](TROUBLESHOOTING.md) для устранения распространённых проблем с установкой, настройкой и запуском уроков.
**[Студенты](https://aka.ms/student-page)**, чтобы использовать эту программу, создайте форк всего репозитория в свой аккаунт GitHub и выполняйте упражнения самостоятельно или в группе:
**[Студенты](https://aka.ms/student-page)**, для использования этой программы создайте форк всего репозитория в вашей учётной записи GitHub и выполняйте задания самостоятельно или в группе:
- Начинайте сконтрольного теста перед лекцией.
- Читайте лекцию и выполняйте задания, делая паузы и обдумывая вопросы для самопроверки.
- Старайтесь создавать проекты, понимая уроки, а не просто копируя код решения; тем не менее, код решений доступен в папках `/solution` в каждом уроке, ориентированном на проекты.
- Пройдите тест после лекции.
- Выполните вызов.
- Выполните задание.
- После завершения группы уроков посетите [Дискуссионную доску](https://github.com/microsoft/ML-For-Beginners/discussions) и «учитесь вслух», заполнив соответствующую рубрику PAT. ‘PAT’ (Progress Assessment Tool) — это инструмент оценки прогресса, который вы заполняете для углубления обучения. Также вы можете реагировать на PAT других участников, чтобы учиться вместе.
- Начинайте спредварительного теста.
- Читайте лекцию и выполняйте задания, делая паузы и размышляя на каждом контрольном вопросе.
- Старайтесь создавать проекты, осмысливая уроки, а не просто запускайте готовый код; однако решения доступны в папках `/solution` в каждом уроке, ориентированном на проект.
- Пройдите итоговый тест.
- Выполните вызов (challenge).
- Выполните домашнее задание.
- По завершении группы уроков посетите [Доску обсуждений](https://github.com/microsoft/ML-For-Beginners/discussions) и «учитесь вслух», заполняя соответствующую шкалу PAT. PAT — это инструмент оценки прогресса, который вы заполняете для повышения вашего обучения. Вы также можете реагировать на PAT других, чтобы учиться вместе.
> Для дальнейшего изучения рекомендуем пройти эти [модули и учебные пути Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
> Для дальнейшего обучения рекомендуем пройти эти [модули и пути обучения Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Учителя**, мы подготовили [несколько рекомендаций](for-teachers.md) по использованию этой программы.
**Преподаватели**, мы включили [некоторые рекомендации](for-teachers.md) по использованию этой программы.
---
## Видеообзоры
## Видео-разборы
Некоторые уроки доступны в формате коротких видео. Вы можете найти все они прямо в уроках или на [плейлисте ML for Beginners на канале Microsoft Developer в YouTube](https://aka.ms/ml-beginners-videos), кликнув на изображение ниже.
Некоторые уроки доступны в виде коротких видео. Все они встроены в уроки или доступны на [плейлисте ML for Beginners на канале Microsoft Developer в YouTube](https://aka.ms/ml-beginners-videos), нажмите на изображение ниже.
[](https://aka.ms/ml-beginners-videos)
> 🎥 Кликните на изображение выше, чтобы посмотреть видео о проекте и людях, которые его создали!
> 🎥 Нажмите на изображение выше, чтобы посмотреть видео о проекте и людях, которые его создали!
---
## Педагогика
При создании этой программы мы выбрали два педагогических принципа: обеспечить практическую **проектную направленность** и включить **частые тесты**. Кроме того, программа имеет общую **тематику** для создания целостности.
При создании этой программы мы выбрали два педагогических принципа: сделать её практической и **ориентированной на проекты** и добавить **частые тесты**. Кроме того, у программы общая **тема**, что придаёт ей целостность.
Путем согласования контента с проектами процесс становится более увлекательным для студентов, а запоминание понятий улучшается. Низкопороговый тест перед занятием мотивирует студента изучать тему, а второй тест после занятия гарантирует лучшее усвоение. Программа спроектирована гибко и интересно, её можно проходить целиком или частично. Проекты начинаются с простых и постепенно усложняются к концу 12-недельного цикла. В программу также включён послесловие о реальных применениях МО, которое можно использовать в качестве дополнительного задания или основы для обсуждения.
Обеспечение связи содержания с проектами делает процесс обучения более увлекательным для студентов и улучшает усвоение материала. Кроме того, тест с низкими ставками перед занятием задаёт студенту настрой на изучение темы, а итоговый тест после занятия помогает закрепить знания. Эта программа разработана так, чтобы быть гибкой и увлекательной, и её можно проходить полностью или частично. Проекты начинаются с простого уровня и к концу 12-недельного цикла становятся более сложными. В программу включён также послесловие о реальных применениях машинного обучения, которое может использоваться в качестве дополнительного материала или основы для обсуждения.
> Ознакомьтесь с нашими [Кодексом поведения](CODE_OF_CONDUCT.md), [Правилами участия](CONTRIBUTING.md), [Правилами перевода](TRANSLATIONS.md) и [руководством по устранению неполадок](TROUBLESHOOTING.md). Мы рады вашему конструктивному отзыву!
> Ознакомьтесь с нашими руководствами по [Кодексу поведения](CODE_OF_CONDUCT.md), [Содействию](CONTRIBUTING.md), [Переводам](TRANSLATIONS.md), и [Решению проблем](TROUBLESHOOTING.md). Мы приветствуем ваши конструктивные отзывы!
## Каждый урок включает
- необязательный скетчнот
- необязательное дополнительное видео
- видеообзор (только некоторые уроки)
- [тест для разминки перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
- опциональная заметка-макет (sketchnote)
- опциональное дополнительное видео
- видео-прохождение (только некоторые уроки)
- [разминка к лекции (предварительный тест)](https://ff-quizzes.netlify.app/en/ml/)
- письменный урок
- для проектных уроков — пошаговые инструкции по созданию проекта
- для проектно-ориентированных уроков — пошаговые инструкции по созданию проекта
- контрольные вопросы
- вызов
- вызов (challenge)
- дополнительное чтение
- задание
- [тест после лекции](https://ff-quizzes.netlify.app/en/ml/)
> **Примечание о языках**: Эти уроки в основном написаны на Python, но многие также доступны на R. Чтобы выполнить урок на R, перейдите в папку `/solution` и найдите уроки на R. Они имеют расширение .rmd, что означает **R Markdown** — формат, который включает в себя «кодовые блоки» (на R или других языках) и заголовок YAML (определяющий форматирование вывода, например PDF) в документе Markdown. Таким образом, это отличный инструмент для создания материалов по data science, поскольку позволяет объединить код, его результаты и ваши мысли в одном документе Markdown. Кроме того, документы R Markdown можно выводить в форматы PDF, HTML или Word.
> **Примечание о викторинах**: Все викторины содержатся в папке [Quiz App folder](../../quiz-app), всего 52 викторины по три вопроса каждая. Они связаны с уроками, но приложение для викторин можно запустить локально; следуйте инструкциям в папке `quiz-app` для локального хостинга или развертывания в Azure.
| Номер урока | Тема | Группа уроков | Цели обучения | Связанный урок | Автор |
| 01 | Введение в машинное обучение | [Introduction](1-Introduction/README.md) | Изучить основные концепции машинного обучения | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | История машинного обучения | [Introduction](1-Introduction/README.md) | Изучить историю данной области | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Справедливость и машинное обучение | [Introduction](1-Introduction/README.md) | Какие философские вопросы справедливости должны учитывать студенты при создании и применении моделей машинного обучения? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Методы машинного обучения | [Introduction](1-Introduction/README.md) | Какие методы используют исследователи машинного обучения для создания моделей? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | Введение в регрессию | [Regression](2-Regression/README.md) | Начать работу с Python и Scikit-learn для моделей регрессии | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Цены на тыквы в Северной Америке 🎃 | [Regression](2-Regression/README.md) | Визуализировать и очистить данные для подготовки к машинному обучению | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Цены на тыквы в Северной Америке 🎃 | [Regression](2-Regression/README.md) | Создать модели линейной и полиномиальной регрессии | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | Цены на тыквы в Северной Америке 🎃 | [Regression](2-Regression/README.md) | Построить модель логистической регрессии | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Веб-приложение 🔌 | [Web App](3-Web-App/README.md) | Создать веб-приложение для использования обученной модели | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Введение в классификацию | [Classification](4-Classification/README.md) | Очистить, подготовить и визуализировать данные; введение в классификацию | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | Вкусные азиатские и индийские кухни 🍜 | [Classification](4-Classification/README.md) | Введение в классификаторы | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | Вкусные азиатские и индийские кухни 🍜 | [Classification](4-Classification/README.md) | Дополнительные классификаторы | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | Вкусные азиатские и индийские кухни 🍜 | [Classification](4-Classification/README.md) | Построить веб-приложение рекомендации с использованием вашей модели | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Введение в кластеризацию | [Clustering](5-Clustering/README.md) | Очистить, подготовить и визуализировать данные; введение в кластеризацию | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Исследование музыкальных предпочтений в Нигерии 🎧 | [Clustering](5-Clustering/README.md) | Изучить метод кластеризации K-Means | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Введение в обработку естественного языка ☕️ | [Natural language processing](6-NLP/README.md) | Изучить основы НЛП, создав простой бот | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Общие задачи НЛП ☕️ | [Natural language processing](6-NLP/README.md) | Углубить знания о НЛП, изучив основные задачи при работе с языковыми структурами | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Перевод и анализ тональности ♥️ | [Natural language processing](6-NLP/README.md) | Перевод и анализ тональности на примере Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Романтические отели Европы ♥️ | [Natural language processing](6-NLP/README.md) | Анализ тональности на основе отзывов об отелях 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Романтические отели Европы ♥️ | [Natural language processing](6-NLP/README.md) | Анализ тональности на основе отзывов об отелях 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 22 | ⚡️ Мировое потребление электроэнергии ⚡️ - прогнозирование с ARIMA | [Time series](7-TimeSeries/README.md) | Прогнозирование временных рядов с помощью ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Мировое потребление электроэнергии ⚡️ - прогнозирование с SVR | [Time series](7-TimeSeries/README.md) | Прогнозирование временных рядов с помощью регрессии опорных векторов (SVR) | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Введение в обучение с подкреплением | [Reinforcement learning](8-Reinforcement/README.md) | Введение в обучение с подкреплением с использованием Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Помогите Питеру избежать волка! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Обучение с подкреплением с использованием Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Постскрипт | Сценарии и приложения машинного обучения в реальности | [ML in the Wild](9-Real-World/README.md) | Интересные и показательные реальные применения классического машинного обучения | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Постскрипт | Отладка моделей машинного обучения с помощью RAI | [ML in the Wild](9-Real-World/README.md) | Отладка моделей машинного обучения с использованием панели Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
- [итоговый тест к лекции](https://ff-quizzes.netlify.app/en/ml/)
> **Примечание о языках**: Эти уроки в основном написаны на Python, но многие также доступны на R. Чтобы пройти урок на R, перейдите в папку `/solution` и найдите уроки на R. Они имеют расширение .rmd, что представляет собой **R Markdown** файл, который можно просто определить как встраивание `кодовых блоков` (R или других языков) и `YAML заголовка` (который управляет форматированием вывода, например PDF) в `Markdown документ`. Таким образом, он служит примерной рамочной системой для написания документов в области науки о данных, поскольку позволяет сочетать ваш код, его вывод и ваши мысли, позволяя записывать их в Markdown. Более того, документы R Markdown могут быть преобразованы в форматы вывода, такие как PDF, HTML или Word.
> **Примечание о викторинах**: Все викторины содержатся в [папке с приложением викторины](../../quiz-app), всего 52 викторины по три вопроса в каждой. Они связаны изнутри уроков, но приложение для викторин можно запускать локально; следуйте инструкциям в папке `quiz-app` для локального хостинга или развертывания в Azure.
| Номер урока | Тема | Группа уроков | Учебные цели | Связанный урок | Автор |
| 01 | Введение в машинное обучение | [Введение](1-Introduction/README.md) | Изучить базовые концепции машинного обучения | [Урок](1-Introduction/1-intro-to-ML/README.md) | Мухаммад |
| 02 | История машинного обучения | [Введение](1-Introduction/README.md) | Изучить исторические основы этой области | [Урок](1-Introduction/2-history-of-ML/README.md) | Джен и Эми |
| 03 | Справедливость и машинное обучение | [Введение](1-Introduction/README.md) | Какие философские вопросыо справедливости должны учитывать студенты при создании и применении моделей МЛ? | [Урок](1-Introduction/3-fairness/README.md) | Томоми |
| 04 | Техники для машинного обучения | [Введение](1-Introduction/README.md) | Какие техники используют исследователи МЛ для построения моделей? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Крис и Джен |
| 05 | Введение в регрессию | [Регрессия](2-Regression/README.md) | Начать работу с Python и Scikit-learn для моделей регрессии | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Джен • Эрик Ванджау |
| 06 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Визуализировать и очистить данные для подготовки к МЛ | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Джен • Эрик Ванджау |
| 07 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Построить линейные и полиномиальные модели регрессии | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Джен и Дмитрий • Эрик Ванджау |
| 08 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Построить модель логистической регрессии | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Джен • Эрик Ванджау |
| 09 | Веб-приложение 🔌 | [Веб-приложение](3-Web-App/README.md) | Построить веб-приложение для использования обученной модели | [Python](3-Web-App/1-Web-App/README.md) | Джен |
| 10 | Введение в классификацию | [Классификация](4-Classification/README.md) | Очистить, подготовить и визуализировать данные; введение в классификацию | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Джен и Кэсси • Эрик Ванджау |
| 11 | Вкусные азиатские и индийские кухни 🍜 | [Классификация](4-Classification/README.md) | Введение в классификаторы | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Джен и Кэсси • Эрик Ванджау |
| 12 | Вкусные азиатские и индийские кухни 🍜 | [Классификация](4-Classification/README.md) | Дополнительные классификаторы | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Джен и Кэсси • Эрик Ванджау |
| 13 | Вкусные азиатские и индийские кухни 🍜 | [Классификация](4-Classification/README.md) | Построить рекомендательское веб-приложение с использованием модели | [Python](4-Classification/4-Applied/README.md) | Джен |
| 14 | Введение в кластеризацию | [Кластеризация](5-Clustering/README.md) | Очистить, подготовить и визуализировать данные; введение в кластеризацию | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Джен • Эрик Ванджау |
| 15 | Исследование музыкальных вкусов Нигерии 🎧 | [Кластеризация](5-Clustering/README.md) | Исследовать метод кластеризации K-средних | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Джен • Эрик Ванджау |
| 16 | Введение в обработку естественного языка ☕️ | [Обработка естественного языка](6-NLP/README.md) | Изучить основы НЛП, построив простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Стивен |
| 17 | Общие задачи НЛП ☕️ | [Обработка естественного языка](6-NLP/README.md) | Углубить знания НЛП, изучив общие задачи при работе с языковыми структурами | [Python](6-NLP/2-Tasks/README.md) | Стивен |
| 18 | Перевод и анализ настроений ♥️ | [Обработка естественного языка](6-NLP/README.md) | Перевод и анализ настроений на примере Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Стивен |
| 19 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений на основе отзывов об отелях 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Стивен |
| 20 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений на основе отзывов об отелях 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Стивен |
| 22 | ⚡️ Потребление электроэнергии в мире ⚡️ - прогнозирование ARIMA | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов с использованием ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Франческа |
| 23 | ⚡️ Потребление электроэнергии в мире ⚡️ - прогнозирование SVR | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов с помощью регрессии опорных векторов | [Python](7-TimeSeries/3-SVR/README.md) | Анирбан |
| 24 | Введение в обучение с подкреплением | [Обучение с подкреплением](8-Reinforcement/README.md) | Введение в обучение с подкреплением с использованием Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Дмитрий |
| 25 | Помогите Питеру избежать волка! 🐺 | [Обучение с подкреплением](8-Reinforcement/README.md) | Обучение с подкреплением в Gym | [Python](8-Reinforcement/2-Gym/README.md) | Дмитрий |
| Постскрипт | Практические сценарии и применения МЛ | [МЛ в реальной жизни](9-Real-World/README.md) | Интересные и наглядные реальные применения классического машинного обучения | [Урок](9-Real-World/1-Applications/README.md) | Команда |
| Постскрипт | Отладка моделей в МЛ с использованием RAI | [МЛ в реальной жизни](9-Real-World/README.md) | Отладка моделей машинного обучения с использованием панелей Responsible AI | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Рут Якобу |
> [найдите все дополнительные ресурсы для этого курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Оффлайндоступ
## Оффлайн-доступ
Вы можете использовать эту документацию оффлайн, используя [Docsify](https://docsify.js.org/#/). Форкните этот репозиторий, [установите Docsify](https://docsify.js.org/#/quickstart) на вашем устройстве и в корневой папке репозитория выполните команду `docsify serve`. Веб-сайт будет доступен по адресу localhost:3000.
Вы можете запускать эту документацию оффлайн, используя [Docsify](https://docsify.js.org/#/). Сделайте форк этого репозитория, [установите Docsify](https://docsify.js.org/#/quickstart) на своей локальной машине, затем в корневой папке репозитория введите `docsify serve`. Сайт будет запущен на порту 3000 на вашем локальном хосте: `localhost:3000`.
## PDF
## PDFs
Найдите PDF версии учебного плана с ссылками [здесь](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Найдите PDF учебного плана с ссылками [здесь](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Другие курсы
Наша команда выпускает и другие курсы! Ознакомьтесь с:
Наша команда выпускает и другие курсы! Посмотрите:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Серия по генеративному ИИ
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Серия Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Если вы застряли или у вас есть вопросы о создании AI-приложений. Присоединяйтесь к другим учащимся и опытным разработчикам в обсуждениях оMCP. Это поддерживающее сообщество, где вопросы приветствуются, а знания свободно распространяются.
Если вы застряли или у вас есть вопросы по созданию ИИ-приложений. Присоединяйтесь к другим ученикам и опытным разработчикам в обсуждениях MCP. Это поддерживающее сообщество, где вопросы приветствуются, а знания свободно делятся.
- Просматривайте ноутбуки после каждого урока для лучшего понимания.
- Практикуйтесь самостоятельно реализовывать алгоритмы.
- Исследуйте реальные наборы данных с использованием изученных концепций.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Отказ от ответственности**:
Этот документ был переведен сиспользованием сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, будьте предупреждены, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для важной информации рекомендуется профессиональный перевод человеком. Мы не несём ответственности за любые недоразумения или ошибки в интерпретации, возникшие в результате использования данного перевода.
**Отказ от ответственности**:
Этот документ был переведен спомощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.