diff --git a/translations/ar/.co-op-translator.json b/translations/ar/.co-op-translator.json
index 88d34d36b..03563bc71 100644
--- a/translations/ar/.co-op-translator.json
+++ b/translations/ar/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "ar"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-04T20:47:01+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T20:14:08+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "ar"
},
@@ -90,8 +90,8 @@
"language_code": "ar"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T16:04:49+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T20:13:41+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ar"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "ar"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T20:10:25+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "ar"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-04T20:39:43+00:00",
diff --git a/translations/ar/1-Introduction/4-techniques-of-ML/README.md b/translations/ar/1-Introduction/4-techniques-of-ML/README.md
index f7d86fd7d..9e175f804 100644
--- a/translations/ar/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/ar/1-Introduction/4-techniques-of-ML/README.md
@@ -1,123 +1,125 @@
-# تقنيات تعلم الآلة
+# تقنيات التعلم الآلي
-عملية بناء واستخدام وصيانة نماذج تعلم الآلة والبيانات التي تستخدمها تختلف بشكل كبير عن العديد من سير العمل التطويرية الأخرى. في هذا الدرس، سنزيل الغموض عن هذه العملية، ونوضح التقنيات الرئيسية التي تحتاج إلى معرفتها. ستتعلم:
+عملية بناء واستخدام وصيانة نماذج التعلم الآلي والبيانات التي تستخدمها هي عملية مختلفة جدًا عن العديد من سير العمل الأخرى في التطوير. في هذا الدرس، سنقوم بتبسيط العملية، وتحديد التقنيات الرئيسية التي تحتاج إلى معرفتها. سوف:
-- فهم العمليات التي تقوم عليها تعلم الآلة على مستوى عالٍ.
-- استكشاف المفاهيم الأساسية مثل "النماذج"، "التنبؤات"، و"بيانات التدريب".
+- تفهم العمليات الأساسية التي تقوم عليها التعلم الآلي على مستوى عالٍ.
+- تستكشف المفاهيم الأساسية مثل "النماذج"، و"التنبؤات"، و"بيانات التدريب".
-## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+## [اختبار قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-[](https://youtu.be/4NGM0U2ZSHU "تعلم الآلة للمبتدئين - تقنيات تعلم الآلة")
+[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح هذا الدرس.
+> 🎥 انقر على الصورة أعلاه لفيديو قصير يشرح هذا الدرس.
## المقدمة
-على مستوى عالٍ، تتكون عملية إنشاء عمليات تعلم الآلة (ML) من عدة خطوات:
+على مستوى عالٍ، يتألف فن إنشاء عمليات التعلم الآلي (ML) من عدد من الخطوات:
-1. **تحديد السؤال**. تبدأ معظم عمليات تعلم الآلة بطرح سؤال لا يمكن الإجابة عليه ببرنامج شرطي بسيط أو محرك قائم على القواعد. غالبًا ما تدور هذه الأسئلة حول التنبؤات بناءً على مجموعة من البيانات.
-2. **جمع وتحضير البيانات**. للإجابة على سؤالك، تحتاج إلى بيانات. جودة البيانات وأحيانًا كميتها ستحدد مدى قدرتك على الإجابة على سؤالك الأولي. يعد تصور البيانات جانبًا مهمًا في هذه المرحلة. تتضمن هذه المرحلة أيضًا تقسيم البيانات إلى مجموعة تدريب واختبار لبناء نموذج.
-3. **اختيار طريقة التدريب**. بناءً على سؤالك وطبيعة بياناتك، تحتاج إلى اختيار الطريقة التي تريد بها تدريب نموذج يعكس بياناتك بدقة ويقدم تنبؤات دقيقة. هذه هي المرحلة التي تتطلب خبرة محددة وغالبًا قدرًا كبيرًا من التجريب.
-4. **تدريب النموذج**. باستخدام بيانات التدريب الخاصة بك، ستستخدم خوارزميات مختلفة لتدريب نموذج للتعرف على الأنماط في البيانات. قد يعتمد النموذج على أوزان داخلية يمكن تعديلها لتفضيل أجزاء معينة من البيانات على الأخرى لبناء نموذج أفضل.
-5. **تقييم النموذج**. تستخدم بيانات لم يسبق للنموذج رؤيتها (بيانات الاختبار) من المجموعة التي جمعتها لمعرفة أداء النموذج.
-6. **ضبط المعلمات**. بناءً على أداء النموذج، يمكنك إعادة العملية باستخدام معلمات أو متغيرات مختلفة تتحكم في سلوك الخوارزميات المستخدمة لتدريب النموذج.
-7. **التنبؤ**. استخدم مدخلات جديدة لاختبار دقة النموذج.
+1. **حدد السؤال**. تبدأ معظم عمليات التعلم الآلي بطرح سؤال لا يمكن الإجابة عليه باستخدام برنامج شرطي بسيط أو محرك قواعد معتمد على الشروط. غالبًا ما تدور هذه الأسئلة حول التنبؤات بناءً على مجموعة من البيانات.
+2. **جمع وتحضير البيانات**. لكي تكون قادرًا على الإجابة على سؤالك، تحتاج إلى بيانات. جودة وأحيانًا كمية بياناتك ستحدد مدى قدرتك على الإجابة عن سؤالك الأولي. تصور البيانات هو جانب مهم من هذه المرحلة. تشمل هذه المرحلة أيضًا تقسيم البيانات إلى مجموعة تدريب ومجموعة اختبار لبناء نموذج.
+3. **اختر طريقة التدريب**. اعتمادًا على سؤالك وطبيعة بياناتك، تحتاج إلى اختيار كيفية تدريب النموذج لتعكس بياناتك بشكل أفضل وتجعل التنبؤات دقيقة. هذا هو الجزء من عملية التعلم الآلي الذي يتطلب خبرة محددة، وغالبًا كمية كبيرة من التجارب.
+4. **تدريب النموذج**. باستخدام بيانات التدريب الخاصة بك، ستستخدم خوارزميات مختلفة لتدريب نموذج للتعرف على الأنماط في البيانات. قد يستخدم النموذج أوزانًا داخلية يمكن تعديلها لإعطاء أولوية لأجزاء معينة من البيانات على أخرى لبناء نموذج أفضل.
+5. **تقييم النموذج**. تستخدم بيانات لم تُرى من قبل (بيانات الاختبار) من المجموعة التي جمعتها لتقييم أداء النموذج.
+6. **ضبط المعاملات**. بناءً على أداء النموذج، يمكنك إعادة العملية باستخدام معاملات مختلفة، أو متغيرات، تتحكم في سلوك الخوارزميات المستخدمة لتدريب النموذج.
+7. **التنبؤ**. استخدم مدخلات جديدة لاختبار دقة النموذج الخاص بك.
## ما السؤال الذي يجب طرحه
-تتميز أجهزة الكمبيوتر بمهارتها في اكتشاف الأنماط المخفية في البيانات. هذه الفائدة مفيدة جدًا للباحثين الذين لديهم أسئلة حول مجال معين لا يمكن الإجابة عليها بسهولة من خلال إنشاء محرك قواعد شرطي. على سبيل المثال، قد يتمكن عالم بيانات من إنشاء قواعد يدوية حول معدل الوفيات بين المدخنين وغير المدخنين.
+تتمتع الحواسيب بمهارة خاصة في اكتشاف الأنماط المخفية في البيانات. هذه الفائدة مفيدة جدًا للباحثين الذين لديهم أسئلة حول مجال معين لا يمكن الإجابة عليها بسهولة عن طريق إنشاء محرك قواعد معتمد على الشروط. على سبيل المثال، في مهمة تأمينية، قد يتمكن عالم بيانات من إنشاء قواعد مصنوعة يدويًا حول وفاة المدخنين مقابل غير المدخنين.
-ولكن عندما يتم إدخال العديد من المتغيرات الأخرى في المعادلة، قد يكون نموذج تعلم الآلة أكثر كفاءة في التنبؤ بمعدلات الوفيات المستقبلية بناءً على التاريخ الصحي السابق. مثال أكثر تفاؤلاً قد يكون التنبؤ بالطقس لشهر أبريل في موقع معين بناءً على بيانات تشمل خطوط العرض والطول، تغير المناخ، القرب من المحيط، أنماط التيار النفاث، والمزيد.
+لكن عندما يتم إدخال العديد من المتغيرات الأخرى في المعادلة، قد يثبت نموذج التعلم الآلي فعاليته أكثر في التنبؤ بمعدلات الوفيات المستقبلية بناءً على التاريخ الصحي السابق. مثال أكثر بهجة قد يكون تكوين توقعات الطقس لشهر أبريل في موقع معين بناءً على بيانات تشمل خط العرض، وخط الطول، وتغير المناخ، والقرب من المحيط، وأنماط التيار النفاث، وغير ذلك.
-✅ يقدم هذا [العرض التقديمي](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) نظرة تاريخية على استخدام تعلم الآلة في تحليل الطقس.
+✅ هذه [شرائح العرض](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) حول نماذج الطقس تقدم منظورًا تاريخيًا لاستخدام التعلم الآلي في تحليل الطقس.
## المهام قبل البناء
-قبل البدء في بناء النموذج الخاص بك، هناك عدة مهام تحتاج إلى إكمالها. لاختبار سؤالك وتشكيل فرضية بناءً على تنبؤات النموذج، تحتاج إلى تحديد وتكوين عدة عناصر.
+قبل البدء في بناء النموذج، هناك عدة مهام يجب إكمالها. لاختبار سؤالك وتكوين فرضية بناءً على توقعات النموذج، تحتاج إلى تحديد وتكوين عدة عناصر.
### البيانات
-للإجابة على سؤالك بأي درجة من اليقين، تحتاج إلى كمية جيدة من البيانات من النوع الصحيح. هناك شيئان تحتاج إلى القيام بهما في هذه المرحلة:
+لكي تتمكن من الإجابة على سؤالك بأي درجة من اليقين، تحتاج إلى كمية جيدة من البيانات من النوع المناسب. هناك أمران تحتاج إلى القيام بهما في هذه المرحلة:
-- **جمع البيانات**. مع الأخذ في الاعتبار الدرس السابق حول الإنصاف في تحليل البيانات، اجمع بياناتك بعناية. كن على دراية بمصادر هذه البيانات، وأي تحيزات متأصلة قد تكون لديها، ووثق أصلها.
-- **تحضير البيانات**. هناك عدة خطوات في عملية تحضير البيانات. قد تحتاج إلى تجميع البيانات وتطبيعها إذا كانت تأتي من مصادر متنوعة. يمكنك تحسين جودة وكمية البيانات من خلال طرق مختلفة مثل تحويل النصوص إلى أرقام (كما نفعل في [التجميع](../../5-Clustering/1-Visualize/README.md)). قد تقوم أيضًا بإنشاء بيانات جديدة بناءً على الأصل (كما نفعل في [التصنيف](../../4-Classification/1-Introduction/README.md)). يمكنك تنظيف وتحرير البيانات (كما سنفعل قبل درس [تطبيق الويب](../../3-Web-App/README.md)). وأخيرًا، قد تحتاج أيضًا إلى عشوائية البيانات وخلطها، بناءً على تقنيات التدريب الخاصة بك.
+- **جمع البيانات**. مع وضع الدرس السابق حول النزاهة في تحليل البيانات في الاعتبار، اجمع بياناتك بعناية. كن واعيًا لمصادر هذه البيانات، وأي تحيزات كامنة قد تكون لديها، ودوّن أصلها.
+- **تحضير البيانات**. هناك عدة خطوات في عملية تحضير البيانات. قد تحتاج إلى جمع البيانات وتطبيعها إذا كانت قادمة من مصادر متنوعة. يمكنك تحسين جودة وكمية البيانات من خلال عدة طرق مثل تحويل السلاسل النصية إلى أعداد (كما نفعل في [التجميع](../../5-Clustering/1-Visualize/README.md)). قد تنتج أيضًا بيانات جديدة بناءً على الأصلية (كما نفعل في [التصنيف](../../4-Classification/1-Introduction/README.md)). يمكنك تنظيف وتحرير البيانات (كما سنفعل قبل درس [تطبيق الويب](../../3-Web-App/README.md)). وأخيرًا، قد تحتاج أيضًا إلى عشوائيتها وخلطها، اعتمادًا على تقنيات التدريب الخاصة بك.
-✅ بعد جمع ومعالجة بياناتك، خذ لحظة لترى ما إذا كان شكلها سيسمح لك بمعالجة سؤالك المقصود. قد تكون البيانات غير مناسبة لمهمتك المحددة، كما نكتشف في دروس [التجميع](../../5-Clustering/1-Visualize/README.md)!
+✅ بعد جمع ومعالجة بياناتك، خذ لحظة لترى إذا كان شكلها سيسمح لك بمعالجة السؤال الذي تقصده. قد تكون البيانات غير مناسبة لمهمتك المحددة، كما نكتشف في دروسنا في [التجميع](../../5-Clustering/1-Visualize/README.md)!
-### الميزات والهدف
+### السمات والهدف
-الميزة هي خاصية قابلة للقياس في بياناتك. في العديد من مجموعات البيانات، يتم التعبير عنها كعنوان عمود مثل "التاريخ"، "الحجم"، أو "اللون". تمثل متغيرات الميزات، التي يتم تمثيلها عادةً بـ `X` في الكود، المتغيرات المدخلة التي سيتم استخدامها لتدريب النموذج.
+[الميزة](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) هي خاصية قابلة للقياس في بياناتك. في العديد من مجموعات البيانات، يتم التعبير عنها كعنوان عمود مثل "التاريخ" أو "الحجم" أو "اللون". متغير الميزة الخاص بك، الذي يُمثل عادةً بـ`X` في الكود، يمثل المتغير المدخل الذي سيتم استخدامه لتدريب النموذج.
-الهدف هو الشيء الذي تحاول التنبؤ به. يتم تمثيل الهدف عادةً بـ `y` في الكود، ويمثل الإجابة على السؤال الذي تحاول طرحه على بياناتك: في ديسمبر، ما هو **لون** القرع الذي سيكون الأرخص؟ في سان فرانسيسكو، ما هي الأحياء التي ستحتوي على أفضل **أسعار** العقارات؟ أحيانًا يُشار إلى الهدف أيضًا كخاصية التسمية.
+الهدف هو الشيء الذي تحاول التنبؤ به. الهدف، والذي يُمثل عادةً بـ`y` في الكود، يمثل الإجابة على السؤال الذي تحاول طرحه على بياناتك: في ديسمبر، ما **لون** اليقطين سيكون الأرخص؟ في سان فرانسيسكو، أي الأحياء سيكون لديها أفضل **سعر** عقار؟ في بعض الأحيان يُشار إلى الهدف أيضًا على أنه خاصية التسمية.
### اختيار متغير الميزة الخاص بك
-🎓 **اختيار الميزات واستخراج الميزات** كيف تعرف أي متغير تختار عند بناء نموذج؟ ربما ستخوض عملية اختيار الميزات أو استخراج الميزات لاختيار المتغيرات المناسبة للنموذج الأكثر كفاءة. ومع ذلك، فهما ليسا نفس الشيء: "استخراج الميزات ينشئ ميزات جديدة من وظائف الميزات الأصلية، بينما اختيار الميزات يعيد مجموعة فرعية من الميزات." ([المصدر](https://wikipedia.org/wiki/Feature_selection))
+🎓 **اختيار الميزة واستخلاص الميزة** كيف تعرف أي متغير تختار عند بناء نموذج؟ من المحتمل أن تمر بعملية اختيار ميزة أو استخلاص ميزة لاختيار المتغيرات الصحيحة لأفضل نموذج أداء. ومع ذلك، فهما ليسا نفس الشيء: "استخلاص الميزة ينشئ ميزات جديدة من دوال الميزات الأصلية، في حين أن اختيار الميزة يعيد مجموعة فرعية من الميزات." ([المصدر](https://wikipedia.org/wiki/Feature_selection))
### تصور بياناتك
-جانب مهم من أدوات عالم البيانات هو القدرة على تصور البيانات باستخدام العديد من المكتبات الممتازة مثل Seaborn أو MatPlotLib. قد يسمح لك تمثيل بياناتك بصريًا بالكشف عن ارتباطات مخفية يمكنك الاستفادة منها. قد تساعدك التصورات أيضًا في الكشف عن التحيز أو البيانات غير المتوازنة (كما نكتشف في [التصنيف](../../4-Classification/2-Classifiers-1/README.md)).
+جانب مهم في أدوات عالم البيانات هو القدرة على تصور البيانات باستخدام العديد من المكتبات الممتازة مثل Seaborn أو MatPlotLib. تمثيل بياناتك بصريًا قد يسمح لك بالكشف عن ترابطات مخفية يمكن أن تستفيد منها. قد تساعدك تصوراتك أيضًا في اكتشاف تحيز أو بيانات غير متوازنة (كما نكتشف في [التصنيف](../../4-Classification/2-Classifiers-1/README.md)).
-### تقسيم مجموعة البيانات الخاصة بك
+### قسّم مجموعة بياناتك
-قبل التدريب، تحتاج إلى تقسيم مجموعة البيانات الخاصة بك إلى جزأين أو أكثر بأحجام غير متساوية تمثل البيانات بشكل جيد.
+قبل التدريب، تحتاج إلى تقسيم مجموعة البيانات إلى جزأين أو أكثر من أحجام غير متساوية لكنها لا تزال تمثل البيانات جيدًا.
-- **التدريب**. هذا الجزء من مجموعة البيانات يتم استخدامه لتدريب النموذج. يشكل هذا الجزء الغالبية من مجموعة البيانات الأصلية.
-- **الاختبار**. مجموعة بيانات الاختبار هي مجموعة مستقلة من البيانات، غالبًا ما يتم جمعها من البيانات الأصلية، والتي تستخدمها لتأكيد أداء النموذج المبني.
-- **التحقق**. مجموعة التحقق هي مجموعة أصغر مستقلة من الأمثلة التي تستخدمها لضبط معلمات النموذج أو هيكله لتحسين النموذج. بناءً على حجم بياناتك والسؤال الذي تطرحه، قد لا تحتاج إلى بناء هذه المجموعة الثالثة (كما نلاحظ في [التنبؤ بالسلاسل الزمنية](../../7-TimeSeries/1-Introduction/README.md)).
+- **التدريب**. هذا الجزء من مجموعة البيانات يتم ملاءمته لنموذجك لتدريبه. هذه المجموعة تشكل أغلبية مجموعة البيانات الأصلية.
+- **الاختبار**. مجموعة بيانات الاختبار هي مجموعة مستقلة من البيانات، غالبًا مأخوذة من البيانات الأصلية، تستخدمها لتأكيد أداء النموذج المبني.
+- **التحقق**. مجموعة التحقق هي مجموعة أصغر مستقلة من الأمثلة تستخدمها لضبط المعاملات الفائقة للنموذج، أو الهيكل، لتحسين النموذج. بناءً على حجم بياناتك والسؤال الذي تسأله، قد لا تحتاج إلى بناء هذه المجموعة الثالثة (كما نذكر في [التنبؤ بالسلاسل الزمنية](../../7-TimeSeries/1-Introduction/README.md)).
## بناء نموذج
-باستخدام بيانات التدريب الخاصة بك، هدفك هو بناء نموذج، أو تمثيل إحصائي لبياناتك، باستخدام خوارزميات مختلفة لتدريبه. تدريب النموذج يعرضه للبيانات ويسمح له بافتراض الأنماط التي يكتشفها، يتحقق منها، ويقبلها أو يرفضها.
+باستخدام بيانات التدريب الخاصة بك، هدفك هو بناء نموذج، أو تمثيل إحصائي لبياناتك، باستخدام خوارزميات مختلفة لتدريبه. تدريب النموذج يعرضه للبيانات ويسمح له بعمل فرضيات حول الأنماط التي يكتشفها، ويُحققها، ويقبلها أو يرفضها.
-### تحديد طريقة التدريب
+### اختر طريقة التدريب
-بناءً على سؤالك وطبيعة بياناتك، ستختار طريقة لتدريبها. من خلال استعراض [وثائق Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - التي نستخدمها في هذا الدورة - يمكنك استكشاف العديد من الطرق لتدريب نموذج. بناءً على تجربتك، قد تضطر إلى تجربة عدة طرق مختلفة لبناء النموذج الأفضل. من المحتمل أن تمر بعملية يقوم فيها علماء البيانات بتقييم أداء النموذج من خلال تزويده ببيانات غير مرئية، والتحقق من الدقة، والتحيز، والقضايا الأخرى التي تقلل من الجودة، واختيار طريقة التدريب الأنسب للمهمة المطروحة.
+اعتمادًا على سؤالك وطبيعة بياناتك، ستختار طريقة لتدريب النموذج. من خلال تصفح [وثائق Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - التي نستخدمها في هذه الدورة - يمكنك استكشاف العديد من الطرق لتدريب نموذج. بناءً على خبرتك، قد تضطر إلى تجربة عدة طرق مختلفة لبناء أفضل نموذج. من المحتمل أن تمر بعملية يقيم فيها علماء البيانات أداء النموذج من خلال تغذيته ببيانات غير معروفة مسبقًا، والتحقق من الدقة، والتحيز، ومشكلات أخرى تقلل الجودة، واختيار طريقة التدريب الأنسب للمهمة.
-### تدريب النموذج
+### تدريب نموذج
-مسلحًا ببيانات التدريب الخاصة بك، أنت جاهز لـ "تطبيقها" لإنشاء نموذج. ستلاحظ أنه في العديد من مكتبات تعلم الآلة ستجد الكود 'model.fit' - في هذا الوقت تقوم بإرسال متغير الميزة الخاص بك كمصفوفة من القيم (عادةً 'X') ومتغير الهدف (عادةً 'y').
+مزودًا ببيانات التدريب، تكون جاهزًا لـ'ملاءمتها' لإنشاء نموذج. ستلاحظ في العديد من مكتبات التعلم الآلي وجود الكود 'model.fit' - هذا هو الوقت الذي ترسل فيه متغير الميزات الخاص بك كمصفوفة من القيم (عادة 'X') ومتغير الهدف (عادة 'y').
### تقييم النموذج
-بمجرد اكتمال عملية التدريب (قد تستغرق العديد من التكرارات، أو "epochs"، لتدريب نموذج كبير)، ستتمكن من تقييم جودة النموذج باستخدام بيانات الاختبار لقياس أدائه. هذه البيانات هي جزء فرعي من البيانات الأصلية التي لم يقم النموذج بتحليلها مسبقًا. يمكنك طباعة جدول من المقاييس حول جودة النموذج.
+بمجرد اكتمال عملية التدريب (قد يستغرق الأمر عدة تكرارات، أو "عصور"، لتدريب نموذج كبير)، ستكون قادرًا على تقييم جودة النموذج باستخدام بيانات الاختبار لقياس أدائه. هذه البيانات هي جزء فرعي من البيانات الأصلية التي لم يحللها النموذج سابقًا. يمكنك طباعة جدول للمعايير حول جودة النموذج الخاص بك.
-🎓 **تطبيق النموذج**
+🎓 **ملاءمة النموذج**
-في سياق تعلم الآلة، يشير تطبيق النموذج إلى دقة الوظيفة الأساسية للنموذج أثناء محاولته تحليل البيانات التي ليست مألوفة له.
+في سياق التعلم الآلي، تشير ملاءمة النموذج إلى دقة الدالة الأساسية للنموذج أثناء محاولته تحليل البيانات التي ليست مألوفة له.
-🎓 **التطبيق الناقص** و **التطبيق الزائد** هما مشكلتان شائعتان تقللان من جودة النموذج، حيث يتناسب النموذج إما بشكل غير كافٍ أو بشكل زائد. يؤدي ذلك إلى جعل النموذج يقدم تنبؤات إما متطابقة جدًا أو غير متطابقة مع بيانات التدريب الخاصة به. النموذج الزائد يتنبأ ببيانات التدريب بشكل جيد جدًا لأنه تعلم تفاصيل البيانات وضوضائها بشكل زائد. النموذج الناقص ليس دقيقًا لأنه لا يمكنه تحليل بيانات التدريب الخاصة به أو البيانات التي لم "يرها" بعد بدقة.
+🎓 **النموذج ناقص الملاءمة** و **النموذج زائد الملاءمة** هما مشكلتان شائعتان تضعفان جودة النموذج، حيث أن النموذج إما لا يناسب البيانات بشكل كافٍ أو يناسبها بشكل مفرط. هذا يؤدي إلى أن يقوم النموذج بعمل توقعات متطابقة جدًا أو ضعيفة جدًا مع بيانات التدريب الخاصة به. النموذج زائد الملاءمة يتنبأ ببيانات التدريب بدقة شديدة لأنه تعلم تفاصيل الضوضاء في البيانات جيدًا جدًا. النموذج ناقص الملاءمة غير دقيق لأنه لا يمكنه تحليل بيانات التدريب أو البيانات التي لم يرها بعد بدقة.
-
-> رسم توضيحي بواسطة [Jen Looper](https://twitter.com/jenlooper)
+
+> رسم معلوماتي بواسطة [جن لوبر](https://twitter.com/jenlooper)
-## ضبط المعلمات
+## ضبط المعاملات
-بمجرد اكتمال التدريب الأولي، راقب جودة النموذج وفكر في تحسينه عن طريق تعديل "المعلمات الفائقة". اقرأ المزيد عن العملية [في الوثائق](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
+بمجرد الانتهاء من تدريبك الأولي، راقب جودة النموذج وفكر في تحسينها عن طريق تعديل "المعاملات الفائقة" له. اقرأ المزيد عن العملية [في الوثائق](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## التنبؤ
-هذه هي اللحظة التي يمكنك فيها استخدام بيانات جديدة تمامًا لاختبار دقة النموذج الخاص بك. في إعداد تعلم الآلة "التطبيقي"، حيث تقوم ببناء أصول ويب لاستخدام النموذج في الإنتاج، قد تتضمن هذه العملية جمع مدخلات المستخدم (مثل الضغط على زر) لتعيين متغير وإرساله إلى النموذج للاستدلال أو التقييم.
+هذه هي اللحظة التي يمكنك فيها استخدام بيانات جديدة تمامًا لاختبار دقة نموذجك. في بيئة تعلم آلي "تطبيقية"، حيث تبني أصول ويب لاستخدام النموذج في الإنتاج، قد يتضمن هذا العملية جمع مدخلات المستخدم (مثل ضغط زر، على سبيل المثال) لتعيين متغير وإرساله إلى النموذج للقيام بالاستدلال أو التقييم.
-في هذه الدروس، ستكتشف كيفية استخدام هذه الخطوات للتحضير، البناء، الاختبار، التقييم، والتنبؤ - جميع إيماءات عالم البيانات والمزيد، أثناء تقدمك في رحلتك لتصبح مهندس تعلم الآلة "متكامل المهارات".
+في هذه الدروس، ستكتشف كيفية استخدام هذه الخطوات للتحضير والبناء والاختبار والتقييم والتنبؤ - كل حركات عالم البيانات وأكثر، مع تقدمك في رحلتك لتصبح مهندس تعلم آلي "متكامل".
---
-## 🚀تحدي
+## 🚀التحدي
-ارسم مخططًا انسيابيًا يعكس خطوات ممارس تعلم الآلة. أين ترى نفسك الآن في العملية؟ أين تتوقع أن تجد صعوبة؟ ما الذي يبدو سهلاً بالنسبة لك؟
+ارسم مخطط تدفق يعكس خطوات ممارس التعلم الآلي. أين ترى نفسك الآن في العملية؟ أين تتوقع أن تجد صعوبة؟ ما الذي يبدو سهلاً بالنسبة لك؟
-## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+## [اختبار بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## المراجعة والدراسة الذاتية
-ابحث عبر الإنترنت عن مقابلات مع علماء بيانات يناقشون عملهم اليومي. هنا [واحدة](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
+ابحث عبر الإنترنت عن مقابلات مع علماء بيانات يتحدثون عن عملهم اليومي. إليك [واحدة](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## الواجب
-[قم بمقابلة مع عالم بيانات](assignment.md)
+[قم بإجراء مقابلة مع عالم بيانات](assignment.md)
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**إخلاء المسؤولية**:
+تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الحرجة، يوصى بالترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/ar/2-Regression/3-Linear/README.md b/translations/ar/2-Regression/3-Linear/README.md
index c889102f8..2d3db700b 100644
--- a/translations/ar/2-Regression/3-Linear/README.md
+++ b/translations/ar/2-Regression/3-Linear/README.md
@@ -2,96 +2,96 @@
## ملاحظة للمبتدئين
-يُستخدم الانحدار الخطي عندما نريد التنبؤ بقيمة **عددية** (على سبيل المثال، سعر المنزل، درجة الحرارة، أو المبيعات).
-يعمل عن طريق إيجاد خط مستقيم يمثل أفضل علاقة بين ميزات الإدخال والمخرجات.
+يُستخدم الانحدار الخطي عندما نرغب في التنبؤ بقيمة **رقمية** (على سبيل المثال، سعر المنزل، درجة الحرارة، أو المبيعات).
+يعمل عن طريق إيجاد خط مستقيم يمثل بأفضل شكل العلاقة بين ميزات الإدخال والمخرج.
-في هذا الدرس، نركز على فهم المفهوم قبل استكشاف تقنيات الانحدار الأكثر تقدمًا.
+في هذا الدرس، نركز على فهم المفهوم قبل استكشاف تقنيات الانحدار المتقدمة.

-> رسم معلوماتي بواسطة [داساني ماديبالي](https://twitter.com/dasani_decoded)
-## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+> رسم معلومات بواسطة [Dasani Madipalli](https://twitter.com/dasani_decoded)
+## [اختبار تمهيدي للدرس](https://ff-quizzes.netlify.app/en/ml/)
-> ### [هذا الدرس متوفر أيضًا بلغة R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
-### المقدمة
+> ### [هذا الدرس متاح بلغة R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### مقدمة
-حتى الآن، استكشفت ما هو الانحدار باستخدام بيانات عينة تم جمعها من مجموعة بيانات تسعير اليقطين التي سنستخدمها طوال هذا الدرس. وقد قمت أيضًا بتصويرها باستخدام Matplotlib.
+حتى الآن استكشفت ما هو الانحدار باستخدام بيانات عينة مأخوذة من مجموعة بيانات تسعير اليقطين التي سنستخدمها طوال هذا الدرس. وقد قمت أيضًا بتصورها باستخدام Matplotlib.
-الآن أنت مستعد للتعمق أكثر في الانحدار لتعلم الآلة. بينما يسمح التصوير لفهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. تُدرَّب النماذج على بيانات تاريخية لالتقاط التبعيات تلقائيًا، وتتيح لك التنبؤ بالنتائج لبيانات جديدة لم يسبق للنموذج رؤيتها.
+أنت الآن مستعد للتعمق أكثر في الانحدار لـ ML. بينما يسمح التصور بفهم البيانات، القوة الحقيقية لتعلم الآلة تأتي من _تدريب النماذج_. يتم تدريب النماذج على البيانات التاريخية لالتقاط تبعيات البيانات تلقائيًا، وتسمح لك بالتنبؤ بالنتائج للبيانات الجديدة التي لم يرها النموذج من قبل.
-في هذا الدرس، ستتعلم أكثر عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و_الانحدار المتعدد الحدود_، بالإضافة إلى بعض الأسس الرياضية لهذه التقنيات. هذه النماذج ستسمح لنا بالتنبؤ بأسعار اليقطين بناءً على بيانات الإدخال المختلفة.
+في هذا الدرس، ستتعلم المزيد عن نوعين من الانحدار: _الانحدار الخطي الأساسي_ و _الانحدار متعدد الحدود_، بالإضافة إلى بعض الرياضيات الأساسية لهذه التقنيات. ستتيح لنا هذه النماذج التنبؤ بأسعار اليقطين اعتمادًا على بيانات الإدخال المختلفة.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
-> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي.
-> طوال هذا المنهج، نفترض معرفة رياضية بسيطة، ونسعى لجعلها متاحة للطلاب القادمين من مجالات أخرى، لذا تابع الملاحظات، 🧮 الإشارات، الرسوم التوضيحية، وأدوات التعلم الأخرى للمساعدة في الفهم.
+> طوال هذه المنهجية، نفترض معرفة رياضية محدودة، ونسعى لجعلها متاحة للطلاب القادمين من حقول أخرى، فتابع الملاحظات، نداءات 🧮، الرسوم التوضيحية، وأدوات التعلم الأخرى للمساعدة في الاستيعاب.
-### المتطلبات السابقة
+### المتطلبات الأساسية
-يجب أن تكون على دراية الآن ببنية بيانات اليقطين التي نقوم بفحصها. يمكنك العثور عليها محملة ومُنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يظهر سعر اليقطين لكل سطل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه الدفاتر في بيئات التنفيذ داخل Visual Studio Code.
+ينبغي أن تكون مألوفًا حتى الآن مع هيكل بيانات اليقطين التي نفحصها. يمكنك العثور عليها محملة مسبقًا ومنظفة مسبقًا في ملف _notebook.ipynb_ الخاص بهذا الدرس. في الملف، يُعرض سعر اليقطين لكل بوشل في إطار بيانات جديد. تأكد من قدرتك على تشغيل هذه النوتبوك في kernels في Visual Studio Code.
### التحضير
-كتذكير، أنت تقوم بتحميل هذه البيانات لطرح أسئلة عليها.
+كتذكير، تقوم بتحميل هذه البيانات لطرح أسئلة حولها.
-- متى هو أفضل وقت لشراء اليقطين؟
-- ما السعر الذي يمكنني توقعه لحالة من اليقطين الصغير الحجم؟
-- هل يجب علي شراؤها في سلال نصف السطل أم عبر صندوق سطل وربع السطل؟
-لنواصل الغوص في هذه البيانات.
+- متى أفضل وقت لشراء اليقطين؟
+- ما السعر المتوقع لعلبة من يقطين صغير الحجم؟
+- هل يجب أن أشتريها في سلال نصف بوشل أم بصندوق 1 1/9 بوشل؟
+دعنا نستمر في استكشاف هذه البيانات.
-في الدرس السابق، أنشأت إطار بيانات Pandas وملأته بجزء من مجموعة البيانات الأصلية، مع توحيد الأسعار حسب السطل. ولكن بهذا الشكل، تمكنت فقط من جمع حوالي 400 نقطة بيانات وفقط لأشهر الخريف.
+في الدرس السابق، أنشأت إطار بيانات من Pandas وملأته بجزء من مجموعة البيانات الأصلية، موحدًا الأسعار حسب البوشل. لكن بهذه الطريقة، تمكنت فقط من جمع حوالي 400 نقطة بيانات ولأشهر الخريف فقط.
-ألقِ نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المصاحب لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر أولي لعرض بيانات الشهر. ربما يمكننا الحصول على مزيد من التفاصيل حول طبيعة البيانات من خلال تنظيفها أكثر.
+ألق نظرة على البيانات التي قمنا بتحميلها مسبقًا في دفتر الملاحظات المرافق لهذا الدرس. البيانات محملة مسبقًا وتم رسم مخطط مبعثر مبدئي لعرض بيانات الأشهر. ربما يمكننا الحصول على تفاصيل أكثر عن طبيعة البيانات من خلال تنظيفها أكثر.
-## خط الانحدار الخطي
+## خط انحدار خطي
-كما تعلمت في الدرس 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`.
->
->
->
-> أولًا، احسب الميل `b`. رسم معلوماتي من [جن لوبر](https://twitter.com/jenlooper)
->
-> بمعنى آخر، وبالرجوع لسؤال بيانات اليقطين الأصلي: "التنبؤ بسعر اليقطين لكل سطل حسب الشهر"، يشير `X` إلى السعر و`Y` إلى شهر البيع.
->
->
->
-> احسب قيمة Y. إن كنت تدفع حوالي 4 دولارات، فلا بد أن يكون أبريل! رسم معلوماتي من [جن لوبر](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` هو 'المتغير التابع'. ميل الخط هو `b` و `a` هو التقاطع عند المحور Y، وهو يشير إلى قيمة `Y` عندما تكون `X = 0`.
+>
+>
+>
+> أولاً، احسب الميل `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 المعطاة. باستخدام المخطط المبعثر، يمكنك تصور هذا المعامل بسرعة. المخطط الذي تتوزع نقاط البيانات فيه في خط مرتب لديه ارتباط عالي، لكن المخطط الذي تنتشر فيه النقاط في كل مكان بين X و Y لديه ارتباط منخفض.
-نموذج الانحدار الخطي الجيد هو الذي يمتلك معامل ترابط عالٍ (أقرب إلى 1 منه إلى 0) باستخدام طريقة انحدار المربعات الصغرى وخط الانحدار.
+نموذج الانحدار الخطي الجيد هو الذي لديه معامل ارتباط عالي (أقرب إلى 1 منه إلى 0) باستخدام طريقة انحدار الأقل مجموع المربعات مع خط الانحدار.
-✅ شغل دفتر الملاحظات المصاحب لهذا الدرس وانظر إلى المخطط المبعثر بين الشهر والسعر. هل تبدو البيانات المرتبطة بين الشهر والسعر لمبيعات اليقطين ذات ترابط عالي أم منخفض، حسب تفسيرك البصري للمخطط المبعثر؟ هل يتغير ذلك إذا استخدمت قياسًا أكثر دقة بدلًا من `Month`، كمثال *يوم السنة* (أي عدد الأيام منذ بداية السنة)؟
+✅ شغّل دفتر الملاحظات المرافق لهذا الدرس وانظر إلى المخطط المبعثر بين الشهر والسعر. هل تبدو البيانات التي تربط الشهر والسعر لمبيعات اليقطين ذات ارتباط عالي أم منخفض حسب تفسيرك البصري للمخطط المبعثر؟ وهل يتغير ذلك إذا استخدمت مقياسًا أكثر دقة بدلاً من `Month`، مثل *يوم السنة* (أي عدد الأيام منذ بداية السنة)؟
-في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، مشابه للآتي:
+في الكود أدناه، سنفترض أننا قمنا بتنظيف البيانات، وحصلنا على إطار بيانات يسمى `new_pumpkins`، يشبه الجدول التالي:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-> الشفرة الخاصة بتنظيف البيانات متوفرة في [`notebook.ipynb`](notebook.ipynb). لقد قمنا بنفس خطوات التنظيف كالدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي:
+> كود تنظيف البيانات متوفر في [`notebook.ipynb`](notebook.ipynb). لقد قمنا بتنفيذ نفس خطوات التنظيف كما في الدرس السابق، وحسبنا عمود `DayOfYear` باستخدام التعبير التالي:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-الآن بعد أن أصبحت تفهم الرياضيات وراء الانحدار الخطي، دعونا ننشئ نموذج انحدار لنرى ما إذا كان بإمكاننا التنبؤ بأفضل عبوة من اليقطين التي ستحصل على أفضل الأسعار. قد يرغب شخص يشتري يقطينًا لزراعة بقعة هالوين في معرفة هذه المعلومات ليتمكن من تحسين مشترياته.
+الآن بعد أن فهمت الرياضيات خلف الانحدار الخطي، دعنا ننشئ نموذج الانحدار لنرى إن كنا نستطيع التنبؤ بأي حزمة من اليقطين سيكون لها أفضل الأسعار. قد يرغب من يشتري اليقطين لبقعة يقطين احتفالية بمعرفة هذه المعلومة لتحسين مشترياته من حزم اليقطين للبقعة.
-## البحث عن الترابط
+## البحث عن الارتباط
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير حول الترابط.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح الارتباط.
-من الدرس السابق، ربما لاحظت أن متوسط السعر للأشهر المختلفة يبدو كالتالي:
+من الدرس السابق ربما رأيت أن متوسط السعر للأشهر المختلفة يبدو كالتالي:
-هذا يشير إلى أنه يجب أن يكون هناك بعض الترابط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `Month` و `Price`، أو بين `DayOfYear` و `Price`. إليك المخطط المبعثر الذي يظهر العلاقة الأخيرة:
+وهذا يشير إلى أنه يجب أن يكون هناك بعض الارتباط، ويمكننا محاولة تدريب نموذج انحدار خطي للتنبؤ بالعلاقة بين `Month` و`Price`، أو بين `DayOfYear` و`Price`. فيما يلي المخطط المبعثر الذي يظهر العلاقة الأخيرة:
-لنرَ ما إذا كان هناك ترابط باستخدام دالة `corr`:
+لنرَ إذا كان هناك ارتباط باستخدام دالة `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-يبدو أن الترابط صغير إلى حدٍّ ما، -0.15 بالنسبة لـ `Month` و -0.17 بالنسبة لـ `DayOfMonth`، لكن قد يكون هناك علاقة مهمة أخرى. يبدو أن هناك تجمعات مختلفة من الأسعار تتوافق مع أصناف مختلفة من اليقطين. لتأكيد هذا الفرض، دعنا نرسم كل فئة من اليقطين بلون مختلف. بتمرير معامل `ax` إلى دالة `scatter` نتمكن من رسم كل النقاط على نفس الرسم:
+يبدو أن الارتباط صغير جدًا، -0.15 حسب `Month` و -0.17 حسب `DayOfYear`، لكن قد يكون هناك علاقة مهمة أخرى. يبدو أن هناك مجموعات مختلفة من الأسعار تتوافق مع أصناف مختلفة من اليقطين. لتأكيد هذا الافتراض، دعنا نرسم كل فئة يقطين بلون مختلف. عن طريق تمرير معلمة `ax` إلى دالة `scatter` يمكننا رسم كل النقاط على نفس الرسم البياني:
```python
ax=None
@@ -142,7 +142,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
-تحقيقنا يشير إلى أن الصنف له تأثير أكبر على السعر الكلي من تاريخ البيع الفعلي. يمكننا رؤية ذلك من خلال رسم بياني شريطي:
+تشير تحقيقاتنا إلى أن الصنف له تأثير أكبر على السعر الكلي من تاريخ البيع الفعلي. يمكننا أن نرى ذلك مع مخطط الأعمدة:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
@@ -150,7 +150,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
-دعنا نركز للحظة على صنف واحد من اليقطين، وهو 'نوع الفطيرة'، ولنرى تأثير التاريخ في السعر:
+دعنا نركز للحظة فقط على صنف يقطين واحد، نوع "الفطيرة"، ونرى تأثير التاريخ على السعر:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
@@ -158,22 +158,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-إذا حسبنا الآن الترابط بين `Price` و `DayOfYear` باستخدام دالة `corr`، سنحصل على تقريبًا `-0.27` - مما يعني أن تدريب نموذج تنبؤي يصبح منطقيًا.
+إذا حسبنا الآن معامل الارتباط بين `Price` و `DayOfYear` باستخدام دالة `corr`، سنحصل على شيء مثل `-0.27` - وهذا يعني أن تدريب نموذج تنبئي له معنى.
-> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من أن بياناتنا نظيفة. الانحدار الخطي لا يعمل جيدًا مع القيم المفقودة، لذا من المنطقي إزالة جميع الخلايا الفارغة:
+> قبل تدريب نموذج الانحدار الخطي، من المهم التأكد من أن بياناتنا نظيفة. الانحدار الخطي لا يعمل جيدًا مع القيم المفقودة، لذا من المنطقي التخلص من كل الخلايا الفارغة:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
-من الشائع ملء القيم الفارغة بالقيمة المتوسطة للعمود المقابل.
+نهج آخر سيكون ملء هذه القيم الفارغة بقيم المتوسط من العمود المقابل.
## الانحدار الخطي البسيط
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
-> 🎥 اضغط على الصورة أعلاه لمشاهدة فيديو قصير يشرح الانحدار الخطي والانحدار متعددة الحدود.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن الانحدار الخطي ومتعدد الحدود.
لتدريب نموذج الانحدار الخطي، سنستخدم مكتبة **Scikit-learn**.
@@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
-نبدأ بفصل قيم الإدخال (الميزات) والنتيجة المتوقعة (التسمية) في مصفوفات numpy منفصلة:
+نبدأ بفصل القيم المدخلة (الميزات) والنتيجة المتوقعة (التسمية) في مصفوفات numpy منفصلة:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
-> لاحظ أننا اضطررنا لأداء `reshape` على البيانات المدخلة لكي تفهم حزمة الانحدار الخطي البيانات بشكل صحيح. الانحدار الخطي يتوقع مصفوفة ذات بعدين كإدخال، حيث كل صف من المصفوفة يمثل متجهًا لميزات الإدخال. في حالتنا، حيث لدينا مدخل واحد فقط - نحتاج إلى مصفوفة بحجم 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` في حالتنا، مما يشير إلى السعر في بداية العام.
-لمعرفة مدى دقة نموذجنا، يمكننا توقع الأسعار على مجموعة البيانات الاختبارية، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس جذر متوسط مربعات الخطأ (RMSE)، وهو الجذر التربيعي لمتوسط كل الفروق المربعة بين القيمة المتوقعة والقيمة المتنبأ بها.
+لمعرفة مدى دقة نموذجنا، يمكننا التنبؤ بالأسعار على مجموعة بيانات اختبار، ثم قياس مدى قرب تنبؤاتنا من القيم المتوقعة. يمكن القيام بذلك باستخدام مقياس الجذر التربيعي للخطأ المتوسط (RMSE)، وهو الجذر لمتوسط جميع الفروق المربعة بين القيمة المتوقعة والمتنبأ بها.
```python
pred = lin_reg.predict(X_test)
@@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-يبدو أن خطأنا حوالي نقطتين، وهو ~17%. ليس جيدًا جدًا. مؤشر آخر لجودة النموذج هو **معامل التحديد**، والذي يمكن الحصول عليه بهذه الطريقة:
+يبدو أن خطأنا حوالي نقطتين، وهو ~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)
@@ -235,17 +235,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](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) لدمج خطوات معالجة البيانات المختلفة معًا. **الخط الأنبوبي** هو سلسلة من **المقدرون**. في حالتنا، سوف ننشئ خطًا أنبوبيًا يضيف مميزات متعددة الحدود إلى نموذجنا أولاً، ثم يقوم بتدريب الانحدار:
+تتضمن مكتبة Scikit-learn [واجهة برمجة تطبيقات pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) مفيدة لدمج خطوات معالجة البيانات المختلفة معًا. الـ **pipeline** هو سلسلة من **المقدِّرين (estimators)**. في حالتنا، سننشئ دالة pipeline تضيف أولاً ميزات متعددة الحدود إلى نموذجنا، ثم تدرب الانحدار:
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
-استخدام `PolynomialFeatures(2)` يعني أننا سوف نضمّن جميع كثيرات الحدود من الدرجة الثانية من بيانات الإدخال. في حالتنا، سيعني هذا فقط `DayOfYear`2، ولكن إذا كان هناك متغيران للإدخال X و Y، فسيضيف هذا X2، XY، و Y2. يمكننا أيضًا استخدام كثيرات حدود بدرجات أعلى إذا أردنا.
+استخدام `PolynomialFeatures(2)` يعني أننا سنشمل كل كثيرات الحدود من الدرجة الثانية من بيانات الإدخال. في حالتنا، سيعني فقط `DayOfYear`2، لكن مع وجود متغيري مدخلات X و Y، سيضيف ذلك X2، XY و Y2. يمكننا أيضًا استخدام كثيرات حدود بدرجات أعلى إذا أردنا.
+
+يمكن استخدام الـ Pipelines بنفس طريقة استخدام كائن `LinearRegression` الأصلي، أي يمكننا `fit` الـ pipeline، ثم استخدام `predict` للحصول على نتائج التنبؤ:
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+لرسم منحنى التقريب الناعم، نستخدم `np.linspace` لإنشاء مدى متساوي من قيم الإدخال، بدلاً من الرسم مباشرة على بيانات الاختبار غير المرتبة (والتي ستنتج خطًا متعرجًا):
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
+
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
-يمكن استخدام الخطوط الأنبوبية بنفس طريقة كائن `LinearRegression` الأصلي، أي يمكننا `fit` الخط الأنبوبي، ثم استخدام `predict` للحصول على نتائج التنبؤ. هنا الرسم البياني الذي يعرض بيانات الاختبار ومنحنى التقريب:
+إليك الرسم الذي يُظهر بيانات الاختبار ومنحنى التقريب:
-باستخدام الانحدار متعدد الحدود، يمكننا الحصول على MSE أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحن بحاجة إلى أخذ ميزات أخرى في الاعتبار!
+باستخدام الانحدار متعدد الحدود، يمكننا الحصول على RMSE أقل قليلاً ومعامل تحديد أعلى، لكن ليس بشكل كبير. نحتاج إلى أخذ ميزات أخرى في الاعتبار!
-> يمكنك رؤية أن أدنى أسعار القرع تُلاحظ في مكان ما حول عيد الهالوين. كيف يمكنك تفسير ذلك؟
+> يمكنك رؤية أن أسعار اليقطين الأدنى تُلاحظ في مكان ما حول عيد الهالوين. كيف تفسر ذلك؟
-🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في توقع سعر قرع الفطائر. ربما يمكنك تكرار نفس الإجراء لجميع أنواع القرع، لكن ذلك سيكون شاقًا. دعنا نتعلم الآن كيفية أخذ نوع القرع في الاعتبار في نموذجنا!
+🎃 تهانينا، لقد أنشأت نموذجًا يمكنه المساعدة في التنبؤ بسعر يقطين الفطائر. من المحتمل أنك تستطيع تكرار نفس الإجراء لجميع أنواع اليقطين، لكن ذلك سيكون مملًا. لنتعلم الآن كيفية أخذ نوع اليقطين في الاعتبار في نموذجنا!
## الميزات الفئوية
-في العالم المثالي، نريد أن نكون قادرين على التنبؤ بالأسعار لأنواع مختلفة من القرع باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` يختلف قليلاً عن الأعمدة مثل `Month`، لأنه يحتوي على قيم غير رقمية. تُسمى هذه الأعمدة **الفئوية**.
+في العالم المثالي، نريد أن نتمكن من التنبؤ بالأسعار لأنواع اليقطين المختلفة باستخدام نفس النموذج. ومع ذلك، فإن عمود `Variety` يختلف عن أعمدة مثل `Month` لأنه يحتوي على قيم غير رقمية. تسمى هذه الأعمدة **فئوية**.
-[](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤ بالميزات الفئوية باستخدام الانحدار الخطي")
+[](https://youtu.be/DYGliioIAE0 "ML للمبتدئين - التنبؤات بالفئات باستخدام الانحدار الخطي")
-> 🎥 انقر على الصورة أعلاه لمشاهدة نظرة عامة قصيرة على استخدام الميزات الفئوية.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير عن استخدام الميزات الفئوية.
هنا يمكنك رؤية كيف يعتمد متوسط السعر على النوع:
-لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها:
+لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى صيغة رقمية، أو **ترميزه**. هناك عدة طرق يمكننا القيام بها:
-* **ترميز رقمي** بسيط سيبني جدولًا لأنواع مختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر، ويضيفها إلى النتيجة مضروبة في بعض المعاملات. في حالتنا، العلاقة بين رقم المؤشر والسعر واضحة غير خطية، حتى لو تأكدنا من أن المؤشرات مرتبة بطريقة معينة.
-* **الترميز أحادي التواجد (one-hot encoding)** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع. يحتوي كل عمود على `1` إذا كان الصف المقابل من ذلك النوع، و `0` خلاف ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحد لكل نوع قرع، مسؤول عن "السعر الابتدائي" (أو بالأحرى "السعر الإضافي") لذلك النوع المحدد.
+* الترميز الرقمي البسيط **numeric encoding** سيبني جدولًا للأنواع المختلفة، ثم يستبدل اسم النوع برقم مؤشر في ذلك الجدول. هذه ليست فكرة جيدة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية الفعلية للمؤشر ويضيفها إلى النتيجة، مضروبًا في معامل ما. في حالتنا، العلاقة بين رقم المؤشر والسعر غير خطية بوضوح، حتى لو تأكدنا من ترتيب المؤشرات بطريقة معينة.
+* الترميز باستخدام **One-hot encoding** سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحدة لكل نوع. يحتوي كل عمود على `1` إذا كانت الصف المقابل من النوع المعطى، و `0` خلاف ذلك. هذا يعني أن هناك أربعة معاملات في الانحدار الخطي، واحدة لكل نوع يقطين، مسؤولة عن "سعر البداية" (أو "السعر الإضافي") لذلك النوع المعين.
-يُظهر الكود أدناه كيفية ترميز النوع باستخدام الترميز أحادي التواجد:
+يُظهر الكود أدناه كيف يمكننا ترميز النوع باستخدام one-hot:
```python
pd.get_dummies(new_pumpkins['Variety'])
@@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
-لتدريب الانحدار الخطي باستخدام النوع المشفر بأحادي التواجد كإدخال، نحتاج فقط إلى تهيئة بيانات `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']) \
@@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
-هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، والذي يعطينا MSE=2.84 (10%)، ومعامل تحديد 0.94!
+هنا نأخذ أيضًا في الاعتبار `City` ونوع `Package`، مما يعطينا RMSE بقيمة 2.84 (10.5%)، ومعامل تحديد 0.94!
-## تجميع كل شيء معًا
+## جمع كل شيء معًا
-لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (المشفرة أحادي التواجد + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. هنا الكود الكامل لراحتك:
+لإنشاء أفضل نموذج، يمكننا استخدام البيانات المجمعة (الميزات الفئوية المرمّزة + الرقمية) من المثال أعلاه مع الانحدار متعدد الحدود. إليك الكود الكامل لراحتك:
```python
# إعداد بيانات التدريب
@@ -340,47 +362,47 @@ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
-# توقع النتائج لبيانات الاختبار
+# التنبؤ بالنتائج لبيانات الاختبار
pred = pipeline.predict(X_test)
-# حساب متوسط مربع الخطأ والتحديد
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# حساب الجذر التربيعي لمتوسط الخطأ والتحديد
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
-يجب أن يعطينا هذا أفضل معامل تحديد يقارب 97%، و MSE=2.23 (~8% خطأ في التنبؤ).
+يجب أن يعطينا هذا أفضل معامل تحديد بنحو 97%، و RMSE=2.23 (~8% خطأ التنبؤ).
-| النموذج | MSE | معامل التحديد |
+| النموذج | RMSE | معامل التحديد |
|-------|-----|---------------|
| `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 |
+| جميع الميزات خطي | 2.84 (10.5%) | 0.94 |
+| جميع الميزات متعدد الحدود | 2.23 (8.25%) | 0.97 |
-🏆 أحسنت! لقد أنشأت أربعة نماذج انحدار في درس واحد، وحسنت جودة النموذج إلى 97%. في القسم النهائي عن الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات.
+🏆 عمل رائع! أنشأت أربعة نماذج انحدار في درس واحد، وحسّنت جودة النموذج إلى 97%. في القسم النهائي عن الانحدار، ستتعلم عن الانحدار اللوجستي لتحديد الفئات.
---
## 🚀التحدي
-اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف تتناسب الارتباطات مع دقة النموذج.
+اختبر عدة متغيرات مختلفة في هذا الدفتر لترى كيف يتناسب الارتباط مع دقة النموذج.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
## مراجعة ودراسة ذاتية
-في هذا الدرس تعلمنا عن الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات Stepwise، Ridge و Lasso و Elasticnet. دورة جيدة للدراسة والتعلم أكثر هي دورة [Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
+في هذا الدرس تعرفنا على الانحدار الخطي. هناك أنواع أخرى مهمة من الانحدار. اقرأ عن تقنيات الخطوي، وريج، ولاسو، وإيلاستيك نت. دورة جيدة للدراسة والتعلم أكثر هي [دورة التعلم الإحصائي من ستانفورد](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
-## التعيين
+## الواجب
[إنشاء نموذج](assignment.md)
---
-**تنويه**:
-تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار النسخة الأصلية من المستند بلغتها الأصلية المصدر الأساسي والموثوق. للحصول على معلومات هامة، يُنصح بالترجمة الاحترافية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+**تنويه**:
+تمت ترجمة هذا الوثيقة باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر المعتمد. بالنسبة للمعلومات الهامة، يُنصح بالاعتماد على الترجمة المهنية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.
\ No newline at end of file
diff --git a/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb
index 5afde9d1a..a38a2e749 100644
--- a/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/ar/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## الانحدار الخطي والانحدار متعدد الحدود لتسعير القرع - الدرس الثالث\n",
+ "## الانحدار الخطي والانحدار متعدد الحدود لتسعير اليقطين - الدرس 3\n",
"\n",
- "قم بتحميل المكتبات والبيانات المطلوبة. قم بتحويل البيانات إلى إطار بيانات يحتوي على جزء من البيانات:\n",
+ "قم بتحميل المكتبات المطلوبة ومجموعة البيانات. حوّل البيانات إلى إطار بيانات يحتوي على مجموعة فرعية من البيانات:\n",
"\n",
- "- احصل فقط على القرع الذي تم تسعيره بوحدة البوشل\n",
- "- قم بتحويل التاريخ إلى شهر\n",
- "- احسب السعر ليكون متوسط الأسعار المرتفعة والمنخفضة\n",
- "- قم بتحويل السعر ليعكس التسعير بوحدة كمية البوشل\n"
+ "- جلب اليقطين المسعر فقط حسب البوشل\n",
+ "- تحويل التاريخ إلى شهر\n",
+ "- حساب السعر ليكون متوسط الأسعار العالية والمنخفضة\n",
+ "- تحويل السعر ليعكس التسعير حسب كمية البوشل\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "تذكرنا مخططات الانتشار بأن لدينا بيانات الأشهر فقط من أغسطس حتى ديسمبر. من المحتمل أننا بحاجة إلى المزيد من البيانات لنتمكن من استخلاص استنتاجات بطريقة خطية.\n"
+ "تذكرنا مخطط النقاط بأن لدينا بيانات فقط من أغسطس حتى ديسمبر. ربما نحتاج إلى المزيد من البيانات لنتمكن من استخلاص استنتاجات بطريقة خطية.\n"
]
},
{
@@ -448,7 +448,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "لنرَ إذا كان هناك ارتباط:\n"
+ "لنرَ إن كان هناك ارتباط:\n"
]
},
{
@@ -474,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "يبدو أن الارتباط صغير جدًا، ولكن هناك علاقة أخرى أكثر أهمية - لأن نقاط الأسعار في الرسم البياني أعلاه تبدو وكأنها تحتوي على عدة مجموعات مميزة. لنقم بإنشاء رسم بياني يُظهر أنواع القرع المختلفة:\n"
+ "يبدو أن الارتباط صغير جدًا، لكن هناك علاقة أخرى أكثر أهمية - لأن نقاط السعر في الرسم البياني أعلاه تبدو وكأنها تحتوي على عدة تجمعات مميزة. لنرسم رسمًا بيانيًا سيُظهر أنواع اليقطين المختلفة:\n"
]
},
{
@@ -537,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "في الوقت الحالي، دعونا نركز فقط على نوع واحد - **نوع الفطيرة**.\n"
+ ]
},
{
"cell_type": "code",
@@ -586,7 +588,7 @@
"source": [
"### الانحدار الخطي\n",
"\n",
- "سنستخدم مكتبة Scikit Learn لتدريب نموذج الانحدار الخطي:\n"
+ "سوف نستخدم Scikit Learn لتدريب نموذج الانحدار الخطي:\n"
]
},
{
@@ -720,11 +722,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### الانحدار متعدد الحدود\n",
+ "### الانحدار كثير الحدود\n",
"\n",
- "في بعض الأحيان تكون العلاقة بين الميزات والنتائج غير خطية بطبيعتها. على سبيل المثال، قد تكون أسعار القرع مرتفعة في الشتاء (الشهور=1،2)، ثم تنخفض خلال الصيف (الشهور=5-7)، ثم ترتفع مرة أخرى. الانحدار الخطي غير قادر على تحديد هذه العلاقة بدقة.\n",
+ "أحيانًا تكون العلاقة بين الميزات والنتائج غير خطية بطبيعتها. على سبيل المثال، قد تكون أسعار القرع مرتفعة في الشتاء (الأشهر=1، 2)، ثم تنخفض خلال الصيف (الأشهر=5-7)، ثم ترتفع مرة أخرى. الانحدار الخطي غير قادر على تحديد هذه العلاقة بدقة.\n",
"\n",
- "في هذه الحالة، يمكننا التفكير في إضافة ميزات إضافية. الطريقة البسيطة هي استخدام الحدوديات من الميزات المدخلة، مما يؤدي إلى **الانحدار متعدد الحدود**. في مكتبة Scikit Learn، يمكننا حساب الميزات متعددة الحدود تلقائيًا باستخدام الأنابيب:\n"
+ "في هذه الحالة، قد نحتاج إلى إضافة ميزات إضافية. الطريقة البسيطة هي استخدام كثيرات الحدود من الميزات المدخلة، مما يؤدي إلى **الانحدار كثير الحدود**. في مكتبة Scikit Learn، يمكننا حساب ميزات كثير الحدود تلقائيًا باستخدام خطوط الأنابيب: \n"
]
},
{
@@ -779,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### أنواع الترميز\n",
+ "### أنواع التشفير\n",
"\n",
- "في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أنواع مختلفة من القرع باستخدام نفس النموذج. لأخذ النوع في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **ترميزه**. هناك عدة طرق يمكننا القيام بذلك:\n",
+ "في العالم المثالي، نريد أن نتمكن من التنبؤ بأسعار أصناف اليقطين المختلفة باستخدام نفس النموذج. لأخذ الصنف في الاعتبار، نحتاج أولاً إلى تحويله إلى شكل رقمي، أو **تشفيره**. هناك عدة طرق يمكننا القيام بذلك:\n",
"\n",
- "* ترميز رقمي بسيط يقوم بإنشاء جدول لأنواع مختلفة، ثم يستبدل اسم النوع بمؤشر في ذلك الجدول. هذه ليست أفضل فكرة بالنسبة للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية للمؤشر في الاعتبار، والقيمة الرقمية من المحتمل ألا تكون مرتبطة عدديًا بالسعر.\n",
- "* الترميز الأحادي (One-hot encoding)، الذي سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل نوع، يحتوي على 1 إذا كانت الصفوف المقابلة من النوع المعطى، و0 خلاف ذلك.\n",
+ "* التشفير الرقمي البسيط الذي سيبني جدولاً للأصناف المختلفة، ثم يستبدل اسم الصنف بفهرس في ذلك الجدول. هذه ليست الفكرة الأفضل للانحدار الخطي، لأن الانحدار الخطي يأخذ القيمة الرقمية للفهرس في الاعتبار، والقيمة الرقمية من المحتمل ألا ترتبط رقمياً بالسعر.\n",
+ "* التشفير بنظام الواحد الحار \"one-hot encoding\"، الذي سيستبدل عمود `Variety` بأربعة أعمدة مختلفة، واحد لكل صنف، تحتوي على 1 إذا كان الصف المقابل من الصنف المعطى، و0 خلاف ذلك.\n",
"\n",
- "الكود أدناه يوضح كيف يمكننا ترميز النوع باستخدام الترميز الأحادي:\n"
+ "يعرض الكود أدناه كيف يمكننا تشفير صنف بنظام الواحد الحار:\n"
]
},
{
@@ -942,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### الانحدار الخطي على التنوع\n",
+ "### الانحدار الخطي على الأصناف\n",
"\n",
- "سنستخدم الآن نفس الكود المذكور أعلاه، ولكن بدلاً من `DayOfYear` سنستخدم التنوع المشفر بطريقة الـ one-hot كمدخل:\n"
+ "سنستخدم الآن نفس الكود كما في الأعلى، ولكن بدلاً من `DayOfYear` سنستخدم صنفنا المشفر بطريقة one-hot كمدخل:\n"
]
},
{
@@ -992,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "يمكننا أيضًا تجربة استخدام ميزات أخرى بنفس الطريقة، ودمجها مع الميزات العددية، مثل `Month` أو `DayOfYear`:\n"
+ "يمكننا أيضًا تجربة استخدام ميزات أخرى بنفس الطريقة، ودمجها مع الميزات الرقمية، مثل `Month` أو `DayOfYear`:\n"
]
},
{
@@ -1025,7 +1030,7 @@
"source": [
"### الانحدار متعدد الحدود\n",
"\n",
- "يمكن استخدام الانحدار متعدد الحدود أيضًا مع الميزات الفئوية التي تم ترميزها بطريقة التشفير الواحد-الساخن. سيكون الكود المستخدم لتدريب الانحدار متعدد الحدود مشابهًا بشكل أساسي لما رأيناه أعلاه.\n"
+ "يمكن أيضًا استخدام الانحدار متعدد الحدود مع الميزات التصنيفية التي تم ترميزها بطريقة واحدة فقط (one-hot-encoded). سيكون رمز تدريب الانحدار متعدد الحدود في الأساس هو نفسه الذي رأيناه أعلاه.\n"
]
},
{
@@ -1072,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**إخلاء المسؤولية**: \nتم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.\n"
+ "---\n\n\n**إخلاء المسؤولية**: \nتمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى جاهدين لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الحساسة، يُنصح بالترجمة المهنية البشرية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.\n\n"
]
}
],
@@ -1102,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-08-29T14:40:56+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "ar"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/de/.co-op-translator.json b/translations/de/.co-op-translator.json
index 21076e42f..c21104e40 100644
--- a/translations/de/.co-op-translator.json
+++ b/translations/de/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "de"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-04T21:59:17+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T20:11:39+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "de"
},
@@ -90,8 +90,8 @@
"language_code": "de"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T15:54:04+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T20:11:15+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "de"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "de"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T20:09:25+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "de"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-04T21:51:09+00:00",
diff --git a/translations/de/1-Introduction/4-techniques-of-ML/README.md b/translations/de/1-Introduction/4-techniques-of-ML/README.md
index a14241087..9f81ba346 100644
--- a/translations/de/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/de/1-Introduction/4-techniques-of-ML/README.md
@@ -1,123 +1,125 @@
# Techniken des maschinellen Lernens
-Der Prozess des Erstellens, Nutzens und Wartens von Modellen des maschinellen Lernens sowie der Daten, die sie verwenden, unterscheidet sich stark von vielen anderen Entwicklungs-Workflows. In dieser Lektion werden wir den Prozess entmystifizieren und die wichtigsten Techniken skizzieren, die Sie kennen müssen. Sie werden:
+Der Prozess des Erstellens, Verwendens und Wartens von Modellen des maschinellen Lernens und deren genutzten Daten ist ein ganz anderer Prozess als viele andere Entwicklungsworkflows. In dieser Lektion werden wir den Prozess entmystifizieren und die wichtigsten Techniken skizzieren, die Sie kennen müssen. Sie werden:
-- Die grundlegenden Prozesse des maschinellen Lernens auf hoher Ebene verstehen.
-- Grundkonzepte wie "Modelle", "Vorhersagen" und "Trainingsdaten" erkunden.
+- Die Prozesse, die dem maschinellen Lernen zugrunde liegen, auf hohem Niveau verstehen.
+- Grundkonzepte wie „Modelle“, „Vorhersagen“ und „Trainingsdaten“ erkunden.
-## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
+## [Vorlesungsquiz](https://ff-quizzes.netlify.app/en/ml/)
-[](https://youtu.be/4NGM0U2ZSHU "ML für Anfänger - Techniken des maschinellen Lernens")
+[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zu dieser Lektion anzusehen.
+> 🎥 Klicken Sie auf das Bild oben für ein kurzes Video, das durch diese Lektion führt.
## Einführung
-Auf hoher Ebene besteht die Kunst, Prozesse des maschinellen Lernens (ML) zu erstellen, aus mehreren Schritten:
+Auf hohem Niveau besteht das Handwerk der Erstellung von Prozessen des maschinellen Lernens (ML) aus mehreren Schritten:
-1. **Formulieren Sie die Frage.** Die meisten ML-Prozesse beginnen mit einer Frage, die nicht durch ein einfaches bedingtes Programm oder eine regelbasierte Engine beantwortet werden kann. Diese Fragen drehen sich oft um Vorhersagen, die auf einer Sammlung von Daten basieren.
-2. **Sammeln und vorbereiten von Daten.** Um Ihre Frage beantworten zu können, benötigen Sie Daten. Die Qualität und manchmal auch die Menge Ihrer Daten bestimmen, wie gut Sie Ihre ursprüngliche Frage beantworten können. Die Visualisierung von Daten ist ein wichtiger Aspekt dieser Phase. Diese Phase umfasst auch das Aufteilen der Daten in eine Trainings- und Testgruppe, um ein Modell zu erstellen.
-3. **Wählen Sie eine Trainingsmethode.** Abhängig von Ihrer Frage und der Art Ihrer Daten müssen Sie entscheiden, wie Sie ein Modell trainieren möchten, um Ihre Daten bestmöglich zu repräsentieren und genaue Vorhersagen zu treffen. Dieser Teil des ML-Prozesses erfordert spezifisches Fachwissen und oft eine beträchtliche Menge an Experimenten.
-4. **Trainieren Sie das Modell.** Mithilfe Ihrer Trainingsdaten verwenden Sie verschiedene Algorithmen, um ein Modell zu trainieren, das Muster in den Daten erkennt. Das Modell kann interne Gewichte nutzen, die angepasst werden können, um bestimmte Teile der Daten gegenüber anderen zu bevorzugen, um ein besseres Modell zu erstellen.
-5. **Bewerten Sie das Modell.** Sie verwenden bisher unbekannte Daten (Ihre Testdaten) aus Ihrem gesammelten Satz, um zu sehen, wie das Modell abschneidet.
-6. **Parameteranpassung.** Basierend auf der Leistung Ihres Modells können Sie den Prozess mit unterschiedlichen Parametern oder Variablen, die das Verhalten der Algorithmen steuern, wiederholen.
-7. **Vorhersagen.** Verwenden Sie neue Eingaben, um die Genauigkeit Ihres Modells zu testen.
+1. **Die Frage festlegen.** Die meisten ML-Prozesse beginnen mit einer Frage, die nicht durch ein einfaches bedingtes Programm oder regelbasiertes System beantwortet werden kann. Diese Fragen drehen sich oft um Vorhersagen basierend auf einer Datensammlung.
+2. **Daten sammeln und vorbereiten.** Um Ihre Frage beantworten zu können, benötigen Sie Daten. Die Qualität und manchmal auch die Menge Ihrer Daten bestimmt, wie gut Sie Ihre ursprüngliche Frage beantworten können. Die Visualisierung der Daten ist ein wichtiger Aspekt dieser Phase. Diese Phase umfasst auch die Aufteilung der Daten in Trainings- und Testgruppen zum Aufbau eines Modells.
+3. **Eine Trainingsmethode wählen.** Abhängig von Ihrer Frage und der Natur Ihrer Daten müssen Sie entscheiden, wie Sie ein Modell trainieren möchten, um Ihre Daten am besten widerzuspiegeln und genaue Vorhersagen zu treffen. Dies ist der Teil Ihres ML-Prozesses, der spezifische Expertise und oft eine beträchtliche Menge an Experimenten erfordert.
+4. **Das Modell trainieren.** Mithilfe Ihrer Trainingsdaten verwenden Sie verschiedene Algorithmen, um ein Modell zu trainieren, das Muster in den Daten erkennt. Das Modell kann interne Gewichte verwenden, die angepasst werden können, um bestimmten Teilen der Daten Vorrang zu geben und so ein besseres Modell zu erstellen.
+5. **Das Modell bewerten.** Sie verwenden zuvor nie gesehene Daten (Ihre Testdaten) aus Ihrem gesammelten Datensatz, um die Leistung des Modells zu überprüfen.
+6. **Parameteranpassung.** Basierend auf der Leistung Ihres Modells können Sie den Prozess wiederholen und verschiedene Parameter oder Variablen verwenden, die das Verhalten der zum Training verwendeten Algorithmen steuern.
+7. **Vorhersagen treffen.** Verwenden Sie neue Eingaben, um die Genauigkeit Ihres Modells zu testen.
-## Welche Frage soll gestellt werden?
+## Welche Frage sollte man stellen
-Computer sind besonders gut darin, versteckte Muster in Daten zu entdecken. Diese Fähigkeit ist sehr hilfreich für Forscher, die Fragen zu einem bestimmten Bereich haben, die nicht leicht durch die Erstellung einer bedingungsbasierten Regel-Engine beantwortet werden können. Bei einer versicherungsmathematischen Aufgabe könnte ein Datenwissenschaftler beispielsweise handgefertigte Regeln zur Sterblichkeit von Rauchern im Vergleich zu Nichtrauchern erstellen.
+Computer sind besonders gut darin, verborgene Muster in Daten zu entdecken. Diese Nützlichkeit ist sehr hilfreich für Forscher, die Fragen zu einem bestimmten Gebiet haben, die nicht leicht durch ein regelbasiertes System beantwortet werden können. Bei einer versicherungsmathematischen Aufgabe könnte ein Datenwissenschaftler zum Beispiel handgefertigte Regeln zur Mortalität von Rauchern versus Nichtrauchern erstellen.
-Wenn jedoch viele andere Variablen in die Gleichung einfließen, könnte sich ein ML-Modell als effizienter erweisen, um zukünftige Sterblichkeitsraten basierend auf vergangenen Gesundheitsdaten vorherzusagen. Ein fröhlicheres Beispiel könnte die Wettervorhersage für den Monat April an einem bestimmten Ort sein, basierend auf Daten wie Breitengrad, Längengrad, Klimawandel, Nähe zum Ozean, Jetstream-Mustern und mehr.
+Wenn jedoch viele andere Variablen mit einbezogen werden, könnte sich ein ML-Modell als effizienter erweisen, um zukünftige Sterblichkeitsraten basierend auf der bisherigen Gesundheitsgeschichte vorherzusagen. Ein fröhlicheres Beispiel könnte das Erstellen von Wettervorhersagen für den Monat April an einem bestimmten Ort sein, basierend auf Daten, die Breite, Länge, Klimawandel, Nähe zum Ozean, Muster des Jetstreams und mehr enthalten.
-✅ Diese [Präsentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) zu Wettermodellen bietet eine historische Perspektive zur Nutzung von ML in der Wetteranalyse.
+✅ Diese [Präsentation](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) über Wettermodelle bietet eine historische Perspektive zur Verwendung von ML in der Wetteranalyse.
-## Aufgaben vor dem Modellaufbau
+## Aufgaben vor dem Aufbau
-Bevor Sie mit dem Aufbau Ihres Modells beginnen, gibt es mehrere Aufgaben, die Sie erledigen müssen. Um Ihre Frage zu testen und eine Hypothese basierend auf den Vorhersagen eines Modells zu formulieren, müssen Sie mehrere Elemente identifizieren und konfigurieren.
+Bevor Sie mit dem Aufbau Ihres Modells beginnen, müssen Sie mehrere Aufgaben erledigen. Um Ihre Frage zu testen und eine Hypothese auf Basis der Vorhersagen eines Modells zu bilden, müssen Sie mehrere Elemente identifizieren und konfigurieren.
### Daten
-Um Ihre Frage mit einer gewissen Sicherheit beantworten zu können, benötigen Sie eine ausreichende Menge an Daten des richtigen Typs. Es gibt zwei Dinge, die Sie an diesem Punkt tun müssen:
+Um Ihre Frage mit einer gewissen Sicherheit beantworten zu können, benötigen Sie eine gute Menge an Daten vom richtigen Typ. An diesem Punkt müssen Sie zwei Dinge tun:
-- **Daten sammeln.** Denken Sie an die vorherige Lektion zur Fairness in der Datenanalyse und sammeln Sie Ihre Daten sorgfältig. Achten Sie auf die Quellen dieser Daten, mögliche inhärente Verzerrungen und dokumentieren Sie deren Herkunft.
-- **Daten vorbereiten.** Es gibt mehrere Schritte im Datenvorbereitungsprozess. Sie müssen möglicherweise Daten zusammenstellen und normalisieren, wenn sie aus verschiedenen Quellen stammen. Sie können die Qualität und Quantität der Daten durch verschiedene Methoden verbessern, wie z. B. das Konvertieren von Zeichenfolgen in Zahlen (wie wir es in [Clustering](../../5-Clustering/1-Visualize/README.md) tun). Sie könnten auch neue Daten basierend auf den ursprünglichen generieren (wie wir es in [Klassifikation](../../4-Classification/1-Introduction/README.md) tun). Sie können die Daten bereinigen und bearbeiten (wie wir es vor der [Web-App](../../3-Web-App/README.md)-Lektion tun werden). Schließlich müssen Sie die Daten möglicherweise auch zufällig anordnen und mischen, je nach Ihren Trainingstechniken.
+- **Daten sammeln.** Unter Berücksichtigung der vorherigen Lektion zur Fairness in der Datenanalyse sammeln Sie Ihre Daten sorgfältig. Seien Sie sich der Herkunft dieser Daten bewusst, etwaiger inhärenter Verzerrungen und dokumentieren Sie deren Ursprung.
+- **Daten vorbereiten.** Im Datenvorbereitungsprozess sind mehrere Schritte erforderlich. Möglicherweise müssen Sie Daten aus verschiedenen Quellen sammeln und normalisieren. Sie können die Qualität und Menge der Daten durch verschiedene Methoden verbessern, z. B. durch Umwandlung von Zeichenketten in Zahlen (wie wir es in [Clustering](../../5-Clustering/1-Visualize/README.md) tun). Sie können auch neue Daten basierend auf den Originaldaten erzeugen (wie wir es in [Classification](../../4-Classification/1-Introduction/README.md) tun). Sie können die Daten säubern und bearbeiten (wie wir es vor der [Web-App](../../3-Web-App/README.md) Lektion tun). Schließlich müssen Sie sie je nach Trainingsmethode möglicherweise auch zufällig mischen und durchmischen.
-✅ Nachdem Sie Ihre Daten gesammelt und verarbeitet haben, nehmen Sie sich einen Moment Zeit, um zu prüfen, ob deren Struktur es Ihnen ermöglicht, Ihre beabsichtigte Frage zu beantworten. Es könnte sein, dass die Daten für Ihre Aufgabe nicht gut geeignet sind, wie wir in unseren [Clustering](../../5-Clustering/1-Visualize/README.md)-Lektionen herausfinden!
+✅ Nachdem Sie Ihre Daten gesammelt und verarbeitet haben, nehmen Sie sich einen Moment Zeit, um zu sehen, ob deren Form es Ihnen erlaubt, Ihre beabsichtigte Frage zu bearbeiten. Es kann sein, dass die Daten für Ihre Aufgabe nicht gut geeignet sind, wie wir in unseren [Clustering](../../5-Clustering/1-Visualize/README.md) Lektionen entdecken!
### Merkmale und Ziel
-Ein [Merkmal](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ist eine messbare Eigenschaft Ihrer Daten. In vielen Datensätzen wird es als Spaltenüberschrift wie 'Datum', 'Größe' oder 'Farbe' ausgedrückt. Ihre Merkmalsvariable, die in der Regel als `X` im Code dargestellt wird, repräsentiert die Eingabevariable, die verwendet wird, um das Modell zu trainieren.
+Ein [Merkmal](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ist eine messbare Eigenschaft Ihrer Daten. In vielen Datensätzen wird es als Spaltenüberschrift wie „Datum“, „Größe“ oder „Farbe“ dargestellt. Ihre Merkmalsvariable, meist als `X` im Code dargestellt, repräsentiert die Eingangsvariable, die zum Trainieren eines Modells verwendet wird.
-Ein Ziel ist das, was Sie vorhersagen möchten. Das Ziel, in der Regel als `y` im Code dargestellt, repräsentiert die Antwort auf die Frage, die Sie an Ihre Daten stellen möchten: Im Dezember, welche **Farbe** haben die günstigsten Kürbisse? In San Francisco, welche Stadtteile haben die besten Immobilien-**preise**? Manchmal wird das Ziel auch als Label-Attribut bezeichnet.
+Ein Ziel ist das, was Sie vorhersagen möchten. Das Ziel, meist als `y` im Code dargestellt, repräsentiert die Antwort auf die Frage, die Sie Ihren Daten stellen möchten: Im Dezember, welche **Farbe** werden Kürbisse am günstigsten haben? In San Francisco, welche Viertel werden den besten Immobilien-**Preis** haben? Manchmal wird das Ziel auch als Label-Attribut bezeichnet.
### Auswahl Ihrer Merkmalsvariablen
-🎓 **Merkmalsauswahl und Merkmalsextraktion** Wie wissen Sie, welche Variable Sie beim Aufbau eines Modells auswählen sollen? Sie werden wahrscheinlich einen Prozess der Merkmalsauswahl oder Merkmalsextraktion durchlaufen, um die richtigen Variablen für das leistungsfähigste Modell auszuwählen. Sie sind jedoch nicht dasselbe: "Die Merkmalsextraktion erstellt neue Merkmale aus Funktionen der ursprünglichen Merkmale, während die Merkmalsauswahl eine Teilmenge der Merkmale zurückgibt." ([Quelle](https://wikipedia.org/wiki/Feature_selection))
+🎓 **Merkmalsauswahl und Merkmalsextraktion** Wie wissen Sie, welche Variable Sie beim Aufbau eines Modells wählen sollen? Wahrscheinlich durchlaufen Sie einen Prozess der Merkmalsauswahl oder Merkmalsextraktion, um die richtigen Variablen für das leistungsfähigste Modell auszuwählen. Sie sind jedoch nicht dasselbe: „Merkmalsextraktion erstellt neue Merkmale aus Funktionen der ursprünglichen Merkmale, während Merkmalsauswahl eine Teilmenge der Merkmale zurückgibt.“ ([Quelle](https://wikipedia.org/wiki/Feature_selection))
### Visualisieren Sie Ihre Daten
-Ein wichtiger Aspekt im Werkzeugkasten eines Datenwissenschaftlers ist die Fähigkeit, Daten mithilfe mehrerer hervorragender Bibliotheken wie Seaborn oder MatPlotLib zu visualisieren. Die visuelle Darstellung Ihrer Daten könnte es Ihnen ermöglichen, versteckte Korrelationen zu entdecken, die Sie nutzen können. Ihre Visualisierungen könnten Ihnen auch helfen, Verzerrungen oder unausgewogene Daten aufzudecken (wie wir in [Klassifikation](../../4-Classification/2-Classifiers-1/README.md) herausfinden).
+Ein wichtiger Bestandteil des Werkzeugsatzes eines Datenwissenschaftlers ist die Fähigkeit, Daten mit mehreren exzellenten Bibliotheken wie Seaborn oder MatPlotLib zu visualisieren. Die visuelle Darstellung Ihrer Daten kann Ihnen helfen, verborgene Korrelationen zu entdecken, die Sie nutzen können. Ihre Visualisierungen können Ihnen auch helfen, Verzerrungen oder unausgewogene Daten zu erkennen (wie wir in [Classification](../../4-Classification/2-Classifiers-1/README.md) entdecken).
-### Teilen Sie Ihren Datensatz
+### Teilen Sie Ihren Datensatz auf
-Vor dem Training müssen Sie Ihren Datensatz in zwei oder mehr Teile ungleicher Größe aufteilen, die die Daten dennoch gut repräsentieren.
+Vor dem Training müssen Sie Ihren Datensatz in zwei oder mehr unterschiedlich große Teile aufteilen, die dennoch die Daten gut repräsentieren.
-- **Training.** Dieser Teil des Datensatzes wird an Ihr Modell angepasst, um es zu trainieren. Dieser Satz macht den Großteil des ursprünglichen Datensatzes aus.
-- **Testen.** Ein Testdatensatz ist eine unabhängige Gruppe von Daten, die oft aus den ursprünglichen Daten entnommen wird und mit der Sie die Leistung des erstellten Modells überprüfen.
-- **Validieren.** Ein Validierungssatz ist eine kleinere unabhängige Gruppe von Beispielen, die Sie verwenden, um die Hyperparameter oder die Architektur des Modells zu optimieren, um das Modell zu verbessern. Abhängig von der Größe Ihrer Daten und der Frage, die Sie stellen, müssen Sie diesen dritten Satz möglicherweise nicht erstellen (wie wir in [Zeitreihenprognosen](../../7-TimeSeries/1-Introduction/README.md) feststellen).
+- **Training.** Dieser Teil des Datensatzes wird verwendet, um Ihr Modell zu trainieren. Dieser Satz macht den Großteil des ursprünglichen Datensatzes aus.
+- **Testen.** Ein Testdatensatz ist eine unabhängige Datenmenge, oft aus den Originaldaten gewonnen, die Sie verwenden, um die Leistung des gebauten Modells zu bestätigen.
+- **Validierung.** Ein Validierungssatz ist eine kleinere unabhängige Gruppe von Beispielen, die Sie zur Feinabstimmung der Hyperparameter oder Architektur des Modells nutzen, um das Modell zu verbessern. Je nach Größe Ihrer Daten und der gestellten Frage benötigen Sie diesen dritten Satz möglicherweise nicht (wie wir in [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) anmerken).
-## Ein Modell erstellen
+## Aufbau eines Modells
-Mithilfe Ihrer Trainingsdaten ist es Ihr Ziel, ein Modell oder eine statistische Darstellung Ihrer Daten zu erstellen, indem Sie verschiedene Algorithmen verwenden, um es zu **trainieren**. Das Training eines Modells setzt es Daten aus und ermöglicht es ihm, Annahmen über wahrgenommene Muster zu treffen, diese zu validieren und anzunehmen oder abzulehnen.
+Mit Ihren Trainingsdaten ist es Ihr Ziel, ein Modell oder eine statistische Darstellung Ihrer Daten durch verschiedene Algorithmen zu **trainieren**. Das Trainieren eines Modells setzt es den Daten aus und ermöglicht ihm, Annahmen über wahrgenommene Muster zu treffen, diese zu validieren und anzunehmen oder abzulehnen.
-### Entscheiden Sie sich für eine Trainingsmethode
+### Wählen Sie eine Trainingsmethode
-Abhängig von Ihrer Frage und der Art Ihrer Daten wählen Sie eine Methode, um sie zu trainieren. Wenn Sie die [Dokumentation von Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - die wir in diesem Kurs verwenden - durchgehen, können Sie viele Möglichkeiten erkunden, ein Modell zu trainieren. Abhängig von Ihrer Erfahrung müssen Sie möglicherweise mehrere Methoden ausprobieren, um das beste Modell zu erstellen. Sie werden wahrscheinlich einen Prozess durchlaufen, bei dem Datenwissenschaftler die Leistung eines Modells bewerten, indem sie ihm unbekannte Daten zuführen, die Genauigkeit, Verzerrungen und andere qualitätsmindernde Probleme überprüfen und die am besten geeignete Trainingsmethode für die jeweilige Aufgabe auswählen.
+Je nach Ihrer Frage und der Natur Ihrer Daten wählen Sie eine Methode, um das Modell zu trainieren. Wenn Sie durch die [Dokumentation von Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - die wir in diesem Kurs verwenden - gehen, finden Sie viele Möglichkeiten, ein Modell zu trainieren. Je nach Ihrer Erfahrung müssen Sie möglicherweise mehrere verschiedene Methoden ausprobieren, um das beste Modell zu erstellen. Häufig durchlaufen Datenwissenschaftler einen Prozess, bei dem sie die Leistung eines Modells durch die Überprüfung von zuvor unbekannten Daten, die auf Genauigkeit, Verzerrung und andere Qualitätsprobleme geprüft werden, evaluieren und die passendste Trainingsmethode für die jeweilige Aufgabe auswählen.
-### Ein Modell trainieren
+### Trainieren Sie ein Modell
-Mit Ihren Trainingsdaten sind Sie bereit, sie zu "fitten", um ein Modell zu erstellen. Sie werden feststellen, dass Sie in vielen ML-Bibliotheken den Code 'model.fit' finden - zu diesem Zeitpunkt senden Sie Ihre Merkmalsvariable als Array von Werten (in der Regel 'X') und eine Zielvariable (in der Regel 'y') ein.
+Mit Ihren Trainingsdaten sind Sie bereit, es zu „fitten“, um ein Modell zu erstellen. Sie werden feststellen, dass Sie in vielen ML-Bibliotheken den Code `model.fit` sehen – zu diesem Zeitpunkt übergeben Sie Ihre Merkmalsvariable als Array von Werten (normalerweise 'X') und eine Zielvariable (normalerweise 'y').
-### Das Modell bewerten
+### Bewerten Sie das Modell
-Sobald der Trainingsprozess abgeschlossen ist (es kann viele Iterationen oder 'Epochen' dauern, um ein großes Modell zu trainieren), können Sie die Qualität des Modells bewerten, indem Sie Testdaten verwenden, um seine Leistung zu messen. Diese Daten sind ein Teil der ursprünglichen Daten, die das Modell zuvor nicht analysiert hat. Sie können eine Tabelle mit Metriken zur Qualität Ihres Modells ausgeben.
+Sobald der Trainingsprozess abgeschlossen ist (es können viele Iterationen oder „Epochen“ nötig sein, um ein großes Modell zu trainieren), können Sie die Qualität des Modells anhand von Testdaten einschätzen. Diese Daten sind ein Teil des ursprünglichen Datensatzes, den das Modell noch nicht analysiert hat. Sie können eine Tabelle mit Metriken zur Qualität Ihres Modells ausgeben.
🎓 **Modellanpassung**
-Im Kontext des maschinellen Lernens bezieht sich die Modellanpassung auf die Genauigkeit der zugrunde liegenden Funktion des Modells, während es versucht, Daten zu analysieren, mit denen es nicht vertraut ist.
+Im Kontext des maschinellen Lernens bezieht sich Modellanpassung auf die Genauigkeit der zugrundeliegenden Funktion des Modells, während es versucht, Daten zu analysieren, mit denen es nicht vertraut ist.
-🎓 **Underfitting** und **Overfitting** sind häufige Probleme, die die Qualität des Modells beeinträchtigen, da das Modell entweder nicht gut genug oder zu gut passt. Dies führt dazu, dass das Modell Vorhersagen entweder zu eng oder zu locker an seine Trainingsdaten anpasst. Ein überangepasstes Modell sagt Trainingsdaten zu gut voraus, da es die Details und das Rauschen der Daten zu gut gelernt hat. Ein unterangepasstes Modell ist nicht genau, da es weder seine Trainingsdaten noch Daten, die es noch nicht "gesehen" hat, genau analysieren kann.
+🎓 **Underfitting** und **Overfitting** sind häufige Probleme, die die Qualität des Modells beeinträchtigen, wenn das Modell entweder nicht gut genug oder zu gut anpasst. Dies führt dazu, dass das Modell entweder zu genau oder zu lose mit seinen Trainingsdaten übereinstimmt. Ein überangepasstes Modell sagt die Trainingsdaten zu gut vorher, da es die Details und das Rauschen der Daten zu genau gelernt hat. Ein unterangepasstes Modell ist ungenau, da es weder seine Trainingsdaten noch neue Daten, die es noch nicht „gesehen“ hat, genau analysieren kann.
-
+
> Infografik von [Jen Looper](https://twitter.com/jenlooper)
## Parameteranpassung
-Sobald Ihr erstes Training abgeschlossen ist, beobachten Sie die Qualität des Modells und überlegen, wie Sie es durch Anpassung seiner 'Hyperparameter' verbessern können. Lesen Sie mehr über den Prozess [in der Dokumentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
+Sobald Ihr erstes Training abgeschlossen ist, beobachten Sie die Qualität des Modells und überlegen, es zu verbessern, indem Sie dessen „Hyperparameter“ anpassen. Lesen Sie mehr über den Prozess [in der Dokumentation](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Vorhersage
-Dies ist der Moment, in dem Sie völlig neue Daten verwenden können, um die Genauigkeit Ihres Modells zu testen. In einem 'angewandten' ML-Setting, in dem Sie Webanwendungen erstellen, um das Modell in der Produktion zu verwenden, könnte dieser Prozess das Sammeln von Benutzereingaben (z. B. einen Knopfdruck) umfassen, um eine Variable festzulegen und sie an das Modell zur Inferenz oder Bewertung zu senden.
+Dies ist der Moment, in dem Sie völlig neue Daten verwenden können, um die Genauigkeit Ihres Modells zu testen. In einem „angewandten“ ML-Setting, bei dem Sie Web-Anwendungen erstellen, um das Modell in der Produktion zu nutzen, könnte dieser Prozess die Erfassung von Benutzereingaben (beispielsweise ein Button-Klick) umfassen, um eine Variable zu setzen und an das Modell zur Inferenz oder Bewertung zu senden.
-In diesen Lektionen werden Sie entdecken, wie Sie diese Schritte nutzen, um vorzubereiten, zu bauen, zu testen, zu bewerten und vorherzusagen - all die Gesten eines Datenwissenschaftlers und mehr, während Sie auf Ihrer Reise zum 'Full-Stack'-ML-Ingenieur voranschreiten.
+In diesen Lektionen entdecken Sie, wie Sie diese Schritte nutzen, um Daten vorzubereiten, Modelle zu erstellen, zu testen, zu bewerten und Vorhersagen zu treffen – all die Gesten eines Datenwissenschaftlers und mehr, während Sie auf dem Weg sind, ein „Full Stack“ ML Engineer zu werden.
---
-## 🚀 Herausforderung
+## 🚀Herausforderung
-Erstellen Sie ein Flussdiagramm, das die Schritte eines ML-Praktikers darstellt. Wo sehen Sie sich derzeit im Prozess? Wo erwarten Sie Schwierigkeiten? Was erscheint Ihnen einfach?
+Zeichnen Sie ein Flussdiagramm, das die Schritte eines ML-Praktikers widerspiegelt. Wo sehen Sie sich gerade im Prozess? Wo prognostizieren Sie Schwierigkeiten? Was erscheint Ihnen leicht?
-## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
+## [Nachvorlesungs-Quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Überprüfung & Selbststudium
+## Rückblick & Selbststudium
-Suchen Sie online nach Interviews mit Datenwissenschaftlern, die über ihre tägliche Arbeit sprechen. Hier ist [eins](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
+Suchen Sie online nach Interviews mit Datenwissenschaftlern, die ihren Arbeitsalltag beschreiben. Hier ist [eines](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Aufgabe
-[Führen Sie ein Interview mit einem Datenwissenschaftler](assignment.md)
+[Interviewen Sie einen Datenwissenschaftler](assignment.md)
---
+
**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, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [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 ursprünglichen Sprache gilt als maßgebliche Quelle. 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.
+
\ No newline at end of file
diff --git a/translations/de/2-Regression/3-Linear/README.md b/translations/de/2-Regression/3-Linear/README.md
index fb522a594..bc93cff0b 100644
--- a/translations/de/2-Regression/3-Linear/README.md
+++ b/translations/de/2-Regression/3-Linear/README.md
@@ -1,139 +1,136 @@
-# Erstellen eines Regressionsmodells mit Scikit-learn: Regression auf vier Arten
+# Erstelle ein Regressionsmodell mit Scikit-learn: Regression auf vier Arten
-## Anfängerhinweis
+## Anmerkung für Anfänger
-Lineare Regression wird verwendet, wenn wir einen **numerischen Wert** vorhersagen wollen (zum Beispiel Hauspreis, Temperatur oder Umsatz).
-Sie funktioniert, indem sie eine Gerade findet, die die Beziehung zwischen Eingabefunktionen und Ausgabe am besten darstellt.
+Lineare Regression wird verwendet, wenn wir einen **numerischen Wert** vorhersagen möchten (zum Beispiel Hauspreis, Temperatur oder Umsatz).
+Sie funktioniert, indem sie eine Gerade findet, die die Beziehung zwischen Eingabemerkmalen und Ausgabe bestmöglich darstellt.
-In dieser Lektion konzentrieren wir uns darauf, das Konzept zu verstehen, bevor wir uns fortgeschritteneren Regressionsmethoden zuwenden.
-
+In dieser Lektion konzentrieren wir uns darauf, das Konzept zu verstehen, bevor wir fortgeschrittenere Regressionstechniken erkunden.
+
> Infografik von [Dasani Madipalli](https://twitter.com/dasani_decoded)
-
-## [Pre-lecture Quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [Vorlesungsquiz](https://ff-quizzes.netlify.app/en/ml/)
> ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### Einführung
-### Einführung
-
-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.
+Bis jetzt hast du erkundet, was Regression ist, anhand von Beispieldaten aus dem Kürbis-Preis-Datensatz, den wir in dieser Lektion verwenden werden. Du hast ihn auch mit Matplotlib visualisiert.
-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.
+Jetzt bist du bereit, tiefer in Regression für ML einzutauchen. Während die Visualisierung dabei hilft, die Daten zu verstehen, liegt die wahre Stärke von Machine Learning im _Trainieren von Modellen_. Modelle werden auf historischen Daten trainiert, um Datenabhängigkeiten automatisch zu erfassen, und ermöglichen es, Vorhersagen für neue Daten zu machen, die das Modell vorher nicht gesehen hat.
-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.
+In dieser Lektion lernst du mehr über zwei Arten der Regression: _einfache lineare Regression_ und _polynomiale Regression_ sowie einige der Mathematik, die diesen Techniken zugrunde liegt. Diese Modelle werden uns erlauben, Kürbisse je nach unterschiedlichen Eingabedaten vorherzusagen.
-[](https://youtu.be/CRxFT8oTDMg "ML für Anfänger – Verständnis der linearen Regression")
+[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear 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 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.
+> Im gesamten Lehrplan gehen wir von minimalen mathematischen Vorkenntnissen aus und möchten es für Studierende aus anderen Fachrichtungen zugänglich machen. Achte also auf Anmerkungen, 🧮 Hervorhebungen, Diagramme und andere Lernhilfen zur Unterstützung des Verständnisses.
### Voraussetzungen
-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.
+Du solltest jetzt mit der Struktur der Kürbisdaten vertraut sein, die wir untersuchen. Du findest sie vorab geladen und bereinigt in der Datei _notebook.ipynb_ dieser Lektion. Dort wird der Kürbisp steht pro Bushel in einem neuen DataFrame angezeigt. Stelle sicher, dass du diese Notebooks in Visual Studio Code in passenden Umgebungen ausführen kannst.
### Vorbereitung
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 Mini-Kürbisse erwarten?
-- Sollte ich sie in Halbscheffel-Körben oder in 1 1/9 Scheffel Kisten kaufen?
-
-Lass uns tiefer in diese Daten eintauchen.
-
-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.
+- Wann ist die beste Zeit, Kürbisse zu kaufen?
+- Welchen Preis kann ich für eine Kiste mit Mini-Kürbissen erwarten?
+- Sollte ich sie in halben Bushel-Körben oder im 1 1/9 Bushel-Karton kaufen?
+Lass uns weiter in diese Daten eintauchen.
-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.
+In der vorherigen Lektion hast du ein Pandas DataFrame erstellt und mit einem Teil des ursprünglichen Datensatzes gefüllt, wobei die Preise pro Bushel standardisiert wurden. Dadurch konntest du jedoch nur etwa 400 Datenpunkte und nur für die Herbstmonate erfassen.
-## Eine lineare Regressionsgerade
+Betrachte die Daten, die wir in dem Notebook dieser Lektion vorab geladen haben. Die Daten sind vorab geladen und ein erster Streudiagramm wird gezeichnet, um Monatsdaten zu zeigen. Vielleicht können wir mehr Details über die Natur der Daten erhalten, wenn wir sie weiter bereinigen.
-Wie du in Lektion 1 gelernt hast, ist das Ziel einer linearen Regression, eine Gerade zu zeichnen, die:
+## Eine Linie der linearen Regression
-- **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.
+Wie du in Lektion 1 gelernt hast, ist das Ziel einer linearen Regression, eine Linie zu zeichnen, um:
-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.
+- **Variablenbeziehungen zu zeigen**. Die Beziehung zwischen Variablen darstellen
+- **Vorhersagen zu machen**. Genau vorhersagen, wo ein neuer Datenpunkt in Bezug auf diese Linie liegen würde.
+
+Typisch für die **Methode der kleinsten Quadrate** ist es, diese Art von Linie zu zeichnen. Der Begriff "Methode der kleinsten Quadrate" bezieht sich auf den Prozess, den Gesamtfehler in unserem Modell zu minimieren. Für jeden Datenpunkt messen wir den vertikalen Abstand (genannt Residuum) zwischen dem tatsächlichen Punkt und unserer Regressionslinie.
Wir quadrieren diese Abstände aus zwei Hauptgründen:
-1. **Betrag statt Richtung:** Wir wollen einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv.
+1. **Betrag statt Richtung:** Wir möchten einen Fehler von -5 genauso behandeln wie einen Fehler von +5. Das Quadrieren macht alle Werte positiv.
-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.
+2. **Bestrafung von Ausreißern:** Das Quadrieren gibt größeren Fehlern mehr Gewicht, wodurch die Linie gezwungen wird, näher an weit entfernten Punkten zu bleiben.
-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“.
+Dann addieren wir alle quadrierten Werte zusammen. Unser Ziel ist es, genau die Linie zu finden, bei der diese Summe am geringsten ist – 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:
->
+> **🧮 Zeig mir die Mathematik**
+>
+> Diese Linie, genannt _Line of Best Fit_, kann durch [eine Gleichung](https://en.wikipedia.org/wiki/Simple_linear_regression) ausgedrückt werden:
+>
> ```
> Y = a + bX
> ```
->
-> `X` ist die „erklärende Variable“. `Y` ist die „abhängige Variable“. Die Steigung der 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.
+>
+> `X` ist die „erklärende Variable“. `Y` ist die „abhängige Variable“. Die Steigung der Linie ist `b` und `a` ist der y-Achsenabschnitt, also der Wert von `Y`, wenn `X = 0` ist.
+>
+>
+>
+> Zuerst berechne die Steigung `b`. Infografik von [Jen Looper](https://twitter.com/jenlooper)
+>
+> Anders ausgedrückt, und bezogen auf die ursprüngliche Frage unserer Kürbisdaten: "Vorhersage des Preises eines Kürbisses pro Bushel nach Monat", würde `X` den Preis darstellen und `Y` den Verkaufsmonat.
+>
+>
+>
+> Berechne den Wert von Y. Wenn du etwa $4 zahlst, muss es April sein! Infografik von [Jen Looper](https://twitter.com/jenlooper)
+>
+> Die Rechnung, die die Linie berechnet, muss die Steigung der Linie zeigen, die auch vom Achsenabschnitt abhängt, also von dem Punkt, an dem `Y` liegt, wenn `X = 0` ist.
+>
+> Du kannst die Berechnungsmethode für diese Werte auf der Website [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 Linie beeinflussen.
## Korrelation
-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 weiterer Begriff, den du verstehen solltest, ist der **Korrelationskoeffizient** zwischen bestimmten X- und Y-Variablen. Mit einem Streudiagramm kannst du diesen Koeffizienten schnell visualisieren. Ein Diagramm mit Datenpunkten, die sich in einer geordneten Linie anordnen, hat eine hohe Korrelation, während ein Diagramm mit verstreuten Punkten zwischen X und Y eine niedrige Korrelation aufweist.
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ü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?
+✅ Führe das zu dieser Lektion gehörende Notebook aus und sieh dir das Streudiagramm Monat zu Preis an. Hat die Datenzuordnung von Monat zu Preis für Kürbisverkäufe deiner visuellen Interpretation nach eine hohe oder niedrige Korrelation? Ändert sich das, wenn du statt `Monat` eine feinere Maßeinheit wie *Tag des Jahres* (z.B. Anzahl der Tage seit Jahresbeginn) verwendest?
-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:
+Im folgenden Code gehen wir davon aus, dass wir die Daten bereinigt und einen DataFrame mit dem Namen `new_pumpkins` erhalten haben, ähnlich dem Folgenden:
-ID | Monat | TagDesJahres | Sorte | Stadt | Verpackung | Niedriger Preis | Hoher Preis | Preis
----|-------|--------------|-------|-------|------------|-----------------|-------------|--------
-70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 15.0 | 15.0 | 13.636364
-71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 18.0 | 18.0 | 16.363636
-72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 18.0 | 18.0 | 16.363636
-73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 17.0 | 17.0 | 15.454545
-74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 Scheffel Kartons | 15.0 | 15.0 | 13.636364
+ID | Monat | TagDesJahres | Sorte | Stadt | Verpackung | Niedriger Preis | Hoher Preis | Preis
+---|-------|--------------|-------|-------|------------|----------------|-------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 Bushel Kartons | 15.0 | 15.0 | 13.636364
-> 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:
+> 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 `DayOfYear` mit folgendem Ausdruck berechnet:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-
-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.
-## Auf der Suche nach Korrelation
+Nachdem du die Mathematik hinter der linearen Regression verstanden hast, erstellen wir nun ein Regressionsmodell, um zu sehen, ob wir vorhersagen können, welches Kürbis-Paket die besten Preise hat. Jemand, der Kürbisse für einen Feiertag-Kürbisgarten kauft, möchte diese Information möglicherweise nutzen, um seine Kürbiskäufe zu optimieren.
+
+## Suche nach Korrelation
-[](https://youtu.be/uoRq-lW2eQo "ML für Anfänger – Auf der Suche nach Korrelation: Der Schlüssel zur linearen Regression")
+[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur Korrelation.
+> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht über Korrelation.
-Aus der vorherigen Lektion hast du wahrscheinlich gesehen, dass der Durchschnittspreis für unterschiedliche Monate so aussieht:
+Aus der vorherigen Lektion hast du wahrscheinlich gesehen, dass der Durchschnittspreis für verschiedene Monate so aussieht:
-
+
-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:
+Das deutet darauf hin, dass es eine Korrelation geben sollte, und wir können versuchen, ein lineares Regressionsmodell zu trainieren, um die Beziehung zwischen `Monat` und `Preis` oder zwischen `DayOfYear` und `Preis` vorherzusagen. Hier ist das Streudiagramm, das die letztere Beziehung zeigt:
-
+
-Sehen wir uns die Korrelation mit der Funktion `corr` an:
+Sehen wir uns die Korrelation mit der `corr` Funktion an:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-
-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:
+
+Es scheint, dass die Korrelation ziemlich gering ist, -0,15 bei `Monat` und -0,17 bei `DayOfYear`, aber es könnte eine andere wichtige Beziehung geben. Es sieht so aus, als gäbe es verschiedene Preiscluster, die unterschiedlichen Kürbissorten entsprechen. Um diese Hypothese zu bestätigen, zeichnen wir jede Kürbiskategorie mit einer anderen Farbe. Indem wir der `scatter` Funktion einen `ax` Parameter übergeben, können wir alle Punkte im gleichen Diagramm darstellen:
```python
ax=None
@@ -142,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
-
-
+
+
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:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
-
-
-Konzentrieren wir uns für den Moment nur auf eine Kürbissorte, den 'Pie Type', und schauen, welchen Einfluss das Datum auf den Preis hat:
+
+
+Konzentrieren wir uns nun nur auf eine Kürbissorte, den 'Pie Type', und sehen uns den Einfluss des Datums auf den Preis an:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-
+
-Wenn wir jetzt die Korrelation zwischen `Preis` und `TagDesJahres` mit der Funktion `corr` berechnen, erhalten wir etwa `-0.27` – was bedeutet, dass das Trainieren eines Vorhersagemodells sinnvoll ist.
+Wenn wir jetzt die Korrelation zwischen `Preis` und `DayOfYear` mit der `corr` Funktion berechnen, erhalten wir ungefähr `-0,27` – was bedeutet, dass es sinnvoll ist, ein Vorhersagemodell zu trainieren.
-> 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:
+> Bevor du ein lineares Regressionsmodell trainierst, ist es wichtig sicherzustellen, dass unsere Daten sauber sind. Lineare Regression funktioniert schlecht mit fehlenden Werten, daher ist es sinnvoll, leere 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 andere Möglichkeit wäre, diese leeren Werte mit Mittelwerten der jeweiligen Spalte zu füllen.
## 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 for beginners - Linear and Polynomial Regression using Scikit-learn")
-> 🎥 Klicke auf das Bild oben für eine kurze Videoübersicht zur linearen und polynomialen Regression.
+> 🎥 Klicke 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 Modell der linearen Regression 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:
+
+Wir beginnen, indem wir Eingabewerte (Features) und die erwartete Ausgabe (Label) in getrennte Numpy-Arrays aufteilen:
```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.
-Dann müssen wir die Daten in Trainings- und Testdaten aufteilen, damit wir unser Modell nach dem Training validieren können:
+> Beachte, dass wir die Eingabedaten mittels `reshape` umformen mussten, damit das Linear Regression-Paket sie korrekt versteht. Lineare Regression erwartet ein 2D-Array als Eingabe, wobei jede Zeile des Arrays einem Vektor von Eingabewerten entspricht. In unserem Fall, da wir nur ein Eingabewert haben, brauchen wir ein Array mit der Form N×1, wobei N die Größe des Datensatzes ist.
+
+Dann müssen wir die Daten in Trainings- und Testdatensätze 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)
```
-
-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:
+
+Schließlich dauert das eigentliche Training des linearen Regressionsmodells nur zwei Codezeilen. Wir definieren das `LinearRegression`-Objekt und passen es mit der `fit`-Methode 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 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.
+Das `LinearRegression`-Objekt enthält nach dem `fit`-ten alle Koeffizienten der Regression, auf die über die Eigenschaft `.coef_` zugegriffen werden kann. In unserem Fall gibt es nur einen Koeffizienten, der ungefähr `-0,017` betragen 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 mithilfe von `lin_reg.intercept_` abrufen – dieser wird in unserem Fall etwa `21` betragen und zeigt den Preis am Anfang des Jahres an.
-Um zu sehen, wie genau unser Modell ist, können wir die Preise auf einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten 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.
+Um zu sehen, wie genau unser Modell ist, können wir Preise in einem Testdatensatz vorhersagen und dann messen, wie nah unsere Vorhersagen an den erwarteten Werten sind. Dies kann mittels Root Mean Square Error (RMSE) geschehen, das die Wurzel aus dem Mittelwert aller quadrierten Differenzen zwischen erwartetem und vorhergesagtem Wert ist.
```python
pred = lin_reg.predict(X_test)
@@ -218,37 +215,38 @@ pred = lin_reg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-
-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:
+
+Unser Fehler scheint bei etwa 2 Punkten zu liegen, was ca. 17 % entspricht. Nicht allzu 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 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.
+
+Wenn der Wert 0 ist, bedeutet dies, dass das Modell die Eingabedaten nicht berücksichtigt und als *schlechtester linearer Prädiktor* fungiert, was einfach dem Mittelwert des Ergebnisses entspricht. 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 recht niedrig ist.
-Wir können auch die Testdaten zusammen mit der Regressionslinie darstellen, um besser zu sehen, wie die Regression in unserem Fall funktioniert:
+Wir können auch die Testdaten zusammen mit der Regressionslinie plotten, um besser zu sehen, wie die Regression in unserem Fall funktioniert:
```python
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
```
-
-
+
+
## Polynomiale Regression
-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.
+Eine andere Art der linearen Regression ist die Polynomiale Regression. Während es manchmal eine lineare Beziehung zwischen Variablen gibt – je größer der Kürbis im Volumen, desto höher der Preis – können diese Beziehungen manchmal nicht als Ebene oder Gerade dargestellt werden.
-✅ Hier sind [weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die polynomiale Regression benötigen könnten.
+✅ Hier sind [weitere Beispiele](https://online.stat.psu.edu/stat501/lesson/9/9.8) für Daten, die eine polynomiale Regression benötigen könnten.
-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.
+Schauen Sie sich die Beziehung zwischen Datum und Preis noch einmal an. Sollte dieses Streudiagramm zwangsläufig durch eine Gerade analysiert werden? Können die Preise nicht schwanken? In solchen Fällen kann man polynomiale Regression versuchen.
✅ Polynome sind mathematische Ausdrücke, die aus einer oder mehreren Variablen und Koeffizienten bestehen können.
-Die polynomiale Regression erstellt eine gekrümmte Linie, um nichtlineare Daten besser anzupassen. In unserem Fall, 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.
+Die polynomiale Regression erstellt eine gekrümmte Linie, um besser zu nichtlinearen Daten zu passen. In unserem Fall sollten wir durch Einbeziehung einer quadrierten `DayOfYear`-Variable in die Eingabedaten in der Lage sein, unsere Daten mit einer parabolischen Kurve anzupassen, die an einem bestimmten Punkt innerhalb des Jahres ein Minimum hat.
-Scikit-learn enthält eine hilfreiche [Pipeline-API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), um verschiedene 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:
+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 Verarbeitungsschritte zusammenzuführen. Eine **Pipeline** ist eine Kette von **Estimatoren**. In unserem Fall erstellen wir eine Pipeline, die zuerst polynomiale Merkmale zum Modell hinzufügt und dann die Regression trainiert:
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -258,61 +256,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
+
+Die Verwendung von `PolynomialFeatures(2)` bedeutet, dass wir alle Polynome zweiten Grades aus den Eingabedaten einschließen. In unserem Fall bedeutet das nur `DayOfYear`2, aber bei zwei Eingabevariablen X und Y werden zusätzlich X2, XY und Y2 hinzugefügt. 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`2, aber mit zwei Eingabevariablen X und Y fügt dies X2, XY und Y2 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 `predict` aufrufen, um Vorhersagen zu erhalten:
-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:
+```python
+pred = pipeline.predict(X_test)
-
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
-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!
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+Um die glatte Annäherungskurve zu zeichnen, verwenden wir `np.linspace`, um einen gleichmäßigen Bereich von Eingabewerten zu erzeugen, anstatt direkt die ungeordneten Testdaten zu verwenden (was eine Zickzacklinie ergeben würde):
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
-> Man sieht, dass die minimalen Kürbispreise irgendwo um Halloween zu beobachten sind. Wie kann man das erklären?
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
+
+Hier ist der Graph, der Testdaten und die Annäherungskurve zeigt:
-🎃 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!
+
+
+Mit polynomieller Regression können wir etwas geringeren RMSE und höhere Bestimmtheitsmaße erzielen, aber nicht signifikant. Wir müssen weitere Merkmale berücksichtigen!
+
+> Sie können sehen, dass die minimalen Kürbiskurse irgendwo um Halloween beobachtet werden. Wie können Sie das erklären?
+
+🎃 Herzlichen Glückwunsch, Sie haben gerade ein Modell erstellt, das dabei helfen kann, den Preis von Backkürbissen vorherzusagen. Wahrscheinlich können Sie dasselbe Verfahren für alle Kürbissorten wiederholen, aber das wäre mühsam. Lernen wir nun, wie wir die Kürbissorte in unser Modell einbeziehen!
## Kategorische Merkmale
-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**.
+In der idealen Welt wollen wir Preise für verschiedene Kürbissorten mit demselben Modell vorhersagen können. Die Spalte `Variety` unterscheidet sich jedoch etwas von Spalten wie `Month`, da sie nicht-numerische Werte enthält. Solche Spalten nennt man **kategorisch**.
-[](https://youtu.be/DYGliioIAE0 "ML für Anfänger - Kategorische Merkmalvorhersagen mit Linearer Regression")
+[](https://youtu.be/DYGliioIAE0 "ML für Anfänger – Kategorische Merkmalsvorhersagen mit Linearer Regression")
-> 🎥 Klicke das obige Bild für eine kurze Videoübersicht zur Verwendung kategorischer Merkmale.
+> 🎥 Klicken Sie auf das Bild oben für eine kurze Videoübersicht zum Umgang mit kategorialen Merkmalen.
-Hier sieht man, wie der Durchschnittspreis von der Sorte abhängt:
+Hier sehen Sie, wie der Durchschnittspreis von der Sorte abhängt:
-Um die Sorte zu berücksichtigen, müssen wir sie zunächst in eine numerische Form umwandeln, oder **kodieren**. Es gibt mehrere Möglichkeiten:
+Um die Sorte zu berücksichtigen, müssen wir sie zunächst in numerische Form umwandeln oder **kodieren**. Es gibt verschiedene Vorgehensweisen:
-* 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.
+* Eine einfache **numerische Kodierung** erstellt eine Tabelle der verschiedenen Sorten und ersetzt dann den Sortennamen durch einen Index in dieser Tabelle. Das ist keine gute Idee für lineare Regression, weil das Modell den tatsächlichen numerischen Wert des Index nimmt und mit einem Koeffizienten multipliziert zum Ergebnis hinzufügt. In unserem Fall ist die Beziehung zwischen dem Index 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, je eine für jede Sorte. Jede Spalte enthält `1`, wenn die entsprechende Zeile diese Sorte hat, und `0` sonst. Das bedeutet, dass es vier Koeffizienten in der linearen Regression gibt, einen für jede Kürbissorte, der für den „Startpreis“ (bzw. „zusätzlichen Preis“) für diese Sorte verantwortlich ist.
-Der folgende Code zeigt, wie wir eine Sorte one-hot kodieren können:
+Der folgende Code zeigt, wie wir eine Sorte als One-Hot kodieren können:
```python
pd.get_dummies(new_pumpkins['Variety'])
```
-
- ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
-----|-----------|-----------|--------------------------|----------
-70 | 0 | 0 | 0 | 1
-71 | 0 | 0 | 0 | 1
-... | ... | ... | ... | ...
-1738 | 0 | 1 | 0 | 0
-1739 | 0 | 1 | 0 | 0
-1740 | 0 | 1 | 0 | 0
-1741 | 0 | 1 | 0 | 0
-1742 | 0 | 1 | 0 | 0
-
-Um lineare Regression mit one-hot kodierter Sorte als Eingabe zu trainieren, müssen wir nur `X` und `y` richtig initialisieren:
+
+ ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
+----|-----------|-----------|--------------------------|----------
+70 | 0 | 0 | 0 | 1
+71 | 0 | 0 | 0 | 1
+... | ... | ... | ... | ...
+1738 | 0 | 1 | 0 | 0
+1739 | 0 | 1 | 0 | 0
+1740 | 0 | 1 | 0 | 0
+1741 | 0 | 1 | 0 | 0
+1742 | 0 | 1 | 0 | 0
+
+Um lineare Regression mit der One-Hot-kodierten Sorte als Eingabe zu trainieren, müssen wir nur die Daten in `X` und `y` richtig initialisieren:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
-
-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:
+
+Der Rest des Codes ist derselbe wie oben für das Training der linearen Regression. Wenn Sie es ausprobieren, werden Sie sehen, dass der mittlere quadratische Fehler ungefähr gleich bleibt, wir aber eine deutlich höhere Bestimmtheitsmaßzahl (~77 %) erhalten. Für noch genauere Vorhersagen können wir weitere kategoriale Merkmale sowie numerische Merkmale wie `Month` oder `DayOfYear` einbeziehen. Um ein großes Merkmal-Array zu erhalten, können wir `join` verwenden:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@@ -321,12 +341,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
-
-Hier beziehen wir auch `City` und `Package`-Typ ein, was uns eine MSE von 2,84 (10 %) und eine Bestimmtheit von 0,94 verschafft!
+
+Hier berücksichtigen wir auch `City` und `Package`-Typ, was uns einen RMSE von 2,84 (10,5 %) und eine Bestimmtheitsmaßzahl von 0,94 gibt!
## 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 polynomieller Regression verwenden. Hier ist der komplette Code zu deiner Bequemlichkeit:
+Um das beste Modell zu erstellen, können wir kombinierte (one-hot-kodierte kategoriale + numerische) Daten aus dem obigen Beispiel zusammen mit Polynomialer Regression verwenden. Hier ist der vollständige Code zu Ihrer Bequemlichkeit:
```python
# Trainingsdaten einrichten
@@ -336,7 +356,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
-# Train-Test-Aufteilung machen
+# Trainings- und Testdaten aufteilen
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# Pipeline einrichten und trainieren
@@ -346,44 +366,44 @@ pipeline.fit(X_train,y_train)
# Ergebnisse für Testdaten vorhersagen
pred = pipeline.predict(X_test)
-# MSE und Bestimmtheitsmaß berechnen
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# RMSE und Bestimmtheitsmaß berechnen
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
+
+Damit sollten wir den besten Bestimmtheitsmaß von fast 97 % und RMSE = 2,23 (~8 % Vorhersagefehler) erhalten.
-Dies sollte uns den besten Bestimmtheitsmaß von fast 97 % und eine MSE von 2,23 (~8 % Vorhersagefehler) liefern.
-
-| Modell | MSE | Bestimmtheitsmaß |
-|-------|-----|------------------|
+| Modell | RMSE | Bestimmtheitsmaß |
+|-------|-----|---------------|
| `DayOfYear` Linear | 2,77 (17,2 %) | 0,07 |
| `DayOfYear` Polynomial | 2,73 (17,0 %) | 0,08 |
| `Variety` Linear | 5,24 (19,7 %) | 0,77 |
| Alle Merkmale Linear | 2,84 (10,5 %) | 0,94 |
| Alle Merkmale Polynomial | 2,23 (8,25 %) | 0,97 |
-🏆 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.
+🏆 Gut gemacht! Sie haben in einer Lektion vier Regressionsmodelle erstellt und die Modellqualität auf 97 % verbessert. Im abschließenden Abschnitt über Regression lernen Sie logistische Regression kennen, um Kategorien zu bestimmen.
---
-## 🚀 Herausforderung
+## 🚀Herausforderung
-Teste in diesem Notebook verschiedene Variablen, um zu sehen, wie die Korrelation mit der Modellgenauigkeit zusammenhängt.
+Testen Sie in diesem Notebook verschiedene Variablen, um zu sehen, wie Korrelation mit der Modellgenauigkeit zusammenhängt.
-## [Post-Vorlesungs-Quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
-## Rückblick & Selbststudium
+## Wiederholung & Selbststudium
-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).
+In dieser Lektion haben wir über Lineare Regression gelernt. Es gibt noch andere wichtige Regressionstypen. Lesen Sie über Stepwise-, Ridge-, Lasso- und Elasticnet-Techniken. Ein guter Kurs zum Weiterlernen ist der [Stanford Statistical Learning Course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
-## Aufgabenstellung
+## Aufgabe
-[Erstelle ein Modell](assignment.md)
+[Ein Modell erstellen](assignment.md)
---
**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 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.
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache ist als maßgebliche Quelle anzusehen. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die durch die Nutzung dieser Übersetzung entstehen.
\ No newline at end of file
diff --git a/translations/de/2-Regression/3-Linear/solution/notebook.ipynb b/translations/de/2-Regression/3-Linear/solution/notebook.ipynb
index b5c04ea34..e9c098301 100644
--- a/translations/de/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/de/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Lineare und polynomiale Regression zur Preisgestaltung von Kürbissen - Lektion 3\n",
+ "## Lineare und Polynomiale Regression für Kürbissepreise - Lektion 3\n",
"\n",
- "Laden Sie die erforderlichen Bibliotheken und den Datensatz. Konvertieren Sie die Daten in ein DataFrame, das einen Teil der Daten enthält:\n",
+ "Laden Sie die erforderlichen Bibliotheken und den Datensatz. Konvertieren Sie die Daten in ein DataFrame, das eine Teilmenge der Daten enthält:\n",
"\n",
- "- Nur Kürbisse berücksichtigen, die pro Scheffel bepreist sind\n",
- "- Das Datum in einen Monat umwandeln\n",
- "- Den Preis als Durchschnitt aus Höchst- und Tiefstpreisen berechnen\n",
- "- Den Preis so umrechnen, dass er die Preisgestaltung pro Scheffelmenge widerspiegelt\n"
+ "- Nur Kürbisse, die pro Scheffel bepreist sind\n",
+ "- Konvertieren Sie das Datum in einen Monat\n",
+ "- Berechnen Sie den Preis als Durchschnitt aus Höchst- und Tiefstpreis\n",
+ "- Passen Sie den Preis an die Preisgestaltung pro Scheffelmenge an\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Ein Streudiagramm erinnert uns daran, dass wir nur Monatsdaten von August bis Dezember haben. Wir benötigen wahrscheinlich mehr Daten, um Schlussfolgerungen auf lineare Weise ziehen zu können.\n"
+ "Ein Streudiagramm erinnert uns daran, dass wir nur Monatsdaten von August bis Dezember haben. Wahrscheinlich benötigen wir mehr Daten, um in der Lage zu sein, linear gültige Schlussfolgerungen zu ziehen.\n"
]
},
{
@@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Schauen wir, ob eine Korrelation besteht:\n"
+ ]
},
{
"cell_type": "code",
@@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Es sieht so aus, als ob die Korrelation ziemlich gering ist, aber es gibt eine andere, wichtigere Beziehung – denn die Preispunkte im obigen Diagramm scheinen mehrere unterschiedliche Cluster zu haben. Lassen Sie uns ein Diagramm erstellen, das verschiedene Kürbissorten zeigt:\n"
+ "Es sieht so aus, als sei die Korrelation ziemlich gering, aber es gibt eine andere wichtigere Beziehung – denn die Preiswerte im obigen Diagramm scheinen mehrere unterschiedliche Cluster zu bilden. Lassen Sie uns ein Diagramm erstellen, das verschiedene Kürbissorten zeigt:\n"
]
},
{
@@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Vorerst konzentrieren wir uns nur auf eine Sorte - **Kuchentyp**.\n"
+ ]
},
{
"cell_type": "code",
@@ -662,7 +666,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Die Steigung der Linie kann aus den Koeffizienten der linearen Regression bestimmt werden:\n"
+ "Die Steigung der Geraden kann aus den Koeffizienten der linearen Regression bestimmt werden:\n"
]
},
{
@@ -720,9 +724,9 @@
"source": [
"### Polynomiale Regression\n",
"\n",
- "Manchmal ist die Beziehung zwischen Merkmalen und Ergebnissen von Natur aus nicht linear. Zum Beispiel könnten Kürbispreise im Winter (Monate=1,2) hoch sein, dann im Sommer (Monate=5-7) sinken und anschließend wieder steigen. Lineare Regression kann diese Beziehung nicht genau erfassen.\n",
+ "Manchmal ist die Beziehung zwischen den Merkmalen und den Ergebnissen von Natur aus nicht-linear. Zum Beispiel könnten Kürbispreise im Winter (Monate=1,2) hoch sein, dann im Sommer (Monate=5-7) fallen und anschließend wieder steigen. Die lineare Regression kann diese Beziehung nicht genau erfassen.\n",
"\n",
- "In diesem Fall könnten wir in Betracht ziehen, zusätzliche Merkmale hinzuzufügen. Eine einfache Methode ist die Verwendung von Polynomen aus Eingabemerkmalen, was zu einer **polynomialen Regression** führt. In Scikit Learn können wir polynomiale Merkmale automatisch mithilfe von Pipelines vorab berechnen:\n"
+ "In diesem Fall können wir in Betracht ziehen, zusätzliche Merkmale hinzuzufügen. Ein einfacher Weg ist die Verwendung von Polynomen aus Eingabemerkmalen, was zu einer **polynomialen Regression** führen würde. In Scikit Learn können wir polynomiale Merkmale automatisch mit Pipelines vorab berechnen: \n"
]
},
{
@@ -777,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Kodierung von Sorten\n",
+ "### Sortenvarianten der Kodierung\n",
"\n",
- "In einer idealen Welt möchten wir in der Lage sein, die Preise für verschiedene Kürbissorten mit demselben Modell vorherzusagen. Um die Sorte zu berücksichtigen, müssen wir sie zunächst in numerische Form umwandeln, oder **kodieren**. Es gibt mehrere Möglichkeiten, dies zu tun:\n",
+ "In einer idealen Welt möchten wir mit demselben Modell die Preise für verschiedene Kürbissorten vorhersagen können. 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:\n",
"\n",
- "* Eine einfache numerische Kodierung, die eine Tabelle mit verschiedenen Sorten erstellt und dann den Sortennamen durch einen Index in dieser Tabelle ersetzt. Dies ist keine gute Idee für die lineare Regression, da die lineare Regression den numerischen Wert des Index berücksichtigt und dieser numerische Wert wahrscheinlich nicht numerisch mit dem Preis korreliert.\n",
- "* One-Hot-Encoding, das die `Variety`-Spalte durch 4 verschiedene Spalten ersetzt, eine für jede Sorte, die 1 enthält, wenn die entsprechende Zeile zur angegebenen Sorte gehört, und 0, wenn nicht.\n",
+ "* Einfache numerische Kodierung, die eine Tabelle verschiedener Sorten erstellt und dann den Sortennamen durch einen Index in dieser Tabelle ersetzt. Dies ist keine gute Idee für die lineare Regression, da die lineare Regression den numerischen Wert des Index berücksichtigt und der numerische Wert wahrscheinlich nicht numerisch mit dem Preis korreliert.\n",
+ "* One-Hot-Kodierung, bei der die `Variety`-Spalte durch 4 verschiedene Spalten ersetzt wird, eine für jede Sorte, die 1 enthält, wenn die entsprechende Zeile zur gegebenen Sorte gehört, und sonst 0.\n",
"\n",
- "Der folgende Code zeigt, wie wir eine Sorte mit One-Hot-Encoding kodieren können:\n"
+ "Der folgende Code zeigt, wie man eine Sorte one-hot kodieren kann:\n"
]
},
{
@@ -940,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Lineare Regression auf Sorten\n",
+ "### Lineare Regression auf Sorte\n",
"\n",
- "Wir verwenden nun denselben Code wie oben, aber anstelle von `DayOfYear` nutzen wir unsere one-hot-codierte Sorte als Eingabe:\n"
+ "Wir werden nun den gleichen Code wie oben verwenden, aber anstelle von `DayOfYear` verwenden wir unsere One-Hot-codierte Sorte als Eingabe:\n"
]
},
{
@@ -990,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Wir können auch versuchen, andere Funktionen auf die gleiche Weise zu verwenden und sie mit numerischen Merkmalen wie `Month` oder `DayOfYear` zu kombinieren:\n"
+ "Wir können auch versuchen, andere Merkmale auf dieselbe Weise zu verwenden und sie mit numerischen Merkmalen wie `Month` oder `DayOfYear` zu kombinieren:\n"
]
},
{
@@ -1023,7 +1030,7 @@
"source": [
"### Polynomiale Regression\n",
"\n",
- "Polynomiale Regression kann auch mit kategorialen Merkmalen verwendet werden, die als One-Hot-Encoding dargestellt sind. Der Code zum Trainieren der polynomialen Regression wäre im Wesentlichen derselbe wie oben gezeigt.\n"
+ "Polynomiale Regression kann auch mit kategorialen Merkmalen verwendet werden, die im One-Hot-Encoding vorliegen. Der Code zum Trainieren der polynomialen Regression wäre im Wesentlichen derselbe wie oben gesehen.\n"
]
},
{
@@ -1070,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Haftungsausschluss**: \nDieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.\n"
+ "---\n\n\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, können automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.\n\n"
]
}
],
@@ -1100,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-09-04T01:04:13+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "de"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ru/.co-op-translator.json b/translations/ru/.co-op-translator.json
index 37d10b467..fe9e21567 100644
--- a/translations/ru/.co-op-translator.json
+++ b/translations/ru/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "ru"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-06T08:32:15+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T20:12:52+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "ru"
},
@@ -90,8 +90,8 @@
"language_code": "ru"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T15:59:23+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T20:12:31+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ru"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "ru"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T20:09:56+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "ru"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-06T08:25:03+00:00",
diff --git a/translations/ru/1-Introduction/4-techniques-of-ML/README.md b/translations/ru/1-Introduction/4-techniques-of-ML/README.md
index eeeb71f23..03bda0678 100644
--- a/translations/ru/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/ru/1-Introduction/4-techniques-of-ML/README.md
@@ -1,123 +1,125 @@
# Техники машинного обучения
-Процесс создания, использования и поддержки моделей машинного обучения и данных, которые они используют, сильно отличается от многих других рабочих процессов разработки. В этом уроке мы разберем этот процесс и выделим основные техники, которые вам нужно знать. Вы:
+Процесс создания, использования и поддержки моделей машинного обучения и данных, которые они используют, сильно отличается от многих других рабочих процессов разработки. В этом уроке мы разберём этот процесс и обозначим основные техники, которые вам нужно знать. Вы узнаете:
-- Поймете процессы, лежащие в основе машинного обучения, на высоком уровне.
-- Изучите базовые концепции, такие как "модели", "предсказания" и "обучающие данные".
+- Поймёте основные процессы, лежащие в основе машинного обучения.
+- Изучите базовые понятия, такие как «модели», «предсказания» и «обучающие данные».
-## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
+## [Квиз перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
-[](https://youtu.be/4NGM0U2ZSHU "Машинное обучение для начинающих - Техники машинного обучения")
+[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео по этому уроку.
## Введение
-На высоком уровне процесс создания машинного обучения (ML) состоит из нескольких шагов:
+На высоком уровне искусство создания процессов машинного обучения (ML) состоит из нескольких этапов:
-1. **Определите вопрос**. Большинство процессов ML начинается с постановки вопроса, на который нельзя ответить с помощью простой программы с условиями или движка на основе правил. Эти вопросы часто связаны с предсказаниями на основе набора данных.
-2. **Соберите и подготовьте данные**. Чтобы ответить на ваш вопрос, вам нужны данные. Качество и, иногда, количество ваших данных определят, насколько хорошо вы сможете ответить на начальный вопрос. Визуализация данных — важный аспект этого этапа. Этот этап также включает разделение данных на обучающую и тестовую группы для построения модели.
-3. **Выберите метод обучения**. В зависимости от вашего вопроса и природы данных вам нужно выбрать, как вы хотите обучить модель, чтобы она лучше отражала данные и делала точные предсказания. Эта часть процесса ML требует специфической экспертизы и, часто, значительного количества экспериментов.
-4. **Обучите модель**. Используя обучающие данные, вы применяете различные алгоритмы для обучения модели распознаванию закономерностей в данных. Модель может использовать внутренние веса, которые можно корректировать, чтобы выделять определенные части данных для улучшения модели.
-5. **Оцените модель**. Вы используете данные, которые модель ранее не видела (ваши тестовые данные), чтобы проверить, как она работает.
-6. **Настройка параметров**. На основе производительности модели вы можете повторить процесс, используя разные параметры или переменные, которые контролируют поведение алгоритмов, используемых для обучения модели.
-7. **Предсказание**. Используйте новые входные данные, чтобы проверить точность вашей модели.
+1. **Определить вопрос**. Большинство процессов ML начинается с вопроса, на который нельзя ответить с помощью простой условной программы или системы правил. Такие вопросы часто касаются прогнозов на основе набора данных.
+2. **Собрать и подготовить данные**. Чтобы ответить на ваш вопрос, вам нужны данные. Качество и, иногда, количество ваших данных определяют, насколько хорошо вы сможете ответить на исходный вопрос. Визуализация данных — важный аспект этого этапа. На этом шаге также данные разделяются на обучающую и тестовую группы для построения модели.
+3. **Выбрать метод обучения**. В зависимости от вашего вопроса и характера данных, необходимо решить, как обучить модель так, чтобы она отражала данные и делала точные прогнозы. Эта часть процесса ML требует специфических знаний и часто значительного количества экспериментов.
+4. **Обучить модель**. Используя обучающие данные, вы применяете различные алгоритмы для обучения модели распознавать паттерны в данных. Модель может использовать внутренние веса, которые регулируются для повышения качества модели за счёт приоритизации определённых частей данных.
+5. **Оценить модель**. Вы используете ранее не виденные данные (тестовый набор), чтобы проверить качество работы модели.
+6. **Настройка параметров**. На основе производительности модели вы можете повторить процесс, изменяя параметры или переменные, управляющие поведением алгоритмов обучения.
+7. **Сделать прогноз**. Используйте новые данные для проверки точности модели.
-## Какой вопрос задать
+## Какой вопрос задавать
-Компьютеры особенно хороши в обнаружении скрытых закономерностей в данных. Эта способность очень полезна для исследователей, у которых есть вопросы о конкретной области, на которые нельзя легко ответить, создавая движок на основе правил. Например, при актуарной задаче аналитик данных может создать набор правил, связанных со смертностью курильщиков и некурящих.
+Компьютеры особенно хорошо умеют обнаруживать скрытые паттерны в данных. Это очень полезно для исследователей, у которых есть вопросы по определённой области, на которые сложно ответить с помощью правил. Например, для актуарной задачи учёный данных может создать вручную набор правил о смертности курильщиков и некурящих.
-Однако, когда в уравнение добавляется множество других переменных, модель ML может оказаться более эффективной для предсказания будущих показателей смертности на основе истории здоровья. Более жизнерадостный пример — предсказание погоды на апрель в определенном месте на основе данных, включающих широту, долготу, изменения климата, близость к океану, паттерны струйных течений и многое другое.
+Однако при добавлении множества других переменных модель ML может оказаться эффективнее для предсказания будущих показателей смертности на основе истории здоровья. Более приятный пример — прогноз погоды на апрель в конкретном месте с учётом широты, долготы, изменения климата, близости к океану, паттернов струйного течения и прочего.
-✅ Эта [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) о погодных моделях предлагает историческую перспективу использования ML в анализе погоды.
+✅ Эта [презентация](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) по моделям погоды даёт историческую перспективу использования ML в анализе погоды.
-## Задачи перед построением модели
+## Задачи до начала построения модели
-Перед началом создания модели есть несколько задач, которые нужно выполнить. Чтобы проверить ваш вопрос и сформировать гипотезу на основе предсказаний модели, необходимо определить и настроить несколько элементов.
+Перед тем как начать строить модель, нужно выполнить несколько задач. Чтобы проверить ваш вопрос и выработать гипотезу на основе предсказаний модели, нужно определить и настроить несколько элементов.
### Данные
-Чтобы ответить на ваш вопрос с какой-либо степенью уверенности, вам нужно достаточное количество данных нужного типа. На этом этапе нужно сделать две вещи:
+Чтобы ответить на ваш вопрос с какой-либо уверенностью, вам нужно достаточное количество данных нужного типа. На этом этапе необходимо сделать два шага:
-- **Соберите данные**. Учитывая предыдущий урок о справедливости в анализе данных, собирайте данные с осторожностью. Учитывайте источники данных, возможные встроенные предвзятости и документируйте их происхождение.
-- **Подготовьте данные**. Процесс подготовки данных включает несколько шагов. Возможно, вам нужно будет объединить данные и нормализовать их, если они поступают из разных источников. Вы можете улучшить качество и количество данных различными методами, например, преобразуя строки в числа (как мы делаем в [Кластеризации](../../5-Clustering/1-Visualize/README.md)). Вы также можете сгенерировать новые данные на основе исходных (как мы делаем в [Классификации](../../4-Classification/1-Introduction/README.md)). Вы можете очистить и отредактировать данные (как мы сделаем перед уроком о [веб-приложении](../../3-Web-App/README.md)). Наконец, возможно, вам нужно будет рандомизировать и перемешать данные в зависимости от ваших методов обучения.
+- **Собрать данные**. Учитывая урок о справедливости анализа данных, собирайте данные внимательно. Осознавайте источники данных, возможные при этом предвзятости и документируйте происхождение данных.
+- **Подготовить данные**. Процесс подготовки данных включает несколько этапов. Возможно, нужно собрать данные вместе и нормализовать их, если они поступают из разных источников. Улучшить качество и количество данных можно с помощью методов, таких как преобразование строк в числа (как мы делаем в [кластеризации](../../5-Clustering/1-Visualize/README.md)). Можно сгенерировать новые данные на основе исходных (как в [классификации](../../4-Classification/1-Introduction/README.md)). Можно очистить и отредактировать данные (как мы сделаем перед уроком [веб-приложения](../../3-Web-App/README.md)). Наконец, необходимо может потребоваться рандомизация и перемешивание данных, в зависимости от техники обучения.
-✅ После сбора и обработки данных уделите время, чтобы убедиться, что их структура позволит вам ответить на поставленный вопрос. Возможно, данные не подойдут для вашей задачи, как мы обнаруживаем в уроках по [Кластеризации](../../5-Clustering/1-Visualize/README.md)!
+✅ После сбора и обработки данных уделите время проверке, подходит ли их форма для решения вашей задачи. Может оказаться, что данные не подходят для вашей задачи, как мы видим в уроках по [кластеризации](../../5-Clustering/1-Visualize/README.md)!
### Признаки и целевая переменная
-[Признак](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — это измеряемое свойство ваших данных. Во многих наборах данных он представлен как заголовок столбца, например, "дата", "размер" или "цвет". Переменные признаков, обычно обозначаемые как `X` в коде, представляют входные данные, которые будут использоваться для обучения модели.
+[Признак](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — измеримое свойство ваших данных. Во многих наборах данных он выражается названием столбца, например «дата», «размер» или «цвет». В коде переменная признака обычно обозначается как `X` и представляет входные данные для обучения модели.
-Целевая переменная — это то, что вы пытаетесь предсказать. Целевая переменная, обычно обозначаемая как `y` в коде, представляет ответ на вопрос, который вы задаете своим данным: в декабре, какого **цвета** тыквы будут самыми дешевыми? В Сан-Франциско, в каких районах будет самая выгодная **цена** на недвижимость? Иногда целевая переменная также называется меткой.
+Целевая переменная — это то, что вы хотите предсказать. Обычно в коде она обозначается как `y` и представляет ответ на вопрос, который вы задаёте данным: в декабре, какой **цвет** у тыкв будет самым дешёвым? В Сан-Франциско, в каких районах будет самая высокая **цена** на недвижимость? Целевую переменную иногда также называют меткой.
-### Выбор переменных признаков
+### Выбор признака
-🎓 **Выбор признаков и извлечение признаков** Как выбрать переменные для построения модели? Вы, вероятно, пройдете процесс выбора признаков или их извлечения, чтобы выбрать подходящие переменные для наиболее производительной модели. Однако это не одно и то же: "Извлечение признаков создает новые признаки из функций исходных признаков, тогда как выбор признаков возвращает подмножество признаков." ([источник](https://wikipedia.org/wiki/Feature_selection))
+🎓 **Отбор признаков и извлечение признаков** Как определить, какую переменную выбрать при построении модели? Вероятно, вы пройдёте процесс выбора признаков или их извлечения, чтобы выбрать правильные переменные для наиболее производительной модели. Однако это не одно и то же: «Извлечение признаков создаёт новые признаки из функций оригинальных, тогда как отбор признаков возвращает подмножество признаков.» ([источник](https://wikipedia.org/wiki/Feature_selection))
### Визуализация данных
-Важный инструмент в арсенале аналитика данных — это возможность визуализировать данные с помощью таких библиотек, как Seaborn или MatPlotLib. Визуализация данных может помочь вам обнаружить скрытые корреляции, которые можно использовать. Она также может выявить предвзятость или несбалансированность данных (как мы обнаруживаем в [Классификации](../../4-Classification/2-Classifiers-1/README.md)).
+Важный инструмент в арсенале учёного данных — возможность визуализировать данные с помощью отличных библиотек, таких как Seaborn или MatPlotLib. Визуальное представление данных может помочь выявить скрытые корреляции, которые можно использовать. Визуализации могут также помочь выявить предвзятость или несбалансированные данные (как мы увидим в [классификации](../../4-Classification/2-Classifiers-1/README.md)).
### Разделение набора данных
-Перед обучением необходимо разделить набор данных на две или более части неравного размера, которые все же хорошо представляют данные.
+Перед обучением нужно разделить набор данных на две или более части разного размера, которые при этом хорошо представляют данные.
-- **Обучение**. Эта часть набора данных используется для обучения модели. Она составляет основную часть исходного набора данных.
-- **Тестирование**. Тестовый набор данных — это независимая группа данных, часто взятая из исходных данных, которую вы используете для проверки производительности построенной модели.
-- **Валидация**. Валидационный набор — это меньшая независимая группа примеров, которую вы используете для настройки гиперпараметров или архитектуры модели, чтобы улучшить ее. В зависимости от размера ваших данных и поставленного вопроса вам может не понадобиться создавать этот третий набор (как мы отмечаем в [Прогнозировании временных рядов](../../7-TimeSeries/1-Introduction/README.md)).
+- **Обучающий набор**. Часть данных, на которой обучается модель. Обычно это большая часть исходного набора.
+- **Тестовый набор**. Независимая группа данных, обычно взятая из исходного набора, используемая для проверки качества построенной модели.
+- **Валидационный набор**. Меньшая независимая группа примеров, используемая для настройки гиперпараметров или структуры модели для её улучшения. В зависимости от размера данных и вопроса, который вы задаёте, этот набор может не понадобиться (как мы отмечаем в [прогнозировании временных рядов](../../7-TimeSeries/1-Introduction/README.md)).
## Построение модели
-Используя обучающие данные, ваша цель — построить модель, или статистическое представление ваших данных, с помощью различных алгоритмов для ее **обучения**. Обучение модели позволяет ей анализировать данные, делать предположения о закономерностях, которые она обнаруживает, и принимать или отвергать их.
+Используя обучающие данные, вы стремитесь построить модель, или статистическое представление данных, с помощью различных алгоритмов для её **обучения**. Обучение модели означает подвергать её воздействию данных и позволять делать предположения о найденных паттернах, подтверждая или отвергая их.
### Выбор метода обучения
-В зависимости от вашего вопроса и природы данных вы выберете метод обучения. Просматривая [документацию Scikit-learn](https://scikit-learn.org/stable/user_guide.html), которую мы используем в этом курсе, вы можете изучить множество способов обучения модели. В зависимости от вашего опыта вам, возможно, придется попробовать несколько методов, чтобы построить лучшую модель. Вы, скорее всего, пройдете процесс, в котором аналитики данных оценивают производительность модели, используя данные, которые она ранее не видела, проверяя точность, предвзятость и другие проблемы, ухудшающие качество, и выбирая наиболее подходящий метод обучения для текущей задачи.
+В зависимости от вашего вопроса и характера данных вы выбираете метод обучения. Перебрав документацию [Scikit-learn](https://scikit-learn.org/stable/user_guide.html), которую мы используем в курсе, вы можете исследовать множество способов обучения моделей. Вероятно, вам придётся попробовать несколько методов, чтобы построить лучшую модель. Учёные данных часто оценивают производительность модели, подавая ей невиденные данные, проверяя точность, наличие смещения и другие проблемы, влияющие на качество, и выбирают наиболее подходящий метод обучения.
### Обучение модели
-Имея обучающие данные, вы готовы "подогнать" их для создания модели. Вы заметите, что во многих библиотеках ML используется код 'model.fit' — именно в этот момент вы передаете переменные признаков в виде массива значений (обычно 'X') и целевую переменную (обычно 'y').
+Имея обучающие данные, вы готовы «подогнать» модель. Многие ML-библиотеки имеют код с вызовом 'model.fit' — именно тогда вы передаёте переменную признаков в виде массива значений (обычно 'X') и целевую переменную (обычно 'y').
### Оценка модели
-После завершения процесса обучения (для больших моделей это может занять много итераций, или "эпох") вы сможете оценить качество модели, используя тестовые данные для проверки ее производительности. Эти данные — подмножество исходных данных, которые модель ранее не анализировала. Вы можете вывести таблицу метрик, характеризующих качество вашей модели.
+После завершения обучения (которое может занимать множество итераций, или «эпох», для большой модели) вы сможете оценить качество модели, используя тестовые данные для проверки её производительности. Это подмножество исходных данных, которые модель ранее не видела. Можно вывести таблицу с метриками качества модели.
🎓 **Подгонка модели**
-В контексте машинного обучения подгонка модели относится к точности функции модели при анализе данных, с которыми она не знакома.
+В контексте машинного обучения подгонка модели отражает точность базовой функции модели при анализе незнакомых ей данных.
-🎓 **Недообучение** и **переобучение** — это распространенные проблемы, которые ухудшают качество модели, когда она либо недостаточно хорошо, либо слишком хорошо подстраивается под данные. Это приводит к тому, что модель делает предсказания либо слишком точно соответствующие, либо слишком далекие от обучающих данных. Переобученная модель слишком хорошо предсказывает обучающие данные, так как она слишком детально изучила их особенности и шум. Недообученная модель неточна, так как она не может точно анализировать ни обучающие данные, ни данные, которые она еще не "видела".
+🎓 **Недообучение** и **переобучение** — распространённые проблемы, ухудшающие качество модели, когда модель либо недостаточно хорошо, либо слишком хорошо подгоняется под обучающие данные. Переобученная модель слишком точно повторяет детали и шум обучающих данных. Недообученная модель не способна точно анализировать ни обучающие данные, ни новые данные.
-
+
> Инфографика от [Jen Looper](https://twitter.com/jenlooper)
## Настройка параметров
-После завершения начального обучения наблюдайте за качеством модели и подумайте о ее улучшении, изменяя "гиперпараметры". Подробнее о процессе можно прочитать [в документации](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
+После первичного обучения наблюдайте за качеством модели и подумайте о её улучшении путём настройки «гиперпараметров». Подробнее об этом процессе читайте [в документации](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
-## Предсказание
+## Прогнозирование
-Это момент, когда вы можете использовать совершенно новые данные, чтобы проверить точность вашей модели. В "прикладной" среде ML, где вы создаете веб-ресурсы для использования модели в производстве, этот процесс может включать сбор пользовательских данных (например, нажатие кнопки), чтобы задать переменную и отправить ее в модель для вывода или оценки.
+Это момент, когда можно использовать совершенно новые данные для проверки точности модели. В прикладном ML, где вы создаёте веб-активы для использования модели в продакшене, этот процесс может включать сбор пользовательских данных (например, нажатие кнопки) для установки переменной и передачи её модели для вывода (инференса).
-В этих уроках вы узнаете, как использовать эти шаги для подготовки, построения, тестирования, оценки и предсказания — все это навыки аналитика данных и многое другое, что поможет вам стать "полноценным" инженером ML.
+В этих уроках вы узнаете, как использовать эти шаги для подготовки, построения, тестирования, оценки и предсказания — все действия учёного данных и даже больше по мере вашего развития как «full stack» ML инженера.
---
-## 🚀Задание
+## 🚀 Задание
-Нарисуйте блок-схему, отражающую шаги работы специалиста по ML. На каком этапе процесса вы видите себя сейчас? Где, по вашему мнению, вы столкнетесь с трудностями? Что кажется вам легким?
+Нарисуйте блок-схему, отражающую шаги специалиста по ML. Где вы сейчас находитесь в этом процессе? Где, по вашему мнению, возникнут сложности? Что кажется простым?
-## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/)
+## [Квиз после лекции](https://ff-quizzes.netlify.app/en/ml/)
## Обзор и самостоятельное изучение
-Найдите в интернете интервью с аналитиками данных, которые рассказывают о своей повседневной работе. Вот [одно из них](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
+Ищите в интернете интервью с учёными данных, которые рассказывают о своей повседневной работе. Вот [одно из них](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
-## Задание
+## Домашнее задание
-[Возьмите интервью у аналитика данных](assignment.md)
+[Возьмите интервью у учёного данных](assignment.md)
---
+
**Отказ от ответственности**:
-Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.
\ No newline at end of file
+Этот документ был переведен с помощью сервиса AI-перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, обращаем ваше внимание, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или ошибки в интерпретации, возникающие при использовании данного перевода.
+
\ No newline at end of file
diff --git a/translations/ru/2-Regression/3-Linear/README.md b/translations/ru/2-Regression/3-Linear/README.md
index 0baa54d06..11737c585 100644
--- a/translations/ru/2-Regression/3-Linear/README.md
+++ b/translations/ru/2-Regression/3-Linear/README.md
@@ -1,138 +1,136 @@
-# Создание регрессионной модели с помощью Scikit-learn: четыре подхода к регрессии
+# Построение модели регрессии с использованием Scikit-learn: регрессия четырьмя способами
## Заметка для начинающих
-Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, цену дома, температуру или продажи).
-Она работает путем нахождения прямой линии, которая лучше всего описывает зависимость между входными признаками и выходным значением.
+Линейная регрессия используется, когда мы хотим предсказать **числовое значение** (например, цену на дом, температуру или продажи).
+Она работает, находя прямую линию, которая лучше всего отражает зависимость между входными признаками и выходным значением.
-В этом уроке мы сосредоточимся на понимании концепции, прежде чем изучать более сложные методы регрессии.
-
+В этом уроке мы сосредоточимся на понимании концепции, прежде чем изучать более продвинутые методы регрессии.
+
> Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded)
+## [Прекурс по уроку](https://ff-quizzes.netlify.app/en/ml/)
-## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/)
+> ### [Этот урок доступен на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### Введение
-> ### [Этот урок доступен на языке R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+До сих пор вы изучали, что такое регрессия, используя пример с данными по ценам на тыквы, которые мы будем использовать в течение всего урока. Вы также визуализировали эти данные с помощью Matplotlib.
-### Введение
+Теперь вы готовы углубиться в регрессию для машинного обучения. В то время как визуализация помогает понять данные, настоящая сила машинного обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически улавливать зависимости, и позволяют предсказывать результаты для новых данных, которых модель ранее не видела.
-До сих пор вы изучали, что такое регрессия, на примере данных о ценах на тыквы, которые мы будем использовать на протяжении всего урока. Вы также визуализировали эти данные с помощью Matplotlib.
+В этом уроке вы узнаете больше о двух типах регрессии: _базовой линейной регрессии_ и _полиномиальной регрессии_, а также о математике, лежащей в основе этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных.
-Теперь вы готовы погрузиться глубже в регрессию для машинного обучения. Визуализация помогает лучше понять данные, но настоящая сила машинного обучения заключается в _обучении моделей_. Модели обучаются на исторических данных, чтобы автоматически выявлять зависимости и позволяют делать прогнозы для новых данных, которых модель ранее не видела.
+[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
-В этом уроке вы узнаете больше о двух типах регрессии: _базовой линейной регрессии_ и _полиномиальной регрессии_, а также познакомитесь с математикой, лежащей в основе этих методов. Эти модели позволят нам предсказывать цены на тыквы в зависимости от различных входных данных.
+> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор линейной регрессии.
-[](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 DataFrame и заполнили его частью исходного набора данных, стандартизировав цены за бушель. Однако при этом вы получили около 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-пересечение, то есть значение `Y`, когда `X = 0`.
->
->
->
-> Сначала вычислите наклон `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` — «зависимая переменная». Наклон линии обозначен как `b`, а `a` — это y-перехват, то есть значение `Y` при `X = 0`.
+>
+>
+>
+> Сначала вычислите наклон `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. Используя диаграмму рассеяния, можно быстро визуализировать этот коэффициент. Если точки на графике располагаются вдоль четкой линии, корреляция высокая, а если точки «разбросаны» повсюду, корреляция низкая.
-Хорошая модель линейной регрессии имеет высокий коэффициент корреляции (ближе к 1, чем к 0), используя метод наименьших квадратов с линией регрессии.
+Хорошая модель линейной регрессии — это та, у которой высокий (ближе к 1, чем к 0) коэффициент корреляции, рассчитанный методом наименьших квадратов с линией регрессии.
-✅ Запустите ноутбук, который сопровождает этот урок, и посмотрите на диаграмму рассеяния «Месяц — Цена». Кажется ли вам, что данные связывают месяц и цену продажи тыкв с высокой или низкой корреляцией, согласно вашему визуальному восприятию графика? Изменится ли это, если использовать более мелкий масштаб вместо `Month`, например, *день в году* (т.е. количество дней с начала года)?
+✅ Запустите ноутбук, прилагающийся к этому уроку, и посмотрите на диаграмму рассеяния «Месяц — Цена». Кажется ли вам, что данные, связывающие месяц с ценой продажи тыкв, имеют высокую или низкую корреляцию, по вашему визуальному восприятию диаграммы рассеяния? Изменится ли это, если использовать более детальную меру вместо `Месяца`, например, *номер дня в году* (количество дней с начала года)?
-В приведенном ниже коде мы предположим, что данные были очищены, и получен датафрейм с именем `new_pumpkins`, подобный следующему:
+В приведённом ниже коде будем считать, что мы очистили данные и получили DataFrame под названием `new_pumpkins`, примерно такого вида:
-ID | Месяц | ДеньВГоду | Сорт | Город | Упаковка | Низкая цена | Высокая цена | Цена
----|-------|-----------|---------|------|---------|-------------|--------------|------
-70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 15.0 | 15.0 | 13.636364
-71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 18.0 | 18.0 | 16.363636
-72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 18.0 | 18.0 | 16.363636
-73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 17.0 | 17.0 | 15.454545
-74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картон | 15.0 | 15.0 | 13.636364
+ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
+---|-------|-----------|---------|------|---------|-----------|------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-> Код для очистки данных доступен в [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear` с помощью следующего выражения:
+> Код очистки данных доступен в файле [`notebook.ipynb`](notebook.ipynb). Мы выполнили те же шаги очистки, что и в предыдущем уроке, и рассчитали столбец `DayOfYear` с помощью следующего выражения:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-
-Теперь, когда у вас есть понимание математики, лежащей в основе линейной регрессии, давайте создадим регрессионную модель, чтобы посмотреть, сможем ли мы предсказать, какая упаковка тыкв будет иметь лучшие цены. Человеку, покупающему тыквы для праздничного тыквенного участка, эта информация может помочь оптимизировать закупки.
+
+Теперь, когда вы понимаете математику, лежащую в основе линейной регрессии, давайте создадим регрессионную модель, чтобы проверить, можем ли мы предсказывать, какой пакет тыкв будет иметь лучшую цену. Кто-то, покупающий тыквы для праздничного тыквенного огорода, может захотеть эту информацию, чтобы оптимизировать покупку пакетов тыкв для своей грядки.
## Поиск корреляции
-[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
+[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео с обзором корреляции.
+> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видеообзор корреляции.
Из предыдущего урока вы, вероятно, видели, что средняя цена по месяцам выглядит так:
-Это говорит о том, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии для предсказания связи между `Month` и `Price`, или `DayOfYear` и `Price`. Вот график разброса, показывающий последнюю связь:
+Это говорит о том, что должна быть некоторая корреляция, и мы можем попробовать обучить модель линейной регрессии для предсказания связи между `Месяц` и `Ценой`, или между `День года` и `Ценой`. Ниже приведена диаграмма рассеяния, показывающая последнее взаимосвязь:
-
+
-Давайте проверим корреляцию с помощью функции `corr`:
+Давайте посмотрим, есть ли корреляция, используя функцию `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-
-Похоже, что корреляция довольно мала — -0.15 для `Month` и -0.17 для `DayOfMonth`, но, возможно, есть другая важная зависимость. Судя по всему, имеются разные кластеры цен, соответствующие разным сортам тыкв. Чтобы подтвердить гипотезу, давайте отобразим каждый сорт тыкв разным цветом. Передавая параметр `ax` в функцию `scatter`, мы сможем вывести все точки на одном графике:
+
+Похоже, корреляция довольно низкая: -0.15 для `Месяца` и -0.17 для `Дня года`, но возможно существует другая важная взаимосвязь. Похоже, существуют разные кластеры цен, соответствующие разным сортам тыкв. Чтобы подтвердить гипотезу, давайте нанесём каждую категорию тыкв своим цветом. Передавая параметр `ax` функции `scatter`, мы можем нарисовать все точки на одном графике:
```python
ax=None
@@ -141,75 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
-
-
-Наше исследование показывает, что сорт влияет на общую цену сильнее, чем фактическая дата продажи. Мы можем увидеть это на столбчатой диаграмме:
+
+
+Наше исследование показывает, что сорт больше влияет на общую цену, чем фактическая дата продажи. Это видно на столбчатой диаграмме:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
-
-
-Сконцентрируемся теперь на одном сорте тыкв — «pie type» — и посмотрим, какой эффект оказывает дата на цену:
+
+
+Давайте пока сосредоточимся только на одном сорте тыкв, «pie type», и посмотрим, какое влияние дата оказывает на цену:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-
+
-Если теперь вычислить корреляцию между `Price` и `DayOfYear` с помощью функции `corr`, мы получим значение около `-0.27` — это значит, что обучение прогностической модели целесообразно.
+Если теперь вычислить корреляцию между `Price` и `DayOfYear` с помощью функции `corr`, мы получим примерно `-0.27` — что означает, что обучение предсказательной модели имеет смысл.
-> Перед обучением модели линейной регрессии важно убедиться, что наши данные чисты. Линейная регрессия плохо работает с пропущенными значениями, поэтому имеет смысл удалить все пустые ячейки:
+> Перед обучением модели линейной регрессии важно убедиться, что данные чисты. Линейная регрессия плохо работает с отсутствующими значениями, поэтому имеет смысл удалить все пустые ячейки:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
-
-Другим подходом может быть заполнение пустых значений средними значениями соответствующего столбца.
+
+Другой подход — заполнить отсутствующие значения средними значениями соответствующего столбца.
## Простая линейная регрессия
-[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using 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`, что указывает на цену в начале года.
-Чтобы посмотреть, насколько точна наша модель, мы можем предсказать цены на тестовом наборе данных, а затем измерить, насколько наши прогнозы близки к ожидаемым значениям. Это можно сделать с помощью метрики среднеквадратичной ошибки (RMSE), которая является корнем из среднего всех квадратичных разностей между ожидаемыми и предсказанными значениями.
+Чтобы оценить точность нашей модели, мы можем спрогнозировать цены на тестовом наборе данных, а затем измерить, насколько близки наши прогнозы к ожидаемым значениям. Это можно сделать с помощью метрики корня из средней квадратичной ошибки (RMSE), которая является квадратным корнем из среднего по всем квадратам разностей между ожидаемым и предсказанным значением.
```python
pred = lin_reg.predict(X_test)
@@ -218,36 +216,36 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-Наша ошибка кажется около 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)
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 есть удобное [API pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для объединения различных этапов обработки данных. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавит полиномиальные признаки к нашей модели, а затем обучит регрессию:
+В Scikit-learn есть полезный [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), который позволяет объединять разные этапы обработки данных вместе. **Pipeline** — это цепочка **оценивателей**. В нашем случае мы создадим pipeline, который сначала добавит полиномиальные признаки в нашу модель, а затем обучит регрессию:
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -258,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
-Использование `PolynomialFeatures(2)` означает, что мы включим все полиномы второй степени из входных данных. В нашем случае это будет просто `DayOfYear`2, но для двух входных переменных X и Y это добавит X2, XY и Y2. Можно также использовать полиномы более высокого порядка при необходимости.
+Использование `PolynomialFeatures(2)` означает, что мы включим все полиномы второй степени из входных данных. В нашем случае это будет просто `DayOfYear`2, но если у нас есть две переменные X и Y, это добавит X2, XY и Y2. Можно также использовать полиномы более высокой степени.
+
+Pipeline можно использовать так же, как исходный объект `LinearRegression`: мы можем выполнить `fit` для pipeline, а затем использовать `predict` для получения результатов прогноза:
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+Для построения гладкой кривой аппроксимации мы используем `np.linspace`, чтобы создать равномерный диапазон входных значений, а не рисовать напрямую на неупорядоченных тестовых данных (что дало бы зигзагообразную линию):
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
+
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
-Pipelines можно использовать так же, как и исходный объект `LinearRegression`, то есть мы можем выполнить `fit` для pipeline, а затем использовать `predict` для получения результатов предсказания. Вот график, показывающий тестовые данные и аппроксимирующую кривую:
+Вот график с тестовыми данными и аппроксимационной кривой:
-
+
-Используя полиномиальную регрессию, можно получить немного меньшую среднеквадратичную ошибку и более высокий коэффициент детерминации, но незначительно. Нужно учитывать и другие признаки!
+Используя полиномиальную регрессию, мы можем получить немного меньшую RMSE и более высокий коэффициент детерминации, но не значительно. Нужно учитывать и другие признаки!
-> Вы видите, что минимальные цены на тыквы наблюдаются где-то около Хэллоуина. Как вы это объясните?
+> Вы можете заметить, что минимальные цены на тыквы-пай наблюдаются где-то около Хэллоуина. Как вы это объясните?
-🎃 Поздравляем, вы только что создали модель, которая может помочь прогнозировать цену на тыквы для пирогов. Вероятно, вы сможете повторить ту же процедуру для всех видов тыкв, но это будет утомительно. Давайте теперь узнаем, как учесть сорт тыквы в нашей модели!
+🎃 Поздравляем, вы только что создали модель, которая может помочь предсказывать цену на тыквы для пирога. Вероятно, вы сможете проделать ту же процедуру для всех типов тыкв, но это будет утомительно. Давайте теперь научимся учитывать сорт тыквы в нашей модели!
## Категориальные признаки
-В идеальном мире мы хотели бы предсказывать цены для разных сортов тыкв, используя одну и ту же модель. Однако столбец `Variety` несколько отличается от таких колонок, как `Month`, потому что содержит нечисловые значения. Такие столбцы называются **категориальными**.
+В идеале мы хотим иметь возможность предсказывать цены для разных сортов тыкв с помощью одной и той же модели. Однако столбец `Variety` несколько отличается от таких, как `Month`, потому что он содержит нечисловые значения. Подобные столбцы называются **категориальными**.
-[](https://youtu.be/DYGliioIAE0 "ML для начинающих - предсказания с категориальными признаками с помощью линейной регрессии")
+[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
-> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео-обзор использования категориальных признаков.
+> 🎥 Щелкните по изображению выше для краткого видеообзора использования категориальных признаков.
-Здесь вы видите, как средняя цена зависит от сорта:
+Здесь вы можете увидеть, как средняя цена зависит от сорта:
-
+
-Чтобы учитывать сорт, нам сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это:
+Чтобы учесть сорт, сначала нужно преобразовать его в числовой формат, то есть **закодировать**. Есть несколько способов сделать это:
-* Простой **числовой кодировкой** составляется таблица различных сортов, а затем название сорта заменяется индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что она воспринимает числовое значение индекса как фактическое число и добавляет его к результату, умножая на коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейная, даже если упорядочить индексы определённым образом.
-* **One-hot кодировка** заменит столбец `Variety` на 4 разные столбца, по одному для каждого сорта. Каждый столбец будет содержать `1`, если соответствующая строка относится к данному сорту, и `0` в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, отвечающие за "начальную цену" (точнее "дополнительную цену") для конкретного сорта.
+* Простое **числовое кодирование** создаст таблицу различных сортов, а затем заменит название сорта индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия воспринимает фактическое числовое значение индекса и добавляет его к результату, умножая на некоторый коэффициент. В нашем случае связь между номером индекса и ценой явно нелинейна, даже если индексы упорядочены каким-то определённым образом.
+* **One-hot кодирование** заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта. Каждый столбец будет содержать `1`, если соответствующая строка относится к этому сорту, и `0` в противном случае. Это означает, что в линейной регрессии будет четыре коэффициента, по одному для каждого сорта тыквы, отвечающих за «начальную цену» (или скорее «дополнительную цену») для данного сорта.
-Пример кода ниже показывает, как можно выполнить one-hot кодировку сорта:
+Пример кода ниже показывает, как мы можем закодировать сорт с помощью one-hot:
```python
pd.get_dummies(new_pumpkins['Variety'])
@@ -304,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
-Чтобы обучить линейную регрессию, используя 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']) \
@@ -321,21 +341,21 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
-Здесь мы также учитываем `City` и тип `Package`, что дает нам MSE 2.84 (10%) и коэффициент детерминации 0.94!
+Здесь мы также учитываем `City` и тип `Package`, что дает нам RMSE 2.84 (10.5%) и коэффициент детерминации 0.94!
-## Объединяем все вместе
+## Итог
-Чтобы получить лучшую модель, мы можем использовать объединённые (one-hot кодированные категориальные + числовые) данные из приведённого выше примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
+Чтобы создать лучшую модель, мы можем использовать объединённые данные (one-hot кодированные категориальные + числовые) из приведенного выше примера вместе с полиномиальной регрессией. Вот полный код для вашего удобства:
```python
-# подготовить обучающие данные
+# подготовить тренировочные данные
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
-# разделить на обучающую и тестовую выборки
+# сделать разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# настроить и обучить конвейер
@@ -345,44 +365,44 @@ pipeline.fit(X_train,y_train)
# предсказать результаты для тестовых данных
pred = pipeline.predict(X_test)
-# вычислить MSE и коэффициент детерминации
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# вычислить RMSE и коэффициент детерминации
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
-Это должно дать нам лучший коэффициент детерминации почти 97% и MSE=2.23 (~8% ошибка предсказания).
+Это должно дать нам лучший коэффициент детерминации почти 97% и RMSE=2.23 (~8% ошибки предсказания).
-| Модель | MSE | Коэффициент детерминации |
+| Модель | RMSE | Коэффициент детерминации |
|-------|-----|--------------------------|
-| Линейная (`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/)
## Обзор и самостоятельное изучение
-В этом уроке мы изучили линейную регрессию. Существуют и другие важные типы регрессии. Ознакомьтесь с поэтапной, гребневой (Ridge), лассо (Lasso) и Elasticnet техниками. Хорошим курсом для изучения является [курс по статистическому обучению Стэнфорда](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
+В этом уроке мы узнали о линейной регрессии. Существуют и другие важные виды регрессии. Изучите методы Stepwise, Ridge, Lasso и Elasticnet. Хорошим курсом для изучения является [курс по статистическому обучению в Стэнфорде](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Домашнее задание
-[Постройте модель](assignment.md)
+[Построить модель](assignment.md)
---
**Отказ от ответственности**:
-Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на то, что мы стремимся к точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для важной информации рекомендуется обратиться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
+Этот документ был переведен с помощью сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для критически важной информации рекомендуется профессиональный человеческий перевод. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
\ No newline at end of file
diff --git a/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb b/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb
index 8eafa720c..2bcfa8b24 100644
--- a/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/ru/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Линейная и полиномиальная регрессия для определения цен на тыквы - Урок 3\n",
+ "## Линейная и полиномиальная регрессия для ценообразования тыкв - Урок 3\n",
"\n",
"Загрузите необходимые библиотеки и набор данных. Преобразуйте данные в датафрейм, содержащий подмножество данных:\n",
"\n",
- "- Оставьте только тыквы, цена которых указана за бушель\n",
+ "- Получите только тыквы, оцененные по бушелю\n",
"- Преобразуйте дату в месяц\n",
"- Рассчитайте цену как среднее значение между высокой и низкой ценой\n",
- "- Преобразуйте цену, чтобы она отражала стоимость за количество в бушелях\n"
+ "- Преобразуйте цену с учётом цены за количество бушелей\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Диаграмма рассеяния напоминает нам, что у нас есть данные только за месяцы с августа по декабрь. Нам, вероятно, нужно больше данных, чтобы сделать выводы линейным образом.\n"
+ "Диаграмма рассеяния напоминает нам, что у нас есть данные только за месяцы с августа по декабрь. Вероятно, нам нужны дополнительные данные, чтобы иметь возможность делать выводы в линейном виде.\n"
]
},
{
@@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Давайте посмотрим, есть ли корреляция:\n"
+ ]
},
{
"cell_type": "code",
@@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Похоже, корреляция довольно мала, но существует какая-то другая, более важная зависимость - потому что точки цен на графике выше, кажется, образуют несколько отдельных кластеров. Давайте создадим график, который покажет различные сорта тыквы:\n"
+ "Похоже, корреляция довольно мала, но существует какая-то другая, более важная связь — потому что ценовые точки на графике выше, похоже, образуют несколько отчетливых кластеров. Давайте сделаем график, который покажет разные сорта тыкв:\n"
]
},
{
@@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "На данный момент давайте сосредоточимся только на одном варианте — **тип пирога**.\n"
+ ]
},
{
"cell_type": "code",
@@ -688,7 +692,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Мы можем использовать обученную модель для предсказания цены:\n"
+ ]
},
{
"cell_type": "code",
@@ -718,9 +724,9 @@
"source": [
"### Полиномиальная регрессия\n",
"\n",
- "Иногда связь между признаками и результатами изначально является нелинейной. Например, цены на тыквы могут быть высокими зимой (месяцы=1,2), затем снижаться летом (месяцы=5-7), а потом снова повышаться. Линейная регрессия не может точно уловить эту зависимость.\n",
+ "Иногда зависимость между признаками и результатами является изначально нелинейной. Например, цены на тыквы могут быть высокими зимой (месяцы=1,2), затем снижаться летом (месяцы=5-7) и снова расти. Линейная регрессия не может точно отразить эту зависимость.\n",
"\n",
- "В таком случае можно рассмотреть добавление дополнительных признаков. Простой способ — использовать полиномы от входных признаков, что приведет к **полиномиальной регрессии**. В Scikit Learn мы можем автоматически предварительно вычислить полиномиальные признаки с помощью конвейеров:\n"
+ "В этом случае можно рассмотреть добавление дополнительных признаков. Простой способ — использовать полиномы от входных признаков, что приведет к **полиномиальной регрессии**. В Scikit Learn мы можем автоматически предварительно вычислить полиномиальные признаки с помощью пайплайнов: \n"
]
},
{
@@ -775,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Кодирование сортов\n",
+ "### Варианты кодирования\n",
"\n",
- "В идеальном мире мы хотим иметь возможность предсказывать цены для разных сортов тыквы, используя одну и ту же модель. Чтобы учитывать сорт, сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это:\n",
+ "В идеальном мире мы хотим иметь возможность предсказывать цены для разных сортов тыкв, используя одну и ту же модель. Чтобы учитывать сорт, нам сначала нужно преобразовать его в числовую форму, или **закодировать**. Существует несколько способов сделать это:\n",
"\n",
- "* Простое числовое кодирование, которое создаст таблицу различных сортов, а затем заменит название сорта на индекс в этой таблице. Это не лучший вариант для линейной регрессии, так как линейная регрессия учитывает числовое значение индекса, а числовое значение, скорее всего, не будет коррелировать с ценой.\n",
- "* One-hot кодирование, которое заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта, где будет стоять 1, если соответствующая строка относится к данному сорту, и 0 в противном случае.\n",
+ "* Простое числовое кодирование, которое создаст таблицу различных сортов, а затем заменит название сорта индексом в этой таблице. Это не лучшая идея для линейной регрессии, потому что линейная регрессия учитывает числовое значение индекса, а числовое значение, скорее всего, не будет коррелировать численно с ценой.\n",
+ "* Кодирование методом one-hot, которое заменит столбец `Variety` на 4 разных столбца, по одному для каждого сорта, которые будут содержать 1, если соответствующая строка относится к данному сорту, и 0 — в противном случае.\n",
"\n",
- "Код ниже показывает, как можно выполнить one-hot кодирование сорта:\n"
+ "Ниже приведён код, показывающий, как можно выполнять кодирование методом one-hot для сорта:\n"
]
},
{
@@ -938,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Линейная регрессия на основе сорта\n",
+ "### Линейная регрессия по сорту\n",
"\n",
- "Теперь мы будем использовать тот же код, что и выше, но вместо `DayOfYear` будем использовать наш one-hot-encoded сорт в качестве входных данных:\n"
+ "Теперь мы будем использовать тот же код, что и выше, но вместо `DayOfYear` в качестве входных данных используем нашу закодированную с помощью one-hot переменную сорта:\n"
]
},
{
@@ -988,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Мы также можем попробовать использовать другие функции таким же образом, комбинируя их с числовыми функциями, такими как `Month` или `DayOfYear`:\n"
+ "Мы также можем попробовать использовать другие признаки таким же образом и комбинировать их с числовыми признаками, такими как `Month` или `DayOfYear`:\n"
]
},
{
@@ -1021,7 +1030,7 @@
"source": [
"### Полиномиальная регрессия\n",
"\n",
- "Полиномиальная регрессия также может быть использована с категориальными признаками, которые закодированы методом one-hot. Код для обучения полиномиальной регрессии будет практически таким же, как показано выше.\n"
+ "Полиномиальная регрессия также может использоваться с категориальными признаками, кодированными методом one-hot. Код для обучения полиномиальной регрессии будет по сути таким же, как мы видели выше.\n"
]
},
{
@@ -1068,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Отказ от ответственности**: \nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.\n"
+ "---\n\n\n**Отказ от ответственности**: \nЭтот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.\n\n"
]
}
],
@@ -1098,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-08-29T22:46:31+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "ru"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2