> ### [هذا الدرس متوفر أيضًا بلغة R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### المقدمة
حتى الآن، لقد استكشفت ما هو الانحدار باستخدام بيانات عينة جمعت من مجموعة بيانات تسعير القرع التي سنستخدمها طوال هذا الدرس. كما قمت بتصويرها باستخدام Matplotlib.
حتى الآن، استكشفت ما هو الانحدار باستخدام بيانات عينة تم جمعها من مجموعة بيانات تسعير اليقطين التي سنستخدمها طوال هذا الدرس. وقد قمت أيضًا بتصويرها باستخدام Matplotlib.
الآن أنت مستعد للتعمق أكثر في الانحدار لتعلم الآلة. بينما يتيح التصوير فهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. يتم تدريب النماذج على بيانات تاريخية لالتقاط الاعتمادات ضمن البيانات تلقائياً، وتتيح لك التنبؤ بالنتائج لبيانات جديدة، لم يسبق للنموذج رؤيتها من قبل.
الآن أنت مستعد للتعمق أكثر في الانحدار لتعلم الآلة. بينما يسمح التصوير لفهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. تُدرَّب النماذج على بيانات تاريخية لالتقاط التبعيات تلقائيًا، وتتيح لك التنبؤ بالنتائج لبيانات جديدة لم يسبق للنموذج رؤيتها.
في هذا الدرس، ستتعلم المزيد عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و _الانحدار كثير الحدود_، جنبًا إلى جنب مع بعض الرياضيات التي تقوم عليها هذه التقنيات. تلك النماذج ستتيح لنا التنبؤ بأسعار القرع اعتمادًا على بيانات مختلفة.
في هذا الدرس، ستتعلم أكثر عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و_الانحدار المتعدد الحدود_، بالإضافة إلى بعض الأسس الرياضية لهذه التقنيات. هذه النماذج ستسمح لنا بالتنبؤ بأسعار اليقطين بناءً على بيانات الإدخال المختلفة.
[](https://youtu.be/CRxFT8oTDMg "تعلم الآلة للمبتدئين - فهم الانحدار الخطي")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الانحدار الخطي.
> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي.
> طوال هذا المنهج، نفترض معرفة دنيا بالرياضيات، ونسعى لجعلها في متناول الطلاب القادمين من مجالات أخرى، لذا راقب الملاحظات، ونداءات 🧮، والرسوم البيانية، وأدوات التعلم الأخرى لمساعدتك على الفهم.
> طوال هذا المنهج، نفترض معرفة رياضية بسيطة، ونسعى لجعلها متاحة للطلاب القادمين من مجالات أخرى، لذا تابع الملاحظات، 🧮 الإشارات، الرسوم التوضيحية، وأدوات التعلم الأخرى للمساعدة في الفهم.
### المتطلبات السابقة
يجب أن تكون الآن على دراية بهيكل بيانات القرع التي نفحصها. يمكنك العثور عليها محملة مسبقًا ومنقحة في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يتم عرض سعر القرع لكل بوشل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه الدفاتر في النوى داخل Visual Studio Code.
يجب أن تكون على دراية الآن ببنية بيانات اليقطين التي نقوم بفحصها. يمكنك العثور عليها محملة ومُنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يظهر سعر اليقطين لكل سطل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه الدفاتر في بيئات التنفيذ داخل Visual Studio Code.
### التحضير
كمذكرة، تقوم بتحميل هذه البيانات لكي تطرح عليها أسئلة.
كتذكير، أنت تقوم بتحميل هذه البيانات لطرح أسئلة عليها.
- متى يكون أفضل وقت لشراء القرع؟
- ما السعر الذي يمكنني توقعه لصندوق قرع صغير؟
- هل يجب أن أشتريه في سلال نصف بوشل أم في صندوق 1 1/9 بوشل؟
لنستمر في التعمق في هذه البيانات.
- متى هو أفضل وقت لشراء اليقطين؟
- ما السعر الذي يمكنني توقعه لحالة من اليقطين الصغير الحجم؟
- هل يجب علي شراؤها في سلال نصف السطل أم عبر صندوق سطل وربع السطل؟
لنواصل الغوص في هذه البيانات.
في الدرس السابق، قمت بإنشاء إطار بيانات Pandas وملأته بجزء من مجموعة البيانات الأصلية، مع توحيد الأسعار حسب البوشل. من خلال ذلك، تمكنت من جمع حوالي 400 نقطة بيانات فقط وللأشهر الخريفية فقط.
في الدرس السابق، أنشأت إطار بيانات Pandas وملأته بجزء من مجموعة البيانات الأصلية، مع توحيد الأسعار حسب السطل. ولكن بهذا الشكل، تمكنت فقط من جمع حوالي 400 نقطة بيانات وفقط لأشهر الخريف.
ألق نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المرفق بهذا الدرس. البيانات محملة مسبقًا ورسم أولي لنقاط مبعثرة يظهر بيانات الشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات عن طريق تنظيفها أكثر.
ألقِ نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المصاحب لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر أولي لعرض بيانات الشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات من خلال تنظيفها أكثر.
## خط انحدار خطي
## خط الانحدار الخطي
كما تعلمت في الدرس 1، الهدف من تمرين الانحدار الخطي هو القدرة على رسم خط ل:
كما تعلمت في الدرس 1، الهدف من تمرين الانحدار الخطي هو القدرة على رسم خط لـ:
- **إظهار علاقات المتغيرات**. إظهار العلاقة بين المتغيرات
- **إجراء التنبؤات**. إجراء تنبؤات دقيقة عن موقع نقطة بيانات جديدة بالنسبة لهذا الخط.
- **عرض علاقات المتغيرات**. عرض العلاقة بين المتغيرات
- **عمل تنبؤات**. عمل تنبؤات دقيقة حول مكان وقوع نقطة بيانات جديدة بالنسبة لذلك الخط.
من المعتاد أن يرسم الانحدار الخطي بمعيار المربعات الصغرى هذا النوع من الخطوط. يشير مصطلح "المربعات الصغرى" إلى عملية تقليل الخطأ الإجمالي في نموذجنا. لكل نقطة بيانات، نقيس المسافة العمودية (المسماة الباقي) بين النقطة الفعلية وخط الانحدار الخاص بنا.
غالبًا ما يتم رسم هذا النوع من الخط ضمن **انحدار المربعات الصغرى**. يشير مصطلح "المربعات الصغرى" إلى عملية تقليل مجموع الخطأ الكلي في نموذجنا. لكل نقطة بيانات، نقيس المسافة العمودية (المسماة بالبقايا) بين النقطة الفعلية وخط الانحدار.
نقوم بتربيع هذه المسافات لسببين رئيسيين:
1. **المقدار على الاتجاه:** نريد معاملة خطأ -5 بنفس الطريقة التي يعامل بها خطأ +5. التربيع يحول جميع القيم إلى موجبة.
1. **الحجم على الاتجاه:** نريد معاملة الخطأ -5 بنفس الطريقة كخطأ +5. التربيع يحول كل القيم إلى موجبة.
2. **معاقبة القيم الشاذة:** التربيع يعطي وزنًا أكبر للأخطاء الكبيرة، مما يجبر الخط على البقاء أقرب إلى النقاط البعيدة.
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` عندما تكون `X = 0`.
> حيث `X` هي 'المتغير التفسيري'. و`Y` هو 'المتغير التابع'. ميل الخط هو `b` و `a` هو الجزء المقطوع من المحور الصادي، والذي يشير إلى قيمة `Y` عندما يكون `X = 0`.
>
>
> حساب قيمة Y. إذا كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! رسم معلوماتي بواسطة [Jen Looper](https://twitter.com/jenlooper)
> احسب قيمة Y. إن كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! رسم معلوماتي من [جن لوبر](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`، مثل *اليوم من السنة* (أي عدد الأيام منذ بداية السنة)؟
✅ شغل دفتر الملاحظات المصاحب لهذا الدرس وانظر إلى المخطط المبعثر بين الشهر والسعر. هل تبدو البيانات المرتبطة بين الشهر والسعر لمبيعات اليقطين ذات ترابط عالي أم منخفض، حسب تفسيرك البصري للمخطط المبعثر؟ هل يتغير ذلك إذا استخدمت قياسًا أكثر دقة بدلًا من `Month`، كمثال *يوم السنة* (أي عدد الأيام منذ بداية السنة)؟
في الكود أدناه، سنفترض أننا نظفنا البيانات، وحصلنا على إطار بيانات يُسمى `new_pumpkins` مشابهًا لما يلي:
في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، مشابه للآتي:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> الشيفرة الخاصة بتنظيف البيانات متاحة في [`notebook.ipynb`](notebook.ipynb). لقد أجرينا نفس خطوات التنظيف كما في الدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي:
> الشفرة الخاصة بتنظيف البيانات متوفرة في [`notebook.ipynb`](notebook.ipynb). لقد قمنا بنفس خطوات التنظيف كالدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي:
الآن بعد أن أصبحت تفهم الرياضيات وراء الانحدار الخطي، دعونا ننشئ نموذج انحدار لنرى ما إذا كان بإمكاننا التنبؤ بأفضل عبوة من اليقطين التي ستحصل على أفضل الأسعار. قد يرغب شخص يشتري يقطينًا لزراعة بقعة هالوين في معرفة هذه المعلومات ليتمكن من تحسين مشترياته.
الآن بعد أن فهمت الرياضيات وراء الانحدار الخطي، دعنا ننشئ نموذج انحدار لنرى إن كان بإمكاننا التنبؤ بأفضل عبوة للقرع تكون بأسعار قرع أفضل. من المحتمل أن يرغب شخص يشتري قرعًا لحديقة قرع العيد في هذه المعلومة لكي يستطيع تحسين شراء عبوات القرع.
## البحث عن الترابط
## البحث عن الارتباط
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[](https://youtu.be/uoRq-lW2eQo "تعلم الآلة للمبتدئين - البحث عن الارتباط: مفتاح الانحدار الخطي")
> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير حول الترابط.
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الارتباط.
من الدرس السابق، ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو كالتالي:
من الدرس السابق ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو بهذا الشكل:
<imgalt="Average price by month"src="../../../../translated_images/ar/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="متوسط السعر حسب الشهر"src="../../../../translated_images/ar/barchart.a833ea9194346d76.webp"width="50%"/>
هذا يشير إلى أنه يجب أن يكون هناك بعض الترابط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `Month` و `Price`، أو بين `DayOfYear` و `Price`. إليك المخطط المبعثر الذي يظهر العلاقة الأخيرة:
هذا يوحي بوجود ارتباط ما، ويمكننا تجربة تدريب نموذج انحدار خطي لتوقع العلاقة بين `Month` و `Price`، أو بين `DayOfYear` و `Price`. إليك المخطط المبعثر الذي يوضح هذه العلاقة الأخيرة:
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/ar/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="مخطط مبعثر للسعر مقابل يوم السنة"src="../../../../translated_images/ar/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
دعنا نرى إذا كان هناك ارتباط باستخدام دالة `corr`:
يبدو أن الارتباط صغير جداً، -0.15 حسب `Month` و -0.17 حسب `DayOfMonth`، لكن قد توجد علاقة مهمة أخرى. يبدو أن هناك تجمعات مختلفة من الأسعار التي تناسب أصناف مختلفة من القرع. لتأكيد هذا الافتراض، دعنا نرسم كل فئة قرع بلون مختلف. بتمرير معامل `ax` إلى دالة الرسم `scatter` يمكننا رسم جميع النقاط على نفس الرسم البياني:
يبدو أن الترابط صغير إلى حدٍّ ما، -0.15 بالنسبة لـ `Month` و -0.17 بالنسبة لـ `DayOfMonth`، لكن قد يكون هناك علاقة مهمة أخرى. يبدو أن هناك تجمعات مختلفة من الأسعار تتوافق مع أصناف مختلفة من اليقطين. لتأكيد هذا الفرض، دعنا نرسم كل فئة من اليقطين بلون مختلف. بتمرير معامل `ax` إلى دالة `scatter` نتمكن من رسم كل النقاط على نفس الرسم:
```python
ax=None
@ -139,92 +139,92 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="مخطط مبعثر للسعر مقابل يوم السنة" src="../../../../translated_images/ar/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ar/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
إذا حسبنا الآن الارتباط بين `Price` و `DayOfYear` باستخدام دالة `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 "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يستعرض الانحدار الخطي والانحدار كثير الحدود.
> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي والانحدار متعددة الحدود.
لتدريب نموذج الانحدار الخطي الخاص بنا، سنستخدم مكتبة **Scikit-learn**.
لتدريب نموذج الانحدار الخطي، سنستخدم مكتبة **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
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`. هذا يعني أن الأسعار يبدو أنها تنخفض قليلاً مع مرور الوقت، ولكن ليس كثيرًا، حوالي سنتين في اليوم. يمكننا أيضًا الوصول إلى نقطة تقاطع الانحدار مع محور Y باستخدام `lin_reg.intercept_` - ستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية العام.
يحتوي كائن `LinearRegression` بعد عملية `fit` على جميع معاملات الانحدار، والتي يمكن الوصول إليها باستخدام الخاصية `.coef_`. في حالتنا، يوجد معامل واحد فقط، والذي يجب أن يكون حوالي `-0.017`. هذا يعني أن الأسعار تبدو وكأنها تنخفض قليلاً مع مرور الوقت، ولكن ليس بشكل كبير، حوالي سنتين في اليوم. يمكننا أيضًا الوصول إلى نقطة التقاطع مع محور Y باستخدام `lin_reg.intercept_` - والتي ستكون حوالي `21` في حالتنا، مما يشير إلى السعر في بداية السنة.
لمعرفة مدى دقة نموذجنا، يمكننا التنبؤ بالأسعار على مجموعة اختبار، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقاييس متوسط الخطأ التربيعي (MSE)، وهو متوسط جميع الفروق التربيعية بين القيمة المتوقعة والقيمة المتنبأ بها.
لمعرفة مدى دقة نموذجنا، يمكننا توقع الأسعار على مجموعة البيانات الاختبارية، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس جذر متوسط مربعات الخطأ (RMSE)، وهو الجذر التربيعي لمتوسط كل الفروق المربعة بين القيمة المتوقعة والقيمة المتنبأ بها.
يبدو أن خطأنا حوالي نقطتين، وهو ~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 [واجهة برمجة التطبيقات pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفيدة لدمج خطوات معالجة البيانات المختلفة معًا. **pipeline** هو سلسلة من **المقدِرات**. في حالتنا، سننشئ pipeline يضيف أولاً ميزات متعددة الحدود إلى نموذجنا، ثم يدرب الانحدار:
تتضمن مكتبة Scikit-learn واجهة برمجة تطبيقات مفيدة تسمى [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) لدمج خطوات معالجة البيانات المختلفة معًا. **الخط الأنبوبي** هو سلسلة من **المقدرون**. في حالتنا، سوف ننشئ خطًا أنبوبيًا يضيف مميزات متعددة الحدود إلى نموذجنا أولاً، ثم يقوم بتدريب الانحدار:
```python
from sklearn.preprocessing import PolynomialFeatures
استخدام `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` للpipeline، ثم استخدام `predict` للحصول على نتائج التنبؤ. هذا هو الرسم البياني الذي يظهر بيانات الاختبار ومنحنى التقريب:
يمكن استخدام الخطوط الأنبوبية بنفس طريقة كائن `LinearRegression` الأصلي، أي يمكننا `fit` الخط الأنبوبي، ثم استخدام `predict` للحصول على نتائج التنبؤ. هنا الرسم البياني الذي يعرض بيانات الاختبار ومنحنى التقريب:
باستخدام الانحدار متعدد الحدود، يمكننا الحصول على خطأ متوسط تربيعي أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحتاج إلى أخذ ميزات أخرى في الاعتبار!
باستخدام الانحدار متعدد الحدود، يمكننا الحصول على MSE أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحن بحاجة إلى أخذ ميزات أخرى في الاعتبار!
> يمكنك أن ترى أن أدنى أسعار اليقطين يتم ملاحظتها في مكان ما حول عيد الهالوين. كيف تشرح هذا؟
> يمكنك رؤية أن أدنى أسعار القرع تُلاحظ في مكان ما حول عيد الهالوين. كيف يمكنك تفسير ذلك؟
🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في التنبؤ بسعر يقطين الفطيرة. ربما يمكنك تكرار نفس الإجراء لجميع أنواع اليقطين، لكن هذا سيكون مملًا. دعنا نتعلم الآن كيفية أخذ نوع اليقطين في الاعتبار في نموذجنا!
🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في توقع سعر قرع الفطائر. ربما يمكنك تكرار نفس الإجراء لجميع أنواع القرع، لكن ذلك سيكون شاقًا. دعنا نتعلم الآن كيفية أخذ نوع القرع في الاعتبار في نموذجنا!
## الميزات التصنيفية
## الميزات الفئوية
في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أصناف اليقطين المختلفة باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` مختلف قليلاً عن أعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تسمى هذه الأعمدة **تصنيفية**.
في العالم المثالي، نريد أن نكون قادرين على التنبؤ بالأسعار لأنواع مختلفة من القرع باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` يختلف قليلاً عن الأعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تُسمى هذه الأعمدة **الفئوية**.
[](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤات باستخدام الميزات التصنيفية مع الانحدار الخطي")
[](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤ بالميزات الفئوية باستخدام الانحدار الخطي")
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يلخص استخدام الميزات التصنيفية.
> 🎥 انقر على الصورة أعلاه لمشاهدة نظرة عامة قصيرة على استخدام الميزات الفئوية.
لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها:
* **الترميز الرقمي** البسيط سيبني جدولًا للأنواع المختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة بالنسبة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر ويضيفها إلى النتيجة مضروبًا في بعض المعاملات. في حالتنا، العلاقة بين رقم المؤشر والسعر غير خطية بوضوح، حتى لو تأكدنا من ترتيب المؤشرات بطريقة معينة.
* **الترميز الأحادي (One-hot encoding)** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل صنف. يحتوي كل عمود على `1` إذا كان الصف المقابل من ذلك النوع، و`0` غير ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع يقطين، مسؤول عن "سعر البداية" (أو بالأحرى "السعر الإضافي") لذلك النوع المعين.
* **ترميز رقمي** بسيط سيبني جدولًا لأنواع مختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر، ويضيفها إلى النتيجة مضروبة في بعض المعاملات. في حالتنا، العلاقة بين رقم المؤشر والسعر واضحة غير خطية، حتى لو تأكدنا من أن المؤشرات مرتبة بطريقة معينة.
* **الترميز أحادي التواجد (one-hot encoding)** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع. يحتوي كل عمود على `1` إذا كان الصف المقابل من ذلك النوع، و`0` خلاف ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع قرع، مسؤول عن "السعر الابتدائي" (أو بالأحرى "السعر الإضافي") لذلك النوع المحدد.
يُظهر الكود أدناه كيفية ترميز النوع بطريقة one-hot:
يُظهر الكود أدناه كيفية ترميز النوع باستخدام الترميز أحادي التواجد:
لتدريب الانحدار الخطي باستخدام النوع المشفر بطريقة one-hot كمدخلات، نحتاج فقط إلى تهيئة بيانات `X` و `y` بشكل صحيح:
لتدريب الانحدار الخطي باستخدام النوع المشفر بأحادي التواجد كإدخال، نحتاج فقط إلى تهيئة بيانات `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']) \
@ -319,11 +319,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
هنا نأخذ في الاعتبار أيضًا `City` و `Package`، مما يعطينا MSE بقيمة 2.84 (10٪)، ومعامل تحديد 0.94!
هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، والذي يعطينا MSE=2.84 (10%)، ومعامل تحديد 0.94!
## تجميع كل شيء معًا
لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (الميزات التصنيفية المشفرة بطريقة one-hot + الميزات الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. إليك الكود الكامل لراحتك:
لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (المشفرة أحادي التواجد + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. هنا الكود الكامل لراحتك:
```python
# إعداد بيانات التدريب
@ -333,17 +333,17 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# إجراء تقسم البيانات إلى تدريب واختبار
# إجراء تقسيم التدريب والاختبار
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 |
| `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. دورة جيدة للدراسة والتعلم أكثر هي دورة [Stanford Statistical Learning](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/)
# التحضير
بافتراض أنك أكملت [الدرس الأول](../1-Introduction/README.md)، تأكد من وجود ملف _cleaned_cuisines.csv_ في المجلد الجذر `/data` لهذه الدروس الأربعة.
بافتراض أنك أكملت [الدرس 1](../1-Introduction/README.md)، تأكد من وجود ملف _cleaned_cuisines.csv_ في المجلد الجذر `/data` لهذه الدروس الأربعة.
## تمرين - التنبؤ بنوع المأكولات الوطنية
## التمرين - التنبؤ بمطبخ وطني
1. أثناء العمل في مجلد _notebook.ipynb_ الخاص بهذا الدرس، قم باستيراد هذا الملف مع مكتبة Pandas:
1. بالعمل في مجلد _notebook.ipynb_ لهذا الدرس، قم باستيراد ذلك الملف بالإضافة إلى مكتبة Pandas:
الآن بعد أن أصبحت بياناتك نظيفة وجاهزة للتدريب، عليك أن تقرر أي خوارزمية ستستخدم لهذه المهمة.
الآن بعد أن أصبحت بياناتك نظيفة وجاهزة للتدريب، عليك أن تقرر أي خوارزمية تستخدم للمهمة.
تجمع مكتبة Scikit-learn التصنيف تحت التعلم الموجه، وفي هذه الفئة ستجد العديد من الطرق للتصنيف. [التنوع](https://scikit-learn.org/stable/supervised_learning.html) قد يبدو مربكًا في البداية. تشمل الطرق التالية تقنيات التصنيف:
يصنف Scikit-learn التصنيف تحت تعلم مراقب، وفي تلك الفئة ستجد العديد من الطرق لتصنيف البيانات. [التنوع](https://scikit-learn.org/stable/supervised_learning.html) مربك في الوهلة الأولى. تشمل الطرق التالية جميع تقنيات التصنيف:
- النماذج الخطية
- آلات الدعم المتجهة
- الانحدار العشوائي
- آلات الدعم الناقل
- الهبوط العشوائي المتدرج
- الجيران الأقرب
- العمليات الغاوسية
- أشجار القرار
- طرق التجميع (المصنف التصويتي)
- خوارزميات متعددة الفئات ومتعددة المخرجات (تصنيف متعدد الفئات ومتعدد العلامات، تصنيف متعدد الفئات ومتعدد المخرجات)
- طرق التجميع (مصنف التصويت)
- خوارزميات متعددة الفئات ومتعددة النتائج (تصنيف متعدد الفئات ومتعدد التصنيفات، وتصنيف متعدد الفئات متعدد النتائج)
> يمكنك أيضًا استخدام [الشبكات العصبية لتصنيف البيانات](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)، ولكن هذا خارج نطاق هذا الدرس.
> يمكنك أيضًا استخدام [الشبكات العصبية لتصنيف البيانات](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)، لكن ذلك خارج نطاق هذا الدرس.
### أي مصنف تختار؟
إذن، أي مصنف يجب أن تختار؟ غالبًا ما يكون تشغيل عدة مصنفات والبحث عن نتيجة جيدة طريقة لاختبار. تقدم Scikit-learn [مقارنة جنبًا إلى جنب](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) على مجموعة بيانات تم إنشاؤها، تقارن بين KNeighbors، SVC بطريقتين، GaussianProcessClassifier، DecisionTreeClassifier، RandomForestClassifier، MLPClassifier، AdaBoostClassifier، GaussianNB و QuadraticDiscrinationAnalysis، وتعرض النتائج بشكل مرئي:
فأي مصنف يجب اختيار؟ غالبًا، التجربة عبر عدة مصنفات والبحث عن نتيجة جيدة هو طريقة للاختبار. يقدم Scikit-learn [مقارنة جنبًا إلى جنب](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) على مجموعة بيانات مصطنعة، يقارن فيها KNeighbors، وSVC بطريقتين، وGaussianProcessClassifier، وDecisionTreeClassifier، وRandomForestClassifier، و MLPClassifier، وAdaBoostClassifier، وGaussianNB وQuadraticDiscrinationAnalysis، ويعرض النتائج بشكل مرئي:

> الرسوم المولدة في توثيق Scikit-learn
> AutoML يحل هذه المشكلة بشكل أنيق عن طريق تشغيل هذه المقارنات في السحابة، مما يتيح لك اختيار أفضل خوارزمية لبياناتك. جربه [هنا](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> يحل AutoML هذه المشكلة بشكل أنيق من خلال إجراء هذه المقارنات في السحابة، مما يتيح لك اختيار أفضل خوارزمية لبياناتك. جربه [هنا](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### نهج أفضل
نهج أفضل من التخمين العشوائي هو اتباع الأفكار الموجودة في [ورقة الغش الخاصة بالتعلم الآلي](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) القابلة للتنزيل. هنا، نكتشف أنه بالنسبة لمشكلتنا متعددة الفئات، لدينا بعض الخيارات:
طريقة أفضل من التخمين العشوائي، هي اتباع الأفكار في [ورقة الغش](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) القابلة للتنزيل هذه. هنا، نكتشف أنه لمشكلتنا متعددة الفئات، لدينا بعض الخيارات:

> قسم من ورقة الغش الخاصة بخوارزميات Microsoft، يوضح خيارات التصنيف متعددة الفئات

> قسم من ورقة الغش لخوارزميات مايكروسوفت، يوضح خيارات التصنيف متعدد الفئات
✅ قم بتنزيل ورقة الغش هذه، واطبعها، وعلقها على حائطك!
✅ قم بتحميل ورقة الغش هذه، واطبعها وعلقها على جدارك!
### التفكير
### السبب
دعونا نحاول التفكير في الطرق المختلفة بناءً على القيود التي لدينا:
دعنا نحاول التفكير في الطرق المختلفة استنادًا إلى القيود التي نمتلكها:
- **الشبكات العصبية ثقيلة جدًا**. بالنظر إلى مجموعة البيانات النظيفة ولكن الصغيرة، وحقيقة أننا نقوم بالتدريب محليًا عبر دفاتر الملاحظات، فإن الشبكات العصبية ثقيلة جدًا لهذه المهمة.
- **لا يوجد مصنف ثنائي الفئات**. نحن لا نستخدم مصنف ثنائي الفئات، لذا يتم استبعاد طريقة واحد ضد الكل.
- **شجرة القرار أو الانحدار اللوجستي قد يعملان**. قد تعمل شجرة القرار، أو الانحدار اللوجستي للبيانات متعددة الفئات.
- **أشجار القرار المعززة متعددة الفئات تحل مشكلة مختلفة**. شجرة القرار المعززة متعددة الفئات مناسبة بشكل أكبر للمهام غير المعلمية، مثل المهام المصممة لإنشاء تصنيفات، لذا فهي ليست مفيدة لنا.
- **الشبكات العصبية ثقيلة جدًا**. نظرًا لأن بياناتنا نظيفة وقليلة، وحقيقة أننا ندرب محلياً عبر دفاتر الملاحظات، الشبكات العصبية ثقيلة جدًا لهذه المهمة.
- **لا نستخدم مصنف ثنائي الفئة**. لا نستخدم مصنفًا ثنائي الفئة، لذا فإن طريقة one-vs-all مستبعدة.
- **شجرة القرار أو الانحدار اللوجستي قد تعمل**. شجرة القرار قد تعمل، أو الانحدار اللوجستي للبيانات متعددة الفئات.
- **أشجار القرار المعززة متعددة الفئات تحل مشكلة مختلفة**. شجرة القرار المعززة متعددة الفئات مناسبة أكثر للمهام غير المعلمية، مثل المهام المصممة لبناء التصنيفات، لذا فهي ليست مفيدة لنا.
### استخدام Scikit-learn
سنستخدم Scikit-learn لتحليل بياناتنا. ومع ذلك، هناك العديد من الطرق لاستخدام الانحدار اللوجستي في Scikit-learn. ألقِ نظرة على [المعلمات التي يمكن تمريرها](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
سنستخدم Scikit-learn لتحليل بياناتنا. ومع ذلك، هناك العديد من الطرق لاستخدام الانحدار اللوجستي في Scikit-learn. ألق نظرة على [المعلمات التي يمكن تمريرها](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
بشكل أساسي، هناك معلمتان مهمتان - `multi_class` و `solver` - يجب تحديدهما عند طلب Scikit-learn تنفيذ الانحدار اللوجستي. قيمة `multi_class` تطبق سلوكًا معينًا. وقيمة `solver` تحدد الخوارزمية المستخدمة. ليس كل الحلول يمكن أن تقترن بكل قيم `multi_class`.
أساسًا، هناك معلمان مهمان - `multi_class` و `solver` - يجب تحديدهما عند طلب Scikit-learn إجراء انحدار لوجستي. تطبق قيمة `multi_class` سلوكًا معينًا. قيمة `solver` هي الخوارزمية المستخدمة. ليست كل الخوارزميات متوافقة مع كل قيم `multi_class`.
وفقًا للوثائق، في حالة التصنيف متعدد الفئات، فإن خوارزمية التدريب:
وفقًا للتوثيق، في حالة متعدد الفئات، خوارزمية التدريب:
- **تستخدم مخطط واحد ضد الباقي (OvR)**، إذا تم تعيين خيار `multi_class` إلى `ovr`
- **تستخدم خسارة الانتروبيا المتقاطعة**، إذا تم تعيين خيار `multi_class` إلى `multinomial`. (حاليًا، خيار `multinomial` مدعوم فقط بواسطة الحلول ‘lbfgs’، ‘sag’، ‘saga’ و ‘newton-cg’.)
- **تستخدم نظام one-vs-rest (OvR)** إذا تم تعيين خيار `multi_class` إلى `ovr`
- **تستخدم خسارة الإنتروبيا المتقاطعة** إذا تم تعيين خيار `multi_class` إلى `multinomial`. (حاليًا خيار `multinomial` مدعوم فقط من المحللات ‘lbfgs’, ‘sag’, ‘saga’ و ‘newton-cg’)."
> 🎓 "المخطط" هنا يمكن أن يكون إما 'ovr' (واحد ضد الباقي) أو 'multinomial'. نظرًا لأن الانحدار اللوجستي مصمم لدعم التصنيف الثنائي، فإن هذه المخططات تسمح له بالتعامل بشكل أفضل مع مهام التصنيف متعددة الفئات. [المصدر](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 "النظام" هنا يمكن أن يكون 'ovr' (واحد ضد الباقي) أو 'multinomial'. بما أن الانحدار اللوجستي مصمم بشكل أساسي لدعم التصنيف الثنائي، فإن هذه الأنظمة تسمح له بمعالجة مهام التصنيف متعددة الفئات بشكل أفضل. [المصدر](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 "الحل" يُعرف بأنه "الخوارزمية المستخدمة في مشكلة التحسين". [المصدر](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 "المحلل" (solver) معرف بأنه "الخوارزمية المستخدمة في مشكلة التحسين". [المصدر](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
تقدم Scikit-learn هذا الجدول لشرح كيفية تعامل الحلول مع التحديات المختلفة التي تقدمها هياكل البيانات المختلفة:
يقدم Scikit-learn هذا الجدول ليشرح كيف تتعامل المحللات مع تحديات مختلفة مقدمة من أنواع هياكل البيانات المختلفة:
نظرًا لأنك تستخدم حالة التصنيف متعدد الفئات، تحتاج إلى اختيار ما _المخطط_ الذي ستستخدمه وما _الحل_ الذي ستحدده. استخدم LogisticRegression مع إعداد متعدد الفئات والمحلل **liblinear** للتدريب.
بما أنك تستخدم حالة متعدد الفئات، تحتاج إلى اختيار أي _نظام_ تستخدم وأي _محلل_ تختار. استخدم LogisticRegression مع إعداد متعدد الفئات والمحّل **liblinear** للتدريب.
1. قم بإنشاء انحدار لوجستي مع تعيين multi_class إلى `ovr` والمحلل إلى `liblinear`:
1. أنشئ نموذج انحدار لوجستي مع تعيين multi_class إلى `ovr` والمحلل إلى `liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ جرب محللًا مختلفًا مثل `lbfgs`، الذي يتم تعيينه غالبًا كإعداد افتراضي
> ملاحظة، استخدم وظيفة Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) لتسطيح بياناتك عند الحاجة.
الدقة جيدة بنسبة تزيد عن **80%**!
✅ جرب محللًا مختلفًا مثل `lbfgs`، والذي غالبًا ما يكون الافتراضي
1. يمكنك رؤية هذا النموذج أثناء العمل من خلال اختبار صف واحد من البيانات (#50):
> ملاحظة، استخدم دالة Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) لتسطيح بياناتك عند الحاجة.
الدقة جيدة بأكثر من **80%**!
1. يمكنك مشاهدة هذا النموذج أثناء العمل عن طريق اختبار صف واحد من البيانات (#50):
في هذا الدرس، استخدمت بياناتك المنظفة لبناء نموذج تعلم آلي يمكنه التنبؤ بالمطبخ الوطني بناءً على سلسلة من المكونات. خذ بعض الوقت لقراءة الخيارات العديدة التي يوفرها Scikit-learn لتصنيف البيانات. تعمق أكثر في مفهوم 'solver' لفهم ما يحدث خلف الكواليس.
في هذا الدرس، استخدمت بياناتك المنظفة لبناء نموذج تعلم آلي يمكنه التنبؤ بنوع مطبخ وطني بناءً على سلسلة من المكونات. خذ بعض الوقت لقراءة الخيارات العديدة التي يوفرها Scikit-learn لتصنيف البيانات. تعمق أكثر في مفهوم 'المُحلل' لفهم ما يحدث وراء الكواليس.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## المراجعة والدراسة الذاتية
## مراجعة ودراسة ذاتية
تعمق قليلاً في الرياضيات وراء الانحدار اللوجستي في [هذا الدرس](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## الواجب
اغص أكثر في الرياضيات وراء الانحدار اللوجستي في [هذا الدرس](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## المهمة
[ادرس الحلول](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://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
[](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
[](https://discord.gg/nTYy5BXMWG)
نحن نجري سلسلة تعلم على Discord مع الذكاء الاصطناعي، تعرف أكثر وانضم إلينا في [سلسلة التعلم مع الذكاء الاصطناعي](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)
> [اعثر على جميع الموارد الإضافية لهذه الدورة في مجموعة 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' هو أداة تقييم التقدم التي تعبئها لتعزيز تعلمك. يمكنك أيضًا التفاعل مع PATs الأخرى لنتعلم معًا.
> للدراسة المتقدمة، نوصي بمتابعة هذه الوحدات والمسارات التعليمية على [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].
---
## فيديوهات إرشادية
## جولات فيديو
بعض الدروس متاحة على شكل فيديوهات قصيرة. يمكنك العثور على جميعها ضمن الدروس، أو على [قائمة تشغيل التعلم الآلي للمبتدئين على قناة Microsoft Developer على يوتيوب](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه.
بعض الدروس متاحة كمقاطع فيديو قصيرة. يمكنك العثور عليها ضمن الدروس نفسها، أو على [قائمة تشغيل ML for Beginners على قناة Microsoft Developer على YouTube](https://aka.ms/ml-beginners-videos) بالنقر على الصورة أدناه.
[](https://aka.ms/ml-beginners-videos)
[](https://aka.ms/ml-beginners-videos)
> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو عن المشروع والأشخاص الذين أنشأوه!
@ -106,73 +107,73 @@
## المنهجية التعليمية
اخترنا مبدأين تربويين أثناء بناء هذا المنهج: ضمان أن يكون قائمًا على **مشاريع تطبيقية** واحتوائه على**اختبارات متكررة**. بالإضافة إلى ذلك، يحتوي هذا المنهج على **موضوع مشترك** ليمنحه تماسكًا.
اخترنا مبدأين تعليميين عند بناء هذا المنهج: ضمان أن يكون عمليًا **قائمًا على المشاريع** وأن يتضمن**اختبارات متكررة**. بالإضافة إلى ذلك، يحتوي هذا المنهج على **موضوع مشترك** ليمنحه تماسكًا.
بضمان توافق المحتوى مع المشاريع، تصبح العملية أكثر جذبًا للطلاب وسيزداد تثبيت المفاهيم. بالإضافة لذلك، يحدد اختبار منخفض الأهمية قبل الفصل نية الطالب لتعلم الموضوع، بينما يضمن اختبار ثانٍ بعد الفصل مزيدًا من التثبيت. صُمم هذا المنهج ليكون مرنًا وممتعًا ويمكن أخذه ككل أو جزئيًا. تبدأ المشاريع صغيرة وتزداد تعقيدًا بنهاية دورة الـ12 أسبوعًا. يحتوي هذا المنهج أيضًا على خاتمة حول تطبيقات تعلم الآلة في العالم الحقيقي، والتي يمكن استخدامها كائتمان إضافي أو كأساس للنقاش.
بضمان توافق المحتوى مع المشاريع، تصبح العملية أكثر جذبًا للطلاب وسيزداد احتفاظهم بالمفاهيم. بالإضافة إلى ذلك، يحدد اختبار منخفض المخاطر قبل الصف نية الطالب نحو تعلم موضوع، في حين يضمن اختبار ثانٍ بعد الصف المزيد من الاحتفاظ. صُمم هذا المنهج ليكون مرنًا وممتعًا ويمكن اخذه كاملاً أو جزئيًا. تبدأ المشاريع صغيرة وتزداد تعقيدًا مع نهاية دورة الـ 12 أسبوعًا. يتضمن هذا المنهج أيضًا ملحقًا حول تطبيقات تعلم الآلة في العالم الحقيقي، يمكن استخدامه كاعتماد إضافي أو كأساس للنقاش.
- [اختبار إحماء قبل المحاضرة](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** والذي يمكن تعريفه ببساطة على أنه تضمين لـ `code chunks` (للـ R أو لغات أخرى) و `YAML header` (الذي يوجه كيفية تنسيق المخرجات مثل 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) | التنبؤ بالسلاسل الزمنية باستخدام Support Vector Regressor | [بايثون](7-TimeSeries/3-SVR/README.md) | أنيربان |
| 24 | مقدمة في التعلم التعزيزي | [التعلم التعزيزي](8-Reinforcement/README.md) | مقدمة في التعلم التعزيزي باستخدام Q-Learning | [بايثون](8-Reinforcement/1-QLearning/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)
> **ملاحظة حول اللغات**: تم كتابة هذه الدروس بشكل رئيسي بلغة بايثون، ولكن العديد منها متاح أيضًا بلغة R. لإكمال درس بلغة R، اذهب إلى مجلد `/solution` وابحث عن دروس R. تحتوي على امتداد .rmd الذي يمثل ملف **R Markdown** والذي يمكن تعريفه ببساطة على أنه تضمين لـ `كتل التعليمات البرمجية` (بلغة R أو لغات أخرى) و`رأس YAML` (يرشد كيفية تنسيق الإخراجات مثل PDF) في `وثيقة Markdown`. وبالتالي، فإنه يعمل كإطار مؤلف مثالي لعلوم البيانات لأنه يسمح لك بدمج رمزك، ومخرجاته، وأفكارك من خلال السماح لك بكتابتها في Markdown. علاوة على ذلك، يمكن تحويل مستندات R Markdown إلى صيغ إخراجية مثل PDF أو HTML أو Word.
> **ملاحظة حول الاختبارات القصيرة**: يحتوي مجلد [تطبيق الاختبارات القصيرة](../../quiz-app) على جميع الاختبارات القصيرة، وهو يحتوي على 52 اختبارًا كل منها 3 أسئلة. يتم الربط بينها داخل الدروس ولكن يمكن تشغيل تطبيق الاختبار محليًا؛ اتبع التعليمات في مجلد `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) | تصور وتنظيف البيانات للتحضير لـ ML | [بايثون](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) | جين وكاسي • إريك وانجاو |
| 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-Learning | [بايثون](8-Reinforcement/1-QLearning/README.md) | ديمتري |
| خاتمة | سيناريوهات وتطبيقات تعلم الآلة في العالم الواقعي | [تعلم الآلة في العالم الواقعي](9-Real-World/README.md) | تطبيقات حقيقية مثيرة للكشف عن تعلم الآلة الكلاسيكي | [درس](9-Real-World/1-Applications/README.md) | الفريق |
| خاتمة | تصحيح أخطاء النماذج في تعلم الآلة باستخدام لوحة RAI | [تعلم الآلة في العالم الواقعي](9-Real-World/README.md) | تصحيح أخطاء نموذج تعلم الآلة باستخدام مكونات لوحة مسؤول 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`. سيتم تقديم الموقع على المنفذ 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://github.com/microsoft/xr-development-for-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)
[](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## الحصول على المساعدة
إذا واجهت صعوبة أو كان لديك أي أسئلة حول بناء تطبيقات الذكاء الاصطناعي، انضم إلى المتعلمين الآخرين والمطورين ذوي الخبرة في مناقشات حول MCP. إنها مجتمع داعم حيث الأسئلة مرحب بها ويتم تبادل المعرفة بحرية.
إذا واجهت صعوبة أو كان لديك أسئلة أثناء تعلم تعلم الآلة أو بناء تطبيقات الذكاء الاصطناعي، لا تقلق — المساعدة متاحة.
يمكنك الانضمام إلى المناقشات مع متعلمين ومطورين آخرين، طرح الأسئلة، ومشاركة أفكارك مع المجتمع.
- انضم إلى المجتمع لطرح الأسئلة والتعلم مع الآخرين
- ناقش مفاهيم تعلم الآلة وأفكار المشاريع
- احصل على إرشاد من مطورين ذوي خبرة
المجتمع الداعم هو طريقة رائعة لتطوير مهاراتك وحل المشكلات بشكل أسرع.
[مجتمع Microsoft Foundry على Discord](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). بينما نسعى لتحقيق الدقة، يُرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للمعلومات الحساسة، يُنصح بالترجمة المهنية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
> ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Einführung
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.
Bisher hast du untersucht, was Regression ist, mit Beispieldaten aus dem Kürbispreis-Datensatz, den wir während dieser Lektion verwenden werden. Du hast ihn auch mit Matplotlib visualisiert.
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.
Jetzt bist du bereit, tiefer in die Regression für ML einzutauchen. Während Visualisierung dir hilft, Daten zu verstehen, liegt die wahre Stärke von Machine Learning im _Trainieren von Modellen_. Modelle werden mit historischen Daten trainiert, um Datenabhängigkeiten automatisch zu erfassen, und sie ermöglichen die Vorhersage von Ergebnissen für neue Daten, die das Modell vorher nicht gesehen hat.
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.
In dieser Lektion lernst du zwei Arten der Regression kennen: _einfache lineare Regression_ und _polynomiale Regression_, sowie einige der mathematischen Grundlagen dieser Techniken. Diese Modelle ermöglichen uns, Kürbispreise in Abhängigkeit von unterschiedlichen Eingabedaten vorherzusagen.
[](https://youtu.be/CRxFT8oTDMg "ML für Anfänger - Verständnis der linearen Regression")
[](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.
> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur linearen Regression.
> 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.
> Im gesamten Curriculum gehen wir von minimalen Mathematikkenntnissen aus und möchten das Thema für Studierende aus anderen Bereichen zugänglich machen. Achte daher auf Hinweise, 🧮 Erklärungen, Diagramme und andere Lernhilfen zur Unterstützung des Verständnisses.
### Voraussetzungen
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.
Du solltest inzwischen mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Die Daten sind in der Datei _notebook.ipynb_ dieser Lektion vorab geladen und bereinigt. Dort wird der Kürbispreis pro Scheffel in einem neuen DataFrame angezeigt. Stelle sicher, dass du diese Notebooks in Visual Studio Code ausführen kannst.
### Vorbereitung
Zur Erinnerung: Sie laden diese Daten, um Fragen an sie zu stellen.
Zur Erinnerung: Du lädst diese Daten, um Fragen an sie stellen zu können.
- 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 Scheffel-Körben oder im 1 1/9 Scheffel-Karton kaufen?
Lassen Sie uns weiter in diese Daten eintauchen.
- Wann ist die beste Zeit, Kürbisse zu kaufen?
- Welchen Preis kann ich für eine Kiste Mini-Kürbisse erwarten?
- Sollte ich sie in Halbscheffel-Körben oder in 1 1/9 Scheffel Kisten kaufen?
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.
Lass uns tiefer in diese Daten eintauchen.
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.
In der vorherigen Lektion hast du ein Pandas DataFrame erstellt und mit einem Teil des ursprünglichen Datensatzes befüllt, wobei die Preise auf den Scheffel normiert wurden. Damit konntest du allerdings nur etwa 400 Datenpunkte sammeln und nur für die Herbstmonate.
## Eine lineare Regressionslinie
Schau dir die Daten an, die wir im Notebook dieser Lektion vorab geladen haben. Die Daten sind vorab geladen, und ein erster Streudiagramm wurde gezeichnet, um Monatsdaten zu zeigen. Vielleicht können wir durch weitergehende Bereinigung mehr über die Natur der Daten erfahren.
Wie Sie in Lektion 1 gelernt haben, ist das Ziel einer linearen Regression, eine Linie zu plotten, die:
## Eine lineare Regressionsgerade
- **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.
Wie du in Lektion 1 gelernt hast, ist das Ziel einer linearen Regression, eine Gerade zu zeichnen, die:
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.
- **Variablenbeziehungen zeigt**. Zeigt die Beziehung zwischen Variablen
- **Vorhersagen ermöglicht**. Ermöglicht genaue Vorhersagen, wo ein neuer Datenpunkt relativ zu dieser Linie liegen würde.
Diese Abstände quadrieren wir aus zwei Hauptgründen:
Typisch ist bei der **Methode der kleinsten Quadrate** (Least-Squares Regression) das Ziehen dieser Art von Linie. Der Begriff "Methode der kleinsten Quadrate" bezieht sich auf den Prozess der Minimierung des Gesamtfehlers im Modell. Für jeden Datenpunkt messen wir den vertikalen Abstand (genannt Residuum) zwischen dem tatsächlichen Punkt und unserer Regressionslinie.
1. **Betrag vor Richtung:** Wir wollen einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv.
Wir quadrieren diese Abstände aus zwei Hauptgründen:
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.
1. **Betrag statt Richtung:** Wir wollen einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv.
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“.
2. **Bestrafung von Ausreißern:** Das Quadrieren gibt größeren Fehlern mehr Gewicht und zwingt die Gerade, näher an weiter entfernte Punkte heranzurücken.
> **🧮 Zeig mir die Mathematik**
>
> Diese Linie, auch als _Line of Best Fit_ bezeichnet, kann durch [eine Gleichung](https://en.wikipedia.org/wiki/Simple_linear_regression) ausgedrückt werden:
>
Dann addieren wir alle quadrierten Werte zusammen. Unser Ziel ist es, genau die Linie zu finden, bei der diese Summe am geringsten ist (der kleinstmögliche Wert) – daher der Name „Methode der kleinsten Quadrate“.
> **🧮 Zeig mir die Mathematik**
>
> Diese Linie, genannt die _Bestanpassungslinie_, kann mit [einer Gleichung](https://de.wikipedia.org/wiki/Einfache_lineare_Regression) dargestellt 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, also der Wert von `Y`, wenn `X = 0` ist.
>
>
>
> Berechnung der Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> 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.
> Berechnung des Werts von Y. Wenn man ungefähr 4 $ bezahlt, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> 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`.
>
> 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.
>
> `X` ist die „erklärende Variable“. `Y` ist die „abhängige Variable“. Die Steigung der Geraden ist `b` und `a` ist der Achsenabschnitt, also der Wert von `Y`, wenn `X = 0` ist.
>
>
>
> Berechne zuerst die Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> Anders ausgedrückt und bezogen auf unsere ursprüngliche Kürbisdatenfrage: "Vorhersage des Preises eines Kürbisses pro Scheffel nach Monat" entspricht `X` dem Preis und `Y` dem Verkaufsmonat.
> Berechne den Wert von Y. Wenn du etwa 4 Dollar bezahlst, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper)
>
> Die Mathematik, die die Gerade berechnet, muss die Steigung der Geraden darstellen, die auch vom Achsenabschnitt abhängt, also wo `Y` liegt, wenn `X = 0`.
>
> Du kannst die Berechnungsmethode für diese Werte auf der Webseite [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) nachlesen. Besuche auch [diesen Least-squares Rechner](https://www.mathsisfun.com/data/least-squares-calculator.html), um zu sehen, wie die Werte die Gerade beeinflussen.
## 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 weiterer Begriff, den du verstehen solltest, ist der **Korrelationskoeffizient** zwischen gegebenen X- und Y-Variablen. Mithilfe eines Streudiagramms kannst du diesen Koeffizienten schnell visualisieren. Ein Plot mit Punkten, die sich auf einer klaren Linie befinden, hat eine hohe Korrelation, während ein Plot mit zufällig verteilten Punkten eine geringe Korrelation aufweist.
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.
Ein gutes lineares Regressionsmodell hat einen hohen (näher bei 1 als bei 0) Korrelationskoeffizienten, wenn die Methode der kleinsten Quadrate mit einer Regressionslinie verwendet wird.
✅ 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)?
✅ Führe das Notebook zu dieser Lektion aus und sieh dir das Streudiagramm von Monat zu Preis an. Scheint die Assoziation vom Monat zum Kürbiskaufpreis nach deiner visuellen Interpretation des Streudiagramms eine hohe oder niedrige Korrelation zu haben? Ändert sich das, wenn du statt `Month` eine feinere Maßeinheit wie *Tag des Jahres* (also Anzahl der Tage seit Jahresbeginn) nutzt?
Im folgenden Code nehmen wir an, dass wir die Daten bereinigt haben und einen DataFrame namens `new_pumpkins` erhalten haben, der etwa so aussieht:
Im folgenden Code gehen wir davon aus, dass wir die Daten bereinigt haben und ein DataFrame namens `new_pumpkins` vorliegt, das in etwa so aussieht:
ID | Monat | TagImJahr | Sorte | Stadt | Verpackung | Niedrigster Preis | Höchster Preis | Preis
> 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:
> Der Code zur Datenbereinigung ist in [`notebook.ipynb`](notebook.ipynb) verfügbar. Wir haben die gleichen Bereinigungsschritte wie in der vorherigen Lektion durchgeführt und die Spalte `DayOfYear` mit folgendem Ausdruck berechnet:
Jetzt, da du die Mathematik hinter der linearen Regression verstehst, lass uns ein Regressionsmodell erstellen, um zu sehen, ob wir vorhersagen können, welches Kürbispaket die besten Preise haben wird. Jemand, der Kürbisse für einen Kürbisgarten zu Halloween kauft, möchte diese Informationen, um seinen Einkauf 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.
## Suche nach Korrelation
## Auf der Suche nach Korrelation
[](https://youtu.be/uoRq-lW2eQo "ML für Anfänger – Suche nach Korrelation: Der Schlüssel zur linearen Regression")
[](https://youtu.be/uoRq-lW2eQo "ML für Anfänger – Auf der Suche nach Korrelation: Der Schlüssel zur linearen Regression")
> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zur Korrelation.
> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur Korrelation.
Aus der vorherigen Lektion wissen Sie wahrscheinlich, dass der Durchschnittspreis für verschiedene Monate so aussieht:
Aus der vorherigen Lektion hast du wahrscheinlich gesehen, dass der Durchschnittspreis für unterschiedliche Monate so aussieht:
<imgalt="Durchschnittspreis nach Monat"src="../../../../translated_images/de/barchart.a833ea9194346d76.webp"width="50%"/>
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:
Das deutet darauf hin, dass es eine bestimmte 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 letztere Beziehung zeigt:
<imgalt="Streudiagramm von Preis vs. Tag im Jahr" src="../../../../translated_images/de/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Streudiagramm von Preis vs. Tag des Jahres" src="../../../../translated_images/de/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Sehen wir nach, ob eine Korrelation mit der Funktion `corr` besteht:
Sehen wir uns die Korrelation mit der Funktion `corr` an:
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:
Es sieht so aus, als sei die Korrelation ziemlich klein, -0,15 für `Monat` und -0,17 für `TagDesJahres`, aber es könnte eine andere wichtige Beziehung geben. Es sieht so aus, als gäbe es unterschiedliche Cluster von Preisen, die verschiedenen Kürbissorten zugeordnet sind. Zur Bestätigung dieser Hypothese wollen wir jede Kürbissorte mit einer anderen Farbe darstellen. Indem wir der `scatter`-Plotfunktion einen `ax`-Parameter übergeben, können wir alle Punkte auf demselben Diagramm darstellen:
```python
ax=None
@ -139,92 +142,92 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Streudiagramm von Preis vs. Tag des Jahres mit Farbunterscheidung"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. Das sehen wir auch in einem Balkendiagramm:
Unsere Untersuchung legt nahe, dass die Sorte mehr Einfluss auf den Gesamtpreis hat als das tatsächliche Verkaufsdatum. Das können wir mit einem Balkendiagramm sehen:
<imgalt="Streudiagramm von Preis vs. Tag im Jahr" src="../../../../translated_images/de/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Streudiagramm von Preis vs. Tag des Jahres für Pie-Kürbisse" src="../../../../translated_images/de/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
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.
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.
> 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:
> Bevor wir ein lineares Regressionsmodell trainieren, ist es wichtig sicherzustellen, dass unsere Daten sauber sind. Lineare Regression funktioniert nicht gut mit fehlenden Werten, daher ist es sinnvoll, alle leeren Zellen zu entfernen:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Ein anderer Ansatz wäre, diese fehlenden Werte mit 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")
> 🎥 Klicke 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.
Um unser Lineares Regressionsmodell zu trainieren, verwenden wir die **Scikit-learn**-Bibliothek.
```python
from sklearn.linear_model import LinearRegression
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 aufzuteilen:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Beachte, dass wir auf die Eingabedaten `reshape` anwenden mussten, damit das Linear Regression-Paket sie korrekt versteht. Die lineare Regression erwartet als Eingabe ein 2D-Array, wobei jede Zeile einem Vektor von Eingabefunktionen entspricht. Da wir nur eine Eingabevariable haben, brauchen wir ein Array mit der Form N×1, wobei N die Größe des Datensatzes 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.
Anschließend teilen wir die Daten in Trainings- und Testdatensätze auf, damit wir unser Modell nach dem Training validieren können:
Dann müssen wir die Daten in Trainings- und Testdaten aufteilen, 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)
```
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:
Schließlich nimmt das Training des eigentlichen Linearen Regressionsmodells nur zwei Codezeilen in Anspruch. 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`-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.
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 ungefähr`-0.017` sein sollte. Das bedeutet, dass die Preise mit der Zeit etwas zu sinken scheinen, aber nicht zu stark, ungefähr 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 ungefähr `21` sein und den Preis zu Beginn des Jahres anzeigen.
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.
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 sind. Dies kann mithilfe der Metrik Root Mean Square Error (RMSE) erfolgen, welche die Wurzel des Mittels aller quadrierten Differenzen zwischen erwartetem und vorhergesagtem Wert ist.
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:
Unser Fehler scheint etwa 2 Punkte zu betragen, was ca. 17 % sind. Nicht besonders gut. Ein weiterer Indikator für die Modellqualität ist der **Bestimmtheitsmaß**, der folgendermaßen ermittelt 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* 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.
Wenn der Wert 0 ist, bedeutet dies, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor* fungiert, was einfach ein 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.
Wir können auch die Testdaten zusammen mit der Regressionslinie plotten, um besser zu sehen, wie die Regression in unserem Fall funktioniert:
Wir können auch die Testdaten zusammen mit der Regressionslinie darstellen, um besser zu sehen, wie die Regression in unserem Fall funktioniert:
```python
plt.scatter(X_test,y_test)
@ -235,17 +238,17 @@ plt.plot(X_test,pred)
## Polynomiale Regression
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.
Eine andere Art der linearen Regression ist die polynomiale Regression. Manchmal besteht zwar eine lineare Beziehung zwischen Variablen – je größer der Kürbis in Volumen, desto höher der Preis – aber manchmal können diese Beziehungen 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, bei denen polynomiale Regression verwendet werden könnte.
✅ Hier sind [weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die polynomiale Regression benötigen könnten.
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.
Betrachte nochmal die Beziehung zwischen Datum und Preis. Sieht dieses Streudiagramm so aus, als sollte es unbedingt mit einer Geraden analysiert werden? Können Preise nicht schwanken? In diesem Fall kann man es mit polynomieller Regression versuchen.
✅ Polynome sind mathematische Ausdrücke, die aus einer oder mehreren Variablen und Koeffizienten bestehen können.
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.
Die polynomiale Regression erstellt eine gekrümmte Linie, um nichtlineare Daten besser anzupassen. In unserem Fall, wenn wir eine quadrierte Variable `DayOfYear` in die Eingabedaten aufnehmen, sollten wir unsere Daten mit einer parabolischen Kurve anpassen können, die ihr Minimum an einem bestimmten Punkt im Jahr hat.
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:
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 Verarbeitungsschritte von Daten zu kombinieren. Eine **Pipeline** ist eine Kette von **Estimatoren**. In unserem Fall erstellen wir eine Pipeline, die zunächst polynomialen Features zum Modell hinzufügt und dann die Regression trainiert:
```python
from sklearn.preprocessing import PolynomialFeatures
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.
Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass wir alle Polynome zweiten Grades aus den Eingabedaten einschließen. In unserem Fall ist das nur `DayOfYear`<sup>2</sup>, aber mit 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 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:
Pipelines können genauso verwendet werden wie das ursprüngliche `LinearRegression`-Objekt, d.h. wir können die Pipeline `fit`ten und anschließend `predict` verwenden, um Vorhersagen zu erhalten. Hier ist das Diagramm mit den Testdaten und der Approximationskurve:
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!
Mit Polynom-Regression können wir leicht geringere MSE und einen höheren Bestimmtheitsmaß erreichen, aber nicht signifikant. Wir müssen auch andere Merkmale berücksichtigen!
> Sie können sehen, dass die minimalen Kürbisspreise irgendwo rund um Halloween beobachtet werden. Wie können Sie das erklären?
> Man sieht, dass die minimalen Kürbispreise irgendwo um Halloween zu beobachten sind. Wie kann man das erklären?
🎃 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!
🎃 Glückwunsch, du hast gerade ein Modell erstellt, das helfen kann, den Preis von Backkürbissen vorherzusagen. Du kannst das wahrscheinlich für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir jetzt, wie wir Kürbissorten in unser Modell einbeziehen können!
## Kategorielle Merkmale
## Kategorische Merkmale
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**.
In einer idealen Welt wollen wir in der Lage sein, Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Allerdings ist die Spalte `Variety` etwas anders als z.B. `Month`, weil sie nicht numerische Werte enthält. Solche Spalten nennt man **kategorische**.
[](https://youtu.be/DYGliioIAE0 "Maschinelles Lernen für Anfänger – Vorhersagen mit kategorialen Merkmalen und linearer Regression")
[](https://youtu.be/DYGliioIAE0 "ML für Anfänger - Kategorische Merkmalvorhersagen mit Linearer Regression")
> 🎥 Klicken Sie auf das obige Bild für eine kurze Videoübersicht zur Verwendung kategorialer Merkmale.
> 🎥 Klicke das obige Bild für eine kurze Videoübersicht zur Verwendung kategorischer Merkmale.
Hier sehen Sie, wie der Durchschnittspreis von der Sorte abhängt:
Hier sieht man, 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 zunächst in eine numerische Form umwandeln oder **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:
* 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.
* Eine einfache **numerische Kodierung** erstellt eine Tabelle der verschiedenen Sorten und ersetzt anschließend den Sortennamen durch einen Index in dieser Tabelle. Dies ist keine gute Idee für lineare Regression, da die lineare Regression den tatsächlichen numerischen Wert des Index nimmt und ihn mit einem Koeffizienten multipliziert zum Ergebnis hinzufügt. In unserem Fall ist die Beziehung zwischen Indexnummer und Preis klar nichtlinear, auch wenn wir sicherstellen, dass die Indizes in einer bestimmten Reihenfolge sind.
* **One-Hot-Kodierung** ersetzt die Spalte `Variety` durch 4 verschiedene Spalten, eine für jede Sorte. Jede Spalte enthält eine `1`, wenn die entsprechende Zeile die gegebene Sorte hat, andernfalls `0`. Das bedeutet, dass es vier Koeffizienten in der linearen Regression gibt, einen für jede Kürbissorte, der für den „Startpreis“ (besser gesagt den „zusätzlichen Preis“) dieser Sorte verantwortlich ist.
Der folgende Code zeigt, wie wir eine Sorte one-hot kodieren können:
Um die lineare Regression mit der one-hot-kodierten Sorte als Eingabe zu trainieren, müssen wir `X` und `y` nur richtig initialisieren:
Um lineare Regression mit one-hot kodierter Sorte als Eingabe zu trainieren, müssen wir nur `X` und `y` richtig initialisieren:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
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:
Der restliche Code ist derselbe wie der obige zum Trainieren der linearen Regression. Wenn du es ausprobierst, wirst du sehen, dass der mittlere quadratische Fehler ungefähr gleich ist, aber wir erhalten einen viel höheren Bestimmtheitsmaß (~77 %). Für noch genauere Vorhersagen 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:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +322,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
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!
Hier beziehen wir auch `City` und `Package`-Typ ein, was uns eine MSE von 2,84 (10 %) und eine Bestimmtheit von 0,94 verschafft!
## Alles zusammenführen
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:
Um das beste Modell zu erstellen, können wir kombinierte (one-hot kodierte kategoriale + numerische) Daten aus dem obigen Beispiel zusammen mit polynomieller Regression verwenden. Hier ist der komplette Code zu deiner Bequemlichkeit:
```python
# Trainingsdaten einrichten
@ -333,7 +336,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# Zug- und Testaufteilung durchführen
# Train-Test-Aufteilung machen
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 abschließenden Abschnitt über Regression werden Sie etwas über logistische Regression lernen, um Kategorien zu bestimmen.
🏆 Gut gemacht! Du hast in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im abschließenden Abschnitt zur Regression lernst du mehr über logistische Regression zur Bestimmung von Kategorien.
---
## 🚀Herausforderung
## 🚀Herausforderung
Testen Sie in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korrelation mit der Modellgenauigkeit zusammenhängt.
Teste in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korrelation mit der Modellgenauigkeit zusammenhängt.
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
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).
In dieser Lektion haben wir lineare Regression kennengelernt. Es gibt weitere wichtige Regressionsarten. Lies über Stepwise, Ridge, Lasso und Elasticnet-Techniken. Ein guter Kurs zur Vertiefung ist der [Stanford Statistical Learning Kurs](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning).
## Aufgabe
## Aufgabenstellung
[Modell erstellen](assignment.md)
[Erstelle ein Modell](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Haftungsausschluss**:
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.
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 ursprüngliche Dokument in seiner Ursprungssprache 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.
In dieser Lektion wirst du den Datensatz verwenden, den du in der letzten Lektion gespeichert hast. Er enthält ausgewogene, bereinigte Daten rund um verschiedene Küchen.
In dieser Lektion verwenden Sie den Datensatz, den Sie aus der letzten Lektion gespeichert haben, voller ausgewogener, sauberer Daten rund um Küchen.
Du wirst diesen Datensatz mit einer Vielzahl von Klassifikatoren nutzen, um _eine nationale Küche basierend auf einer Gruppe von Zutaten vorherzusagen_. Dabei wirst du mehr über einige der Methoden lernen, wie Algorithmen für Klassifikationsaufgaben eingesetzt werden können.
Sie werden diesen Datensatz mit einer Vielzahl von Klassifikatoren verwenden, um _eine bestimmte nationale Küche basierend auf einer Zutatenliste vorherzusagen_. Dabei lernen Sie mehr über einige der Möglichkeiten, wie Algorithmen für Klassifizierungsaufgaben genutzt werden können.
## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
Falls du [Lektion 1](../1-Introduction/README.md) abgeschlossen hast, stelle sicher, dass eine Datei namens _cleaned_cuisines.csv_ im Root-Ordner `/data` für diese vier Lektionen existiert.
Vorausgesetzt, Sie haben [Lektion 1](../1-Introduction/README.md) abgeschlossen, stellen Sie sicher, dass eine Datei _cleaned_cuisines.csv_ im Stammordner `/data` für diese vier Lektionen existiert.
## Übung - Vorhersage einer nationalen Küche
## Übung – eine nationale Küche vorhersagen
1. Arbeite im Ordner _notebook.ipynb_ dieser Lektion und importiere die Datei zusammen mit der Pandas-Bibliothek:
1. Arbeiten Sie im Ordner _notebook.ipynb_ dieser Lektion und importieren Sie diese Datei zusammen mit der Pandas-Bibliothek:
Jetzt, da deine Daten bereinigt und bereit für das Training sind, musst du entscheiden, welchen Algorithmus du für die Aufgabe verwenden möchtest.
Da Ihre Daten nun sauber und bereit für das Training sind, müssen Sie entscheiden, welchen Algorithmus Sie für die Aufgabe verwenden möchten.
Scikit-learn gruppiert Klassifikation unter Überwachtem Lernen, und in dieser Kategorie findest du viele Möglichkeiten zur Klassifikation. [Die Vielfalt](https://scikit-learn.org/stable/supervised_learning.html) kann auf den ersten Blick überwältigend sein. Die folgenden Methoden beinhalten alle Klassifikationstechniken:
Scikit-learn gruppiert Klassifikation unter Überwachtem Lernen (Supervised Learning), und in dieser Kategorie finden Sie viele Klassifizierungsmethoden. [Die Vielfalt](https://scikit-learn.org/stable/supervised_learning.html) ist auf den ersten Blick ziemlich überwältigend. Die folgenden Methoden beinhalten Klassifikationstechniken:
- Lineare Modelle
- Support Vector Machines
@ -89,71 +88,70 @@ Scikit-learn gruppiert Klassifikation unter Überwachtem Lernen, und in dieser K
- Nächste Nachbarn
- Gaußsche Prozesse
- Entscheidungsbäume
- Ensemble-Methoden (Voting Classifier)
- Multiklassen- und Multioutput-Algorithmen (Multiklassen- und Multilabel-Klassifikation, Multiklassen-Multioutput-Klassifikation)
- Ensemble-Methoden (Voting-Klassifikator)
- Multi-Class- und Multioutput-Algorithmen (Multiclass- und Multilabel-Klassifikation, Multiclass-Multioutput-Klassifikation)
> Du kannst auch [neuronale Netze zur Klassifikation von Daten](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) verwenden, aber das liegt außerhalb des Umfangs dieser Lektion.
> Sie können auch [Neuronale Netze zur Klassifikation von Daten einsetzen](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), aber das liegt außerhalb des Umfangs dieser Lektion.
### Welchen Klassifikator wählen?
Welchen Klassifikator solltest du also wählen? Oft ist es sinnvoll, mehrere auszuprobieren und nach einem guten Ergebnis zu suchen. Scikit-learn bietet einen [Vergleich nebeneinander](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) auf einem erstellten Datensatz, der KNeighbors, SVC auf zwei Arten, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB und QuadraticDiscriminationAnalysis vergleicht und die Ergebnisse visualisiert:
Welchen Klassifikator sollten Sie wählen? Oft hilft es, mehrere auszuprobieren und nach einem guten Ergebnis zu suchen. Scikit-learn bietet einen [direkten Vergleich](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) auf einem erstellten Datensatz, in dem KNeighbors, SVC auf zwei Arten, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB und QuadraticDiscriminantAnalysis verglichen und die Ergebnisse visualisiert werden:

> Diagramme aus der Dokumentation von Scikit-learn

> Plots erstellt aus der Dokumentation von Scikit-learn
> AutoML löst dieses Problem elegant, indem es diese Vergleiche in der Cloud durchführt und dir ermöglicht, den besten Algorithmus für deine Daten auszuwählen. Probiere es [hier](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) aus.
> AutoML löst dieses Problem elegant, indem es diese Vergleiche in der Cloud durchführt und Ihnen erlaubt, den besten Algorithmus für Ihre Daten auszuwählen. Probieren Sie es [hier](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Ein besserer Ansatz
Ein besserer Ansatz als wildes Raten ist es, die Ideen auf diesem herunterladbaren [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) zu befolgen. Hier erfahren wir, dass wir für unser Multiklassenproblem einige Optionen haben:
Eine bessere Methode als wildes Raten ist es, den Ideen auf diesem herunterladbaren [ML-Spickzettel](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) zu folgen. Hier entdecken wir, dass wir für unser Multiclass-Problem einige Optionen haben:

> Ein Abschnitt des Algorithmus-Cheat Sheets von Microsoft, der Multiklassen-Klassifikationsoptionen beschreibt

> Ein Ausschnitt des Algorithmus-Spickzettels von Microsoft, der Multiclass-Klassifikationsmöglichkeiten beschreibt
✅ Lade dieses Cheat Sheet herunter, drucke es aus und hänge es an deine Wand!
✅ Laden Sie diesen Spickzettel herunter, drucken Sie ihn aus und hängen Sie ihn an Ihre Wand!
### Überlegungen
### Begründung
Lass uns sehen, ob wir verschiedene Ansätze basierend auf den Einschränkungen, die wir haben, durchdenken können:
Versuchen wir anhand gegebener Einschränkungen die verschiedenen Ansätze zu begründen:
- **Neuronale Netze sind zu schwergewichtig**. Angesichts unseres bereinigten, aber minimalen Datensatzes und der Tatsache, dass wir das Training lokal über Notebooks durchführen, sind neuronale Netze für diese Aufgabe zu schwergewichtig.
- **Kein Zwei-Klassen-Klassifikator**. Wir verwenden keinen Zwei-Klassen-Klassifikator, daher fällt One-vs-All weg.
- **Entscheidungsbaum oder logistische Regression könnten funktionieren**. Ein Entscheidungsbaum könnte funktionieren oder logistische Regression für Multiklassen-Daten.
- **Multiklassen-Boosted-Entscheidungsbäume lösen ein anderes Problem**. Der Multiklassen-Boosted-Entscheidungsbaum ist am besten geeignet für nichtparametrische Aufgaben, z. B. Aufgaben, die Rankings erstellen sollen, daher ist er für uns nicht nützlich.
- **Neuronale Netze sind zu schwergewichtig.** Angesichts unseres sauberen, aber kleinen Datensatzes und der Tatsache, dass wir lokal über Notebooks trainieren, sind neuronale Netze zu schwergewichtig für diese Aufgabe.
- **Kein Zwei-Klassen-Klassifikator.** Wir nutzen keinen Zwei-Klassen-Klassifikator, daher ist One-vs-All ausgeschlossen.
- **Entscheidungsbaum oder logistische Regression sind möglich.** Ein Entscheidungsbaum könnte funktionieren oder logistische Regression für Multiclass-Daten.
- **Multiclass Boosted Decision Trees lösen ein anderes Problem.** Die multiclass boosted decision trees sind eher für nicht-parametrische Aufgaben geeignet, z.B. für Ranglisten und daher für uns nicht nützlich.
### Verwendung von Scikit-learn
Wir werden Scikit-learn verwenden, um unsere Daten zu analysieren. Es gibt jedoch viele Möglichkeiten, logistische Regression in Scikit-learn zu verwenden. Schau dir die [Parameter an, die übergeben werden können](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Wir werden Scikit-learn verwenden, um unsere Daten zu analysieren. Es gibt allerdings viele Möglichkeiten, logistische Regression mit Scikit-learn anzuwenden. Sehen Sie sich die [Parameter](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) an,die man übergeben kann.
Im Wesentlichen gibt es zwei wichtige Parameter - `multi_class` und `solver` -, die wir angeben müssen, wenn wir Scikit-learn bitten, eine logistische Regression durchzuführen. Der Wert von `multi_class`legt ein bestimmtes Verhalten fest. Der Wert des Solvers gibt an, welchen Algorithmus verwendet werden soll. Nicht alle Solver können mit allen `multi_class`-Werten kombiniert werden.
Im Wesentlichen sind zwei wichtige Parameter - `multi_class` und `solver` - festzulegen, wenn wir Scikit-learn bitten, eine logistische Regression durchzuführen. Der Wert von `multi_class`bestimmt eine bestimmte Verhaltensweise. Der Wert von `solver` gibt an, welchen Algorithmus man verwenden möchte. Nicht alle Solver sind mit allen `multi_class`-Werten kompatibel.
Laut der Dokumentation verwendet der Trainingsalgorithmus im Multiklassenfall:
Laut der Dokumentation verwendet der Trainingsalgorithmus im Multiclass-Fall:
- **Das One-vs-Rest (OvR)-Schema**, wenn die `multi_class`-Option auf `ovr` gesetzt ist
- **Den Kreuzentropie-Verlust**, wenn die `multi_class`-Option auf `multinomial` gesetzt ist. (Derzeit wird die `multinomial`-Option nur von den Solvern ‘lbfgs’, ‘sag’, ‘saga’ und ‘newton-cg’ unterstützt.)
- **das one-vs-rest (OvR) Schema**, wenn die Option `multi_class` auf `ovr` gesetzt ist
- **die Kreuzentropie-Verlustfunktion**, wenn die Option `multi_class` auf `multinomial` gesetzt ist. (Die Option `multinomial` wird zurzeit nur von den Solvern ‘lbfgs’, ‘sag’, ‘saga’ und ‘newton-cg’ unterstützt.)"
> 🎓 Das 'Schema' kann entweder 'ovr' (One-vs-Rest) oder 'multinomial' sein. Da die logistische Regression eigentlich für die Unterstützung der binären Klassifikation entwickelt wurde, ermöglichen diese Schemata, dass sie besser mit Multiklassen-Klassifikationsaufgaben umgehen kann. [Quelle](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Das 'Schema' kann entweder 'ovr' (one-vs-rest) oder 'multinomial' sein. Da logistische Regression eigentlich für binäre Klassifikation ausgelegt ist, erlauben diese Schemata eine bessere Handhabung von Multiclass-Aufgaben. [Quelle](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Der 'Solver' wird definiert als "der Algorithmus, der im Optimierungsproblem verwendet wird". [Quelle](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 Der 'Solver' ist definiert als "der Algorithmus zur Lösung des Optimierungsproblems". [Quelle](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn bietet diese Tabelle, um zu erklären, wie Solver mit verschiedenen Herausforderungen umgehen, die durch unterschiedliche Datenstrukturen entstehen:
Scikit-learn bietet diese Tabelle, um zu zeigen, wie die Solvers unterschiedliche Herausforderungen verschiedener Datenstrukturen bewältigen:
Wir können uns auf die logistische Regression für unseren ersten Trainingsversuch konzentrieren, da du kürzlich in einer vorherigen Lektion darüber gelernt hast.
Teile deine Daten in Trainings- und Testgruppen auf, indem du `train_test_split()` aufrufst:
Wir konzentrieren uns bei unserem ersten Trainingsversuch auf die logistische Regression, da Sie diese Methode kürzlich in einer vorherigen Lektion gelernt haben. Teilen Sie Ihre Daten in Trainings- und Testgruppen mittels `train_test_split()` auf:
Da du den Multiklassenfall verwendest, musst du wählen, welches _Schema_ du verwenden möchtest und welchen _Solver_ du festlegen möchtest. Verwende LogisticRegression mit einer Multiklassen-Einstellung und dem **liblinear**-Solver für das Training.
Da Sie die Multiclass-Variante verwenden, müssen Sie ein _Schema_ wählen und den _Solver_ festlegen. Verwenden Sie LogisticRegression mit einer Multiclass-Konfiguration und dem Solver **liblinear**, um zu trainieren.
1. Erstelle eine logistische Regression mit `multi_class` auf `ovr` und dem Solver auf `liblinear` gesetzt:
1. Erstellen Sie eine logistische Regression mit `multi_class` auf `ovr` und dem Solver `liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -162,28 +160,29 @@ Da du den Multiklassenfall verwendest, musst du wählen, welches _Schema_ du ver
accuracy = model.score(X_test, y_test)
print ("Accuracy is {}".format(accuracy))
```
✅ Probieren Sie einen anderen Solver wie `lbfgs` aus, der oft als Standard eingestellt ist.
✅ Probiere einen anderen Solver wie `lbfgs`, der oft als Standard gesetzt ist
> Hinweis: Verwenden Sie die Pandas-Funktion [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html), um Ihre Daten bei Bedarf zu glätten.
Die Genauigkeit liegt bei über **80%**!
> Hinweis: Verwenden Sie die Pandas-Funktion [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html), um Ihre Daten bei Bedarf zu glätten.
1. Sie können dieses Modell testen, indem Sie eine Datenzeile (#50) ausprobieren:
Die Genauigkeit ist gut – über **80%**!
1. Sie können dieses Modell in Aktion sehen, indem Sie eine einzelne Datenzeile (#50) testen:
In dieser Lektion haben Sie Ihre bereinigten Daten verwendet, um ein Machine-Learning-Modell zu erstellen, das basierend auf einer Reihe von Zutaten eine nationale Küche vorhersagen kann. Nehmen Sie sich Zeit, um die vielen Optionen, die Scikit-learn zur Klassifizierung von Daten bietet, zu lesen. Vertiefen Sie sich in das Konzept des 'solvers', um zu verstehen, was hinter den Kulissen passiert.
In dieser Lektion haben Sie Ihre bereinigten Daten verwendet, um ein Machine-Learning-Modell zu erstellen, das eine nationale Küche basierend auf einer Reihe von Zutaten vorhersagen kann. Nehmen Sie sich Zeit, um die vielen Optionen zu lesen, die Scikit-learn zur Klassifizierung von Daten bietet. Tauchen Sie tiefer in das Konzept des 'Solvers' ein, um zu verstehen, was hinter den Kulissen passiert.
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
## Rückblick & Selbststudium
## Überprüfung & Selbststudium
Vertiefen Sie sich ein wenig mehr in die Mathematik hinter der logistischen Regression in [dieser Lektion](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
Tauchen Sie etwas tiefer in die Mathematik hinter der logistischen Regression ein in [dieser Lektion](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Aufgabe
## Aufgabe
[Studieren Sie die Solver](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 aus der Nutzung dieser Übersetzung entstehen.
Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir auf Genauigkeit achten, 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.
> Dieses Repository enthält über 50 Übersetzungen, was die Downloadgröße erheblich erhöht. Um ohne Übersetzungen zu klonen, verwenden Sie Sparse Checkout:
> Dieses Repository enthält über 50 Sprachübersetzungen, was die Downloadgröße erheblich erhöht. Für das Klonen ohne Übersetzungen verwenden Sie Sparse Checkout:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,147 +33,147 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> So erhalten Sie alles, was Sie brauchen, um den Kurs mit einem viel schnelleren Download abzuschließen.
> Damit erhalten Sie alles, was Sie brauchen, um den Kurs zu absolvieren, mit einem viel schnelleren Download.
Wir veranstalten eine Discord-Lernserie mit KI, erfahren Sie mehr und nehmen Sie zwischen dem 18. und 30. September 2025 teil unter [Learn with AI Series](https://aka.ms/learnwithai/discord). Sie erhalten Tipps und Tricks zur Nutzung von GitHub Copilot für Data Science.
Wir haben eine Discord-Lernreihe mit KI am Laufen, 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 Verwendung von GitHub Copilot für Data Science.

# Maschinelles Lernen 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 Maschinelles Lernen durch Weltkulturen erkunden 🌍
Die Cloud Advocates bei Microsoft freuen sich, einen 12-wöchigen Lehrplan mit 26 Lektionen rund um **Maschinelles Lernen** anzubieten. In diesem Lehrplan lernen Sie, was manchmal als **klassisches maschinelles Lernen** bezeichnet wird, wobei hauptsächlich Scikit-learn als Bibliothek verwendet wird und Deep Learning vermieden wird, das im Rahmen unseres [AI for Beginners-Kurrikulums](https://aka.ms/ai4beginners) behandelt wird. Kombinieren Sie diese Lektionen auch mit unserem ['Data Science for Beginners' Lehrplan](https://aka.ms/ds4beginners)!
Cloud Advocates bei Microsoft freuen sich, einen 12-wöchigen Lehrplan mit 26 Lektionen rund um **Maschinelles Lernen** anzubieten. In diesem Lehrplan lernen Sie, was manchmal als **klassisches maschinelles Lernen** bezeichnet wird, wobei hauptsächlich Scikit-learn als Bibliothek verwendet wird und tiefes Lernen 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 der Welt anwenden. Jede Lektion enthält Tests vor und nach der Lektion, schriftliche Anweisungen zur Durchführung der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Pädagogik ermöglicht Ihnen das Lernen durch Bauen, eine bewährte Methode, um neue Fähigkeiten zu verankern.
Reisen Sie mit uns um die Welt, während wir diese klassischen Techniken auf Daten aus verschiedenen Regionen der Welt anwenden. Jede Lektion enthält Vor- und Nach-Lektion Quizze, schriftliche Anleitungen zum Abschließen der Lektion, eine Lösung, eine Aufgabe und mehr. Unsere projektbasierte Pädagogik ermöglicht es Ihnen, durch praktische Anwendung zu lernen – eine bewährte Methode, um neue Fähigkeiten nachhaltig zu verankern.
**✍️ 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
**✍️ Herzlicher 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
**🎨 Vielen Dank auch an unsere Illustratoren** Tomomi Imura, Dasani Madipalli und Jen Looper
**🎨 Ebenso Dank an unsere Illustratoren** Tomomi Imura, Dasani Madipalli und Jen Looper
**🙏 Besonderer Dank 🙏 an unsere Microsoft Student Ambassador Autoren, Reviewer und Inhaltsbeitragenden**, 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 Inhaltsbeiträger**, insbesondere Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila und Snigdha Agarwal
**🤩 Extra Dank an die Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi und Vidushi Gupta für unsere R-Lektionen!**
# Erste Schritte
Folgen Sie diesen Schritten:
Befolgen Sie diese Schritte:
1. **Forken Sie das Repository**: Klicken Sie auf die Schaltfläche „Fork“ oben rechts auf dieser Seite.
2. **Clonen Sie das Repository**:`git clone https://github.com/microsoft/ML-For-Beginners.git`
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 Collection](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?** Schauen Sie in unseren [Troubleshooting Guide](TROUBLESHOOTING.md) für 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ührung der Lektionen.
**[Studierende](https://aka.ms/student-page)**, verwenden Sie für diesen Lehrplan das gesamte Repo und bearbeiten Sie die Übungen eigenständig oder in einer Gruppe:
**[Schüler](https://aka.ms/student-page)**, um diesen Lehrplan zu nutzen, forken Sie das gesamte Repo in Ihr eigenes GitHub-Konto und bearbeiten Sie die Übungen eigenständig oder in einer Gruppe:
- Beginnen Sie mit einem Quiz vor der Vorlesung.
- Lesen Sie die Vorlesung und absolvieren Sie die Aktivitäten, pausieren und reflektieren Sie jeweils bei den Wissensüberprüfungen.
- Versuchen Sie, die Projekte durch Verständnis der Lektionen anzulegen, anstatt die Lösungscode einfach auszuführen; dieser Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar.
- Lesen Sie die Vorlesung und bearbeiten Sie die Aktivitäten, pausieren Sie und reflektieren Sie bei jedem Wissenscheck.
- Versuchen Sie, die Projekte zu erstellen, indem Sie die Lektionen verstehen, anstatt nur den Lösungscode auszuführen; der Code ist jedoch in den `/solution`-Ordnern jeder projektorientierten Lektion verfügbar.
- Machen Sie das Quiz nach der Vorlesung.
- Bearbeiten Sie die Herausforderung.
- Erledigen Sie die Aufgabe.
- Nach Abschluss einer Lektionengruppe besuchen Sie das [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) und „lernen laut“ durch Ausfüllen der passenden PAT-Rubrik. Ein 'PAT' ist ein Fortschrittsbewertungstool, das eine Rubrik ist, die Sie ausfüllen, um Ihr Lernen zu vertiefen. Sie können auch auf andere PATs reagieren, damit wir gemeinsam lernen können.
- Lösen Sie die Herausforderung.
- Bearbeiten Sie die Aufgabe.
- Nach Abschluss einer Lektionengruppe besuchen Sie das [Diskussionsforum](https://github.com/microsoft/ML-For-Beginners/discussions) und „lernen Sie laut“, indem Sie das passende PAT-Rubrikformular ausfüllen. Ein 'PAT' ist ein Fortschrittsbewertungstool, bei dem Sie eine Rubrik ausfüllen, um Ihr Lernen zu vertiefen. Sie können auch auf andere PATs reagieren, um gemeinsam zu lernen.
> Zum weiteren Lernen 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 das Durcharbeiten dieser [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) Module und Lernpfade.
**Lehrkräfte**, wir haben [einige Vorschläge](for-teachers.md) zur Verwendung dieses Lehrplans bereitgestellt.
**Lehrkräfte**, wir haben einige [Vorschläge](for-teachers.md) zur Nutzung dieses Lehrplans zusammengestellt.
---
## Video-Durchgänge
## Videoanleitungen
Einige der Lektionen sind als Kurzvideos verfügbar. Sie finden alle diese Videos 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 der Lektionen sind als Kurzvideos verfügbar. Sie finden alle diese direkt in den Lektionen oder in der [ML for Beginners Playlist auf dem Microsoft Developer YouTube-Kanal](https://aka.ms/ml-beginners-videos) über Klick auf das Bild unten.
[](https://aka.ms/ml-beginners-videos)
> 🎥 Klicken Sie auf das Bild oben, um ein Video über das Projekt und die Personen, die es erstellt haben, zu sehen!
> 🎥 Klicken Sie auf das Bild oben für ein Video über das Projekt und die Personen, die es erstellt haben!
---
## Pädagogik
Beim Erstellen dieses Lehrplans haben wir uns für zwei pädagogische Grundsätze entschieden: Er soll praxisnah **projektbasiert** sein und **häufige Quizfragen** enthalten. Darüber hinaus verfügt der Lehrplan über ein gemeinsames **Thema** für mehr Zusammenhalt.
Wir haben beim Aufbau dieses Lehrplans zwei pädagogische Grundsätze gewählt: sicherzustellen, dass er praktisch **projektbasiert** ist und dass er **häufige Quizze** enthält. Zudem hat dieser Lehrplan ein gemeinsames **Thema**, das ihm Kohärenz verleiht.
Indem der Inhalt an Projekte gekoppelt wird, wird der Prozess für die Lernenden ansprechender und das Verständnis der Konzepte wird verbessert. Zudem setzt ein Quiz vor einer Lektion die Lernmotivation, während ein zweites Quiz nach der Lektion die weitere Behaltensleistung unterstützt. Dieser Lehrplan wurde so gestaltet, dass er flexibel und unterhaltsam ist und komplett oder teilweise durchgearbeitet werden kann. Die Projekte beginnen klein und werden bis zum Ende des 12-wöchigen Zyklus zunehmend komplexer. Im Lehrplan ist zudem ein Nachwort zu Real-World-Anwendungen von ML enthalten, das als Bonus oder Diskussionsgrundlage genutzt werden kann.
Indem die Inhalte auf Projekte abgestimmt sind, wird der Prozess für die Lernenden ansprechender und das Behalten von Konzepten wird verbessert. Zudem setzt ein Quiz vor der Unterrichtseinheit die Lernabsicht, während ein zweites Quiz danach das Behalten weiter fördert. Dieser Lehrplan wurde so gestaltet, dass er flexibel und unterhaltsam ist und ganz oder teilweise absolviert werden kann. Die Projekte starten klein und werden bis zum Ende des 12-Wochen-Zyklus immer komplexer. Der Lehrplan enthält auch einen Nachtrag zu realen Anwendungen von ML, der als Zusatzleistung oder Diskussionsgrundlage genutzt werden kann.
> Finden Sie unseren [Verhaltenskodex](CODE_OF_CONDUCT.md), [Beitragsleitfaden](CONTRIBUTING.md), [Übersetzungen](..) und [Troubleshooting](TROUBLESHOOTING.md). Wir freuen uns über Ihr konstruktives Feedback!
> Finden Sie unsere Richtlinien zu [Verhaltenskodex](CODE_OF_CONDUCT.md), [Mitwirkung](CONTRIBUTING.md), [Übersetzungen](..) und [Fehlerbehebung](TROUBLESHOOTING.md). Wir freuen uns auf Ihr konstruktives Feedback!
## Jede Lektion enthält
## Jede Lektion beinhaltet
- optionales Sketchnote
- optionale Sketchnote
- optionales ergänzendes Video
- Video-Durchgang (nur einige Lektionen)
- [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
- bei projektbasierten Lektionen Schritt-für-Schritt-Anleitungen zum Erstellen des Projekts
- Wissensüberprüfungen
- für projektbasierte Lektionen Schritt-für-Schritt-Anleitungen zum Bau des Projekts
- Wissenschecks
- eine Herausforderung
- ergänzende Lektüre
- Aufgabe
- [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
> **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 haben die Endung .rmd, was eine **R Markdown**-Datei darstellt, die einfach als Einbettung von `Codeblöcken` (in R oder anderen Sprachen) und einem `YAML-Kopf` (der angibt, wie Ausgaben wie PDF formatiert werden) in einem `Markdown-Dokument` definiert werden kann. Somit dient sie als beispielhaftes Autorensystem für Data Science, da sie es Ihnen ermöglicht, Ihren Code, dessen Ausgabe und Ihre Gedanken zu kombinieren, indem Sie diese in Markdown niederschreiben. Darüber hinaus können R Markdown-Dokumente in Ausgabeformate wie PDF, HTML oder Word gerendert werden.
> **Eine Anmerkung zu Quizzen**: Alle Quizze sind im Ordner [Quiz App folder](../../quiz-app) enthalten, insgesamt 52 Quizze mit jeweils drei Fragen. Sie sind in den Lektionen verlinkt, aber die Quiz-App kann auch lokal ausgeführt werden; folgen Sie der Anleitung im Ordner `quiz-app`, um sie lokal zu hosten oder auf Azure bereitzustellen.
| 01 | Einführung in maschinelles Lernen | [Introduction](1-Introduction/README.md) | Lernen Sie die grundlegenden Konzepte des maschinellen Lernens | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Die Geschichte des maschinellen Lernens | [Introduction](1-Introduction/README.md) | Lernen Sie die zugrundeliegende Geschichte dieses Feldes | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen und Amy |
| 03 | Fairness und maschinelles Lernen | [Introduction](1-Introduction/README.md) | Welche wichtigen philosophischen Fragen zur Fairness sollten Studierende beim Erstellen und Anwenden von ML-Modellen bedenken? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Techniken für maschinelles Lernen | [Introduction](1-Introduction/README.md) | Welche Techniken verwenden ML-Forscher, um ML-Modelle zu erstellen? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris und Jen |
| 05 | Einführung in die 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 für 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 aufbauen | [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) | Eine Web-App erstellen, um Ihr trainiertes Modell zu verwenden | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Einführung in die Klassifikation | [Classification](4-Classification/README.md) | Daten bereinigen, vorbereiten und visualisieren; 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 Klassifizierer | [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 Klassifizierer | [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) | Eine Empfehlungs-Web-App mit Ihrem Modell bauen | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Einführung in das 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 Musikgeschmäcker 🎧 | [Clustering](5-Clustering/README.md) | Die K-Means-Clustering-Methode erkunden | [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 natürliche Sprachverarbeitung ☕️ | [Natural language processing](6-NLP/README.md) | Grundlagen der NLP lernen, indem Sie einen einfachen Bot erstellen | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Übliche NLP-Aufgaben ☕️ | [Natural language processing](6-NLP/README.md) | Vertiefen Sie Ihr NLP-Wissen, indem Sie häufige Aufgaben verstehen, die beim Umgang mit Sprachstrukturen notwendig sind | [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 die Zeitreihenprognose | [Time series](7-TimeSeries/README.md) | Einführung in Zeitreihenprognosen | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Weltweiter Stromverbrauch ⚡️ - Zeitreihenprognose mit SVR | [Time series](7-TimeSeries/README.md) | Zeitreihenprognose mit Support Vector Regressor | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Einführung in das 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 | Helfen Sie Peter, dem Wolf zu entkommen! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Reinforcement Learning Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | Real-World ML-Szenarien und Anwendungen | [ML in the Wild](9-Real-World/README.md) | Interessante und aufschlussreiche Anwendungsfälle klassischer ML | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | Modell-Debugging in ML mit dem RAI-Dashboard | [ML in the Wild](9-Real-World/README.md) | Modell-Debugging im maschinellen Lernen mit Komponenten des Responsible AI Dashboards | [Lesson](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 geschrieben, aber viele sind auch in R verfügbar. Um eine R-Lektion abzuschließen, gehen Sie zum Ordner `/solution` und suchen Sie dort nach R-Lektionen. Diese enthalten eine .rmd-Erweiterung, die eine **R Markdown**-Datei darstellt, welche einfach als Einbettung von `Codeabschnitten` (von R oder anderen Sprachen) und einem `YAML-Header` (der steuert, wie Ausgaben wie PDF formatiert werden) in einem `Markdown-Dokument` definiert werden kann. Als solche dient sie als beispielhaftes Autorensystem für Data Science, da sie es ermöglicht, Ihren Code, dessen Ausgabe und Ihre Gedanken zu kombinieren, indem Sie diese in Markdown niederschreiben. Darüber hinaus können R Markdown-Dokumente in Ausgabedateiformate wie PDF, HTML oder Word gerendert werden.
> **Eine Anmerkung zu Quizzen**: Alle Quizze sind im Ordner [Quiz App folder](../../quiz-app) enthalten, insgesamt 52 Quizze mit jeweils drei Fragen. Sie sind innerhalb der Lektionen verlinkt, aber die Quiz-App kann lokal ausgeführt werden; folgen Sie der Anleitung im Ordner `quiz-app`, um sie lokal zu hosten oder auf Azure zu deployen.
| Lektion Nummer | Thema | Lektion Gruppierung | Lernziele | Verknüpfte Lektion | Autor |
| 01 | Einführung in maschinelles Lernen | [Introduction](1-Introduction/README.md) | Lernen Sie die grundlegenden Konzepte hinter dem maschinellen Lernen | [Lektion](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Die Geschichte des maschinellen Lernens | [Introduction](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 | [Introduction](1-Introduction/README.md) | Welche wichtigen philosophischen Fragen zur Fairness sollten Lernende bei der Erstellung und Anwendung von ML-Modellen beachten? | [Lektion](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Techniken für maschinelles Lernen | [Introduction](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ürbispreise 🎃 | [Regression](2-Regression/README.md)| Daten visualisieren und bereinigen zur Vorbereitung für ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Nordamerikanische Kürbispreise 🎃 | [Regression](2-Regression/README.md) | Erstellen Sie lineare und polynomiale Regressionsmodelle | [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ürbispreise 🎃 | [Regression](2-Regression/README.md) | Erstellen Sie ein logistisches Regressionsmodell | [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 Webanwendung, um Ihr trainiertes Modell zu verwenden | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Einführung in Klassifikation | [Classification](4-Classification/README.md) | Bereinigen, vorbereiten und visualisieren Sie Ihre Daten; 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 🍜 | [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) | Erstellen Sie eine Empfehlungs-Webanwendung unter Verwendung Ihres Modells | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Einführung in Clustering | [Clustering](5-Clustering/README.md) | Bereinigen, vorbereiten und visualisieren Sie Ihre 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 | Erkunden der nigerianischen Musikkultur 🎧 | [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 natürliche Sprachverarbeitung ☕️ | [Natural language processing](6-NLP/README.md) | Lernen Sie die Grundlagen der NLP, indem Sie einen einfachen Bot erstellen | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Häufige NLP-Aufgaben ☕️ | [Natural language processing](6-NLP/README.md) | Vertiefen Sie Ihr NLP-Wissen, indem Sie häufige Aufgaben verstehen, die bei der Arbeit mit Sprachstrukturen erforderlich sind | [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-Vorhersagen | [Time series](7-TimeSeries/README.md) | Einführung in Zeitreihen-Vorhersagen | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 23 | ⚡️ Weltstromverbrauch ⚡️ - Zeitreihenvorhersage mit SVR | [Time series](7-TimeSeries/README.md) | Zeitreihenvorhersage 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 | Echte ML-Szenarien und Anwendungen | [ML in the Wild](9-Real-World/README.md) | Interessante und aufschlussreiche Anwendungen klassischer ML in der Praxis | [Lektion](9-Real-World/1-Applications/README.md) | Team |
| Nachwort | Modell-Debugging in ML mit RAI-Dashboard | [ML in the Wild](9-Real-World/README.md) | Modell-Debugging in Machine Learning mit Komponenten des Responsible AI-Dashboards | [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 Repository, [installieren Sie Docsify](https://docsify.js.org/#/quickstart) auf Ihrem lokalen Rechner, und geben Sie dann im Hauptverzeichnis dieses Repositorys `docsify serve` ein. Die Webseite wird lokal auf Port 3000 verfügbar sein: `localhost:3000`.
Sie können diese Dokumentation offline mit [Docsify](https://docsify.js.org/#/) ausführen. Forken Sie dieses Repository, [installieren Sie Docsify](https://docsify.js.org/#/quickstart) auf Ihrem lokalen Rechner und geben Sie dann im Stammverzeichnis dieses Repositories `docsify serve` ein. Die Website wird auf Port 3000 auf Ihrem lokalen Rechner unter `localhost:3000` bereitgestellt.
## PDFs
Ein PDF des Lehrplans mit Links finden Sie [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Finden Sie eine pdf des Curriculums mit Links [hier](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Andere Kurse
## 🎒 Andere Kurse
Unser Team produziert weitere Kurse! Sehen Sie sich an:
Unser Team bietet weitere Kurse an! Schauen Sie sich an:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -184,55 +184,66 @@ Unser Team produziert weitere Kurse! Sehen Sie sich an:
### 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/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)
---
### Generative KI-Serie
[](https://github.com/microsoft/generative-ai-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)
---
### Kernlernen
[](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)
### 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)
---
### Copilot-Serie
[](https://aka.ms/GitHubCopilotAI?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 stecken bleiben oder Fragen zum Erstellen von KI-Anwendungen haben, nehmen Sie an Diskussionen über MCP mit anderen Lernenden und erfahrenen Entwicklern teil. Es ist eine unterstützende Gemeinschaft, in der Fragen willkommen sind und Wissen frei geteilt wird.
Wenn Sie beim Lernen von Machine Learning oder beim Erstellen von KI-Anwendungen nicht weiterkommen oder Fragen haben, keine Sorge – Hilfe ist verfügbar.
- Überprüfen Sie Notizbücher nach jeder Lektion für ein besseres Verständnis.
- Üben Sie die Implementierung von Algorithmen selbst.
- Erkunden Sie reale Datensätze unter Verwendung der gelernten Konzepte.
- Überprüfen Sie nach jeder Lektion die Notebooks für ein besseres Verständnis.
- Üben Sie, Algorithmen selbständig zu implementieren.
- 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 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 Verwendung dieser Übersetzung entstehen.
Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir um Genauigkeit bemüht sind, bitte beachten Sie, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das ursprüngliche Dokument in seiner Originalsprache 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 sich aus der Verwendung dieser Übersetzung ergeben.
# Создание регрессионной модели сиспользованием Scikit-learn: регрессия четырьмя способами
# Создание регрессионной модели спомощью Scikit-learn: четыре подхода к регрессии
## Заметка для начинающих
Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, стоимость дома, температуру или продажи). Она работает, находя прямую линию, которая наилучшим образом представляет связь между входными признаками и выходными данными.
Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, цену дома, температуру или продажи).
Она работает путем нахождения прямой линии, которая лучше всего описывает зависимость между входными признаками и выходным значением.
В этом уроке мы сосредотачиваемся на понимании концепции, прежде чем изучать более продвинутые методы регрессии.

В этом уроке мы сосредоточимся на понимании концепции, прежде чем изучать более сложные методы регрессии.

> Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded)
> ### [Этот урок доступен на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
## [Тест перед лекцией](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 "ML for beginners - Understanding Linear Regression")
> 🎥 Нажмите на изображение выше для краткого видеообзора линейной регрессии.
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором линейной регрессии.
> Врамках этой учебной программы мы предполагаем минимальные знания математики и стремимся сделать материал доступным для студентов из других областей, поэтому следите за примечаниями, 🧮 подсказками, диаграммами и другими средствами обучения для облегчения понимания.
> Вэтом курсе мы предполагаем минимальные знания математики и стараемся сделать материал доступным для студентов из других областей, поэтому обращайте внимание на дополнительные заметки, 🧮 пояснения, диаграммы и другие инструменты для обучения.
### Предварительные требования
### Предпосылки
К этому моменту вы должны быть знакомы со структурой данных по тыквам, которые мы изучаем. Вы можете найти их заранее загруженными и предварительно очищенными в файле _notebook.ipynb_ этого урока. В файле цена на тыквы отображается за бушель в новой таблице данных. Убедитесь, что вы можете запускать эти ноутбуки в ядрах Visual Studio Code.
К этому моменту вы должны быть знакомы со структурой данных по тыквам, которые мы рассматриваем. Они уже загружены и очищены в файле _notebook.ipynb_ этого урока. В файле цена за бушель отображается в новом датафрейме. Убедитесь, что вы можете запускать эти ноутбуки в среде Visual Studio Code.
### Подготовка
Напоминаем, что вы загружаете эти данные, чтобы задавать вопросы и анализировать их.
Напоминаем, что вы загружаете эти данные, чтобы задавать к ним вопросы.
- Когда лучше всего покупать тыквы?
- Какую цену я могу ожидать за ящик мини-тыкв?
- Стоит ли покупать их в полубушельных корзинах или в ящике на 1 1/9 бушеля?
Продолжим изучение этих данных.
- Когда лучше всего покупать тыквы?
- Какую цену можно ожидать за ящик миниатюрных тыкв?
- Стоит ли покупать их в корзинах на полбушеля или ящиках на 1 1/9 бушеля?
Давайте продолжим исследовать эти данные.
В предыдущем уроке вы создали фрейм данных Pandas и заполнили его частью исходного датасета, стандартизировав цены на бушель. Однако, при этом вы смогли собрать только около 400 точек данных и только за осенние месяцы.
В предыдущем уроке вы создали датафрейм Pandas и заполнили его частью исходных данных, стандартизировав цены по бушелю. Однако этим вы смогли собрать около 400 точек данных и только за осенние месяцы.
Взгляните на данные, которые мы заранее загрузили в сопроводительном ноутбуке этого урока. Они сразу загружены, и построен начальный диаграмм разброса для отображения данных по месяцам. Возможно, мы можем получить немного больше информации о природе данных, очистив их более подробно.
Взгляните на данные, которые мы предварительно загрузили в сопроводительном ноутбуке этого урока. Данные загружены и для них построен начальный график разброса, отображающий данные по месяцам. Может быть, мы сможем узнать чуть больше о природе данных, очистив их еще лучше.
## Линия линейной регрессии
Как вы узнали в Уроке 1, цель упражнения по линейной регрессии — построить линию, чтобы:
Как вы узнали в Уроке 1, цель упражнения по линейной регрессии — построить линию, которая будет:
- **Показать взаимосвязь переменных**. Показать связь между переменными
- **Делать предсказания**. Точно предсказывать, где новый datapoint будет расположена относительно этой линии.
- **Показывать взаимосвязь переменных.** Отобразить зависимость между переменными.
- **Делать прогнозы.** Точно предсказывать, где на линии окажется новая точка данных.
Обычно **метод наименьших квадратов** используется для построения такой линии. Термин «наименьшие квадраты» относится к процессу минимизации общей ошибки модели. Для каждой точки данных мы измеряем вертикальное расстояние (называемое остатком) между фактической точкой и нашей линией регрессии.
Часто для этого используется метод **наименьших квадратов**. Термин "наименьших квадратов" относится к процессу минимизации общей ошибки модели. Для каждой точки данных мы измеряем вертикальное расстояние (называемое остатком) между фактической точкой и нашей линией регрессии.
Мы возводим эти расстояния в квадрат по двум основным причинам:
1. **Величина, а не направление:** Мы хотим одинаково воспринимать ошибку -5 и +5. Квадрат превращает все значения в положительные.
1. **Величина вместо направления:** Мы хотим, чтобы ошибка -5 рассматривалась так же, как ошибка +5. Возведение в квадрат превращает все значения в положительные.
2. **Штраф для выбросов:** Квадрат придаёт больший вес большим ошибкам, заставляя линию оставаться ближе к точкам, которые находятся далеко.
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`.
> Сначала вычисляем наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper)
>
> Другими словами, говоря о нашем исходном вопросе из данных о тыквах: "предсказать цену тыквы за бушель по месяцам", `X` будет ссылаться на цену, а`Y` — на месяц продажи.
> Сначала вычислите наклон `b`. Инфографика от [Jen Looper](https://twitter.com/jenlooper)
>
> Иными словами, ссылаясь на исходный вопрос наших данных по тыквам: "предсказать цену тыквы за бушель по месяцу", `X` будет означать цену, а`Y` — месяц продажи.
> Вычислите значение Y. Если платите около 4 долларов, должно быть, это апрель! Инфографика от [Jen Looper](https://twitter.com/jenlooper)
>
> Математика, которая вычисляет линию, должна демонстрировать наклон линии, который также зависит от пересечения, т.е. где `Y` находится при `X = 0`.
>
> Метод вычисления этих значений можно посмотреть на сайте [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. Используя диаграмму рассеяния, вы можете быстро визуализировать этот коэффициент. Если точки на графике лежат вдоль аккуратной линии — корреляция высокая, а если разбросаны по всему пространству — корреляция низкая.
Хорошая модель линейной регрессии — это та, у которой высокий (ближе к 1, чем к 0) коэффициент корреляции при использовании метода наименьших квадратов с линией регрессии.
Хорошая модель линейной регрессии имеет высокий коэффициент корреляции (ближе к 1, чем к 0), используя метод наименьших квадратов с линией регрессии.
✅ Запустите ноутбук, сопровождающий этот урок, и посмотрите на диаграмму разброса «Месяц — цена». Кажется ли вам, что данные о зависимости Месяца от Цены для продаж тыкв имеют высокую или низкую корреляцию, исходя из вашего визуального восприятия диаграммы разброса? Изменится ли это, если использовать более точный показатель, например *день года* (то есть количество дней с начала года)?
✅ Запустите ноутбук, который сопровождает этот урок, и посмотрите на диаграмму рассеяния «Месяц — Цена». Кажется ли вам, что данные связывают месяц и цену продажи тыкв с высокой или низкой корреляцией, согласно вашему визуальному восприятию графика? Изменится ли это, если использовать более мелкий масштаб вместо `Month`, например, *день в году* (т.е. количество дней с начала года)?
Вкоде ниже мы предполагаем, что данные очищены, и получен фрейм данных с названием `new_pumpkins`, похожий на следующий:
Вприведенном ниже коде мы предположим, что данные были очищены, и получен датафрейм с именем `new_pumpkins`, подобный следующему:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> Код для очистки данных доступен в [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear`с помощью следующего выражения:
> Код для очистки данных доступен в [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear`с помощью следующего выражения:
Теперь, когда у вас есть понимание математики, стоящей за линейной регрессией, давайте создадим регрессионную модель, чтобы проверить, можем ли мы предсказать, какой пакет тыкв будет иметь лучшие цены. Кто-то, покупающий тыквы для праздничного тыквенного участка, может захотеть иметь такую информацию, чтобы оптимизировать покупки пакетов для участка.
Теперь, когда у вас есть понимание математики, лежащей в основе линейной регрессии, давайте создадим регрессионную модель, чтобы посмотреть, сможем ли мы предсказать, какая упаковка тыкв будет иметь лучшие цены. Человеку, покупающему тыквы для праздничного тыквенного участка, эта информация может помочь оптимизировать закупки.
## Поиск корреляции
[](https://youtu.be/uoRq-lW2eQo "Машинное обучение для начинающих - Поиск корреляции: ключ к линейной регрессии")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор корреляции.
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеособзором корреляции.
Из предыдущего урока вы, вероятно, видели, что средняя цена по месяцам выглядит так:
<imgalt="Средняя цена по месяцам"src="../../../../translated_images/ru/barchart.a833ea9194346d76.webp"width="50%"/>
Это предполагает, что существует некоторая корреляция, и мы можем попытаться обучить модель линейной регрессии, чтобы предсказать связь между `Month` и `Price`, или между `DayOfYear` и `Price`. Вот диаграмма разброса, показывающая вторую связь:
Это говорит о том, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии для предсказания связи между `Month` и `Price`, или `DayOfYear` и `Price`. Вот график разброса, показывающий последнюю связь:
<imgalt="Диаграмма разброса Цена против Дня года" src="../../../../translated_images/ru/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Диаграмма рассеяния Price против Day of Year" src="../../../../translated_images/ru/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Давайте проверим корреляцию с помощью функции `corr`:
Похоже, что корреляция довольно низкая: -0.15 для `Month` и -0.17 для `DayOfMonth`, но возможно есть еще одна важная зависимость. Кажется, что существуют разные кластеры цен, соответствующие различным сортам тыкв. Чтобы подтвердить это предположение, давайте построим график для каждой категории тыкв разным цветом. Передавая параметр `ax` в функцию `scatter`, мы можем отобразить все точки на одном графике:
Похоже, что корреляция довольно мала — -0.15 для `Month` и -0.17 для `DayOfMonth`, но, возможно, есть другая важная зависимость. Судя по всему, имеются разные кластеры цен, соответствующие разным сортам тыкв. Чтобы подтвердить гипотезу, давайте отобразим каждый сорт тыкв разным цветом. Передавая параметр `ax` в функцию `scatter`, мы сможем вывести все точки на одном графике:
```python
ax=None
@ -138,92 +141,92 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Диаграмма рассеяния Price против Day of Year"src="../../../../translated_images/ru/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Диаграмма рассеяния Цена против Дня года с цветом"src="../../../../translated_images/ru/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Наше исследование указывает, что сорт тыкв оказывает большее влияние на цену, чем фактическая дата продажи. Это можно увидеть на столбчатой диаграмме:
Наше исследование показывает, что сорт влияет на общую цену сильнее, чем фактическая дата продажи. Мы можем увидеть это на столбчатой диаграмме:
<imgalt="Диаграмма рассеяния Цена против Дня года для 'pie type'" src="../../../../translated_images/ru/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Диаграмма рассеяния Price против Day of Year" src="../../../../translated_images/ru/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Если теперь вычислить корреляцию между `Price` и `DayOfYear`с помощью функции `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 "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Нажмите на изображение выше для краткого видеообзора линейной и полиномиальной регрессии.
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором линейной и полиномиальной регрессии.
Для обучения модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**.
Для обучения нашей модели линейной регрессии мы будем использовать библиотеку **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
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` к входным данным, чтобы библиотека линейной регрессии правильно их восприняла. Линейная регрессия ожидает на вход двумерный массив, где каждая строка массива соответствует вектору признаков. В нашем случае, поскольку у нас один вход, нам нужен массив формы 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), которая является средним всех квадратов разниц между ожидаемым и предсказанным значением.
Чтобы посмотреть, насколько точна наша модель, мы можем предсказать цены на тестовом наборе данных, а затем измерить, насколько наши прогнозы близки к ожидаемым значениям. Это можно сделать с помощью метрики среднеквадратичной ошибки (RMSE), которая является корнем из среднего всех квадратичных разностей между ожидаемыми и предсказанными значениями.
Наша ошибка кажется примерно равной 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, что довольно низко.
Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше увидеть, как работает регрессия в нашем случае:
Мы также можем построить график тестовых данных вместе с линией регрессии, чтобы лучше понять, как работает регрессия в нашем случае:
```python
plt.scatter(X_test,y_test)
@ -234,17 +237,17 @@ plt.plot(X_test,pred)
## Полиномиальная регрессия
Другим типом линейной регрессии является полиномиальная регрессия. Хотя иногда существует линейная зависимость между переменными — чем больше объем тыквы, тем выше цена — иногда такие зависимости нельзя представить в виде плоскости или прямой линии.
Другим типом линейной регрессии является полиномиальная регрессия. Хотя иногда между переменными существует линейная связь — чем больше объем тыквы, тем выше цена — иногда эти связи нельзя изобразить как плоскость или прямую линию.
✅ Вот [еще несколько примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, для которых может подойти полиномиальная регрессия
✅ Вот [несколько дополнительных примеров](https://online.stat.psu.edu/stat501/lesson/9/9.8) данных, для которых можно применять полиномиальную регрессию
Еще раз взгляните на зависимость между Датой и Ценой. Кажется ли этот диаграмма рассеяния такой, которую обязательно нужно анализировать прямой линией? Может ли цена колебаться? В этом случае вы можете попробовать полиномиальную регрессию.
Посмотрите еще раз на связь между датой и ценой. Кажется ли вам, что этот диаграмм рассеяния обязательно должен анализироваться прямой линией? Разве цены не могут колебаться? В таком случае можно попробовать полиномиальную регрессию.
✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов
✅ Полиномы — это математические выражения, которые могут состоять из одной или нескольких переменных и коэффициентов.
Полиномиальная регрессия строит кривую, чтобы лучше подогнать нелинейные данные. В нашем случае, если мы добавим в входные данные переменную `DayOfYear` в квадрате, мы сможем аппроксимировать наши данные параболой, у которой будет минимум в определенной точке в течение года.
Полиномиальная регрессия создает кривую, чтобы лучше подстроиться под нелинейные данные. В нашем случае, если мы включим переменную `DayOfYear` в квадрате в входные данные, мы сможем аппроксимировать наши данные параболой, которая будет иметь минимум в определенной точке в течение года.
Scikit-learn включает полезный [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для объединения разных этапов обработки данных. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавляет полиномиальные признаки в нашу модель, а затем обучает регрессию:
В Scikit-learn есть удобное [API 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
Использование `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>. Можно также использовать полиномы более высокого порядка при необходимости.
Pipeline можно использовать так же, как и исходный объект `LinearRegression`, то есть мы можем `fit` pipeline, а затем использовать `predict` для получения результатов предсказания. Вот график, показывающий тестовые данные и аппроксимирующую кривую:
Pipelines можно использовать так же, как и исходный объект `LinearRegression`, то есть мы можем выполнить `fit` для pipeline, а затем использовать `predict` для получения результатов предсказания. Вот график, показывающий тестовые данные и аппроксимирующую кривую:
Используя полиномиальную регрессию, мы можем получить слегка меньшую 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%"/>
Чтобы учесть сорт, сначала нужно преобразовать его в числовой формат, то есть**закодировать**. Существует несколько способов сделать это:
Чтобы учитывать сорт, нам сначала нужно преобразовать его в числовую форму, или**закодировать**. Существует несколько способов сделать это:
* Простой **числовой кодировкой** построится таблица разных сортов, и затем имя сорта будет заменено индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия воспринимает числовое значение индекса напрямую и добавляет его к результату, умножая на коэффициент. В нашем случае зависимость между номером индекса и ценой явно нелинейна, даже если мы упорядочим индексы в каком-то определенном порядке.
* **One-hot кодирование** заменит столбец `Variety` на 4 отдельных столбца, по одному на каждый сорт. Каждый столбец будет содержать `1`, если соответствующая строка относится к данному сорту, и `0` иначе. Это означает, что в регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, ответственных за "стартовую цену" (или скорее "дополнительную цену") для конкретного сорта.
* Простой **числовой кодировкой** составляется таблица различных сортов, а затем название сорта заменяется индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что она воспринимает числовое значение индекса как фактическое число и добавляет его к результату, умножая на коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейная, даже если упорядочить индексы определённым образом.
* **One-hot кодировка** заменит столбец `Variety` на 4 разные столбца, по одному для каждого сорта. Каждый столбец будет содержать `1`, если соответствующая строка относится к данному сорту, и `0`в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, отвечающие за "начальную цену" (точнее "дополнительную цену") для конкретного сорта.
Ниже показано, как можно закодировать сорт с помощью one-hot кодирования:
Пример кода ниже показывает, как можно выполнить one-hot кодировку сорта:
Для обучения линейной регрессии с 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']) \
@ -320,9 +323,9 @@ y = new_pumpkins['Price']
Здесь мы также учитываем `City` и тип `Package`, что дает нам MSE 2.84 (10%) и коэффициент детерминации 0.94!
## Итоговый сбор
## Объединяем все вместе
Чтобы получить лучшую модель, мы можем использовать объединённые (one-hot кодированные категориальные + числовые) данные из приведенного примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
Чтобы получить лучшую модель, мы можем использовать объединённые (one-hot кодированные категориальные + числовые) данные из приведённого выше примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
```python
# подготовить обучающие данные
@ -332,7 +335,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# сделать разделение на обучающую и тестовую выборки
# разделить на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
🏆 Отличная работа! Вы создали четыре модели регрессии за один урок и повысили качество модели до 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).
В этом уроке мы изучили линейную регрессию. Существуют и другие важные типы регрессии. Ознакомьтесь с поэтапной, гребневой (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/)
# Подготовка
Если вы завершили [Урок 1](../1-Introduction/README.md), убедитесь, что файл _cleaned_cuisines.csv_ находится в корневой папке `/data` для этих четырех уроков.
Если вы завершили [Урок 1](../1-Introduction/README.md), убедитесь, что файл _cleaned_cuisines.csv_ существует в корневой папке `/data` для этих четырёх уроков.
## Упражнение - предсказание национальной кухни
## Упражнение – предсказать национальную кухню
1. Работая в папке _notebook.ipynb_ этого урока, импортируйте файл вместе с библиотекой Pandas:
1. Работая в папке _notebook.ipynb_ этого урока, импортируйте этот файл вместе с библиотекой Pandas:
Теперь, когда ваши данные очищены и готовы к обучению, нужно решить, какой алгоритм использовать для задачи.
Теперь, когда ваши данные чистые и готовы к обучению, вам нужно решить, какой алгоритм использовать для задачи.
Scikit-learn группирует классификацию в категории Обучения с учителем, и в этой категории вы найдете множество способов классификации. [Разнообразие](https://scikit-learn.org/stable/supervised_learning.html) может показаться ошеломляющим на первый взгляд. Следующие методы включают техники классификации:
Scikit-learn объединяет классификацию под категорией Обучение с учителем, и в этой категории вы найдете много способов классифицировать. [Разнообразие](https://scikit-learn.org/stable/supervised_learning.html) сначала может ошеломить. Следующие методы включают техники классификации:
- Линейные модели
- Машины опорных векторов
@ -88,71 +89,71 @@ Scikit-learn группирует классификацию в категори
- Ближайшие соседи
- Гауссовские процессы
- Деревья решений
- Ансамблевые методы (голосующий классификатор)
- Алгоритмы для многоклассовой и многоцелевой классификации (многоклассовая и многометочная классификация, многоклассовая-многоцелевая классификация)
- Ансамблевые методы (голосование классификаторов)
- Многоклассовые и многоцелевые алгоритмы (многоклассовая и многометочная классификация, многоклассово-многоцелевой классификатор)
> Вы также можете использовать [нейронные сети для классификации данных](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), но это выходит за рамки данного урока.
> Вы также можете использовать [нейронные сети для классификации данных](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), но это вне рамок данного урока.
### Какой классификатор выбрать?
Итак, какой классификатор выбрать? Часто можно протестировать несколько и выбрать лучший результат. Scikit-learn предлагает [сравнение бок о бок](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) на созданном наборе данных, сравнивая KNeighbors, SVC двумя способами, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB и QuadraticDiscrinationAnalysis, визуализируя результаты:
Итак, какой классификатор выбрать? Часто эффективным способом является запуск нескольких и поиск хорошего результата. Scikit-learn предлагает [побочное сравнение](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) на созданном наборе данных, сравнивая KNeighbors, SVC двумя способами, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB и QuadraticDiscrinationAnalysis, показывая результаты визуализированными:
> AutoML решает эту проблему, выполняя сравнения в облаке, позволяя вам выбрать лучший алгоритм для ваших данных. Попробуйте [здесь](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML решает эту задачу аккуратно, запуская эти сравнения в облаке, позволяя вам выбрать лучший алгоритм для ваших данных. Попробуйте [здесь](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Более разумный подход
### Лучший подход
Более разумный подход, чем просто угадывать, — это следовать идеям из этого загружаемого [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Здесь мы обнаруживаем, что для нашей многоклассовой задачиу нас есть несколько вариантов:
Лучшим методом, чем слепое угадывание, является следование идеям из этого загружаемого [справочника по ML](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Здесь мы узнаём, что для нашей задачи с многоклассовой классификациейу нас есть несколько вариантов:

> Раздел шпаргалки Microsoft Algorithm Cheat Sheet, описывающий варианты многоклассовой классификации

> Раздел справочника Microsoft по алгоритмам, описывающий варианты многоклассовой классификации
✅ Скачайте эту шпаргалку, распечатайте и повесьте на стену!
✅ Скачайте этот справочник, распечатайте и повесьте на стену!
### Рассуждения
Давайте попробуем рассуждать о различных подходах, учитывая наши ограничения:
Давайте попробуем рассуждать по поводу разных подходов с учётом имеющихся ограничений:
- **Нейронные сети слишком тяжелы**. Учитывая наш очищенный, но минимальный набор данных и тот факт, что мы проводим обучение локально через ноутбуки, нейронные сети слишком громоздки для этой задачи.
- **Двухклассовый классификатор не подходит**. Мы не используем двухклассовый классификатор, поэтому исключаем one-vs-all.
- **Нейронные сети слишком тяжёлые**. Учитывая наш чистый, но небольшой набор данных и тот факт, что обучение проводится локально в ноутбуках, нейронные сети слишком ресурсоёмки для этой задачи.
- **Нет двухклассового классификатора**. Мы не используем классификатор для двух классов, это исключает схему один-против-всех.
- **Дерево решений или логистическая регрессия могут подойти**. Дерево решений может подойти, или логистическая регрессия для многоклассовых данных.
- **Многоклассовые усиленные деревья решений решают другую задачу**. Многоклассовое усиленное дерево решений наиболее подходит для непараметрических задач, например, задач, предназначенных для построения ранжирования, поэтому оно нам не подходит.
- **Многоклассовые бустинговые деревья решают другую задачу**. Они более подходящи для непараметрических задач, например, для построения ранжирований, что нам не нужно.
### Использование Scikit-learn
Мы будем использовать Scikit-learn для анализа наших данных. Однако существует множество способов использования логистической регрессии в Scikit-learn. Ознакомьтесь с [параметрами для передачи](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Мы будем использовать Scikit-learn для анализа наших данных. Однако существует много способов использовать логистическую регрессию в Scikit-learn. Посмотрите параметры, которые можно передать [здесь](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Существует два важных параметра - `multi_class` и `solver` - которые необходимо указать, когда мы просим Scikit-learn выполнить логистическую регрессию. Значение `multi_class`определяет определенное поведение. Значение solver указывает, какой алгоритм использовать. Не все solvers могут быть использованы с любыми значениями `multi_class`.
В основном, есть два важных параметра — `multi_class` и `solver` — которые нужно указать, когда вы просите Scikit-learn выполнить логистическую регрессию. Значение `multi_class`задаёт определённое поведение. Значение `solver` указывает, какой алгоритм использовать. Не все решения (solvers) совместимы со всеми значениями `multi_class`.
Согласно документации, в многоклассовом случае алгоритм обучения:
Согласно документации, в случае многоклассовой задачи алгоритм обучения:
- **Использует схему one-vs-rest (OvR)**, если параметр `multi_class` установлен в `ovr`
- **Использует функцию потерь перекрестной энтропии**, если параметр `multi_class` установлен в `multinomial`. (В настоящее время опция `multinomial` поддерживается только solvers‘lbfgs’, ‘sag’, ‘saga’ и ‘newton-cg’.)"
- **Использует схему one-vs-rest (OvR)**, если опция `multi_class` установлена в `ovr`
- **Использует функцию потерь кросс-энтропии**, если `multi_class` установлена в `multinomial`. (В настоящее время опция `multinomial` поддерживается только решателями‘lbfgs’, ‘sag’, ‘saga’ и ‘newton-cg’)."
> 🎓 "Схема" здесь может быть либо 'ovr' (one-vs-rest), либо 'multinomial'. Поскольку логистическая регрессия изначально предназначена для поддержки бинарной классификации, эти схемы позволяют ей лучше справляться с задачами многоклассовой классификации. [источник](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Здесь 'scheme' может быть 'ovr' (один-против-остальных) или 'multinomial'. Поскольку логистическая регрессия изначально предназначена для бинарной классификации, эти схемы позволяют лучше обрабатывать многоклассовые задачи. [источник](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 "Solver" определяется как "алгоритм, используемый в задаче оптимизации". [источник](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'Solver' определяется как "алгоритм, используемый для решения задачи оптимизации". [источник](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn предлагает эту таблицу, чтобы объяснить, как solvers справляются с различными задачами, представленными различными структурами данных:
Scikit-learn предлагает эту таблицу, чтобы объяснить, как решатели справляются с различными типами данных:
## Упражнение - применение логистической регрессии
## Упражнение – применить логистическую регрессию
Поскольку вы используете многоклассовый случай, вам нужно выбрать, какую _схему_ использовать и какой _solver_ установить. Используйте LogisticRegression с многоклассовой настройкой и **liblinear** solver для обучения.
Так как вы используете многоклассовый случай, нужно выбрать, какую _схему_ использовать и какой _решатель_ задать. Используйте LogisticRegression с многоклассовой настройкой и решателем **liblinear** для обучения.
1. Создайте логистическую регрессию с multi_class, установленным в `ovr`, и solver, установленным в `liblinear`:
1. Создайте логистическую регрессию спараметром multi_class, установленным в `ovr`, и решателем, установленным в `liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ Попробуйте другой solver, например `lbfgs`, который часто устанавливается по умолчанию.
> Обратите внимание, используйте функцию Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) для преобразования данных в плоский вид, когда это необходимо.
Точность составляет более **80%**!
✅ Попробуйте другой решатель, например `lbfgs`, который часто используется по умолчанию
1. Вы можете увидеть, как работает эта модель, протестировав одну строку данных (#50):
> Обратите внимание, используйте функцию Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) для уплощения данных, когда это необходимо.
Точность хорошая — более **80%**!
1. Вы можете увидеть работу модели, проверив одну строку данных (#50):
В этом уроке вы использовали очищенные данные для создания модели машинного обучения, которая может предсказывать национальную кухню на основе набора ингредиентов. Потратьте время, чтобы изучить множество возможностей, которые Scikit-learn предоставляет для классификации данных. Углубитесь в концепцию 'solver', чтобы понять, что происходит за кулисами.
В этом уроке вы использовали очищенные данные для построения модели машинного обучения, которая может предсказывать национальную кухню на основе набора ингредиентов. Найдите время, чтобы изучить множество вариантов, которые предоставляет Scikit-learn для классификации данных. Глубже разберитесь в концепции «решателя» (solver), чтобы понять, что происходит за кулисами.
## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/)
## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/)
## Обзор и самостоятельное изучение
Углубитесь немного больше в математику логистической регрессии в [этом уроке](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf).
## Задание
Углубитесь в математику, лежащую в основе логистической регрессии, в [этом уроке](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Задание
[Изучите решатели](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). Хотя мы стремимся к точности, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обращаться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.
> Этот репозиторий включает более 50 переводов, что значительно увеличивает размер загрузки. Чтобы клонировать без переводов, используйте sparse checkout:
> Этот репозиторий включает более 50 переводов на разные языки, что значительно увеличивает размер загрузки. Чтобы клонировать без переводов, используйте разреженную загрузку (sparse checkout):
У нас продолжается серия в Discord «Учимся с ИИ», узнайте больше и присоединяйтесь к нам на [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы получите советы и рекомендации по использованию GitHub Copilot для Data Science.
У нас сейчас идёт серия в Discord "Учись с ИИ", узнавайте больше и присоединяйтесь к [Learn with AI Series](https://aka.ms/learnwithai/discord) с 18 по 30 сентября 2025 года. Вы узнаете советы и приёмы использования GitHub Copilot для Data Science.

# Машинное обучение для начинающих — учебная программа
# Машинное обучение для начинающих - Учебная программа
> 🌍 Путешествуйте по миру, изучая машинное обучение через призму культур разных стран 🌍
> 🌍 Путешествуйте по миру, изучая машинное обучение через призму мировых культур 🌍
Cloud Advocates в Microsoft рады предложить 12-недельную программу из 26 уроков, посвящённую **Машинному обучению**. В этой программе вы познакомитесь с тем, что иногда называют **классическим машинным обучением**, используя в основном библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашей программе [ИИ для начинающих](https://aka.ms/ai4beginners). Сочетайте эти уроки с нашей программой ['Data Science для начинающих'](https://aka.ms/ds4beginners) для более полного обучения!
Cloud Advocates в Microsoft рады представить 12-недельную программу из 26 уроков, полностью посвящённую **Машинному обучению**. В этой программе вы узнаете о том, что иногда называют **классическим машинным обучением**, в основном используя библиотеку Scikit-learn и избегая глубокого обучения, которое рассматривается в нашей программе [AI for Beginners](https://aka.ms/ai4beginners). Совместите эти уроки с нашим курсом ['Data Science for Beginners'](https://aka.ms/ds4beginners) для большего эффекта!
Путешествуйте с нами по миру, применяя классические методы к данным из разных регионов. Каждый урок включает предварительный и итоговый викторины, письменные инструкции по выполнению урока, решение, задание и многое другое. Наша проектно-ориентированная методика обучения позволяет учиться на практике — доказанный способ лучше усваивать новые навыки.
Путешествуйте с нами по миру, применяя эти классические методы к данным из различных регионов. Каждый урок включает тесты до и после, письменные инструкции для выполнения, решение, домашнее задание и многое другое. Наша проектно-ориентированная методика позволяет учиться в процессе создания, что доказано как эффективный способ усвоения новых навыков.
**✍️ Сердечная благодарность нашим авторам:** Джен Лупер, Стивен Хауэлл, Франческа Лазцери, Томоми Имура, Кэсси Брэвью, Дмитрий Сошников, Крис Норинг, Анирбан Мукхерджи, Орнелла Альтуньян, Рут Якобу и Эми Бойд
**✍️ Сердечная благодарность нашим авторам** Джен Лупер, Стивен Хауэлл, Франческа Лаззери, Томоми Имура, Кэсси Бревиу, Дмитрий Сошников, Крис Норинг, Анирбан Мукхерджи, Орнелла Алтунян, Рут Якубу и Эми Бойд
**🎨 Спасибо также нашим иллюстраторам:** Томоми Имура, Дасани Мадипалли и Джен Лупер
**🎨 Спасибо также нашим иллюстраторам** Томоми Имура, Дасани Мадипалли и Джен Лупер
**🙏 Особая благодарность 🙏 нашим студентам-амбассадорам Microsoft — авторам, рецензентам и участникам контента**, особенно Ришиту Дагли, Мухаммеду Сакибу Хану Инану, Рохану Радж, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуила и Снигдхе Агарвал
**🙏 Особая благодарность 🙏 нашим студентам-амбассадорам Microsoft, авторам, рецензентам и контент-конкурентам**, особенно Ришиту Дагли, Мухаммад Сакибу Хан Ина, Рохану Раджу, Александру Петреску, Абхишеку Джайсвалу, Наврин Табассум, Иоану Самуиле и Снигдха Агарвал
**🤩 Дополнительная благодарность студентам-амбассадорам Microsoft Эрику Ванджау, Джаслин Сонди и Видуши Гупте за уроки по R!**
**🤩 Особое спасибо студентам-амбассадорам Microsoft Эрику Ванджау, Джаслин Сонди и Видуши Гупте за наши уроки по R!**
# Начало работы
Выполните следующие шаги:
1. **Форк репозитория**: Нажмите кнопку «Fork» в правом верхнем углу страницы.
1. **Форкните репозиторий**: Нажмите кнопку «Fork» в правом верхнем углу этой страницы.
> [найдите все дополнительные ресурсы курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [найдите все дополнительные ресурсы для этого курса в нашей коллекции 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` каждого проектно-ориентированного урока.
- Пройдите итоговый опрос после лекции.
- Выполните challenge (сложное задание).
- Начните с теста до лекции.
- Прочтите лекцию и выполните задания, останавливаясь и размышляя при каждом знании проверки.
- Пытайтесь создавать проекты, понимая уроки, а не просто запускайте решение; однако код решения доступен в папках `/solution` в каждом уроке с направленностью на проект.
- Пройдите тест после лекции.
- Выполните вызов.
- Выполните домашнее задание.
- После завершения группы уроков посетите [Доску обсуждений](https://github.com/microsoft/ML-For-Beginners/discussions) и "учитесь вслух", заполнив соответствующий рубрикатор PAT. PAT — это инструмент оценки прогресса в обучении, который вы заполняете для углубления учебы. Вы также можете отзываться на чужие PAT, чтобы учиться вместе.
- После завершения группы уроков посетите [Форум обсуждений](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 на YouTube-канале Microsoft Developer](https://aka.ms/ml-beginners-videos), нажав на изображение ниже.
Некоторые уроки доступны в виде коротких видео. Их можно найти встроенными в уроки или на [плейлисте ML for Beginners на YouTube-канале Microsoft Developer](https://aka.ms/ml-beginners-videos), кликнув по изображению ниже.
[](https://aka.ms/ml-beginners-videos)
**Гиф по работе** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 Нажмите на изображение выше, чтобы посмотреть видео о проекте и создателях!
> 🎥 Нажмите на изображение выше для просмотра видео о проекте и людях, которые его создали!
---
## Педагогика
Мы выбрали два педагогических принципа при создании этой программы: обеспечение практико-ориентированного **проектного обучения** и включение **частых викторин**. Кроме того, программа объединена общей **темой** для связности.
При создании этой учебной программы мы выбрали два педагогических принципа: обеспечить практическую **проектно-ориентированную** структуру и включить **частые проверочные тесты**. Кроме того, программа имеет единую **тему** для связности.
Обеспечивая соответствие контента проектам, процесс становится более увлекательным для студентов, и усвоение концепций улучшается. К тому же предварительный низкоуровневый опрос перед занятием задаёт настрой на изучение темы, а итоговый опрос после класса закрепляет новые знания. Программа разработана так, чтобы быть гибкой и интересной, её можно проходить полностью или частично. Проекты начинаются с малого и растут по сложности к концу 12-недельного цикла. Программа также включает послесловие о реальных применениях МО, что может использоваться как дополнительный материал или основа для обсуждения.
Обеспечение совпадения содержания с проектами делает процесс более увлекательным для студентов и увеличивает усвоение концепций. Кроме того, тест до занятия задаёт установку на обучение теме, а второй тест после занятия укрепляет знания. Эта программа была разработана, чтобы быть гибкой и увлекательной, её можно проходить полностью или часть. Проекты начинаются с простого и становятся всё более сложными к концу 12-недельного цикла. Программа также содержит постскриптум о реальном применении машинного обучения, который можно использовать для дополнительного зачёта или в качестве основы для обсуждения.
> Ознакомьтесь с нашим [Кодексом поведения](CODE_OF_CONDUCT.md), [Руководством для участников](CONTRIBUTING.md), [Переводами](..) и [решением проблем](TROUBLESHOOTING.md). Мы приветствуем ваши конструктивные отзывы!
> Ознакомьтесь с нашим [Кодексом поведения](CODE_OF_CONDUCT.md), [Правилами внесения вкладов](CONTRIBUTING.md), [переводами](..) и [Руководством по устранению неполадок](TROUBLESHOOTING.md). Мы приветствуем ваши конструктивные отзывы!
## Каждый урок включает
- необязательные скетчноты
- необязательное дополнительное видео
- факультативные заметки-скетчи
- факультативное дополнительное видео
- видео-прохождение (только некоторые уроки)
- [викторину для разогрева перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
- [разминку перед лекцией (тест)](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 документ`. Таким образом, он служит примером структуры для авторов в области науки о данных, поскольку позволяет комбинировать ваш код, его вывод и ваши мысли, позволяя записывать их в Markdown. Более того, документы R Markdown могут быть преобразованы в форматы вывода, такие как PDF, HTML или Word.
> **Примечание о викторинах**: Все викторины находятся в папке [Quiz App](../../quiz-app), всего 52 викторины по три вопроса каждая. Они связаны с уроками, но приложение для викторин можно запускать локально; следуйте инструкциям в папке `quiz-app`, чтобы развернуть локально или в Azure.
| Номер урока | Тема | Группа уроков | Цели обучения | Связанный урок | Автор |
| 01 | Введение в машинное обучение | [Введение](1-Introduction/README.md) | Изучить основные концепции машинного обучения | [Урок](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | История машинного обучения | [Введение](1-Introduction/README.md) | Узнать о истории, лежащей в основе этой области | [Урок](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Справедливость и машинное обучение | [Введение](1-Introduction/README.md) | Какие важные философские вопросы о справедливости следует учитывать при построении и применении моделей машинного обучения? | [Урок](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Методы машинного обучения | [Введение](1-Introduction/README.md) | Какие методы используют исследователи ML для построения моделей? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 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) | Jen • Eric Wanjau |
| 06 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](2-Regression/README.md) | Визуализация и очистка данных в подготовке к ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](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 | Цены на тыквы в Северной Америке 🎃 | [Регрессия](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 | Веб-приложение 🔌 | [Веб-приложение](3-Web-App/README.md) | Построить веб-приложение для использования обученной модели | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Введение в классификацию | [Классификация](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 | Вкусная азиатская и индийская кухни 🍜 | [Классификация](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 | Вкусная азиатская и индийская кухни 🍜 | [Классификация](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 | Вкусная азиатская и индийская кухни 🍜 | [Классификация](4-Classification/README.md) | Построить рекомендательное веб-приложение с использованием вашей модели | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Введение в кластеризацию | [Кластеризация](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 | Исследование музыкальных вкусов Нигерии 🎧 | [Кластеризация](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 | Введение в обработку естественного языка ☕️ | [Обработка естественного языка](6-NLP/README.md) | Изучить основы NLP, построив простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Общие задачи NLP ☕️ | [Обработка естественного языка](6-NLP/README.md) | Углубить знания о NLP, изучая общие задачи при работе с языковыми структурами | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Перевод и анализ настроений ♥️ | [Обработка естественного языка](6-NLP/README.md) | Перевод и анализ настроений с Джейн Остин | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений на отзывах отелей 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Романтические отели Европы ♥️ | [Обработка естественного языка](6-NLP/README.md) | Анализ настроений на отзывах отелей 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 22 | ⚡️ Использование электроэнергии в мире ⚡️ - прогнозирование временных рядов с ARIMA | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов с помощью ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Использование электроэнергии в мире ⚡️ - прогнозирование временных рядов с SVR | [Временные ряды](7-TimeSeries/README.md) | Прогнозирование временных рядов методом опорных векторов | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Введение в обучение с подкреплением | [Обучение с подкреплением](8-Reinforcement/README.md) | Введение в обучение с подкреплением с использованием Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Помогите Питеру избежать волка! 🐺 | [Обучение с подкреплением](8-Reinforcement/README.md) | Обучение с подкреплением с Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Послесловие | Реальные сценарии и применения ML | [ML в действии](9-Real-World/README.md) | Интересные и показательныe реальные применения классического машинного обучения | [Урок](9-Real-World/1-Applications/README.md) | Команда |
| Послесловие | Отладка моделей ML с помощью панели RAI | [ML в действии](9-Real-World/README.md) | Отладка моделей машинного обучения с помощью компонентов панели Responsible AI | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [найдите все дополнительные ресурсы для этого курса в нашей коллекции Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
- домашнее задание
- [тест после лекции](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 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 и 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 и 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 и 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 и 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 и 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 и 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-средних | [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 | Распространенные задачи NLP ☕️ | [Natural language processing](6-NLP/README.md) | Углубить знания по NLP, изучив распространенные задачи при работе с языковыми структурами | [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) | Прогнозирование временных рядов с помощью регрессии опорных векторов | [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) | Команда |
| Постскрипт | Отладка моделей машинного обучения с помощью RAI dashboard | [ML in the Wild](9-Real-World/README.md) | Отладка моделей машинного обучения с использованием компонентов панели Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [найдите все дополнительные материалы для этого курса в нашей коллекции 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`. Сайт будет доступен по адресу `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).
## 🎒 Другие курсы
## 🎒 Другие курсы
Наша команда выпускает и другие курсы! Посмотрите:
Наша команда выпускает и другие курсы! Ознакомьтесь:
<!-- 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 / Агенты
[](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)
### 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)
@ -198,7 +198,7 @@ Cloud Advocates в Microsoft рады предложить 12-недельную
---
### Основное обучение
### Основные знания
[](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)
@ -212,27 +212,38 @@ Cloud Advocates в Microsoft рады предложить 12-недельную
### Серия 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)
Если вы застряли или у вас есть вопросы по созданию ИИ-приложений. Присоединяйтесь к другим обучающимся и опытным разработчикам в обсуждениях MCP. Это поддерживающее сообщество, где вопросы приветствуются, а знания свободно делятся.
Если вы столкнулись с трудностями или у вас возникли вопросы во время изучения машинного обучения или создания приложений ИИ, не волнуйтесь — помощь доступна.
Вы можете присоединиться к обсуждениям с другими учениками и разработчиками, задавать вопросы и делиться своими идеями с сообществом.
- Присоединяйтесь к сообществу, чтобы задавать вопросы и учиться вместе с другими
- Обсуждайте концепции машинного обучения и идеи проектов
- Получайте советы от опытных разработчиков
Поддерживающее сообщество — отличный способ развивать свои навыки и быстрее решать проблемы.
[Сообщество Microsoft Foundry в Discord](https://discord.gg/nTYy5BXMWG)
Если вы обнаружите ошибки, сбои или у вас есть предложения по улучшению, вы также можете открыть **Issue** в этом репозитории, чтобы сообщить о проблеме.
Для отзывов о продукте или поиска уже существующих публикаций сообщества посетите форум разработчиков:
Если у вас есть отзывы о продукте или вы столкнулись с ошибками при разработке, посетите:
[](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). Несмотря на наши усилия обеспечить точность, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на егородном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникающие при использовании данного перевода.