chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes)

pull/966/head
localizeflow[bot] 2 weeks ago
parent 6160c7e3a2
commit 564d25b15d

@ -90,8 +90,8 @@
"language_code": "hi"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T10:14:45+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:46:03+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "hi"
},
@ -168,8 +168,8 @@
"language_code": "hi"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T10:26:26+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:47:08+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "hi"
},
@ -552,8 +552,8 @@
"language_code": "hi"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T17:00:33+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:44:24+00:00",
"source_file": "README.md",
"language_code": "hi"
},

@ -1,139 +1,135 @@
# Scikit-learn का उपयोग करके रिग्रेशन मॉडल बनाएं: चार तरीकों से रिग्रेशन
## शुरुआत के लिए नोट
## शुरुआत नोट
लाइनियर रिग्रेशन का उपयोग तब किया जाता है जब हम एक **संख्यात्मक मान** (उदाहरण के लिए, घर की कीमत, तापमान, या बिक्री) की भविष्यवाणी करना चाहते हैं।
यह इनपुट फीचर्स और आउटपुट के बीच संबंध को सबसे अच्छी तरह दर्शाने वाली एक सीधी रेखा खोजकर काम करता है।
जब हम एक **सांख्यिकीय मान** की भविष्यवाणी करना चाहते हैं (उदाहरण के लिए, घर की कीमत, तापमान, या बिक्री), तब लाइनियर रिग्रेशन का उपयोग किया जाता है। यह इनपुट फ़ीचर्स और आउटपुट के बीच संबंध का सर्वश्रेष्ठ प्रतिनिधित्व करने वाली एक सीधी रेखा खोजकर काम करता है।
इस पाठ में, हम अधिक उन्नत रिग्रेशन तकनीकों का पता लगाने से पहले अवधारणा को समझने पर ध्यान केंद्रित करते हैं।
![Linear vs polynomial regression infographic](../../../../translated_images/hi/linear-polynomial.5523c7cb6576ccab.webp)
> इनफोग्राफिक द्वारा [दसानी माडिपल्ली](https://twitter.com/dasani_decoded)
## [पूर्व-व्याख्यान प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
इस पाठ में, हम अधिक उन्नत रिग्रेशन तकनीकों का पता लगाने से पहले अवधारणा को समझने पर ध्यान केंद्रित करते हैं।
![Linear vs polynomial regression infographic](../../../../translated_images/hi/linear-polynomial.5523c7cb6576ccab.webp)
> इन्फोग्राफिक द्वारा [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### परिचय
अब तक आपने रिग्रेशन क्या है, इसे कद्दू की कीमतों के डेटासेट से प्राप्त नमूना डेटा के साथ समझा है, जिसे हम इस पाठ में पयोग करेंगे। आपने इसे Matplotlib का उपयोग करके भी विज़ुअलाइज़ किया है।
अब तक आपने रिग्रेशन क्या है इसका अन्वषण किया है, जिसमें कद्दू की कीमतों के डेटासेट के साथ नमूना डेटा शामिल है, जिसे हम इस पाठ में प्रयोग करेंगे। आपने इसे Matplotlib का उपयोग करके भी विज़ुअलाइज़ किया है।
अब आप एमएल के लिए रिग्रेशन में और गहराई तक जाने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली ताकत _मॉडल ट्रेनिंग_ से आती है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित किए जाते हैं ताकि वे डेटा निर्भरताओं को स्वचालित रूप से पकड़ सकें, और नए डेटा के लिए पूर्वानुमान लगाने की अनुमति देते हैं, जिसे मॉडल ने पहले नहीं देखा होता है।
अब आप मशीन लर्निंग के लिए रिग्रेशन में गहराई से जाने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली शक्ति _मॉडल प्रशिक्षण_ से आती है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित होते हैं ताकि वे डेटा निर्भरताओं को स्वचालित रूप से पकड़ सकें, और ये मॉडल नए डेटा के लिए परिणामों की भविष्यवाणी कर सकते हैं, जिसे मॉडल ने पहले नहीं देखा है।
इस पाठ में, आप दो प्रकार के रिग्रेशन के बारे में और जानेंगे: _मूलभूत लाइनियर रिग्रेशन_ और _पॉलीनॉमियल रिग्रेशन_, साथ ही इन तकनीकों के पीछे की कुछ गणित। ये मॉडल हमें विभिन्न इनपुट डेटा के आधार पर कद्दू के दामों की भविष्यवाणी करने में सक्षम बनाएंगे।
इस पाठ में, आप दो प्रकार के रिग्रेशन सीखेंगे: _बुनियादी लाइनियर रिग्रेशन_ और _पॉलीनोमियल रिग्रेशन_, साथ ही इन तकनीकों के कुछ गणितीय पहलू। ये मॉडल हमें अलग-अलग इनपुट डेटा के आधार पर कद्दू की कीमतों की भविष्यवाणी करने की अनुमति देंगे।
[![एमएल शुरुआती के लिए - लाइनियर रिग्रेशन को समझना](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "एमएल शुरुआती के लिए - लाइनियर रिग्रेशन को समझना")
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 ऊपर दिए गए चित्र पर क्लिक करें लाइनियर रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें लाइनियर रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> इस पूरे पाठ्यक्रम में, हम गणित का न्यूनतम ज्ञान मानते हैं, और इसे उन छात्रों के लिए सुलभ बनाने का प्रयास करते हैं जो अन्य क्षेत्रों से आते हैं, इसलिए समझ में मदद के लिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरण देखें।
> इस पाठ्यक्रम में, हम न्यूनतम गणितीय ज्ञान मानते हैं, और इसे अन्य क्षेत्रों से आने वाले छात्रों के लिए सुलभ बनाने का प्रयास करते हैं, इसलिए समझ में सहायता के लिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरण देखें।
### पूर्वापेक्षा
### पूर्वापेक्षाएँ
अब तक आपको उस कद्दू डेटा की संरचना का परिचय मिल चुका होगा जिसका हम निरीक्षण कर रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में पहले से लोड और साफ-सुथरा पा सकते हैं। फ़ाइल में, कद्दू की कीमत प्रति बशेल नए डेटा फ्रेम में दिखाई गई है। सुनिश्चित करें कि आप इन नोटबुक्स को Visual Studio Code में कर्नल में चला सकते हैं।
अब तक आप उस कद्दू डेटा की संरचना से परिचित हो जाएंगे, जिसे हम देख रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में प्रीलोडेड और पूर्व-साफ किया हुआ पाएंगे। फ़ाइल में, कद्दू की कीमत प्रति बशल नए डेटा फ़्रेम में प्रदर्शित की गई है। सुनिश्चित करें कि आप इन नोटबुक को Visual Studio Code में कर्नेल में चलाने में सक्षम हैं।
### तैयारी
एक अनुस्मारक के रूप में, आप यह डेटा इस उद्देश्य से लोड कर रहे हैं कि आप इसके बारे में प्रश्न पूछ सकें।
- कद्दू खरीदने का सबसे अच्छा समय कब होता है?
- मुझे मिनिएचर कद्दू के एक केस की क्या कीमत मिल सकती है?
- क्या मुझे उन्हें आधा-बशेल बास्केट में खरीदना चाहिए या 1 1/9 बशेल बॉक्स में?
स्मरण कराने के लिए, आप यह डेटा इस तरह की प्रश्न पूछने के लिए लोड कर रहे हैं:
आइए इस डेटा में और गहराई से उतारते रहें।
- कद्दू खरीदने का सबसे अच्छा समय कब है?
- एक केस मिनिएचर कद्दुओं की क्या कीमत हो सकती है?
- क्या मुझे इन्हें आधे बशल टोकरी में खरीदना चाहिए या 1 1/9 बशल बॉक्स के अनुसार?
आइए इस डेटा में और खुदाई करते रहें।
पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया और इसे मूल डेटासेट के एक हिस्से से भरा, प्राइजिंग को बशेल के अनुसार मानकीकृत करते हुए। ऐसा करते हुए, आप केवल लगभग 400 डेटा पॉइंट्स जुटा सके और वे केवल पतझड़ के महीनों के लिए थे।
पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया और इसे मूल डेटा सेट के एक भाग से भरा, कीमत को बशल द्वारा मानकीकृत करते हुए। ऐसा करने से, हालांकि, आप केवल लगभग 400 डेटा पॉइंट और केवल पतझड़ के महीनों के लिए डेटा इकट्ठा कर पाए
इस पाठ के साथ आने वाली नोटबुक में प्रीलोड किए गए डेटा को देखें। डेटा पहले से लोड है और एक प्रारंभिक स्कैटरप्लॉट माह डेटा दिखाने के लिए बनाया गया है। शायद हम इसे और साफ़ करके डेटा की प्रकृति के बारे में थोड़ी अधिक जानकारी प्राप्त कर सकते हैं
इस पाठ के साथ आने वाली नोटबुक में हमने जो डेटा प्रीलोड किया है, उस पर नज़र डालें। डेटा प्रीलोड किया गया है और प्रारंभिक स्कैटरप्लॉट चार्ट किया गया है जो महीनों के डेटा को दिखाता है। संभव है कि डेटा की प्रकृति के बारे में थोड़ा और विवरण प्राप्त किया जा सके, इसे और साफ करके
## एक लाइनियर रिग्रेशन लाइन
जैसा कि आपने पाठ 1 में सीखा, लाइनियर रिग्रेशन अभ्यास का उद्देश्य एक ऐसी रेखा प्लॉट करना है जो:
जैसा कि आपने पाठ 1 में सीखा, एक लाइनियर रिग्रेशन व्यायाम का लक्ष्य यह है कि एक रेखा प्लाट की जा सके ताकि:
- **चर संबंध दर्शाए।** चर के बीच संबंध दिखाना
- **पूर्वानुमान करना।** यह सावधानीपूर्वक पूर्वानुमान लगाना कि नया डेटा पॉइंट उस रेखा के संबंध में कहां पड़ता है।
- **चर संबंध दिखाएं**। चर के बीच संबंध दिखाएं
- **भविष्यवाणियाँ करें**। यह सही पूर्वानुमान लगाएं कि कोई नया डेटा पॉइंट उस रेखा के संबंध में कहाँ आएगा।
**लीस्ट-स्क्वेयर रिग्रेशन** के तहत ऐसी रेखा खींचना आम बात है। "लीस्ट-स्क्वेयर" शब्द हमारे मॉडल में कुल त्रुटि को न्यूनतम करने की प्रक्रिया को संदर्भित करता है। प्रत्येक डेटा पॉइंट के लिए, हम वास्तविक पॉइंट और हमारी रिग्रेशन रेखा के बीच ऊर्ध्वाधर दूरी (जिसे अवशिष्ट कहा जाता है) को मापते हैं।
यह सामान्य है कि **लीस्ट-स्क्वेयर रिग्रेशन** इस प्रकार की रेखा खींचे। "लीस्ट-स्क्वेयर" शब्द हमारे मॉडल में कुल त्रुटि को कम करने की प्रक्रिया को दर्शाता है। प्रत्येक डेटा पॉइंट के लिए, हम वास्तविक पॉइंट और हमारे रिग्रेशन लाइन के बीच ऊर्ध्वाधर दूरी (जिसे अवशिष्ट कहते हैं) मापते हैं।
हम इन दूरियों के वर्ग करते हैं इसके दो मुख्य कारण हैं:
हम इन दूरीयों को दो मुख्य कारणों से वर्ग करते हैं:
1. **परिमाण अधिक महत्वपूर्ण है, दिशा नहीं:** हम -5 की त्रुटि को +5 की त्रुटि के समान मानना चाहते हैं। वर्ग करने से सभी मान सकारात्मक हो जाते हैं।
1. **आकार दिशा से अधिक महत्वपूर्ण:** हम -5 की त्रुटि को +5 की त्रुटि के समान मानना चाहते हैं। वर्गाकरण सभी मानों को सकारात्मक बना देता है।
2. **बहिर्विष्टों को दंडित करना:** वर्ग करने से बड़ी त्रुटियों को अधिक महत्व मिलता है, जो रेखा को दूर के पॉइंट्स के करीब रहने के लिए बाध्य करता है
2. **आउटलेयर्स को दंडित करना:** वर्गाकरण बड़ी त्रुटियों को अधिक महत्व देता है, जिससे रेखा उन बिंदुओं के करीब रहती है जो दूर हैं
फिर हम इन वर्गीकृत मानों को जोड़ते हैं। हमारा लक्ष्य वह विशिष्ट रेखा खोजने का है जहाँ यह अंतिम योग न्यूनतम हो (सबसे कम संभव मान) यही कारण है इसे "लीस्ट-स्क्वेयर" कहा जाता है।
फिर हम इन सभी वर्गीकृत मानों को जोड़ते हैं। हमारा लक्ष्य उस विशेष रेखा को खोजना है जहाँ यह अंतिम योग न्यूनतम हो (संभवतः सबसे छोटे मान पर) — इसलिए इसे "लीस्ट-स्क्वेयर" कहा जाता है।
> **🧮 मुझे गणित दिखाएं**
>
> इस रेखा, जिसे _सबसे उपयुक्त फिट रेखा_ कहा जाता है, को एक [समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है:
>
> **🧮 मुझे गणित दिखा**
>
> इस रेखा को, जिसे _लाइन ऑफ़ बेस्ट फिट_ कहा जाता है, [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है:
>
> ```
> Y = a + bX
> ```
>
> `X` 'व्याख्यात्मक चर' है। `Y` 'आश्रित चर' है। रेखा की ढलान `b` है और `a` y-अवरोध है, जो उस स्थिति को संदर्भित करता है जब `X = 0` होता है।
> `X` 'व्याख्यात्मक चर' है। `Y` 'निर्भर चर' है। रेखा का ढलान `b` है और `a` y-अवरोध (y-intercept) है, जो 'X = 0' होने पर `Y` का मान दर्शाता है।
>
>![ढलान की गणना करें](../../../../translated_images/hi/slope.f3c9d5910ddbfcf9.webp)
>![calculate the slope](../../../../translated_images/hi/slope.f3c9d5910ddbfcf9.webp)
>
> सबसे पहले, ढलान `b` की गणना करें। इनफोग्राफिक द्वारा [जेन लूपर](https://twitter.com/jenlooper)
> पहले, ढलान `b` की गणना करें। इनफोग्राफिक द्वारा [Jen Looper](https://twitter.com/jenlooper)
>
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न को संदर्भित करते हुए: "माह के द्वारा प्रति बशेल कद्दू की कीमत की भविष्यवाणी करें", `X` मूल्य को संदर्भित करता है और `Y` बिक्री के मह को।
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न को ध्यान में रखते हुए: "महीने के अनुसार प्रति बशल कद्दू की कीमत की भविष्यवाणी करें", `X` कीमत को संदर्भित करता है और `Y` बिक्री के महीने को।
>
>![समीकरण पूरा करें](../../../../translated_images/hi/calculation.a209813050a1ddb1.webp)
>![complete the equation](../../../../translated_images/hi/calculation.a209813050a1ddb1.webp)
>
> Y का मान गणना करें। यदि आप लगभग $4 दे रहे हैं, तो यह अप्रैल होना चाहिए! इनफोग्राफिक द्वारा [जेन लूपर](https://twitter.com/jenlooper)
> `Y` के मान की गणना करें। यदि आप लगभग $4 का भुगतान कर रहे हैं, तो वह अप्रैल होना चाहिए! इनफोग्राफिक द्वारा [Jen Looper](https://twitter.com/jenlooper)
>
> गणित जो रेखा की गणना करता है वह रेखा की ढलान को दिखाना चाहिए, जो अवरोध पर भी निर्भर करता है, या जहां `Y` स्थित होता है जब `X = 0`
> जो गणित रेखा की गणना करता है, उसे ढलान दर्शानी चाहिए, जो अवरोध पर निर्भर भी होती है, अर्थात `X = 0` होने पर `Y` कहाँ होता है।
>
> आप इन मानों की गणना का तरीका [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। साथ ही [यह लीस्ट-स्क्वेयर कैलकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) देखें कि संख्या के मान कैसे रेखा को प्रभावित करते हैं।
> आप इन मानों की गणना की विधि को [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। साथ ही [यह लीस्ट-स्क्वेयर्स कैलकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) देखें कि कैसे मान रेखा को प्रभावित करते हैं।
## सहसंबंध
## सहसंबंध (Correlation)
एक और शब्द जिसे समझना जरूरी है वह है दी गई `X` और `Y` चर के बीच **सहसंबंध गुणांक**। स्कैटरप्लॉट का उपयोग करके, आप जल्दी से इस सहसंबंध को विज़ुअलाइज़ कर सकते हैं। एक प्लॉट जिसमें डेटा पॉइंट्स एक साफ रेखा में बिखरे हुए हों, उसका सहसंबंध उच्च होगा, जबकि एक प्लॉट जिसमें डेटा पॉइंट्स कहीं भी बिखरे हों, उसका सहसंबंध कम होगा
एक और शब्द जिसे समझना आवश्यक है, वह है दिए गए X और Y चर के बीच का **सहसंबंध गुणांक**। स्कैटरप्लॉट का उपयोग करके, आप इसे जल्दी से देख सकते हैं। यदि पॉइंट्स एक साफ रेखा में फैलते हैं तो सहसंबंध अधिक होता है, परंतु यदि पॉइंट्स हर जगह फैल गए हैं, तो सहसंबंध कम होता है
एक अच्छा लाइनियर रिग्रेशन मॉडल वह होगा जिसमें लीस्ट-स्क्वेयर रिग्रेशन विधि के साथ रिग्रेशन लाइन वाले उच्च (0 से अधिक निकट 1) सहसंबंध गुणांक हो।
एक अच्छा लाइनियर रिग्रेशन मॉडल वह होगा जिसका सहसंबंध गुणांक उच्च (0 के बजाय 1 के करीब) होगा, और वह लाइन ऑफ़ रिग्रेशन के साथ लीस्ट-स्क्वेयर्स रिग्रेशन विधि का उपयोग करता हो।
✅ इस पाठ के साथ आने वाली नोटबुक चलाएं और महीने के अनुसार कीमत के स्कैटरप्लॉट को देखें। क्या कद्दू बिक्री के लिए महीने और कीमत के बीच डेटा का सहसंबंध आपके विज़ुअल व्याख्या के अनुसार उच्च या निम्न लगता है? क्या यह तब बदलता है यदि आप `Month` के बजाय अधिक सूक्ष्म माप जैसे *साल का दिन* (उदाहरण के लिए वर्ष की शुरुआत से दिन की संख्या) का उपयोग करें?
✅ इस पाठ के साथ आने वाली नोटबुक चलाएं और महीने से कीमत स्कैटरप्लॉट को देखें। कद्दू बिक्री के लिए महीने और कीमत के डेटा का सहसंबंध आपके विज़ुअल विश्लेषण के अनुसार अधिक है या कम? क्या यदि आप `महीना` के बजाय अधिक सूक्ष्म माप का उपयोग करें, जैसे *साल का दिन* (यानी साल की शुरुआत से दिन की संख्या), तो क्या उस स्थिति में सहसंबंध बदल जाता है?
नीचे दिए गए कोड में, हम मान लेते हैं कि हमने डेटा को साफ कर लिया है, और हमें एक डेटा फ्रेम `new_pumpkins` मिला है, जो निम्न जैसा है:
नीचे के कोड में, हम मान लेंगे कि हमने डेटा को साफ़ किया है, और एक डेटा फ्रेम `new_pumpkins` प्राप्त किया है, जो निम्नलिखित जैसा है:
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
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://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "एमएल शुरुआती के लिए - सहसंबंध की तलाश: लाइनियर रिग्रेशन की कुंजी")
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 ऊपर दिए गए चित्र पर क्लिक करें सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए।
पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत इस प्रकार है:
पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत कुछ इस प्रकार दिखती है:
<img alt="Average price by month" src="../../../../translated_images/hi/barchart.a833ea9194346d76.webp" width="50%"/>
यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम `Month` और `Price`, या `DayOfYear` और `Price` के बीच संबंध का पूर्वानुमान लगाने के लिए लाइनियर रिग्रेशन मॉडल प्रशिक्षण देने का प्रयास कर सकते हैं। यहाँ वह स्कैटरप्लॉट है जो बाद वाले संबंध को दिखाता है:
यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम प्रयास कर सकते हैं कि लाइनियर रिग्रेशन मॉडल प्रशिक्षित करें जो `Month` और `Price` के बीच, या `DayOfYear` और `Price` के बीच संबंध की भविष्यवाणी करे। नीचे स्कैटर प्लॉट है जो बाद के संबंध को दिखाता है:
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
आइए देखें कि `corr` फ़ंक्शन का उपयोग करके सहसंबंध क्या है:
आइए `corr` फ़ंक्शन का उपयोग करके देखें कि क्या सहसंबंध है:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
ऐसा लगता है कि सहसंबंध काफी छोटा है, `Month` के लिए -0.15 और `DayOfMonth` के लिए -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि विभिन्न कद्दू किस्मों के लिए अलग-अलग क्लस्टर वाले दाम हैं। इस परिकल्पना की पुष्टि करने के लिए, चलिए हम प्रत्येक कद्दू श्रेणी को अलग रंग में प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन में `ax` पैरामीटर पास करके हम सभी पॉइंट्स को एक ही ग्राफ पर प्लॉट कर सकते हैं
ऐसा लगता है कि सहसंबंध काफी छोटा है, `Month` के लिए -0.15 और `DayOfMonth` के लिए -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि अलग-अलग कद्दू की किस्मों के लिए कीमतों के अलग-अलग समूह हैं। इस हाइपोथीसिस को पुष्टि करने के लिए, आइए प्रत्येक कद्दू वर्ग को अलग रंग में प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन को `ax` पैरामीटर पास करके हम सभी पॉइंट्स को एक ही ग्राफ पर प्लॉट कर सकते हैं:
```python
ax=None
@ -142,113 +138,114 @@ 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)
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
हमारे निरीक्षण से पता चलता है कि किस्म का दाम पर माह की तुलना में अधिक प्रभाव पड़ता है। हम इसे एक बार ग्राफ से देख सकते हैं:
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
हमारी जांच से पता चलता है कि किस्म का कुल कीमत पर वास्तविक बिक्री तिथि से अधिक प्रभाव होता है। हम इसे बार ग्राफ से देख सकते हैं:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="Bar graph of price vs variety" src="../../../../translated_images/hi/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
आइए अभी केवल एक कद्दू किस्म, 'पाई टाइप' पर ध्यान केंद्रित करें, और देखें कि तारीख का कीमत पर क्या प्रभाव पड़ता है:
<img alt="Bar graph of price vs variety" src="../../../../translated_images/hi/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
अभी के लिए चलिए केवल एक कद्दू किस्म, 'pie type' पर ध्यान केंद्रित करें, और देखें कि तारीख का कीमत पर क्या प्रभाव है:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/hi/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
यदि अब हम `Price` और `DayOfYear` के बीच सहसंबंध `corr` फ़ंक्शन का उपयोग कर गणना करें, तो हमें कुछ ऐसा मिलेगा: `-0.27` - जो दर्शाता है कि एक भविष्यवाणीक मॉडल प्रशिक्षण देना उचित है।
यदि हम अब `Price` और `DayOfYear` के बीच सहसंबंध `corr` फ़ंक्शन से गणना करें, तो हमें लगभग `-0.27` मिलेगा - जिसका मतलब है कि एक पूर्वानुमान मॉडल प्रशिक्षण करना समझदारी है।
> लाइनियर रिग्रेशन मॉडल को प्रशिक्षित करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा स्वच्छ हो। लाइनियर रिग्रेशन गायब मानों के साथ ठीक से काम नहीं करता, इसलिए सभी खाली सेल्स को हटाना समझदारी है:
> लाइनियर रिग्रेशन मॉडल प्रशिक्षित करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा साफ हो। लाइनियर रिग्रेशन खाली मानों के साथ अच्छा काम नहीं करता है, इसलिए सभी खाली कोशिकाओं को हटाना समझदारी है:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
एक अन्य तरीका यह होगा कि खाली मानों को संबंधित कॉलम के औसत मान से भर दें
एक अन्य तरीका यह होगा कि उन खाली मानों को संबंधित कॉलम के औसत मान से भर दिया जाए
## सरल लाइनियर रिग्रेशन
[![एमएल शुरुआती के लिए - Scikit-learn का उपयोग करके लाइनियर और पॉलीनॉमियल रिग्रेशन](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "एमएल शुरुआती के लिए - Scikit-learn का उपयोग करके लाइनियर और पॉलीनॉमियल रिग्रेशन")
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](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 arrays में विभाजित करके:
हम इनपुट मानों (फीचर्स) और अपेक्षित आउटपुट (लेबल) को अलग-अलग numpy arrays में अलग करते हैं:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> ध्यान दें कि हमें इनपुट डेटा पर `reshape` करना पड़ा ताकि लाइनियर रिग्रेशन पैकेज इसे सही ढंग से समझ सके। लाइनियर रिग्रेशन 2D-array इनपुट की अपेक्षा करता है, जहाँ array की प्रत्येक पंक्ति इनपुट फीचर्स के वेक्टर को संदर्भित करती है। हमारे मामले में, क्योंकि हमारे पास केवल एक इनपुट है - हमें N×1 आकार की array चाहिए, जहाँ N डेटा सेट का आकार है।
फिर, हमें डेटा को प्रशिक्षु और परीक्षण डेटासेट में विभाजित करना होगा, ताकि ट्रेनिंग के बाद हम अपने मॉडल का मूल्यांकन कर सकें:
> ध्यान दें कि हमें इनपुट डेटा पर `reshape` करना पड़ा ताकि लाइनियर रिग्रेशन पैकेज इसे सही ढंग से समझ सके। लाइनियर रिग्रेशन 2D-array के रूप में इनपुट की अपेक्षा करता है, जहाँ array की प्रत्येक पंक्ति इनपुट फीचर्स का एक वेक्टर होता है। हमारे मामले में, चूंकि हमारे पास केवल एक इनपुट है, इसलिए हमें N×1 आकार की array चाहिए, जहाँ 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` करने के बाद रिग्रेशन के सभी गुणांक (coefficients) रखता है, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक गुणांक है, जो लगभग `-0.017` के आसपास होना चाहिए। इसका मतलब है कि कीमतें समय के साथ थोड़ा गिरती हैं, लेकिन अधिक नहीं, लगभग 2 सेंट प्रति दिन। हम रिग्रेशन के Y-अक्ष के साथ कटाव (intersection point) को भी `lin_reg.intercept_` का उपयोग करके एक्सेस कर सकते हैं - हमारे मामले में यह लगभग `21` के आसपास होगा, जो वर्ष की शुरुआत में कीमत को दर्शाता है।
`LinearRegression` ऑब्जेक्ट `fit` करने के बाद रिग्रेशन के सभी गुणांक (coefficients) रखता है, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक गुणांक है, जो लगभग `-0.017` के आसपास होना चाहिए। इसका मतलब है कि समय के साथ कीमतें थोड़ा गिरती लगती हैं, लेकिन बहुत अधिक नहीं, लगभग 2 सेंट प्रति दिन। हम रिग्रेशन के Y-अक्ष के साथ इंटरसे्शन पॉइंट को भी `lin_reg.intercept_` का उपयोग कर सकते हैं - यह हमारे मामले में लगभग `21` होगा, जो साल की शुरुआत में कीमत को दर्शाता है।
देखने के लिए कि हमारा मॉडल कितना सटीक है, हम टेस्ट डेटासेट पर कीमतों की भविष्यवाणी कर सकते हैं, और फिर माप सकते हैं कि हमारी भविष्यवाणियां अपेक्षित मूल्यों के कितनी निकट हैं। इसे मीन स्क्वायर एरर (MSE) मेट्रिक्स का उपयोग करके किया जा सकता है, जो अपेक्षित और पूर्वानुमानित मूल्य के बीच सभी स्क्वायर्ड अंतर का औसत है।
अपने मॉडल की सटीकता देखने के लिए, हम टेस्ट डेटासेट पर कीमतों की भविष्यवाणी कर सकते हैं, और फिर देख सकते हैं कि हमारी भविष्यवाणियाँ अपेक्षित मानों के कितनी करीब हैं। यह रूट मीन स्क्वायर एरर (RMSE) मेट्रिक का उपयोग करके किया जा सकता है, जो कि अपेक्षित और भविष्यवाणी किए गए मानों के बीच सभी वर्गीकृत अंतर का माध्य का मूल है।
```python
pred = lin_reg.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 = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
हमारी त्रुटि लगभग 2 पॉइंट्स के आसपास लगती है, जो ~17% है। बहुत अच्छी नहीं। मॉडल की गुणवत्ता का एक अन्य संकेतक है **निर्धारण गुणांक** (coefficient of determination), जिसे इस प्रकार प्राप्त किया जा सकता है:
हमारी त्रुटि लगभग 2 पॉइंट के आसपास दिखती है, जो ~17% है। बहुत अच्छा नहीं। मॉडल क्वालिटी का एक और संकेतक **निर्धारण गुणांक (coefficient of determination)** है, जिसे इस प्रकार प्राप्त किया जा सकता है:
```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)
```
<img alt="Linear regression" src="../../../../translated_images/hi/linear-results.f7c3552c85b0ed1c.webp" width="50%" />
## बहुपद रिग्रेशन (Polynomial Regression)
## पॉलीनॉमियल रिग्रेशन
रैखिक रिग्रेशन का एक अन्य प्रकार है बहुपद रिग्रेशन। जबकि कभी-कभी चर के बीच रैखिक संबंध होता है - जैसे लंबे आकार वाला कद्दू का दाम अधिक होता है - कभी-कभी इन संबंधों को तल या सीधी रेखा के रूप में प्रदर्शित नहीं किया जा सकता
रैखिक रिग्रेशन का एक और प्रकार पॉलीनॉमियल रिग्रेशन है। जबकि कभी-कभी वेरिएबल्स के बीच एक रैखिक संबंध होता है - जैसे कि कद्दू जितना बड़ा होगा, कीमत उतनी ही अधिक होगी - कभी-कभी ये संबंध कोई समतल या सीधी रेखा नहीं हो सकते
✅ यहा [कुछ और उदाहरण](https://online.stat.psu.edu/stat501/lesson/9/9.8) हैं जिनमें बहुपद रिग्रेशन का उपयोग किया जा सकता है
✅ यहा [कुछ और उदाहरण](https://online.stat.psu.edu/stat501/lesson/9/9.8) हैं जिनमें पॉलीनॉमियल रिग्रेशन का उपयोग हो सकता है।
दिनांक और मूल्य के संबंध को फिर से देखें। क्या यह स्कैटरप्लॉट इस तरह दिखता है कि इसे ज़रूरी तौर पर सीधी रेखा से विश्लेषित किया जाना चाहिए? क्या कीमतें स्थिर नहीं रह सकतीं? इस मामले में, आप बहुपद रिग्रेशन आजमा सकते हैं।
दिनांक (Date) और कीमत (Price) के बीच संबंध पर एक बार फिर से नज़र डालें। क्या यह स्कैटरप्लॉट ऐसा लगता है कि इसे ज़रूरी तौर पर सीधी रेखा से विश्लेषित किया जाना चाहिए? क्या कीमतें उतार-चढ़ाव नहीं कर सकतीं? इस मामले में, आप पॉलीनॉमियल रिग्रेशन आज़मा सकते हैं।
बहुपद गणितीय व्यंजक होते हैं जो एक या अधिक चर और गुणांकों से मिलकर बनते हैं
पॉलीनॉमियल गणितीय अभिव्यक्तियाँ होती हैं जिनमें एक या अधिक वेरिएबल और गुणांक हो सकते हैं।
बहुपद रिग्रेशन एक वक्र रेखा बनाता है जिससे गैर-रैखिक डेटा में बेहतर फिटिंग हो सके। हमारे मामले में, यदि हम इनपुट डेटा में स्क्वायर्ड `DayOfYear` वेरिएबल शामिल करें, तो हम डेटा को एक परवलयाकार वक्र से फिट कर पाएंगे, जिसका न्यूनतम वर्ष के किसी निश्चित बिंदु पर होगा।
पॉलीनॉमियल रिग्रेशन एक घुमावदार रेखा बनाता है जो गैर-रेखीय डेटा को बेहतर फिट करता है। हमारे मामले में, यदि हम इनपुट डेटा में वर्गीकृत `DayOfYear` वैरिएबल शामिल करें, तो हम अपने डेटा को परवलयाकार (parabolic) वक्र के साथ फिट कर पाएंगे, जिसका एक न्यूनतम बिंदु साल के भीतर कहीं होगा।
Scikit-learn में एक उपयोगी [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) शामिल है जो डेटा प्रोसेसिंग के विभिन्न चरणों को एक साथ जोड़ता है। एक **पाइपलाइन** **एस्टिमेटर्स** की एक श्रृंखला होती है। हमारे मामले में, हम एक पाइपलाइन बनाएंगे जो पहले हमारे मॉडल में बहुपद विशेषताओं को जोड़ता है, और फिर रिग्रेशन को प्रशिक्षित करता है:
Scikit-learn में एक उपयोगी [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) शामिल है जो डेटा प्रोसेसिंग के विभिन्न चरणों को एक साथ जोड़ता है। एक **पाइपलाइन** **एस्टिमेटर्स** की श्रृंखला होती है। हमारे मामले में, हम एक पाइपलाइन बनाएंगे जो पहले मॉडल में पॉलीनॉमियल फीचर्स जोड़ता है, और फिर रिग्रेशन को प्रशिक्षित करता है:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -258,61 +255,61 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
`PolynomialFeatures(2)` का उपयोग करने का मतलब है कि हम इनपुट डेटा से सभी द्वित्वतीय (second-degree) पॉलीनॉमियल्स शामिल करेंगे। हमारे मामले में इसका मतलब केवल `DayOfYear`<sup>2</sup> होगा, लेकिन यदि दो इनपुट वेरिएबल X और Y हों, तो यह X<sup>2</sup>, XY और Y<sup>2</sup> जोड़ देगा। हम उच्च-डिग्री पॉलीनॉमियल भी उपयोग कर सकते हैं यदि चाहें।
`PolynomialFeatures(2)` का उपयोग करने का मतलब है कि हम इनपुट डेटा से सभी द्वितीय-डिग्री बहुपद शामिल करेंगे। हमारे मामले में इसका मतलब केवल `DayOfYear`<sup>2</sup> होगा, लेकिन यदि दो इनपुट वेरिएबल X और Y हों, तो यह X<sup>2</sup>, XY और Y<sup>2</sup> जोड़ता है। हम उच्च-डिग्री बहुपद भी उपयोग कर सकते हैं यदि चाहें।
पाइपलाइनों का उपयोग उसी तरह किया जा सकता है जैसे `LinearRegression` ऑब्जेक्ट का, यानी हम पाइपलाइन को `fit` कर सकते हैं, और फिर भविष्यवाणी परिणामों के लिए `predict` का उपयोग कर सकते हैं। यहां ग्राफ है जो परीक्षण डेटा और अनुमानित वक्र को दिखाता है:
पाइपलाइनों का उपयोग मूल `LinearRegression` ऑब्जेक्ट की तरह ही किया जा सकता है, अर्थात हम पाइपलाइन को `fit` कर सकते हैं, और फिर `predict` का उपयोग करके भविष्यवाणी के परिणाम प्राप्त कर सकते हैं। यहाँ ग्राफ है जो टेस्ट डेटा और अनुमानित वक्र दिखाता है:
<img alt="Polynomial regression" src="../../../../translated_images/hi/poly-results.ee587348f0f1f60b.webp" width="50%" />
बहुपद रिग्रेशन का उपयोग करते हुए, हम थोड़ा कम MSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन विशेष रूप से नहीं। हमें अन्य विशेषताओं को भी ध्यान में रखना होगा!
पॉलीनॉमियल रिग्रेशन का उपयोग करके, हम थोड़ा नीचे MSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन बहुत अधिक नहीं। हमें अन्य फीचर्स को भी ध्यान में रखना होगा!
> आप देख सकते हैं कि न्यूनतम कद्दू के दाम लगभग हैलोवीन के आसपास होते हैं। आप इसे कैसे समझाएंगे?
> आप देख सकते हैं कि न्यूनतम कद्दू की कीमतें लगभग हैलोवीन के आसपास देखी जाती हैं। आप इसे कैसे समझाएंगे?
🎃 बधाई हो, आपने एक ऐसा मॉडल बनाया है जो पाई कद्दू की कीमत का पूर्वानुमान लगाने में मदद कर सकता है। आप संभवतः सभी कद्दू प्रकारों के लिए समान प्रक्रिया दोहरा सकते हैं, लेकिन वह थकाऊ होगा। अब सीखते हैं कि हमारे मॉडल में कद्दू की किस्म को कैसे ध्यान में रखा जाए!
🎃 बधाई हो, आपने अभी एक ऐसा मॉडल बनाया है जो पैसे कद्दू की कीमत की भविष्यवाणी करने में मदद कर सकता है। आप शायद इसी प्रक्रिया को सभी कद्दू प्रकारों के लिए दोहरा सकते हैं, लेकिन यह मुश्किल होगा। आइए अब सीखते हैं कि मॉडल में कद्दू की किस्म (variety) को कैसे शामिल करें!
## श्रेणीबद्ध विशेषताएँ (Categorical Features)
## श्रेणीबद्ध फीचर्स (Categorical Features)
आदर्श दुनिया में, हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों के लिए कीमतों की भविष्यवाणी कर सके। हालांकि, `Variety` कॉलम कुछ हद तक `Month` जैसे कॉलमों से अलग है, क्योंकि इसमें गैर-आंकिक (non-numeric) मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध** कहा जाता है।
आदर्श दुनिया में, हम चाहते हैं कि हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों की कीमतें भविष्यवाणी कर सकें। हालांकि, `Variety` कॉलम `Month` जैसे कॉलमों से थोड़ा अलग है, क्योंकि इसमें गैर-संख्यात्मक (non-numeric) मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध (categorical)** कहा जाता है।
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 श्रेणीबद्ध विशेषताओं के उपयोग पर एक संक्षिप्त वीडियो अवलोकन के लिए ऊपर की छवि पर क्लिक करें
> 🎥 ऊपर दिए गए इमेज पर क्लिक करें एक संक्षिप्त वीडियो अवलोकन के लिए जिसमें श्रेणीबद्ध फीचर्स के उपयोग को बताया गया है
यहाँ आप देख सकते हैं कि औसत कीमत किस्म पर कैसे निर्भर करती है:
<img alt="Average price by variety" src="../../../../translated_images/hi/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
किस्म को ध्यान में रखने के लिए, हमें पहले इसे संख्यात्मक रूप में कनवर्ट या **एन्कोड** करना होगा। इसे करने के कई तरीके हैं:
किस्म को ध्यान में लेने के लिए, हमें इसे पहले संख्यात्मक रूप में बदलना होगा, या **इन्कोड (encode)** करना होगा। इसे करने के कई तरीके हैं:
* सरल **न्यूमेरिक एन्कोडिंग** एक अलग किस्मों की तालिका बनाएगा, और फिर किस्म के नाम को उस तालिका में इंडेक्स द्वारा प्रतिस्थापित करेगा। यह रैखिक रिग्रेशन के लिए अच्छा विचार नहीं है, क्योंकि रैखिक रिग्रेशन इंडेक्स का वास्तविक संख्यात्मक मान लेता है, और इसे गुणांक से गुणा करके परिणाम में जोड़ता है। हमारे मामले में, इंडेक्स संख्या और कीमत के बीच संबंध स्पष्ट रूप से गैर-रैखिक है, भले ही हम सुनिश्चत कर लें कि इंडेक्सों को किसी विशिष्ट क्रम में व्यवस्थित किया गया हो
* **वन-हॉट एन्कोडिंग** `Variety` कॉलम को चार अलग-अलग कॉलमों में बदल देगा, प्रत्येक किस्म के लिए एक। प्रत्येक कॉलम में `1` होगा यदि संबंधित पंक्ति उस विशिष्ट किस्म की हो, अन्यथा `0` होगा। इसका मतलब है कि रैखिक रिग्रेशन में चार गुणांक होंगे, प्रत्येक कद्दू किस्म के लिए, जो उस विशेष किस्म की "शुरुआती कीमत" (या अधिक सटीक कहा जाए तो "अतिरिक्त कीमत") के लिए जिम्मेदार होगा
* सरल **न्यूमरिक इन्कोडिंग** विभिन्न किस्मों की एक तालिका बनाता है, और फिर किस्म के नाम को उस तालिका में एक अनुक्रमांक (index) से बदल देता है। यह रैखिक रिग्रेशन के लिए सबसे अच्छा विचार नहीं है, क्योंकि रिग्रेशन अनुक्रमांक के वास्तविक संख्यात्मक मान को लेता है और इसे कुछ गुणांक से गुणा कर परिणाम में जोड़ता है। हमारे मामले में, अनुक्रमांक नंबर और कीमत के बीच संबंध स्पष्ट रूप से गैर-रेखीय है, भले ही हम सुनिश्चित करें कि अनुक्रमांक किसी विशेष क्रम में हों
* **वन-हॉट इन्कोडिंग (One-hot encoding)** `Variety` कॉलम को 4 अलग-अलग कॉलमों से प्रतिस्थापित कर देगा, प्रत्येक किस्म के लिए एक। हर कॉलम में `1` होगा यदि संबंधित पंक्ति उस किस्म की है, और अन्यथा `0` होगा। इसका मतलब है कि रैखिक रिग्रेशन में चार गुणांक होंगे, प्रत्येक कद्दू किस्म के लिए एक, जो उस विशेष किस्म के लिए "शुरुआती कीमत" (या बल्कि "अतिरिक्त कीमत") के लिए ज़िम्मेदार होंगे
ीचे का कोड दिखाता है कि हम किस प्रकार एक किस्म को वन-हॉट एन्कोड कर सकते हैं:
िचे का कोड दिखाता है कि हम किस तरह से वन-हॉट इन्कोडिंग कर सकते हैं:
```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
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
वन-हॉट एन्कोडेड किस्म को इनपुट के रूप में उपयोग करके रैखिक रिग्रेशन को प्रशिक्षित करने के लिए, हमें केवल `X` और `y` डेटा को सही ढंग से इनिशियलाइज़ करना होगा:
वन-हॉट इन्कोडेड किस्म को इनपुट के रूप में लेकर जब हम रैखिक रिग्रेशन को ट्रेन करते हैं, तो हमें बस सही ढंग से `X` और `y` डेटा को इनिशियलाइज़ करना होता है:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
बाकी कोड वही है जो हमने ऊपर रैखिक रिग्रेशन प्रशिक्षित करने के लिए इस्तेमाल किया था। यदि आप इसे आज़माते हैं, तो आप देखेंगे कि मीन स्क्वायर एरर लगभग समान है, लेकिन हमें निर्धारण गुणांक (~77%) बहुत अधिक मिलता है। और अधिक सटीक भविष्यवाणियां पाने के लिए, हम अधिक श्रेणीबद्ध विशेषताओं के साथ-साथ संख्यात्मक विशेषताओं को भी ध्यान में ले सकते हैं, जैसे कि `Month` या `DayOfYear`। सभी फीचर्स का एक बड़ा ऐरे पाने के लिए, हम `join` का उपयोग कर सकते हैं:
बाकी कोड वही है जो हमने ऊपर Linear Regression को ट्रेन करने के लिए इस्तेमाल किया था। यदि आप इसे आज़माएंगे, तो आप देखेंगे कि मेर स्क्वायर्ड एरर लगभग समान है, लेकिन हमें निर्धारण गुणांक (~77%) काफी ज्यादा मिलता है। और भी अधिक सटीक भविष्यवाणियाँ करने के लिए, हम और भी श्रेणीबद्ध फीचर्स और संख्यात्मक फीचर्स, जैसे `Month` या `DayOfYear` को ध्यान में ले सकते हैं। एक बड़ा फीचर्स सेट पाने के लिए, हम `join` का उपयोग कर सकते हैं:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -321,12 +318,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
यहा हम `City` और `Package` प्रकार को भी ध्यान में लेते हैं, जो हमें MSE 2.84 (10%) और निर्धारण 0.94 देता है!
यहा हम `City` और `Package` प्रकार को भी ध्यान में रखते हैं, जिससे हमें MSE 2.84 (10%) और निर्धारण 0.94 मिलता है!
## सब कुछ एक साथ जोड़ना
सबसे अच्छा मॉडल बनाने के लिए, हम उपरोक्त उदाहरण से संयुक्त (वन-हॉट एन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा को बहुपद रिग्रेशन के साथ उपयोग कर सकते हैं। आपके सुविधाजनक उपयोग के लिए यहां पूर्ण कोड है:
सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर के उदाहरण से संयुक्त (वन-हॉट इन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा को पॉलीनॉमियल रिग्रेशन के साथ उपयोग कर सकते हैं। आपकी सुविधा के लिए यहाँ पूरा कोड है:
```python
# प्रशिक्षण डेटा सेट करें
@ -343,7 +340,7 @@ 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 और निर्धारण की गणना करें
@ -353,37 +350,37 @@ print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
यह हमें लगभग 97% का सर्वोत्तम निर्धारण गुणांक और MSE=2.23 (~8% पूर्वानुमान त्रुटि) देगा।
इससे हमें सबसे अच्छा निर्धारण गुणांक लगभग 97% और MSE=2.23 (~8% भविष्यवाणी त्रुटि) मिलेगा।
| मॉडल | MSE | निर्धारण |
|-------|-----|---------------|
|-------|-----|-----------|
| `DayOfYear` रैखिक | 2.77 (17.2%) | 0.07 |
| `DayOfYear` बहुपद | 2.73 (17.0%) | 0.08 |
| `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.23 (8.25%) | 0.97 |
🏆 बहुत अच्छा! आपने एक पाठ में चार रिग्रेशन मॉडल बनाए, और मॉडल की गुणवत्ता को 97% तक बढ़ाया। रिग्रेशन के अंतिम भाग में, आप लॉजिस्टिक रिग्रेशन के बारे में सीखेंगे जिससे श्रेणियां निर्धारित की जा सकेंगी।
🏆 बहुत बढ़िया! आपने एक पाठ में चार रिग्रेशन मॉडल बनाए, और मॉडल की गुणवत्ता को 97% तक सुधार दिया। रिग्रेशन के अंतिम खंड में, आप लॉजिस्टिक रिग्रेशन के बारे में सीखेंगे जो श्रेणियाँ निर्धारित करता है।
---
## 🚀चुनौती (Challenge)
## 🚀चुनौती
इस नोटबुक में कई अलग-अलग चर परिक्षण करें ताकि देखें कि सहसंबंध मॉडल की सटीकता से कैसे संबंधित है।
इस नोटबुक में कई विभिन्न वेरिएबल्स को टेस्ट करें यह देखने के लिए कि सह-संबंध कैसे मॉडल की सटीकता से संबंधित है।
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## पुनरावलोकन और स्व-अध्ययन
## समीक्षा और स्व-अध्ययन
इस पाठ में हमने रैखिक रिग्रेशन के बारे में सीखा। अन्य महत्वपूर्ण प्रकार के रिग्रेशन भी हैं। स्टेपवाइज, रिज, लासो और इलास्टिकनेट तकनीकों के बारे में पढ़ें। अधिक जानने के लिए एक अच्छा कोर्स है [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
इस पाठ में हमने Linear Regression के बारे में सीखा। रिग्रेशन के अन्य महत्वपूर्ण प्रकार भी हैं। Stepwise, Ridge, Lasso और Elasticnet तकनीकों के बारे में पढ़ें। एक अच्छा कोर्स सीखने के लिए है [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## असाइनमेंट
## असाइनमेंट
[मॉडल बनाएँ](assignment.md)
[एक मॉडल बनाएं](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। यद्यपि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या गलतियां हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में अधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में दस्तावेज़ को ही अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,15 +1,15 @@
# व्यंजन वर्गीकरणकर्ता 1
# व्यंजन वर्गीकर्ता 1
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटा सेट का उपयोग करेंगे, जिसमें संतुलित और साफ डेटा है, जो विभिन्न व्यंजनों के बारे में है।
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटासेट का उपयोग करेंगे, जिसमें संतुलित, साफ-सुथरा डेटा व्यंजनों के बारे में है।
आप इस डेटा सेट का उपयोग विभिन्न वर्गीकरणकर्ताओं के साथ करेंगे ताकि _सामग्री के समूह के आधार पर किसी राष्ट्रीय व्यंजन की भविष्यवाणी की जा सके_। ऐसा करते समय, आप यह जानेंगे कि वर्गीकरण कार्यों के लिए एल्गोरिदम का उपयोग कैसे किया जा सकता है।
आप इस डेटासेट का उपयोग विभिन्न वर्गीकर्ताओं के साथ _एक समूह के घटकों के आधार पर दिए गए राष्ट्रीय व्यंजन की भविष्यवाणी करने के लिए_ करेंगे। ऐसा करते समय, आप सीखेंगे कि कैसे कुछ एल्गोरिदमों का उपयोग वर्गीकरण कार्यों के लिए किया जा सकता है।
## [ाठ-पूर्व क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## [्रारंभिक व्याख्यान क्विज़](https://ff-quizzes.netlify.app/en/ml/)
# तैयारी
मान लें कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, सुनिश्चित करें कि _cleaned_cuisines.csv_ फ़ाइल इन चार पाठों के लिए रूट `/data` फ़ोल्डर में मौजूद है।
मान लेते हैं कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, तो सुनिश्चित करें कि एक _cleaned_cuisines.csv_ फ़ाइल रूट `/data` फ़ोल्डर में इन चार पाठों के लिए मौजूद है।
## अभ्यास - राष्ट्रीय व्यंजन की भविष्यवाणी करे
## अभ्यास - एक राष्ट्रीय व्यंजन का अनुमान लगाए
1. इस पाठ के _notebook.ipynb_ फ़ोल्डर में काम करते हुए, उस फ़ाइल को Pandas लाइब्रेरी के साथ आयात करें:
@ -28,9 +28,8 @@
| 2 | 2 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 3 | 3 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. अब, कुछ और लाइब्रेरी आयात करें:
1. अब, क और लाइब्रेरी आयात करें:
```python
from sklearn.linear_model import LogisticRegression
@ -40,7 +39,7 @@
import numpy as np
```
1. X और y निर्देशांक को प्रशिक्षण के लिए दो डेटा फ्रेम में विभाजित करें। `cuisine` लेबल्स डेटा फ्रेम हो सकता है:
1. X और y निर्देशांकों को दो डेटा फ्रेमों में विभाजित करें प्रशिक्षण के लिए। `cuisine` लेबल वाला डेटा फ्रेम हो सकता है:
```python
cuisines_label_df = cuisines_df['cuisine']
@ -58,14 +57,14 @@
Name: cuisine, dtype: object
```
1. उस `Unnamed: 0` कॉलम और `cuisine` कॉलम को हटा दें, `drop()` का उपयोग करके। बाकी डेटा को ट्रेनिंग फीचर्स के रूप में सहेजें:
1. उस `Unnamed: 0` कॉलम और `cuisine` कॉलम को ड्रॉप करें, `drop()` कॉल करते हुए। बाकी डेटा को प्रशिक्षण योग्य फ़ीचर्स के रूप में सहेजें:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
आपके फीचर्स इस प्रकार दिख हैं:
आपके फीचर्स इस प्रकार दिखेंगे:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,75 +74,75 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
अब आप अपने मॉडल को प्रशिक्षित करने के लिए तैयार हैं!
अब आप अपने मॉडल को प्रशिक्षण देने के लिए तैयार हैं!
## अपने वर्गीकरणकर्ता का चयन करना
## अपना वर्गीकर्ता चुनना
अब जब आपका डेटा साफ और प्रशिक्षण के लिए तैयार है, तो आपको यह तय करना होगा कि इस काम के लिए कौन सा एल्गोरिदम उपयोग करना है।
अब जब आपका डेटा साफ और प्रशिक्षण के लिए तैयार है, आपको यह निर्णय लेना होगा कि किस एल्गोरिदम का उपयोग करना है।
Scikit-learn वर्गीकरण को सुपरवाइज्ड लर्निंग के तहत वर्गीकृत करता है, और इस श्रेणी में आपको वर्गीकरण के कई तरीके मिलेंगे। [विविधता](https://scikit-learn.org/stable/supervised_learning.html) पहली नज़र में काफी भ्रमित करने वाली लग सकती है। निम्नलिखित विधिया सभी वर्गीकरण तकनीकों को शामिल करती हैं:
Scikit-learn वर्गीकरण को Supervised Learning के अंतर्गत रखता है, और इस श्रेणी में आप कई वर्गीकरण के तरीके पाएंगे। [विविधता](https://scikit-learn.org/stable/supervised_learning.html) पहली नज़र में काफी भ्रमित कर सकती है। निम्नलिखित विधिया सभी वर्गीकरण तकनीकों को शामिल करती हैं:
- रैखिक मॉडल
- सपोर्ट वेक्टर मशीन
- स्टोकेस्टिक ग्रेडिएंट डिसेंट
- निकटतम पड़ोसी
- गॉसियन प्रक्रियाएं
- गौसियन प्रोसेस
- निर्णय वृक्ष
- समुच्चय विधियां (वोटिंग क्लासिफायर)
- एन्सेम्बल विधियाँ (वोटिंग क्लासिफायर)
- मल्टीक्लास और मल्टीआउटपुट एल्गोरिदम (मल्टीक्लास और मल्टीलेबल वर्गीकरण, मल्टीक्लास-मल्टीआउटपुट वर्गीकरण)
> आप [न्यूरल नेटवर्क का उपयोग करके डेटा को वर्गीकृत](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) भी कर सकते हैं, लेकिन यह इस पाठ के दायरे से बाहर है।
> आप [तंत्रिका नेटवर्क](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification) का उपयोग करके भी डेटा वर्गीकृत कर सकते हैं, लेकिन वह इस पाठ का हिस्सा नहीं है।
### कौन सा वर्गीकरणकर्ता चुनें?
### किस वर्गीकर्ता को चुनें?
तो, आपको कौन सा वर्गीकरणकर्ता चुनना चाहिए? अक्सर, कई विकल्पों को आजमाना और अच्छे परिणाम की तलाश करना एक तरीका होता है। Scikit-learn एक [साइड-बाय-साइड तुलना](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) प्रदान करता है, जिसमें KNeighbors, SVC दो तरीके, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB और QuadraticDiscriminationAnalysis की तुलना की जाती है, और परिणामों को विज़ुअलाइज़ किया जाता है:
तो, आपको कौन सा वर्गीकर्ता चुनना चाहिए? अक्सर, कई को आजमाकर और अच्छे परिणाम की तलाश करके परीक्षण किया जाता है। Scikit-learn एक [साइड-बाय-साइड तुलना](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) प्रदान करता है, जहां KNeighbors, SVC दो तरीकों से, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB और QuadraticDiscrinationAnalysis की तुलना एक बनाए गए डेटासेट पर की जाती है, जो परिणामों को विज़ुअलाइज्ड दिखाती है:
![वर्गीकरणकर्ताओं की तुलना](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> Scikit-learn के दस्तावेज़ों पर उत्पन्न प्लॉट्स
![क्लासिफायर की तुलना](../../../../translated_images/hi/comparison.edfab56193a85e7f.webp)
> प्लॉट Scikit-learn के दस्तावेज़ में बनाए गए
> AutoML इस समस्या को आसानी से हल करता है, इन तुलनाओं को क्लाउड में चलाकर, जिससे आप अपने डेटा के लिए सबसे अच्छा एल्गोरिदम चुन सकते हैं। इसे [यहां आज़माएं](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML इस समस्या को क्लाउड में इन तुलनाओं को चलाकर अच्छी तरह से हल करता है, जिससे आप अपने डेटा के लिए सबसे अच्छा एल्गोरिदम चुन सकते हैं। इसे [यहा](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott) आज़माएं।
### एक बेहतर दृष्टिकोण
बेतरतीब ढंग से अनुमान लगाने से बेहतर तरीका यह है कि इस डाउनलोड करने योग्य [ML चीट शीट](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) के विचारों का पालन करें। यहां, हम पाते हैं कि हमारे मल्टीक्लास समस्या के लिए हमारे पास कुछ विकल्प हैं:
एक बेहतर तरीका होता है अंधाधुंध अनुमान लगाने से, इस डाउनलोड योग्य [एमएल चीट शीट](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) के विचारों का पालन करना। यहाँ, हम पाते हैं कि हमारे मल्टीक्लास समस्या के लिए कुछ विकल्प हैं:
![मल्टीक्लास समस्याओं के लिए चीटशीट](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> Microsoft के एल्गोरिदम चीट शीट का एक भाग, जिसमें मल्टीक्लास वर्गीकरण विकल्पों का विवरण है
![मल्टीक्लास समस्याओं के लिए चीट शीट](../../../../translated_images/hi/cheatsheet.07a475ea444d2223.webp)
> माइक्रोसॉफ्ट के Algorithm Cheat Sheet का एक खंड, जो मल्टीक्लास वर्गीकरण विकल्पों को विस्तार से बताता है
✅ इस चीट शीट को डाउनलोड करें, प्रिंट करें, और इसे अपनी दीवार पर टांग दें!
✅ इस चीट शीट को डाउनलोड करें, प्रिंट करें, और इसे अपनी दीवार पर लगाएं!
### तर्क
आइए देखें कि हम अपने पास मौजूद बाधाओं को ध्यान में रखते हुए विभिन्न दृष्टिकोणों के माध्यम से तर्क कर सकते हैं:
आइए देखें कि हमारे पास मौजूद प्रतिबंधों के आधार पर विभिन्न दृष्टिकोणों के बारे में तर्क कैसे किया जा सकता है:
- **न्यूरल नेटवर्क बहुत भारी हैं** हमारे साफ लेकिन न्यूनतम डेटा सेट को देखते हुए, और तथ्य यह है कि हम प्रशिक्षण को स्थानीय रूप से नोटबुक्स के माध्यम से चला रहे हैं, न्यूरल नेटवर्क इस कार्य के लिए बहुत भारी हैं।
- **कोई दो-क्लास वर्गीकरणकर्ता नहीं** हम दो-क्लास वर्गीकरणकर्ता का उपयोग नहीं करते हैं, इसलिए यह विकल्प बाहर हो जाता है
- **निर्णय वृक्ष या लॉजिस्टिक रिग्रेशन काम कर सकते हैं** निर्णय वृक्ष काम कर सकता है, या मल्टीक्लास डेटा के लिए लॉजिस्टिक रिग्रेशन।
- **मल्टीक्लास बूस्टेड निर्णय वृक्ष अलग समस्या हल करते हैं**। मल्टीक्लास बूस्टेड निर्णय वृक्ष गैर-पैरामीट्रिक कार्यों के लिए सबसे उपयुक्त है, जैसे रैंकिंग बनाने के लिए डिज़ाइन किए गए कार्य, इसलिए यह हमारे लिए उपयोगी नहीं है।
- **तंत्रिका नेटवर्क बहुत भारी हैं** हमारे साफ़, लेकिन न्यूनतम डेटासेट और स्थानीय नोटबुक के माध्यम से प्रशिक्षण चलाने के कारण, तंत्रिका नेटवर्क इस कार्य के लिए बहुत भारी हैं।
- **कोई दो-क्लास वर्गीकर्ता नहीं** हम दो-क्लास वर्गीकर्ता का उपयोग नहीं करते, इसलिए वन-वर्सेस-ऑल rule लागू नहीं होता
- **निर्णय वृक्ष या लॉजिस्टिक रिग्रेशन काम कर सकते हैं** निर्णय वृक्ष काम कर सकता है, या मल्टीक्लास डेटा के लिए लॉजिस्टिक रिग्रेशन सही हो सकता है
- **मल्टीक्लास बूस्टेड निर्णय वृक्ष एक अलग समस्या हल करता है।** मल्टीक्लास बूस्टेड निर्णय वृक्ष गैर-पैरामीट्रिक कार्यों के लिए उपयुक्त होता है, जैसे रैंकिंग बनाने के कार्य, इसलिए यह हमारे लिए उपयोगी नहीं है।
### Scikit-learn का उपयोग करना
हम अपने डेटा का विश्लेषण करने के लिए Scikit-learn का उपयोग करेंगे। हालांकि, Scikit-learn में लॉजिस्टिक रिग्रेशन का उपयोग करने के कई तरीके हैं। [ास करने के लिए पैरामीटर](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression) पर एक नज़र डालें
हम अपने डेटा का विश्लेषण करने के लिए Scikit-learn का उपयोग करेंगे। हालांकि, Scikit-learn में लॉजिस्टिक रिग्रेशन के उपयोग के कई तरीके हैं। [ैरामीटर देखें](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)।
मूल रूप से दो महत्वपूर्ण पैरामीटर हैं - `multi_class` और `solver` - जिन्हें हमें निर्दिष्ट करना होगा, जब हम Scikit-learn से लॉजिस्टिक रिग्रेशन करने के लिए कहते हैं। `multi_class` मान एक निश्चित व्यवहार लागू करता है। solver का मान यह निर्धारित करता है कि कौन सा एल्गोरिदम उपयोग करना है। सभी solver को सभी `multi_class` मानों के साथ जोड़ा नहीं जा सकता
मूल रूप से दो महत्वपूर्ण पैरामीटर हैं - `multi_class` और `solver` - जिन्हें हमें निर्दिष्ट करना होगा, जब हम Scikit-learn से लॉजिस्टिक रिग्रेशन करवाते हैं। `multi_class` का मान कुछ व्यवहार लागू करता है। `solver` का मान एल्गोरिथ्म बताता है। सभी solvers सभी `multi_class` मानों के साथ संगत नहीं होते
दस्तावेज़ों के अनुसार, मल्टीक्लास मामले में, प्रशिक्षण एल्गोरिदम:
दस्तावेज़ के अनुसार, मल्टीक्लास मामले में, प्रशिक्षण एल्गोरिदम:
- **one-vs-rest (OvR) योजना का उपयोग करता है**, यदि `multi_class` विकल्प `ovr` पर सेट है।
- **क्रॉस-एंट्रॉपी लॉस का उपयोग करता है**, यदि `multi_class` विकल्प `multinomial` पर सेट है। (वर्तमान में `multinomial` विकल्प केवल lbfgs, sag, saga और newton-cg solver द्वारा समर्थित है।)
- **वन-वर्सेस-रेस्ट (OvR) स्कीम का उपयोग करता है**, अगर `multi_class` विकल्प `ovr` पर सेट हो
- **क्रॉस-एंट्रॉपी लॉस का उपयोग करता है**, अगर `multi_class` विकल्प `multinomial` पर सेट हो। (वर्तमान में `multinomial` विकल्प केवल lbfgs, sag, saga और newton-cg solvers के द्वारा समर्थित है।)
> 🎓 यहां 'scheme' 'ovr' (one-vs-rest) या 'multinomial' हो सकता है। चूंकि लॉजिस्टिक रिग्रेशन वास्तव में बाइनरी वर्गीकरण का समर्थन करने के लिए डिज़ाइन किया गया है, ये योजनाएं इसे मल्टीक्लास वर्गीकरण कार्यों को बेहतर तरीके से संभालने की अनुमति देती हैं। [स्रोत](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 यहाँ 'स्कीम' हो सकती है 'ovr' (वन-वर्सेस-रेस्ट) या 'multinomial'। क्योंकि लॉजिस्टिक रिग्रेशन वास्तव में बाइनरी वर्गीकरण का समर्थन करता है, ये स्कीमें इसे मल्टीक्लास वर्गीकरण कार्यों को बेहतर हैंडल करने देती हैं। [स्रोत](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'solver' को "अनुकूलन समस्या में उपयोग करने के लिए एल्गोरिदम" के रूप में परिभाषित किया गया है। [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'solver' को "ऑप्टिमाइजेशन समस्या में उपयोग किए जाने वाले एल्गोरिद्म" के रूप में परिभाषित किया गया है। [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
Scikit-learn इस तालिका की पेशकश करता है ताकि यह समझाया जा सके कि solver विभिन्न प्रकार की डेटा संरचनाओं द्वारा प्रस्तुत विभिन्न चुनौतियों को कैसे संभालते हैं:
Scikit-learn इस तालिका के माध्यम से समझाता है कि विभिन्न solvers विभिन्न डेटा संरचनाओं की चुनौतियों को कैसे संभालते हैं:
![solvers](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![सॉल्वर](../../../../translated_images/hi/solvers.5fc648618529e627.webp)
## अभ्यास - डेटा को विभाजित करें
हम अपने पहले प्रशिक्षण परीक्षण के लिए लॉजिस्टिक रिग्रेशन पर ध्यान केंद्रित कर सकते हैं क्योंकि आपने हाल ही में पिछले पाठ में इसके बारे में सीखा था।
अपने डेटा को प्रशिक्षण और परीक्षण समूहों में विभाजित करें, `train_test_split()` को कॉल करके:
हम अपने पहले प्रशिक्षण प्रयास के लिए लॉजिस्टिक रिग्रेशन पर ध्यान केंद्रित कर सकते हैं, क्योंकि आपने हाल ही में पिछले पाठ में इसके बारे में सीखा है।
अपने डेटा को प्रशिक्षण और परीक्षण समूहों में विभाजित करें `train_test_split()` कॉल करके:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -151,9 +150,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## अभ्यास - लॉजिस्टिक रिग्रेशन लागू करें
चूंकि आप मल्टीक्लास मामले का उपयोग कर रहे हैं, आपको यह चुनना होगा कि कौन सा _scheme_ उपयोग करना है और कौन सा _solver_ सेट करना है। मल्टीक्लास सेटिंग और **liblinear** solver के साथ LogisticRegression का उपयोग करें।
चूंकि आप मल्टीक्लास केस का उपयोग कर रहे हैं, इसलिए आपको यह चुनना होगा कि कौन-सी _स्कीम_ इस्तेमाल करनी है और किस _solver_ को सेट करना है। लॉजिस्टिक रिग्रेशन का उपयोग करें मल्टीक्लास सेटिंग के साथ और प्रशिक्षण के लिए **liblinear** solver का चयन करें।
1. एक लॉजिस्टिक रिग्रेशन बनाएं जिसमें multi_class `ovr` पर सेट हो और solver `liblinear` पर सेट हो:
1. `multi_class` को `ovr` पर सेट करें और `solver` को `liblinear` पर सेट करते हुए लॉजिस्टिक रिग्रेशन बनाएं:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,11 +162,13 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ एक अलग solver जैसे `lbfgs` आज़माएं, जिसे अक्सर डिफ़ॉल्ट रूप में सेट किया जाता है।
> ध्यान दें, जब आवश्यक हो, तो अपने डेटा को समतल करने के लिए Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) फ़ंक्शन का उपयोग करें।
सटीकता **80%** से अधिक है!
✅ एक अलग solver जैसे `lbfgs` भी आजमाएं, जो अक्सर डिफ़ॉल्ट होता है
1. आप इस मॉडल को एक डेटा की पंक्ति (#50) का परीक्षण करके देख सकते हैं:
> ध्यान दें, जरूरत पड़ने पर अपने डेटा को फ्लैट करने के लिए Pandas का [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) फ़ंक्शन उपयोग करें।
सटीकता **80%** से ऊपर अच्छी है!
1. आप इस मॉडल को एक पंक्ति (#50) के डेटा का परीक्षण करके सक्रिय रूप में देख सकते हैं:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
@ -181,9 +182,8 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
cuisine: indian
```
✅ एक अलग पंक्ति संख्या आज़माएं और परिणाम जांचें।
1. गहराई में जाएं, आप इस भविष्यवाणी की सटीकता की जांच कर सकते हैं:
✅ किसी अलग पंक्ति संख्या की कोशिश करें और परिणाम देखें।
1. गहराई से जांच करने के लिए, आप इस भविष्यवाणी की सटीकता की जांच कर सकते हैं:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +195,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
परिणाम प्रिंट होता है - भारतीय व्यंजन इसका सबसे अच्छा अनुमान है, अच्छी संभावना के साथ:
परिणाम प्रिंट किया गया है - भारतीय व्यंजन इसका सबसे अच्छा अनुमान है, अच्छी संभावना के साथ:
| | 0 |
| -------: | -------: |
@ -205,9 +205,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ क्या आप समझा सकते हैं कि मॉडल को क्यों पूरा यकीन है कि यह भारतीय व्यंजन है?
✅ क्या आप समझा सकते हैं कि मॉडल क्यों काफी सुनिश्चित है कि यह भारतीय व्यंजन है?
1. अधिक विवरण प्राप्त करें, जैसा आपने रिग्रेशन पाठों में किया था, एक वर्गीकरण रिपोर्ट प्रिंट करके:
1. रिग्रेशन पाठों की तरह, वर्गीकरण रिपोर्ट प्रिंट करके और अधिक विवरण प्राप्त करें:
```python
y_pred = model.predict(X_test)
@ -221,24 +221,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀चुनौती
इस पाठ में, आपने अपने साफ किए गए डेटा का उपयोग करके एक मशीन लर्निंग मॉडल बनाया जो सामग्री की एक श्रृंखला के आधार पर राष्ट्रीय व्यंजन की भविष्यवाणी कर सकता है। Scikit-learn द्वारा डेटा वर्गीकृत करने के लिए प्रदान किए गए कई विकल्पों को पढ़ने के लिए कुछ समय निकालें। 'solver' की अवधारणा में गहराई से जाएं ताकि समझ सकें कि पर्दे के पीछे क्या होता है।
इस पाठ में, आपने अपनी साफ़ की गई डेटा का उपयोग करके एक मशीन लर्निंग मॉडल बनाया जो सामग्री की एक श्रृंखला के आधार पर राष्ट्रीय व्यंजन की भविष्यवाणी कर सकता है। डेटा को वर्गीकृत करने के लिए Scikit-learn द्वारा प्रदान किए गए कई विकल्पों को पढ़ने के लिए कुछ समय निकालें। 'सॉल्वर' की अवधारणा में गहराई से जाएं ताकि आप समझ सकें कि पर्दे के पीछे क्या होता है।
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## [पाठ के बाद का क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
लॉजिस्टिक रिग्रेशन के पीछे गणित को [इस पाठ](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) में थोड़ा और गहराई से समझें।
## असाइनमेंट
[इस पाठ](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf) में लॉजिस्टिक रिग्रेशन के पीछे की गणित पर थोड़ा और गहराई से जानें।
## असाइनमेंट
[सॉल्वर का अध्ययन करें](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -10,14 +10,14 @@
### 🌐 बहुभाषी समर्थन
#### GitHub Action के माध्यम से समर्थित (स्वचालित एवं हमेशा अपडेटेड)
#### GitHub Action के माध्यम से समर्थित (स्वचालित और हमेशा अद्यतित)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](./README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
> **स्थानीय रूप से क्लोन करना पसंद करते हैं?**
>
> इस रिपोजिटरी में 50+ भाषा अनुवाद शामिल हैं जो डाउनलोड आकार को काफी बढ़ाते हैं। यदि अनुवादों के बिना क्लोन करना है, तो sparse checkout का उपयोग करें:
> यह रिपॉजिटरी 50+ भाषा अनुवादों को शामिल करती है जो डाउनलोड आकार को काफी बढ़ाती है। अनुवाद के बिना क्लोन करने के लिए, sparse checkout का उपयोग करें:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,62 +33,62 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> यह आपको कोर्स पूरा करने के लिए आवश्यक सब कुछ देता है, जिससे डाउनलोड बहुत तेजी से होता है
> इससे आपको कोर्स पूरा करने के लिए आवश्यक सब कुछ तेज़ी से डाउनलोड होगा
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### हमारे समुदाय में शामिल हों
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
हमारे पास Discord पर AI के साथ सीखने की एक शृंखला चल रही है, इसके बारे में अधिक जानें और 18 - 30 सितंबर, 2025 को [Learn with AI Series](https://aka.ms/learnwithai/discord) में जुड़ें। आपको GitHub Copilot का Data Science में उपयोग करने के टिप्स और ट्रिक्स मिलेंगे।
हमारे पास एक Discord पर AI के साथ सीखने की श्रृंखला चल रही है, अधिक जानने और जुड़ने के लिए जाएं [Learn with AI Series](https://aka.ms/learnwithai/discord) 18 - 30 सितंबर, 2025 को। आपको डेटा साइंस के लिए GitHub Copilot का उपयोग करने के टिप्स और ट्रिक्स मिलेंगे।
![Learn with AI series](../../translated_images/hi/3.9b58fd8d6c373c20.webp)
# शुरुआती लोगों के लिए मशीन लर्निंग - एक पाठ्यक्रम
> 🌍 दुनिया भर में यात्रा करें क्योंकि हम मशीन लर्निंग को विश्व की संस्कृतियों के माध्यम से सीखते हैं 🌍
> 🌍 विश्व की संस्कृतियों के माध्यम से मशीन लर्निंग का अन्वेषण करते हुए विश्वभर की यात्रा करें 🌍
Microsoft के क्लाउड समर्थक 12 सप्ताह, 26-लेसन का पाठ्यक्रम प्रस्तुत करते हैं, जो पूरी तरह से **मशीन लर्निंग** के बारे में है। इस पाठ्यक्रम में, आप उस तकनीक के बारे में सीखेंगे जिसे कभी-कभी **क्लासिक मशीन लर्निंग** कहा जाता है, जिसमें मुख्य रूप से Scikit-learn पुस्तकालय का उपयोग होता है और गहरे शिक्षण (डेप लर्निंग) से बचा जाता है, जो हमारे [AI for Beginners' curriculum](https://aka.ms/ai4beginners) में शामिल है। इन पाठों को हमारे ['डेटा साइंस फॉर बिगिनर्स' पाठ्यक्रम](https://aka.ms/ds4beginners) के साथ जोड़ा जा सकता है
Microsoft के क्लाउड एडवोकेट्स आपको **मशीन लर्निंग** के बारे में 12 सप्ताह, 26-पाठ के पाठ्यक्रम की पेशकश करते हैं। इस पाठ्यक्रम में, आप कभी-कभी 'क्लासिक मशीन लर्निंग' कहा जाने वाला विषय सीखेंगे, जो मुख्य रूप से Scikit-learn लाइब्रेरी का उपयोग करता है और डीप लर्निंग से बचता है, जिसका कवरेज हमारी [AI for Beginners' curriculum](https://aka.ms/ai4beginners) में है। इन पाठों को हमारे ['डेटा साइंस फॉर बिगिनर्स' पाठ्यक्रम](https://aka.ms/ds4beginners) के साथ संयोजित करें
हमारे साथ दुनिया भर की यात्रा पर चलें जब हम क्लासिक तकनीकों को दुनिया के विभिन्न क्षेत्रों के डेटा पर लागू करते हैं। प्रत्येक पाठ में पूर्व और पश्चात क्विज़, पाठ पूरा करने के लिए लिखित निर्देश, समाधान, असाइनमेंट और बहुत कुछ शामिल है। हमारा परियोजना-आधारित शिक्षण मॉडल आपको निर्माण के दौरान सीखने का अवसर प्रदान करता है, जो नई क्षमताओं को लंबे समय तक याद रखने का एक प्रमाणित तरीका है।
हमारे साथ विश्वभर की यात्रा करें क्योंकि हम विभिन्न क्षेत्रों के डेटा पर क्लासिक तकनीकों को लागू करते हैं। प्रत्येक पाठ में प्री और पोस्ट-लेसन क्विज, लिखित निर्देश, समाधान, असाइनमेंट आदि शामिल हैं। हमारी परियोजना आधारित शिक्षण पद्धति आपको निर्माण करते हुए सीखने का मौका देती है, जो नई कौशलों को 'अटके' रहने का सिद्ध तरीका है।
**✍️ हमारे लेखकों को हार्दिक धन्यवाद** जेन लूपर, स्टीफन हाउल, फ्रांसेस्का लैज़ेरी, टोमॉमी इमुरा, कासी ब्रीवियु, दिमित्री सोश्निकोव, क्रिस नोरिंग, अनिर्बान मुखर्जी, ऑर्नेला अल्टुयान, रूथ याकुबु और एमी बॉयड
**✍️ हमारे लेखकों को हार्दिक धन्यवाद** जेन लूपर, स्टीफन हाउल, फ्रांसेस्का लज़्ज़ेरी, टोमोमी इमुरा, कैसी ब्रेवियू, दिमित्री सोशनिकोव, क्रिस नोरिंग, अनिर्बान मुखर्जी, ऑर्नेला अल्टुन्यान, रुथ याकुबू और ऐमी बॉयड
**🎨 हमारे चित्रकारों का भी धन्यवाद** टोमॉमी इमुरा, दासनी मुदिपल्ली, और जेन लूपर
**🎨 हमारे चित्रकारों को धन्यवाद** टोमोमी इमुरा, दिसानी मैडीपाली, और जे़न लूपर
**🙏 हमारे Microsoft Student Ambassador लेखकों, समीक्षकों और सामग्री योगदानकर्ताओं को विशेष धन्यवाद**, विशेषकर ऋषित दागली, मुहम्मद साकिब खान इनान, रोहन राज, एलेक्जेंडर पेट्रेस्कु, अभिषेक जायसवाल, नवरीन तबस्सुम, इवान समुइला, और स्नीघा अग्रवाल
**🙏 Microsoft Student Ambassador लेखकों, समीक्षकों और सामग्री योगदानकर्ताओं को विशेष धन्यवाद**, विशेष रूप से ऋषित दागली, मुहम्मद साकिब खान इनान, रोहन राज, अलेक्जेंड्रू पेट्रेस्कु, अभिषेक जायसवाल, नवरिन ताबस्सुम, इवान सामुइला, और स्निग्धा अग्रवाल
**🤩 Microsoft Student Ambassadors एरिक वंजाउ, जसलीन सोंधी, और विदुषी गुप्ता को हमारे R पाठों के लिए अतिरिक्त धन्यवाद!**
**🤩 Microsoft Student Ambassadors एरिक वंजाऊ, जसलिन सोंधी, और विदुषी गुप्ता को R पाठों के लिए अतिरिक्त आभार!**
# शुरुआत करना
# शुरुआत
इन चरणों का पालन करें:
1. **रिपोजिटरी को फोर्क करें**: इस पृष्ठ के दाहिने ऊपर "Fork" बटन पर क्लिक करें।
2. **रिपोजिटरी क्लोन करें**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **रिपॉजिटरी को फोर्क करें**: इस पेज के ऊपर-दाएँ कोने में "Fork" बटन पर क्लिक करें।
2. **रिपॉजिटरी को क्लोन करें**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [इस कोर्स के लिए सभी अतिरिक्त संसाधन हमारे Microsoft Learn संग्रह में देखें](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [इस कोर्स के सभी अतिरिक्त संसाधन Microsoft Learn संग्रह में पाएँ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **मदद चाहिए?** आम समस्याओं के समाधान के लिए हमार [Troubleshooting Guide](TROUBLESHOOTING.md) को देखें।
> 🔧 **मदद चाहिए?** आम समस्याओं के समाधान के लिए हमार [Troubleshooting Guide](TROUBLESHOOTING.md) देखें।
**[छात्र](https://aka.ms/student-page)**, इस पाठ्यक्रम का उपयोग करने के लिए, पूरी रिपोजिटरी को अपने GitHub खाते पर फोर्क करें और अभ्यास स्वयं या समूह में पूरा करें:
**[छात्रों](https://aka.ms/student-page)**, इस पाठ्यक्रम का उपयोग करने के लिए, पूरे रिपॉजिटरी को अपने GitHub खाते पर फोर्क करें और स्वयं या समूह के साथ अभ्यास पूरा करें:
- प्री-लेक्चर क्विज़ से शुरू करें।
- व्याख्यान पढ़ें और गतिविधियां पूरी करें, प्रत्येक ज्ञान जांच पर रुककर विचार करें।
- समाधान कोड चलाने के बजाय पाठ्यक्रम को समझकर परियोजनाएँ बनाने का प्रयास करें; हालांकि वह कोड प्रत्येक प्रोजेक्ट आधारित पाठ में `/solution` फ़ोल्डर में उपलब्ध है।
- पोस्ट-लेक्चर क्विज लें।
- चुनौती पूरी करें।
- प्री-लेक्चर क्विज से शुरुआत करें।
- व्याख्यान पढ़ें और गतिविधियाँ पूरी करें, प्रत्येक ज्ञान जांच पर रुकें और सोचें।
- समाधान कोड चलाने के बजाय पाठ को समझकर परियोजनाएं बनाने का प्रयास करें; हालांकि कोड प्रत्येक परियोजना आधारित पाठ के `/solution` फ़ोल्डर में उपलब्ध है।
- पोस्ट-लेक्चर क्विज लें।
- चैलेंज पूरा करें।
- असाइनमेंट पूरा करें।
- एक पाठ्य समूह पूरा करने के बाद, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) पर जाएँ और उपयुक्त PAT रूब्रिक भरकर "सरल भाषा में सीखें"। 'PAT' एक प्रोग्रेस असेसमेंट टूल है जिसे आप अपनी सीख बढ़ाने के लिए भरते हैं। आप अन्य PATs पर भी प्रतिक्रिया दे सकते हैं ताकि हम साथ सीख सकें।
- किसी भी लेसन समूह को पूरा करने के बाद, [Discussion Board](https://github.com/microsoft/ML-For-Beginners/discussions) पर जाएं और सही PAT रूपांकन भरकर "उच्चारित करें"। PAT एक प्रगति मूल्यांकन उपकरण है जो आपकी सीख को आगे बढ़ाता है। आप अन्य PAT पर प्रतिक्रियाएँ भी दे सकते हैं ताकि हम एक साथ सीखें।
> आगे के अध्ययन के लिए, हम अनुशंसा करते हैं कि आप इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल और लर्निंग पाथ का अनुसरण करें।
> आगे पढ़ाई के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल और सीखने के रास्तों का पालन करने की सलाह देते हैं।
**शिक्षकों के लिए**, हमने [कुछ सुझाव शामिल किए हैं](for-teachers.md) कि इस पाठ्यक्रम का उपयोग कैसे करें
**शिक्षकों**, हमने इस पाठ्यक्रम का उपयोग कैसे करें, इस पर कुछ [सुझाव शामिल किए हैं](for-teachers.md)।
---
## वीडियो वॉकथ्रू
कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। आप इन्हें पाठों के बीच में या [Microsoft Developer YouTube चैनल पर ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) में नीचे की छवि पर क्लिक करके देख सकते हैं।
कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। इन्हें आप पाठों में इन-लाइन देख सकते हैं, या Microsoft Developer YouTube चैनल पर [ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) में नीचे दिए चित्र पर क्लिक करके देख सकते हैं।
[![ML for beginners banner](../../translated_images/hi/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
@ -96,83 +96,83 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
## टीम से मिलें
[![प्रमो वीडियो](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**GIF द्वारा** [मोहित जाएसाल](https://linkedin.com/in/mohitjaisal)
**गिफ़ के निर्माता** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 परियोजना और इसे बनाने वाले लोगों के बारे में वीडियो के लिए ऊपर की छवि पर क्लिक करें!
> 🎥 परियोजना और इसे बनाने वालों के बारे में वीडियो देखने के लिए ऊपर के चित्र पर क्लिक करें!
---
## शिक्षण पद्धति
हमने इस पाठ्यक्रम को बनाते समय दो शिक्षण सिद्धांत चुने हैं: यह सुनिश्चित करना कि यह हाथों-हाथ सीखने वाला **परियोजना-आधारित** हो और इसमें **बार-बार क्विज़** शामिल हो। इसके अलावा, इस पाठ्यक्रम में एक सामान्य **थीम** है जो इसे सामंजस्यपूर्ण बनाती है।
इस पाठ्यक्रम को बनाते समय हमने दो शैक्षणिक सिद्धांत चुनें हैं: यह सुनिश्चित करना कि यह **प्रोजेक्ट-आधारित** और हैंड्स-ऑन हो तथा इसमें **बार-बार क्विज़** शामिल हो। इसके अलावा, इस पाठ्यक्रम का एक साझा **थीम** है जो इसे एकजुट बनाता है।
सामग्री को परियोजनाओं के अनुरूप बनाकर, प्रक्रिया को छात्रों के लिए अधिक रोचक बनाया जाता है और अवधारणाओं को बनाए रखना बढ़ता है। इसके अलावा, कक्षा से पहले एक आसान क्विज़ छात्र के विषय सीखने के इरादे को सेट करता है, जबकि कक्षा के बाद दूसरा क्विज़ लंबे समय तक याददाश्त सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार होने के लिए डिज़ाइन किया गया है और इसे पूरे या भाग में लिया जा सकता है। परियोजनाएं छोटी शुरुआत करती हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाती हैं। इस पाठ्यक्रम में मशीन लर्निंग के वास्तविक दुनिया में अनुप्रयोगों पर एक पोस्टस्क्रिप्ट भी शामिल है, जिसका उपयोग अतिरिक्त क्रेडिट या चर्चा के लिए आधार के रूप में किया जा सकता है।
सामग्री का प्रोजेक्ट्स के साथ मिलान करने से छात्रों के लिए प्रक्रिया अधिक रोचक हो जाती है और अवधारणाओं की स्थिरता बढ़ती है। इसके अलावा, कक्षा से पहले का एक कम दबाव वाला क्विज छात्र की विषय सीखने की इच्छा को स्थापित करता है, जबकि कक्षा के बाद दूसरा क्विज चारों ओर प्रतिधारण सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मनोरंजक बनाया गया है और इसे पूरा या अंशतः लिया जा सकता है। प्रोजेक्ट्स छोटे शुरू होते हैं और 12-सप्ताह के अंत तक धीरे-धीरे जटिल हो जाते हैं। इस पाठ्यक्रम में वास्तविक दुनिया के ML अनुप्रयोगों पर पोस्टस्क्रिप्ट भी शामिल है, जिसे अतिरिक्त क्रेडिट या चर्चा के आधार के रूप में इस्तेमाल किया जा सकता है।
> हमारा [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translations](..), और [Troubleshooting](TROUBLESHOOTING.md) दिशानिर्देश देखें। आपके रचनात्मक सुझावों का स्वागत है!
> हमारे [व्यवहार संहिता](CODE_OF_CONDUCT.md), [योगदान](CONTRIBUTING.md), [अनुवाद](..), और [समस्याओं का समाधान](TROUBLESHOOTING.md) दिशानिर्देश देखें। हम आपकी रचनात्मक प्रतिक्रिया का स्वागत करते हैं!
## प्रत्येक पाठ में शामिल हैं
- वैकल्पिक स्केचनोट
- वैकल्पिक पूरक वीडियो
- वीडियो वॉकथ्रू (कुछ पाठों के लिए)
- [प्री-लेक्चर वॉर्मअप क्विज़](https://ff-quizzes.netlify.app/en/ml/)
- वीडियो वॉकथ्रू (कुछ पाठों में)
- [प्री-लेक्चर वार्मअप क्विज](https://ff-quizzes.netlify.app/en/ml/)
- लिखित पाठ
- परियोजना-आधारित पाठों के लिए, परियोजना बनाने के चरण-दर-चरण मार्गदर्शिका
- परियोजना आधारित पाठों के लिए, परियोजना को कैसे बनाएं पर चरण-दर-चरण गाइड
- ज्ञान जांच
- एक चुनौती
- पूरक पठन
- पूरक पठन सामग्री
- असाइनमेंट
- [पोस्ट-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/)
> **भाषाओं के बारे में एक नोट**: ये लेसन मुख्य रूप से Python में लिखे गए हैं, लेकिन कई R में भी उपलब्ध हैं। एक R लेसन पूरा करने के लिए, `/solution` फ़ोल्डर में जाएं और R लेसनों को देखें। इनमें एक .rmd एक्सटेंशन होता है जो एक **R Markdown** फ़ाइल का प्रतिनिधित्व करता है जिसे सरलता से `कोड खंडों` (R या अन्य भाषाओं के) और एक `YAML हेडर` (जो PDF जैसे आउटपुट को फॉर्मैट करने का मार्गदर्शन करता है) के एम्बेडिंग के रूप में परिभाषित किया जा सकता है `Markdown दस्तावेज़` में। इसलिए, यह डेटा साइंस के लिए एक उत्कृष्ट लेखन ढांचा के रूप में कार्य करता है क्योंकि यह आपको अपने कोड, उसका आउटपुट, और अपने विचारों को Markdown में लिखने की अनुमति देकर जोड़ने की अनुमति देता है। इसके अलावा, R Markdown दस्तावेज़ों को PDF, HTML, या Word जैसे आउटपुट प्रारूपों में प्रस्तुत किया जा सकता है
> **प्रश्नोत्तरी के बारे में एक नोट**: सभी प्रश्नोत्तरी [Quiz App फ़ोल्डर](../../quiz-app) में निहित हैं, कुल 52 प्रश्नोत्तरी हैं जिनमें प्रत्येक में तीन प्रश्न होते हैं। वे पाठों के भीतर लिंक किए गए हैं लेकिन क्विज़ ऐप को स्थानीय रूप से चलाया जा सकता है; `quiz-app` फ़ोल्डर में दिए गए निर्देशों का पालन करें ताकि इसे स्थानीय रूप से होस्ट या Azure पर तैनात किया जा सके
| पाठ संख्या | विषय | पाठ समूह | सीखने के उद्देश्य | लिंक किए गए पाठ | लेखक |
| :---------: | :------------------------------------------------------------: | :--------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------ | :-----------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------: |
| 01 | मशीन लर्निंग का परिचय | [परिचय](1-Introduction/README.md) | मशीन लर्निंग के पीछे की मूल अवधारणाएँ सीखें | [पाठ](1-Introduction/1-intro-to-ML/README.md) | मुहम्मद |
| 02 | मशीन लर्निंग का इतिहास | [परिचय](1-Introduction/README.md) | इस क्षेत्र के पीछे का इतिहास जानें | [पाठ](1-Introduction/2-history-of-ML/README.md) | जेन और एमी |
| 03 | निष्पक्षता और मशीन लर्निंग | [परिचय](1-Introduction/README.md) | निष्पक्षता के आस-पास के महत्वपूर्ण दार्शनिक मुद्दे जो छात्र एमएल मॉडल बनाते और लागू करते समय विचार करे | [पाठ](1-Introduction/3-fairness/README.md) | टोमौमी |
| 04 | मशीन लर्निंग की तकनीकें | [परिचय](1-Introduction/README.md) | एमएल शोधकर्ता कौन-कौन सी तकनीकें उपयोग करते हैं एमएल मॉडल बनाने के लिए? | [पाठ](1-Introduction/4-techniques-of-ML/README.md) | क्रिस और जेन |
| 05 | अभिकलन का परिचय | [Regression](2-Regression/README.md) | Python और Scikit-learn के साथ अभिकलन मॉडलों के लिए शुरुआत करें | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | जेन • एरिक वांजाउ |
| 06 | उत्तरी अमेरिका के कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंग के लिए डेटा को साफ़ और विज़ुअलाइज़ करें | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | जेन • एरिक वांजाउ |
| 07 | उत्तरी अमेरिका के कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | रैखिक और बहुपद अभिकलन मॉडल बनाएं | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | जेन और दिमित्री • एरिक वांजाउ |
| 08 | उत्तरी अमेरिका के कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | एक लॉजिस्टिक अभिकलन मॉडल बनाएं | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | जेन • एरिक वांजाउ |
| 09 | एक वेब ऐप 🔌 | [वेब ऐप](3-Web-App/README.md) | अपने प्रशिक्षित मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं | [Python](3-Web-App/1-Web-App/README.md) | जेन |
| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ़ करें, तैयार करें, और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | जेन और कैसी • एरिक वांजाउ |
| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकारकों का परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | जेन और कैसी • एरिक वांजाउ |
| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | और अधिक वर्गीकरक | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | जेन और कैसी • एरिक वांजाउ |
| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक सिफारिश देने वाला वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | जेन |
| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ़ करें, तैयार करें, और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | जेन • एरिक वांजाउ |
| 15 | नाइजीरियाई संगीत स्वाद की खोज 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण करें | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | जेन • एरिक वांजाउ |
| 16 | प्राकृतिक भाषा संसाधन का परिचय ☕️ | [Natural language processing](6-NLP/README.md) | एक सरल बॉट बनाकर NLP के मूल बातें सीखें | [Python](6-NLP/1-Introduction-to-NLP/README.md) | स्टीफन |
| 17 | सामान्य NLP कार्य ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनाओं से निपटने के लिए आवश्यक सामान्य कार्यों को समझकर अपनी NLP ज्ञान गहराई से समझें | [Python](6-NLP/2-Tasks/README.md) | स्टीफन |
| 18 | अनुवाद और भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन ऑस्टेन के साथ अनुवाद और भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | स्टीफन |
| 19 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | स्टीफन |
| 20 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | स्टीफन |
| 21 | समय श्रृंखला पूर्वानुमान का परिचय | [Time series](7-TimeSeries/README.md) | समय श्रृंखला पूर्वानुमान का परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | फ्रांसेस्का |
| 22 | ⚡️ विश्व बिजली उपयोग ⚡️ - ARIMA के साथ समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA के साथ समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | फ्रांसेस्का |
| 23 | ⚡️ विश्व बिजली उपयोग ⚡️ - SVR के साथ समय श्रृंखला पूर्वानुमान | [Time series](7-TimeSeries/README.md) | सपोर्ट वेक्टर रेग्रेशनर के साथ समय श्रृंखला पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | अनिर्बन |
| 24 | सुदृढ़ीकरण शिक्षा का परिचय | [Reinforcement learning](8-Reinforcement/README.md) | क्यू-लर्निंग के साथ सुदृढ़ीकरण सीखने का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री |
| 25 | पीटर को भेड़िये से बचाने में मदद करें! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढ़ीकरण सीखने का जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री |
| उपसंहार | वास्तविक दुनिया के एमएल परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | पारंपरिक एमएल के रोचक और प्रकट करने वाले वास्तविक दुनिया के अनुप्रयोग | [पाठ](9-Real-World/1-Applications/README.md) | टीम |
| उपसंहार | RAI डैशबोर्ड का उपयोग करके ML में मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार AI डैशबोर्ड घटकों का उपयोग करके मशीन लर्निंग में मॉडल डिबगिंग | [पाठ](9-Real-World/2-Debugging-ML-Models/README.md) | रुथ याकुबू |
> [इस कोर्स के लिए हमारे Microsoft Learn संग्रह में सभी अतिरिक्त संसाधन खोजें](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## ऑफलाइन एक्सेस
आप [Docsify](https://docsify.js.org/#/) का उपयोग करके इस दस्तावेज़ को ऑफलाइन चला सकते हैं। इस रिपोज़िटरी को फोर्क करें, अपनी स्थानीय मशीन पर [Docsify इंस्टॉल करें](https://docsify.js.org/#/quickstart), और फिर इस रिपोज़िटरी के रूट फ़ोल्डर में टाइप करें `docsify serve`। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर सेवा प्रदान करेगी: `localhost:3000`
## PDF
इस पाठ्यक्रम का पीडीएफ लिंक सहित [यहां](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) देखें।
- [पोस्ट-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/)
> **भाषाओं के बारे में एक नोट**: ये पाठ मुख्य रूप से Python में लिखे गए हैं, लेकिन कई R में भी उपलब्ध हैं। R पाठ पूरा करने के लिए, `/solution` फ़ोल्डर पर जाएं और R पाठ देखें। इनमें .rmd एक्सटेंशन होता है जो एक **R Markdown** फ़ाइल को दर्शाता है जिसे सरलता से `कोड खंड` (R या अन्य भाषाओं के) और एक `YAML हेडर` (जो PDF जैसी आउटपुट स्वरूपों को प्रारूपित करने का मार्गदर्शन करता है) को `Markdown दस्तावेज़` में एम्बेड करने के रूप में परिभाषित किया जा सकता है। इसलिए, यह डेटा विज्ञान के लिए एक आदर्श लेखन ढांचा के रूप में कार्य करता है क्योंकि इससे आप अपना कोड, उसका आउटपुट, और अपने विचार एक साथ Markdown में लिख सकते हैं। इसके अलावा, R Markdown दस्तावेज़ PDF, HTML, या Word जैसे आउटपुट स्वरूपों में प्रस्तुत किए जा सकते हैं
> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [Quiz App फ़ोल्डर](../../quiz-app) में पाए जाते हैं, कुल 52 क्विज़ हैं जिनमें से प्रत्येक में तीन प्रश्न होते हैं। वे पाठों के भीतर से जुड़े होते हैं लेकिन क्विज़ ऐप स्थानीय रूप से चलाया जा सकता है; `quiz-app` फ़ोल्डर में निर्देशों का पालन करें ताकि आप इसे स्थानीय रूप से होस्ट या Azure पर तैनात कर सकें
| पाठ संख्या | विषय | पाठ समूह | सीखने के उद्देश्य | लिंक्ड पाठ | लेखक |
| :--------: | :------------------------------------------------------------: | :------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------: |
| 01 | मशीन लर्निंग का परिचय | [परिचय](1-Introduction/README.md) | मशीन लर्निंग के मूलभूत सिद्धांत सीखें | [पाठ](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | मशीन लर्निंग का इतिहास | [परिचय](1-Introduction/README.md) | इस क्षेत्र के इतिहास को जानें | [पाठ](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | निष्पक्षता और मशीन लर्निंग | [परिचय](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाते और लागू करते समय छात्रों को विचार करवाले निष्पक्षता के महत्वपूर्ण दार्शनिक मुद्दे क्या हैं? | [पाठ](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | मशीन लर्निंग के तकनीक | [परिचय](1-Introduction/README.md) | मशीन लर्निंग अनुसंधानकर्ता मशीन लर्निंग मॉडल बनाने के लिए कौन-कौन सी तकनीकें इस्तेमाल करते हैं? | [पाठ](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | प्रतिगमन का परिचय | [Regression](2-Regression/README.md) | प्रतिगमन मॉडलों के लिए Python और Scikit-learn के साथ शुरूआत करें | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | उत्तरी अमेरिका कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | ML के लिए डेटा को विज़ुअलाइज़ और साफ करें | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | उत्तरी अमेरिका कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | रैखिक और बहुपदीय प्रतिगमन मॉडल बनाएं | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | उत्तरी अमेरिका कद्दू के दाम 🎃 | [Regression](2-Regression/README.md) | एक लॉजिस्टिक प्रतिगमन मॉडल बनाएं | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | एक वेब ऐप 🔌 | [Web App](3-Web-App/README.md) | अपने प्रशिक्षित मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ, तैयार, और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताओं का परिचय | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | और अधिक वर्गीकरर्ता | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक अनुशंषा वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ, तैयार, और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | नाइजीरियाई संगीत स्वादों का अन्वेषण 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | प्राकृतिक भाषा प्रसंस्करण का परिचय ☕️ | [Natural language processing](6-NLP/README.md) | एक सरल बॉट बनाकर NLP के मूलभूत बातें सीखें | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | सामान्य NLP कार्य ☕️ | [Natural language processing](6-NLP/README.md) | भाषा संरचनाओं के साथ काम करने में आवश्यक सामान्य कार्यों को समझकर अपने NLP ज्ञान को गहरा करें | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | अनुवाद और भावना विश्लेषण ♥️ | [Natural language processing](6-NLP/README.md) | जेन ऑस्टेन के साथ अनुवाद और भावना विश्लेषण | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | यूरोप के रोमांटिक होटल ♥️ | [Natural language processing](6-NLP/README.md) | होटल समीक्षाओं के साथ भावना विश्लेषण 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | टाइम सीरीज पूर्वानुमान का परिचय | [Time series](7-TimeSeries/README.md) | टाइम सीरीज पूर्वानुमान का परिचय | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ विश्व ऊर्जा उपयोग ⚡️ - ARIMA के साथ टाइम सीरीज पूर्वानुमान | [Time series](7-TimeSeries/README.md) | ARIMA के साथ टाइम सीरीज पूर्वानुमान | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ विश्व ऊर्जा उपयोग ⚡️ - SVR के साथ टाइम सीरीज पूर्वानुमान | [Time series](7-TimeSeries/README.md) | Support Vector Regressor के साथ टाइम सीरीज पूर्वानुमान | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | सुदृढीकरण शिक्षण का परिचय | [Reinforcement learning](8-Reinforcement/README.md) | Q-लर्निंग के साथ सुदृढीकरण शिक्षण का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | पीटर को भेड़िये से बचाएँ! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण शिक्षण जिम | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| पोस्टस्क्रिप्ट | वास्तविक दुनिया के ML परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल ML के दिलचस्प और प्रकट करते हुए वास्तविक दुनिया के अनुप्रयोग | [पाठ](9-Real-World/1-Applications/README.md) | टीम |
| पोस्टस्क्रिप्ट | RAI डैशबोर्ड का उपयोग करके ML में मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार AI डैशबोर्ड कॉम्पनेट्स का उपयोग कर मशीन लर्निंग में मॉडल डिबगिंग | [पाठ](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [इस पाठ्यक्रम के लिए हमारे Microsoft Learn संग्रह में सभी अतिरिक्त संसाधन देखें](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## ऑफलाइन पहुंच
आप इस दस्तावेज़ को ऑफलाइन [Docsify](https://docsify.js.org/#/) का उपयोग करके चला सकते हैं। इस रिपॉजिटरी को फोर्क करें, अपने स्थानीय मशीन पर [Docsify स्थापित करें](https://docsify.js.org/#/quickstart), और फिर इस रिपॉजिटरी के रूट फ़ोल्डर में टाइप करें `docsify serve`। वेबसाइट आपके लोकलहोस्ट पर पोर्ट 3000 पर चलती रहेगी: `localhost:3000`
## पीडीएफ़
पाठ्यक्रम की पीडीएफ़ फाइल लिंक के साथ [यहाँ](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) देखें।
## 🎒 अन्य पाठ्यक्रम
हमारी टीम अन्य पाठ्यक्रम भी बनाती है! देखें:
हमारी टीम अन्य पाठ्यक्रम बनाती है! देखें:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -181,7 +181,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / एजेंट्स
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -189,7 +189,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### जनरेटिव एआई श्रृंखला
### जनरेटिव एआई श्रृंखला
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -197,7 +197,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### मूल सीखना
### कोर लर्निंग
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -208,7 +208,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### कोपिलॉट श्रृंखला
### कॉपिलट श्रृंखला
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
@ -216,22 +216,33 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
## सहायता प्राप्त करना
यदि आप फंसे हुए हैं या AI ऐप्स बनाने के बारे में कोई प्रश्न हैं। साथ सीखने वालों और अनुभवी डेवलपर्स के साथ MCP के बारे में चर्चाओं में शामिल हों। यह एक सहायक समुदाय है जहाँ प्रश्न स्वागत योग्य हैं और ज्ञान मुक्त रूप से साझा किया जाता है।
यदि आप मशीन लर्निंग सीखते समय या एआई अनुप्रयोग बनाने में फंस जाते हैं या आपके पास प्रश्न हैं, तो चिंता न करें — सहायता उपलब्ध है।
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
आप अन्य सीखने वालों और डेवलपर्स के साथ चर्चाओं में शामिल हो सकते हैं, प्रश्न पूछ सकते हैं, और अपनी विचारधाराएं समुदाय के साथ साझा कर सकते हैं।
- प्रश्न पूछने और दूसरों के साथ सीखने के लिए समुदाय में शामिल हों
- मशीन लर्निंग अवधारणाओं और परियोजना विचारों पर चर्चा करें
- अनुभवी डेवलपर्स से मार्गदर्शन प्राप्त करें
एक सहायक समुदाय आपके कौशल को विकसित करने और समस्याओं के समाधान को तेज़ करने का एक शानदार तरीका है।
यदि आपके पास उत्पाद प्रतिक्रिया या निर्माण के दौरान त्रुटियां हैं तो यहां जाएं:
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
यदि आपको बग, त्रुटियाँ मिलती हैं, या बेहतर बनाने के लिए सुझाव हैं, तो आप इस रिपॉजिटरी में एक **Issue** भी खोल सकते हैं ताकि समस्या रिपोर्ट की जा सके।
उत्पाद फीडबैक के लिए या मौजूदा समुदाय पोस्ट खोजने के लिए, डेवलपर फोरम देखें:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## अतिरिक्त सीखने के सुझाव
- बेहतर समझ के लिए प्रत्येक पाठ के बाद नोटबुक की समीक्षा करें।
- स्वयं एल्गोरिदम लागू करने का अभ्यास करें।
- सीखी गई अवधारणाओं का उपयोग करके वास्तविक दुनिया के डेटा सेट का अन्वेषण करें।
- अपने आप एल्गोरिदम को लागू करने का अभ्यास करें।
- सीखे गए सिद्धांतों का उपयोग करके वास्तविक दुनिया के डेटा सेट खोजें।
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**अस्वीकरण**:
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवादों में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में प्राधिकृत स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनूदित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी स्थानीय भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "ja"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T10:08:20+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:34:32+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ja"
},
@ -168,8 +168,8 @@
"language_code": "ja"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-06T09:36:18+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:35:49+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "ja"
},
@ -552,8 +552,8 @@
"language_code": "ja"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:57:02+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:30:40+00:00",
"source_file": "README.md",
"language_code": "ja"
},

@ -1,11 +1,11 @@
# Scikit-learnで回帰モデルを構築する回帰の4通りの方
# Scikit-learnを使った回帰モデルの構築4つの回帰手
## 初心者向けノート
線形回帰は、**数値を予測したいとき**に使います(例:家の価格、気温、売上など)
これは、入力特徴と出力の関係を最もよく表現する直線を見つけることで機能します。
線形回帰は、<strong>数値的な値</strong>(例えば、家の価格、気温、売上高)を予測したいときに使われます
入力特徴量と出力の関係を最もよく表す直線を見つけることで動作します。
このレッスンでは、より高度な回帰手法を探索する前に、概念の理解に焦点を当てます。
このレッスンでは、より高度な回帰手法に進む前に、概念の理解に重点を置きます。
![線形回帰と多項式回帰のインフォグラフィック](../../../../translated_images/ja/linear-polynomial.5523c7cb6576ccab.webp)
> インフォグラフィック作成者:[Dasani Madipalli](https://twitter.com/dasani_decoded)
## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
@ -13,86 +13,87 @@
> ### [このレッスンはRでも利用可能です](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### はじめに
これまで、かぼちゃの価格設定データセットから収集したサンプルデータを使って回帰とは何かを探ってきました。このレッスン全体を通して使うデータです。また、Matplotlibを用いて可視化も行いました。
これまで、かぼちゃの価格設定データセットから収集したサンプルデータを使って回帰とは何かを探りました。このレッスン全体でこのデータセットを使用します。また、Matplotlibを使って可視化も行いました。
さて、MLの回帰についてさらに深く掘り下げる準備が整いました。可視化はデータを理解するのに役立ちますが、機械学習の真の力は_モデルの訓練_にあります。モデルは過去のデータで訓練され、データの依存関係を自動的に捉え、新たな未見のデータに対して結果を予測できるようになります。
いよいよ機械学習の回帰をより深く掘り下げる準備ができました。可視化によりデータの内容を理解することはできますが、機械学習の真の強みは_モデルのトレーニング_にあります。モデルは過去のデータで学習し、自動的にデータの依存関係を捉え、新しいデータに対して予測を行うことができます。
このレッスンでは、_基本線形回帰_と_多項式回帰_の2種類の回帰についてと、それらのテクニックの背後にある数学を学びます。これらのモデルで異なる入力データに基づいてかぼちゃの価格予測ができるようになります。
このレッスンでは、_基本的な線形回帰_と_多項式回帰_の2種類の回帰について詳しく学び、それらの手法の背後にある数学も一部扱います。これらのモデルを利用して、さまざまな入力データに基づいたかぼちゃの価格を予測します。
[![初心者向け機械学習 - 線形回帰の理解](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初心者向け機械学習 - 線形回帰の理解")
[![初心者のための機械学習 - 線形回帰の理解](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "初心者のための機械学習 - 線形回帰の理解")
> 🎥 上の画像をクリックすると、線形回帰の短いビデオ概要が見られます。
> 🎥 上の画像をクリックすると線形回帰の簡単な動画概要が見られます。
> このカリキュラム全体を通じて、数学の知識は最小限に抑え、他分野から来た学生にも理解しやすくすることを目指しています。理解を助けるためにノート、🧮 数学解説、図解、その他の学習ツールに注意してください
> このカリキュラム全体を通じて、数学の知識は最小限に抑え、他分野から来た学生でも理解しやすいよう工夫しています。メモ、🧮 コールアウト、図解などの学習支援も随所にあります
### 前提条件
かぼちゃのデータ構造についてはすでに理解しているはずです。このレッスンの _notebook.ipynb_ ファイル内に、事前に読み込みと整形済みのデータがあります。その中で、かぼちゃの価格が単位「ブッシェル容量単位」あたりの価格として新しいデータフレームに表示されています。Visual Studio Codeのカーネル環境でこれらのートブックが実行できることを確認してください。
かぼちゃデータの構造に既に慣れているはずです。このレッスンの_notebook.ipynb_に前処理済みの状態で組み込まれています。ファイル内ではバッシェル単位のかぼちゃ価格が新しいデータフレームに表示されています。Visual Studio Codeのカーネルでこれらのートブックが動作するか必ず確認してください。
### 準備
念のため、データを読み込む目的は「データに質問を投げかける」ことです。
念のために言えば、このデータを読み込み、そこから質問を立てることが目的です。
- かぼちゃを買うのに最適な時期はいつ
- ミニかぼちゃの1箱あたりの価格はどのくらいになる
- 半ブッシェルのバスケットで買うべきか、それとも1 1/9ブッシェルの箱で買うべきか?
このデータをさらに掘り下げていきましょう。
- かぼちゃを買うベストな時期はいつか
- ミニかぼちゃのケースの価格はいくらか
- 半バッシェルのバスケットと1 1/9バッシェルの箱、どちらで買うべきか?
さらにデータを深掘りしていきましょう。
前のレッスンで、Pandasのデータフレームを作成し、元のデータセットの一部を取り込み、価格をブッシェル単位で標準化しました。ただし、その際約400ポイントのデータで、かぼちゃの季節の月のデータのみを対象にしていました。
のレッスンで、Pandasのデータフレームを作成し、元のデータセットの一部を抽出、バッシェル単位で価格を標準化しました。しかしその際、約400件のデータポイントしか得られず、対象は秋の月だけでした。
今レッスンの添付ノートブックにプリロードされたデータを見てみましょう。データが事前に読み込まれ、月ごとの散布図がプロットされています。もっと詳細にこのデータの性質を知るため、さらにクリーニングをしてみましょう
このレッスンのノートブックにプリロードされたデータを見てみましょう。データは既に読み込まれ、月ごとの散布図が作成されています。データの性質をもう少し詳しく理解するため、データをさらにクリーニングすることができるかもしれません
## 線形回帰直線
## 線形回帰直線
レッスン1で学んだように、線形回帰のゴールは直線をプロットして、
レッスン1で学んだように、線形回帰の目的は直線をプロットして、
- **変数の関係を示す**。変数間の関係を示す
- **予測を行う**。その直線に対する新しいデータ点の位置を正確に予測すること
- <strong>変数間の関係を示すこと</strong>。変数間の関係を表現する
- <strong>予測を行うこと</strong>。新しいデータ点がその直線に対してどこに位置するかを正確に予測する
の2つです。
ことです。
**最小二乗法回帰**では、こうした直線を引くのが典型的です。「最小二乗法」とはモデルの誤差の合計を最小化するプロセスを指します。全てのデータ点について、実際の点と回帰直線の縦方向の距離(残差と呼ばれます)を測ります。
この種の直線を引くのは通常、<strong>最小二乗回帰</strong>と呼ばれる手法です。「最小二乗」はモデル内の誤差(残差)を最小化するプロセスを指します。各データポイントに対して、実際の点と回帰直線との垂直距離(残差)を測ります。
この距離の二乗を取る理由は2つあります:
二乗和を使う理由は主に2つです:
1. **大きさを重視し符号は無視する**:誤差が-5でも+5でも同じ扱いにするため、すべて正の値にするため。
2. **外れ値へのペナルティ**:二乗することで大きい誤差に重みづけし、離れた点に近づくよう直線を引く。
1. <strong>大きさを重視し方向は無視</strong>:誤差の-5も+5も同じ扱いにしたいため、全て正の値にするために二乗します。
この二乗誤差を全て足し合わせ、その合計が最も小さくなる直線を求めます。これが「最小二乗」という名前の由来です。
2. <strong>外れ値へのペナルティ</strong>:大きな誤差により大きな重みを与えることで、遠く離れた点に線が近づくようにします。
> **🧮 数学を見てみましょう**
>
> この直線は_最良適合線_とも呼ばれ、[次の式](https://en.wikipedia.org/wiki/Simple_linear_regression)で表されます:
>
これらの二乗値の合計を計算し、その合計が最小となる直線を探します。これが「最小二乗法」の名前の由来です。
> **🧮 数学を見てみましょう**
>
> この直線は_最適適合直線_と呼ばれ、[次の式](https://en.wikipedia.org/wiki/Simple_linear_regression)で表されます:
>
> ```
> Y = a + bX
> ```
> `X`は“説明変数”、`Y`は“目的変数”です。直線の傾きを`b`、切片を`a`と呼び、`X=0`のときの`Y`の値を指します。
>
>![傾きを計算](../../../../translated_images/ja/slope.f3c9d5910ddbfcf9.webp)
> `X`は「説明変数」、`Y`は「目的変数」です。直線の傾きは`b`、`a`は切片で、`X=0`のときの`Y`の値を指します。
>
>![傾きの計算](../../../../translated_images/ja/slope.f3c9d5910ddbfcf9.webp)
>
> まず傾き`b`を計算します。インフォグラフィック作成者:[Jen Looper](https://twitter.com/jenlooper)
> まず傾き`b`を計算します。インフォグラフィックは [Jen Looper](https://twitter.com/jenlooper) さん作成
>
> 言い換えると、かぼちゃのデータの質問「月ごとのかぼちゃのブッシェル単価を予測する」で考えると、`X`は価格、`Y`は販売月を表します。
> 言い換えれば、「月ごとのかぼちゃ価格を予測する」というオリジナルの問題に関連するとき、`X`が価格、`Y`が販売月を表します。
>
>![式を完成させる](../../../../translated_images/ja/calculation.a209813050a1ddb1.webp)
>![計算の完成](../../../../translated_images/ja/calculation.a209813050a1ddb1.webp)
>
> `Y`の値を計算します。約4ドルなら、それは4月で間違いありません インフォグラフィック作成者:[Jen Looper](https://twitter.com/jenlooper)
> `Y`の値を計算します。価格が約4ドルなら4月と推測インフォグラフィックは [Jen Looper](https://twitter.com/jenlooper) さん作成
>
> この式は、`Y`が`X=0`の時どこに位置するか(切片)と、傾きからなる直線の傾斜を計算する数学的な方法です。
> 直線計算の数学は、切片(`X=0`の場合の`Y`の値)に依存する傾きを示す必要があります。
>
> これらの計算方法は[Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)のウェブサイトでも確認できます。また、[この最小二乗計算機](https://www.mathsisfun.com/data/least-squares-calculator.html)で数値の影響を確認してみてください
> これらの値の算出方法は [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) のサイトで説明されています。また [この最小二乗計算機](https://www.mathsisfun.com/data/least-squares-calculator.html) で数値が直線に与える影響を確認できます
## 相関
もう一つ理解すべき用語は、与えられたX変数とY変数間の**相関係数**です。散布図でこの係数を視覚的に簡単に見ることができます。データ点がきれいな直線上に散らばっていると強い相関を持ち、点がばらばらだと弱い相関を示します。
理解すべきもう一つの用語は、与えられたXとY変数間の<strong>相関係数</strong>です。散布図を使えば、この係数を素早く視覚的に把握できます。データ点がきれいに一直線上に散らばっている場合は高い相関があり、XとYの間で点がバラバラに散らばっていれば相関は低いです。
良い線形回帰モデルは、最小二乗法回帰で計算した線形回帰の相関係数が高い0に近いより1に近いものです。
良い線形回帰モデルとは、最小二乗法の回帰直線で高い0より1に近い相関係数を持つモデルです。
✅ このレッスンに付属のノートブックを実行し、価格の散布図を見てください。かぼちゃの販売では、月と価格の関連は散布図の見た目で「高い」相関でしょうか、それとも「低い」相関でしょうか? さらに、`Month`を細かくした指標、例えば*年中何日目か*で見るとどうでしょうか?
✅ このレッスンのノートブックを実行し、月と価格の散布図を見てください。かぼちゃの月と価格の関連は、散布図の視覚的解釈から見ると高い相関でしょうか?それとも低いでしょうか?また、`Month`ではなく、より細かい指標(例えば、年始からの通算日数)を使うとどう変わるか確認してください。
以下のコードでは、データのクリーニングが済んで、このような`new_pumpkins`というデータフレームがあると仮定します:
以下のコードでは、データがクリーニングされ、`new_pumpkins`という名前のデータフレームが得られていると仮定します。以下のようなデータです:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@ -102,36 +103,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://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初心者向け機械学習 - 相関 を探そう:線形回帰のカギ")
[![初心者のための機械学習 - 相関関係の探求:線形回帰の鍵](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "初心者のための機械学習 - 相関関係の探求:線形回帰の鍵")
> 🎥 上の画像をクリックすると、相関の短いビデオ概要が見られます。
> 🎥 上の画像をクリックすると相関関係の簡単な動画概要が見られます。
のレッスンで月ごとの平均価格が以下のようだったことを思い出してください
回のレッスンでは月ごとの平均価格は以下のようでした
<img alt="月ごとの平均価格" src="../../../../translated_images/ja/barchart.a833ea9194346d76.webp" width="50%"/>
これを見ると何らかの相関がありそうです。`Month`と`Price`、あるいは`DayOfYear`と`Price`の関係を予測する線形回帰モデルを訓練できます。後者の関係を示す散布図はこちらです:
これは一定の相関関係があることを示唆しています。そこで、`Month`と`Price`間、もしくは`DayOfYear`と`Price`間の関係性を予測する線形回帰モデルのトレーニングを試みます。以下がその後者の散布図です:
<img alt="日付(年中の日数)と価格の散布図" src="../../../../translated_images/ja/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="価格と年初からの日数の散布図" src="../../../../translated_images/ja/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
`corr`関数を使って相関を確認すると
`corr`関数で相関を見てみましょう
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
相関は小さめで、`Month`で-0.15、`DayOfYear`で-0.17のようです。しかし、他に重要な関係性があるようにも見えます。かぼちゃの品種ごとに異なる価格のクラスタができているように見えます。これを確認するため、それぞれの品種を異なる色で散布図にプロットし、`scatter`関数の`ax`パラメータに軸を渡して全ポイントを同一グラフ上に描きます:
月を使った場合-0.15、日数を使った場合-0.17と相関は小さいように見えますが、別の重要な関係もありそうです。どうやら価格のクラスターはかぼちゃの品種によって異なっているようです。この仮説を確かめるため、品種ごとに色分けしてプロットします。`scatter`関数に`ax`パラメータを渡すことで全ての点を同じグラフ上に描画できます:
```python
ax=None
@ -141,42 +142,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="日付と価格の散布図(品種別カラー" src="../../../../translated_images/ja/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="価格と年初からの日数の散布図(色分けあり" src="../../../../translated_images/ja/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
調査の結果、価格に最も影響を与えるのは販売日ではなく品種である可能性が高いことがわかります。これを棒グラフでも示します:
調査の結果、品種が販売日の影響よりも総価格に影響を与えていることが示されました。棒グラフでもわかります:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="品種価格の棒グラフ" src="../../../../translated_images/ja/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="品種ごとの価格の棒グラフ" src="../../../../translated_images/ja/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
ここでは一旦「パイタイプ」のかぼちゃのみに注目し、日付が価格に与える影響を見てみましょう:
ここでは一旦、かぼちゃ品種の一つである「パイタイプ」に焦点を当て、日付が価格に与える影響を見てみましょう:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="日付と価格の散布図(パイタイプのみ)" src="../../../../translated_images/ja/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="価格と年初からの日数の散布図(パイタイプのみ)" src="../../../../translated_images/ja/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
`corr`関数で`Price`と`DayOfYear`間の相関を計算すると、およそ `-0.27` となり、予測モデルの訓練が合理的であることがわかります。
ここで`Price`と`DayOfYear`の相関を`corr`関数で計算すると、約`-0.27`となります。つまり予測モデルを学習する価値があると言えます。
> 線形回帰モデルを訓練する前に、データがクリーンであることが大切です。線形回帰は欠損値があるとうまく機能しないため、空のセルは全部除去した方がよいでしょう
> 線形回帰モデルをトレーニングする前に、データがクリーンかどうか確認しましょう。線形回帰は欠損値に弱いため、空のセルを削除するのが有効です
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
別の方法は、欠損値を対応する列の平均値で埋める方法です。
別の方法としては、空のセルを対応する列の平均値で埋める方法もあります。
## 単純線形回帰
[![初心者向け機械学習 - Scikit-learnを使った線形回帰と多項式回帰](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初心者向け機械学習 - Scikit-learnを使った線形回帰と多項式回帰")
[![初心者のための機械学習 - Scikit-learnによる線形回帰と多項式回帰](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "初心者のための機械学習 - Scikit-learnによる線形回帰と多項式回帰")
> 🎥 上の画像をクリックすると、線形回帰と多項式回帰の短いビデオ概要が見られます。
> 🎥 上の画像をクリックすると線形回帰と多項式回帰の簡単な動画概要が見られます。
線形回帰モデルを訓練するには、**Scikit-learn** ライブラリを使います。
線形回帰モデルのトレーニングには<strong>Scikit-learn</strong>ライブラリを使用します。
```python
from sklearn.linear_model import LinearRegression
@ -184,69 +185,70 @@ 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`を適用したことに注意してください。線形回帰では、2次元配列の入力を期待し、配列の各行が入力特徴量のベクトルを表します。本例では入力が1つだけなので、形状はN×1Nはデータセットのサイズにします
> 入力データに`reshape`を施した理由は、線形回帰パッケージが正しく理解するためです。線形回帰は2次元配列を入力として期待しており、配列の各行は入力特徴量のベクトルに対応します。今回は入力がひとつだけなので、形状はN×1となりますNはデータセットのサイズ
次に、データを訓練用と検証用に分割して、モデルの検証ができるようにします:
次に、トレーニング用データとテスト用データに分割し、学習後にモデルの検証ができるようにします:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
最後に、実際に線形回帰モデルの訓練は2行のコードで済みます。まず`LinearRegression`オブジェクトを定義し、`fit`メソッドでデータに当てはめます:
最後に、線形回帰モデルのトレーニングはたった2行のコードです。`LinearRegression`オブジェクトを定義し、その`fit`メソッドでデータにフィットさせます:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`fit` メソッド実行後の `LinearRegression` オブジェクトには回帰のての係数が含まれており、`.coef_` プロパティを使ってアクセスできます。今回の場合、係数はひとつだけで、約 `-0.017` となるはずです。これは、価格が時間とともに少しずつ1日あたり約2セントほど下がる傾向にあることを意味します。回帰線が Y軸と交差する点は `lin_reg.intercept_`アクセスでき、今回の場合は約 `21` で、年初の価格を示しています。
`fit` 後の `LinearRegression` オブジェクトには回帰のすべての係数が含まれており、`.coef_` プロパティを使ってアクセスできます。今回の場合、係数はひとつだけで、約 `-0.017` です。これは価格が時間とともに少しずつ下がる傾向があることを示しており、1日あたり約2セントの減少を意味します。また、回帰直線のY軸との交点には `lin_reg.intercept_` を使ってアクセスでき、今回の場合は約 `21` で、年初の価格を示しています。
モデルの精度を確かめるには、テストデータセットで価格を予測し、その予測値が期待値にどれだけ近いかを測ります。これは、平均二乗誤差MSEを使って行い、期待値と予測値の差を二乗した値の平均を計算します。
モデルの精度を確認するために、テストデータセットで価格を予測し、その予測値が期待値にどれだけ近いかを測定できます。これは二乗平均平方根誤差RMSEという指標を使って行い、期待値と予測値のすべての二乗差の平均の平方根を計算します。
```python
pred = lin_reg.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 = 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%となり、あまり良くありません。モデル品質の別の指標として <strong>決定係数</strong> があります。これは次のように取得できます:
```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)
```
<img alt="Linear regression" src="../../../../translated_images/ja/linear-results.f7c3552c85b0ed1c.webp" width="50%" />
## 多項式回帰
線形回帰の別のタイプに多項式回帰があります。変数間に線形関係がある場合(例えば、かぼちゃの体積が大きいほど価格が高い)がある一方、関係性が平面や直線で表現できない場合もあります。
線形回帰の別のタイプとして多項式回帰があります。変数間に必ずしも線形関係があるとは限らず、たとえばカボチャの体積が大きいほど価格が高くなる場合でも、それが平面や直線として表現できないことがあります。
✅ こちらに多項式回帰に向く[さらにいくつかの例](https://online.stat.psu.edu/stat501/lesson/9/9.8)があります。
✅ こちらに [多項式回帰が有効な他の例](https://online.stat.psu.edu/stat501/lesson/9/9.8) があります
改めて、日付と価格の関係を見てみましょう。この散布図は必ずしも直線で分析すべきでしょうか?価格は変動し得ますよね。この場合、多項式回帰を試すことができます。
再度、日付と価格の関係を見てみましょう。この散布図は必ずしも直線で分析すべきものに見えますか?価格が変動することはありませんか?この場合、多項式回帰を試すことができます。
✅ 多項式は、1つまたは複数の変数と係数からなる数学的表現です
✅ 多項式はつまたは複数の変数と係数からなる数学的表現です
多項式回帰は非線形データに合うように曲線を作成します。今回は、入力データに2乗した `DayOfYear` を追加することで、年のある時点で最小値を持つ放物線でデータにフィットできるはずです。
多項式回帰は非線形データにより適合するカーブを作ります。今回の場合、入力データに二乗した `DayOfYear` 変数を含めれば、パラボラカーブによりデータを近似でき、年のある時点で最小値を持つ曲線ができます。
Scikit-learn には、異なるデータ処理ステップを連結するための便利な [パイプライン API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) が含まれています。**パイプライン** は**推定器**の連鎖です。今回は、多項式特徴量を追加してから回帰を学習するパイプラインを作成します。
Scikit-learn にはデータ処理の複数ステップを結合できる便利な [パイプラインAPI](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) があります。<strong>パイプライン</strong>は一連の<strong>推定器</strong>から構成されます。ここでは最初に多項式特徴を追加し、その後回帰の学習を行うパイプラインを作成します:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -256,61 +258,61 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
`PolynomialFeatures(2)` を使うと、入力データからすべての2次多項式を含めます。今回の場合は `DayOfYear`<sup>2</sup> だけですが、X と Y という2つの入力変数があれば X<sup>2</sup>、XY、Y<sup>2</sup> が追加されます。より高次の多項式も使えます。
`PolynomialFeatures(2)` を使うと、入力データから全ての2次の多項式が含まれます。今回の場合は `DayOfYear`<sup>2</sup> だけですが、X と Y という2つの入力変数がある場合、X<sup>2</sup>、XY、Y<sup>2</sup> が追加されます。必要に応じて、より高次の多項式も使えます。
パイプラインは元の `LinearRegression` オブジェクトと同様に使え、`fit` して `predict` で予測が可能です。以下はテストデータと近似曲線のグラフです。
パイプラインは元の `LinearRegression` オブジェクトと同様に使えるので、`fit` で学習し `predict` で予測結果を得られます。以下の図はテストデータと近似曲線です:
<img alt="Polynomial regression" src="../../../../translated_images/ja/poly-results.ee587348f0f1f60b.webp" width="50%" />
多項式回帰を使うとMSEがやや下がり、決定係数は上がりますが大きな変化ではありません。より正確な予測には他の特徴も考慮する必要があります!
多項式回帰を使うことで、わずかにMSEは下がり、決定係数は上がりますが、大きな変化ではありません。他の特徴量も考慮する必要があります!
> 価格が最も低くなるのがハロウィン頃であることがわかります。これをどう説明できますか?
> 最低のカボチャ価格がハロウィーン付近に現れることがわかります。これはどう説明できますか?
🎃 おめでとうございます、パイ用かぼちゃの価格を予測できるモデルを作成できました。おそらく他のかぼちゃの種類でも同じ手順を繰り返せますが、それは大変です。次はかぼちゃの品種をモデルに取り入れる方法を学びましょう!
🎃 おめでとうございます。パイ用カボチャの価格を予測できるモデルを作成できました。同じ手順をすべてのカボチャの種類に繰り返せるはずですが、それは面倒でしょう。次は品種をモデルに組み込む方法を学びましょう!
## カテゴリ特徴量
## カテゴリカル特徴量
理想的には、同じモデルで異なるかぼちゃの品種の価格を予測したいですが、`Variety` 列は `Month` のような数値型の列とは異なり、非数値の値を含みます。こうした列は **カテゴリ特徴量** と呼ばれます。
理想的には、同じモデルで異なるカボチャの品種の価格を予測したいです。ただし `Variety` 列は `Month` のように数値ではなく、数値以外の値を含みます。このような列は <strong>カテゴリカル</strong> と呼ばれます。
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 上の画像をクリックすると、カテゴリ特徴量を使う簡単なビデオ説明が見られます
> 🎥 カテゴリカル特徴を使う方法を簡単に解説した動画は上の画像をクリックしてください
ここでは品種ごとの平均価格の違いがわかります。
ここでは種類ごとの平均価格がどう違うかがわかります:
<img alt="Average price by variety" src="../../../../translated_images/ja/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
品種を考慮するためには、まず数値形式に変換、つまり **エンコード** が必要です。エンコードにはいくつか方法があります。
品種を考慮するには、まず数値形式に変換(<strong>エンコード</strong>)する必要があります。方法はいくつかあります:
* 単純な **数値エンコード** は異なる品種のテーブルを作り、品種名をそのテーブルのインデックスに置き換えます。しかし線形回帰ではこれは良くない方法です。線形回帰はインデックスの数値をそのまま係数と掛け合わせて結果に加えるため、インデックス番号と価格の間の関係が非線形であっても無理に線形として扱ってしまうからです。
* **ワンホットエンコード** は `Variety` 列を各品種ごとに4列に分けます。各列には該当する品種の行だけ `1`、それ以外は `0` が入ります。これにより、線形回帰では各かぼちゃ品種に対して4つの係数があり、それぞれの品種の「ベース価格あるいは追加分」を決めることができます。
* 単純な <strong>数値エンコード</strong> は異なる品種の一覧を作り、その品種名をインデックスに置き換えます。線形回帰ではこれはあまりよくありません。なぜなら線形回帰がインデックスの数値を実際の値として使い、それに係数を掛けて結果に加えるからです。今回の場合、インデックス番号と価格の関係は明らかに非線形で、インデックスの順序をどう決めてもそうです。
* <strong>ワンホットエンコード</strong>`Variety` 列を4つの別列に置き換え、それぞれが品種の一つを表します。各列には該当品種なら `1`、そうでなければ `0` が入ります。これにより、線形回帰は4つの係数を持ち、それぞれが特定品種の「基準価格」より正確には「追加価格」を表します。
以下はワンホットエンコードの例です。
以下のコードはワンホットエンコードのサンプルです:
```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
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
ワンホットエンコードされた品種を入力にして線形回帰を学習するには、`X` と `y` データを正しく初期化するだけです。
ワンホットエンコードした品種を入力にして線形回帰を学習するには、適切に `X``y` データを初期化すればよいです:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
残りのコードは先に使った線形回帰の学習と同じです。試してみると平均二乗誤差はほぼ同じですが、決定係数が大幅に向上し約77%になります。さらに正確な予測のためには、今回の例のようにカテゴリー特徴量と `Month``DayOfYear` といった数値特徴量の両方を考慮できます。複数の特徴量配列を結合するために `join` を使います。
それ以外のコードはこれまでの線形回帰の学習時と同じです。これを試すと平均二乗誤差はほぼ同じながら、決定係数はかなり高く約77%)なります。さらに精度を上げるには、ほかのカテゴリカル特徴や数値特徴(例:`Month` や `DayOfYear`)も考慮します。特徴量をひとつの大きな配列にまとめるには `join` を使います:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,12 +321,12 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
ここでは `City``Package` の種類も考慮し、MSEは2.8410%、決定係数は0.94となりました!
ここではさらに `City``Package` の種類も考慮し、MSEは2.8410%、決定係数は0.94となります。
## まとめて実装
## 総合的なモデル作成
も良いモデルを作るため、上記の複合(ワンホットエンコードされたカテゴリ+数値)データを多項式回帰と組み合わせます。以下は便利のための完全なコードです。
最高のモデルを作るため、上記の組み合わせ(ワンホットエンコードしたカテゴリカル+数値)データを多項式回帰と組み合わせます。以下はその完全なコードです:
```python
# トレーニングデータを設定する
@ -337,7 +339,7 @@ y = new_pumpkins['Price']
# トレイン・テスト分割を行う
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# パイプラインを設定しトレーニングする
# パイプラインを設定しトレーニングする
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
@ -351,37 +353,37 @@ print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
これにより、決定係数は約97%、MSEは2.23約8%の予測誤差)まで向上します。
これで決定係数は約97%、MSEは2.23予測誤差約8%)となります。
| モデル | MSE | 決定係数 |
|-------|-----|---------|
| `DayOfYear` 線形回帰 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多項式回帰 | 2.73 (17.0%) | 0.08 |
| `Variety` 線形回帰 | 5.24 (19.7%) | 0.77 |
| 全特徴量 線形回帰 | 2.84 (10.5%) | 0.94 |
| 全特徴量 多項式回帰 | 2.23 (8.25%) | 0.97 |
|-------|-----|----------|
| `DayOfYear` 線形 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 多項式 | 2.73 (17.0%) | 0.08 |
| `Variety` 線形 | 5.24 (19.7%) | 0.77 |
| 全特徴量 線形 | 2.84 (10.5%) | 0.94 |
| 全特徴量 多項式 | 2.23 (8.25%) | 0.97 |
🏆 よくできましたこのレッスンで4つの回帰モデルを作成し、モデルの精度を97%まで向上させました。最後の回帰のセクションでは、カテゴリを判定するロジスティック回帰を学びます。
🏆 お疲れ様でしたこのレッスンで4つの回帰モデルを作り、モデル精度を97%まで高めました。回帰の最後のセクションでは、ロジスティック回帰について学びカテゴリ分類を行います。
---
## 🚀チャレンジ
このノートブックで異なる変数をいくつか試して、相関関係がモデルの精度にどう影響するか確かめてください
このノートブックで異なる変数をいくつか試し、相関がモデル精度にどう影響するかを調べてみましょう
## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## 復習 &
## 復習と自主学
このレッスンでは線形回帰について学びました。他にも重要な回帰の型があります。部分的な変数選択(ステップワイズ)、リッジ回帰、ラッソ回帰、エラスティックネットなどの技術について読んでみてください。より学ぶのに良いコースは [スタンフォード統計学習コース](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) です。
本レッスンでは線形回帰について学びました。ほかにも重要な回帰手法があります。Stepwise、Ridge、Lasso、Elasticnet などの手法を調べてみましょう。深く学びたい場合は [スタンフォード大学の統計学習コース](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) が良い教材です。
## 課題
[モデル作成](assignment.md)
[モデル構築](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責事項**
本書類はAI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を用いて翻訳されました。正確性には努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご了承ください。原文の言語による資料を正本としてご参照ください。重要な情報については、専門の人間による翻訳を推奨いたします。本翻訳の利用により生じたいかなる誤解や誤訳についても一切責任を負いかねます。
**免責事項**:
本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性の向上に努めていますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源として優先されます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用により生じた誤解や誤訳について、当方は一切の責任を負いかねます。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 料理分類器 1
# Cuisine classifiers 1
このレッスンでは、前回のレッスンで保存した、料理に関するバランスの取れたクリーンなデータセットを使用します。
このレッスンでは、前回のレッスンで保存した、さまざまな国の料理に関するバランスの取れたクリーンなデータで構成されたデータセットを使用します。
このデータセットを使って、さまざまな分類器を用いて_材料のグループに基づいて特定の国の料理を予測_します。その過程で、分類タスクにアルゴリズムを活用する方法についてさらに学びます。
このデータセットを使って、様々な分類器を用いて_特定の材料のグループに基づいて国の料理を予測_します。その過程で、アルゴリズムが分類タスクにどのように活用できるかについてさらに学びます。
## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/)
## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
# 準備
[レッスン1](../1-Introduction/README.md)を完了している場合、これら4つのレッスンのルート`/data`フォルダに_cleaned_cuisines.csv_ファイルが存在することを確認してください。
[Lesson 1](../1-Introduction/README.md)を完了していることを前提に、この4つのレッスンのためにルートの`/data`フォルダーに_cleaned_cuisines.csv_ファイルが存在することを確認してください。
## 演習 - 国の料理を予測する
1. このレッスンの_notebook.ipynb_フォルダで作業し、そのファイルとPandasライブラリをインポートします:
1. このレッスンの_notebook.ipynb_フォルダーで、Pandasライブラリと共にそのファイルをインポートします
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
データは以下のように見えます:
データは以下のようになっています:
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 次に、いくつかのライブラリをインポートします:
1. 次に、いくつかのライブラリをインポートします
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. X座標とy座標を2つのデータフレームに分割してトレーニング用に準備します。`cuisine`をラベルデータフレームとして使用します:
1. トレーニング用にXとyの座標を2つのデータフレームに分割します。`cuisine`はラベルのデータフレームにできます:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
以下のように表示されます:
これで以下のようになります:
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. `Unnamed: 0`列と`cuisine`列を`drop()`を使って削除します。残りのデータをトレーニング可能な特徴として保存します:
1. `Unnamed: 0`列と`cuisine`列を`drop()`で削除し、残りのデータをトレーニング用の特徴量として保存します:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
特徴データは以下のようになります:
特徴量は以下のようになります:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,13 +75,13 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
これでモデルのトレーニングを開始する準備が整いました!
さあ、モデルをトレーニングする準備ができました!
## 分類器の選択
データがクリーンでトレーニングの準備が整ったら、どのアルゴリズムを使用するかを決定する必要があります。
データがクリーンになり、トレーニングの準備が整ったので、この仕事にどのアルゴリズムを使うか決める必要があります。
Scikit-learnは分類を教師あり学習のカテゴリに分類しており、その中で多くの分類方法を提供しています。[その種類](https://scikit-learn.org/stable/supervised_learning.html)は最初は非常に多くて混乱するかもしれません。以下の方法はすべて分類技術を含んでいます:
Scikit-learnは分類を監視学習Supervised Learningの下にまとめており、そのカテゴリには多くの分類方法があります。[バラエティ](https://scikit-learn.org/stable/supervised_learning.html)は最初はかなり圧倒されるかもしれません。次の方法はすべて分類技術を含みます:
- 線形モデル
- サポートベクターマシン
@ -90,60 +90,59 @@ Scikit-learnは分類を教師あり学習のカテゴリに分類しており
- ガウス過程
- 決定木
- アンサンブル法(投票分類器)
- マルチクラスおよびマルチ出力アルゴリズム(マルチクラス分類、マルチラベル分類、マルチクラス・マルチ出力分類)
- 多クラス・多出力アルゴリズム(多クラス・多ラベル分類、多クラス多出力分類)
> [ニューラルネットワークを使ってデータを分類](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)することもできますが、このレッスンの範囲外です。
> [ニューラルネットワークを使ってデータを分類する](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)こともできますが、それはこのレッスンの範囲外です。
### どの分類器を選ぶべきか
### どの分類器を選ぶ?
では、どの分類器を選ぶべきでしょうか?多くの場合、いくつか試して良い結果を探すのが一つの方法です。Scikit-learnは[KNeighbors、SVC2種類、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB、QuadraticDiscriminationAnalysis](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)を比較し、結果を視覚化した[サイドバイサイド比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)を提供しています:
どの分類器を選ぶべきでしょうか?多くの場合、いくつか試してみて良い結果を探すのがテスト方法の一つです。Scikit-learnは[横並びの比較](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)を作成済みデータセット上で提供しており、KNeighbors、SVC種類、GaussianProcessClassifier、DecisionTreeClassifier、RandomForestClassifier、MLPClassifier、AdaBoostClassifier、GaussianNB、QuadraticDiscrinationAnalysisを比較し、その結果を視覚化しています
![分類器の比較](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
![comparison of classifiers](../../../../translated_images/ja/comparison.edfab56193a85e7f.webp)
> Scikit-learnのドキュメントで生成されたプロット
> AutoMLはこれらの比較をクラウドで実行し、データに最適なアルゴリズムを選択できるため、この問題を簡単に解決します。[こちら](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)で試してみてください。
> AutoMLはこれらの比較をクラウドで実行し、データに最適なアルゴリズムを選択できるようにして、この問題をうまく解決します。[こちらで試せます](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### より良いアプローチ
しかし、無作為に推測するよりも、ダウンロード可能な[MLチートシート](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)のアイデアに従う方が良い方法です。ここでは、マルチクラス問題に対していくつかの選択肢があることがわかります:
しかし、ランダムに推測するより良い方法として、このダウンロード可能な[ML Cheat sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)にあるアイデアに従うことが挙げられます。ここでは、多クラス問題に対していくつかの選択肢が示されています:
![マルチクラス問題のチートシート](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> Microsoftのアルゴリズムチートシートの一部、マルチクラス分類オプションを詳細に説明
![cheatsheet for multiclass problems](../../../../translated_images/ja/cheatsheet.07a475ea444d2223.webp)
> MicrosoftのAlgorithm Cheat Sheetの一部、多クラス分類のオプションを詳細に示す
✅ このチートシートをダウンロードして、印刷して壁に貼りましょう!
✅ このチートシートをダウンロードして印刷し、壁に貼りましょう!
### 推論
### 理由付け
制約を考慮して、異なるアプローチを推論してみましょう:
制約条件を踏まえて異なるアプローチを検討してみましょう:
- **ニューラルネットワークは重すぎる**。クリーンで最小限のデータセットを使用し、ノートブックを介してローカルでトレーニングを実行するため、ニューラルネットワークはこのタスクには重すぎます。
- **2クラス分類器は使用しない**。2クラス分類器は使用しないため、one-vs-allは除外されます。
- **決定木またはロジスティック回帰が適している可能性がある**。決定木またはマルチクラスデータに対するロジスティック回帰が適している可能性があります
- **マルチクラスブースト決定木は異なる問題を解決する**。マルチクラスブースト決定木は非パラメトリックタスク、例えばランキングを構築するタスクに最適であり、私たちには適していません。
- <strong>ニューラルネットワークは重すぎる</strong>。クリーンだが最小限のデータセットであり、ローカルのノートブックでトレーニングを実行するため、ニューラルネットワークはこのタスクには重すぎます。
- <strong>二クラス分類器は使わない</strong>。二クラス分類器は使わないため、one-vs-allは除外されます。
- <strong>決定木やロジスティック回帰は候補</strong>。決定木や多クラスデータのロジスティック回帰は有効かもしれません
- <strong>多クラスブースト決定木は別の問題向け</strong>。多クラスブースト決定木は非パラメトリックなタスク(ランキング構築など)向けであり、今回の用途には適しません。
### Scikit-learnの使用
Scikit-learnを使用してデータを分析します。ただし、Scikit-learnでロジスティック回帰を使用する方法は多数あります。[渡すべきパラメータ](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)を確認してください
Scikit-learnを使ってデータを分析しますが、Scikit-learnでロジスティック回帰を使う方法は複数あります。[パラメーター](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)を見てみましょう
基本的に、ロジスティック回帰を実行する際に指定する必要がある重要なパラメータは2つあります - `multi_class`と`solver`です。`multi_class`値は特定の動作を適用します。solverの値は使用するアルゴリズムを指定します。すべてのsolverがすべての`multi_class`値とペアリングできるわけではありません。
基本的に重要なパラメーターは`multi_class`と`solver`の2つで、ロジスティック回帰の実行時に指定する必要があります。`multi_class`の値は挙動を決め、`solver`は使用するアルゴリズムを決定します。すべての`multi_class`値とすべての`solver`は組み合わせられるわけではありません。
ドキュメントによると、マルチクラスの場合、トレーニングアルゴリズムは以下のように動作します:
ドキュメントによると、多クラスの場合、
- **one-vs-rest (OvR)方式を使用**する場合、`multi_class`オプションが`ovr`に設定されている場合
- **クロスエントロピー損失を使用**する場合、`multi_class`オプションが`multinomial`に設定されている場合。(現在、`multinomial`オプションlbfgs, sag, saga, newton-cgソルバーのみサポートされています
- `multi_class`が`ovr`に設定されている場合は<strong>one-vs-rest (OvR) スキーム</strong>を使います
- `multi_class`が`multinomial`に設定されている場合は<strong>クロスエントロピー損失</strong>を使います。(現在、`multinomial`lbfgs, sag, saga, newton-cgソルバーのみサポートされています"
> 🎓 ここでの「方式」は、'ovr'one-vs-restまたは'multinomial'のいずれかです。ロジスティック回帰は基本的にバイナリ分類をサポートするように設計されているため、これらの方式はマルチクラス分類タスクをより適切に処理できるようにします。[出典](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 ここでの'scheme'は'ovr'one-vs-restか'multinomial'のいずれかです。ロジスティック回帰は本質的に二クラス分類向けのため、これらのスキームは多クラス分類タスクに対応しやすくします。[出典](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 「solver」は「最適化問題で使用するアルゴリズム」と定義されています。[出典](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
> 🎓 'solver'は「最適化問題で使用するアルゴリズム」と定義されています。[出典](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
Scikit-learnは、solverが異なるデータ構造によって引き起こされる課題をどのように処理するかを説明するこの表を提供しています:
Scikit-learnは以下の表でソルバーが異なるデータ構造の課題にどう対応するか説明しています:
![ソルバー](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/ja/solvers.5fc648618529e627.webp)
## 演習 - データを分割する
## 演習 - データの分割
前回のレッスンでロジスティック回帰について学んだばかりなので、最初のトレーニング試行ではロジスティック回帰に焦点を当てることができます。
`train_test_split()`を呼び出してデータをトレーニングとテストグループに分割します:
最近のレッスンでロジスティック回帰を学んだことに基づき、最初のトレーニング試行にはロジスティック回帰に注目します。`train_test_split()`を使ってデータをトレーニング用とテスト用に分割しましょう:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -151,9 +150,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## 演習 - ロジスティック回帰を適用する
マルチクラスの場合、使用する_方式_と設定する_ソルバー_を選択する必要があります。multi_classを`ovr`に設定し、solverを`liblinear`に設定してロジスティック回帰を使用します。
多クラスの場合を使うため、どの_スキーム_を使い、どの_ソルバー_を設定するか選択する必要があります。ロジスティック回帰を使い、`multi_class`設定を指定し、<strong>liblinear</strong>ソルバーを使ってトレーニングします。
1. multi_classを`ovr`に設定し、solverを`liblinear`に設定したロジスティック回帰を作成します:
1. `multi_class`を`ovr`に、ソルバーを`liblinear`に設定してロジスティック回帰を作成します:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,27 +162,28 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ デフォルトとしてよく設定される`lbfgs`のような別のソルバーを試してみてください
> 注意が必要な場合、データを平坦化するには、Pandasの[`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html)関数を使用してください。
精度は**80%以上**で良好です!
`lbfgs`のような別のソルバーも試してみてください。これはよくデフォルトになっています。
1. データの1行#50をテストして、このモデルの動作を確認できます
> 必要に応じて、データを平坦化するためにPandasの[`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html)関数を使ってください。
精度は80%以上と良好です!
1. モデルを実際に動かして、50行目のデータでテストしてみましょう
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
print(f'cuisine: {y_test.iloc[50]}')
```
結果が出力されます:
結果が表示されます:
```output
ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
cuisine: indian
```
✅ 別の行番号を試して結果を確認してください。
1. さらに掘り下げて、この予測の精度を確認できます:
✅ 別の行番号でも試して結果を確認してください。
1. さらに深掘りして、この予測の正確さを確認できます:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +195,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
結果が出力されます - インド料理が最も確率が高いと予測されています:
結果が表示されます - インド料理が最も可能性が高い推測です:
| | 0 |
| -------: | -------: |
@ -205,9 +205,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ なぜモデルがこれをインド料理だと確信しているのか説明できますか?
✅ なぜモデルがこれをかなり確信してインド料理と判断しているのか説明できますか?
1. 回帰のレッスンで行ったように、分類レポートを出力して詳細を確認してください
1. 回帰のレッスンで行ったように、分類レポートを表示して詳細を取得します
```python
y_pred = model.predict(X_test)
@ -221,24 +221,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀チャレンジ
このレッスンでは、クリーンアップしたデータを使用して、材料の組み合わせから国の料理を予測する機械学習モデルを構築しました。Scikit-learnが提供するデータ分類の多くのオプションをじっくり読んでみてください。さらに「solver」の概念を掘り下げて、裏で何が行われているのかを理解してください
このレッスンでは、クリーンアップしたデータを使って、一連の材料に基づき国の料理を予測できる機械学習モデルを構築しました。Scikit-learnが提供する多くのデータ分類オプションをゆっくり読んでみてください。舞台裏で何が行われているのかを理解するために「solver」の概念をさらに掘り下げましょう
## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## レビューと自己学習
## レビュー & 自主学習
ロジスティック回帰の数学的背景について、[このレッスン](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)を掘り下げて学んでください
## 課題
[このレッスン](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)でロジスティック回帰の数学的背景をさらに掘り下げましょう
## 課題
[ソルバーについて学ぶ](assignment.md)
[ソルバーの勉強](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責事項**:
この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の言語で記載された原文を信頼できる情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤認について、当方は一切の責任を負いません。
本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確さを期しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご了承ください。原文の母国語版が正式な情報源とみなされるべきです。重要な情報については専門の人間による翻訳をお勧めします。本翻訳の使用により生じるいかなる誤解や解釈違いについても、一切の責任を負いかねます。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -8,16 +8,16 @@
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
### 🌐 多言語サポート
### 🌐 多言語対応
#### GitHub Actionによる対応(自動化&常に最新)
#### GitHub Actionを介してサポート(自動かつ常に最新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[アラビア語](../ar/README.md) | [ベンガル語](../bn/README.md) | [ブルガリア語](../bg/README.md) | [ビルマ語(ミャンマー)](../my/README.md) | [中国語(簡体字)](../zh-CN/README.md) | [中国語(繁体字、香港)](../zh-HK/README.md) | [中国語(繁体字、マカオ)](../zh-MO/README.md) | [中国語(繁体字、台湾)](../zh-TW/README.md) | [クロアチア語](../hr/README.md) | [チェコ語](../cs/README.md) | [デンマーク語](../da/README.md) | [オランダ語](../nl/README.md) | [エストニア語](../et/README.md) | [フィンランド語](../fi/README.md) | [フランス語](../fr/README.md) | [ドイツ語](../de/README.md) | [ギリシャ語](../el/README.md) | [ヘブライ語](../he/README.md) | [ヒンディー語](../hi/README.md) | [ハンガリー語](../hu/README.md) | [インドネシア語](../id/README.md) | [イタリア語](../it/README.md) | [日本語](./README.md) | [カンナダ語](../kn/README.md) | [クメール語](../km/README.md) | [韓国語](../ko/README.md) | [リトアニア語](../lt/README.md) | [マレー語](../ms/README.md) | [マラヤーラム語](../ml/README.md) | [マラーティー語](../mr/README.md) | [ネパール語](../ne/README.md) | [ナイジェリア・ピジン語](../pcm/README.md) | [ノルウェー語](../no/README.md) | [ペルシア語(ファルシー)](../fa/README.md) | [ポーランド語](../pl/README.md) | [ポルトガル語(ブラジル)](../pt-BR/README.md) | [ポルトガル語(ポルトガル)](../pt-PT/README.md) | [パンジャブ語(グルムキー)](../pa/README.md) | [ルーマニア語](../ro/README.md) | [ロシア語](../ru/README.md) | [セルビア語(キリル)](../sr/README.md) | [スロバキア語](../sk/README.md) | [スロベニア語](../sl/README.md) | [スペイン語](../es/README.md) | [スワヒリ語](../sw/README.md) | [スウェーデン語](../sv/README.md) | [タガログ語(フィリピン)](../tl/README.md) | [タミル語](../ta/README.md) | [テルグ語](../te/README.md) | [タイ語](../th/README.md) | [トルコ語](../tr/README.md) | [ウクライナ語](../uk/README.md) | [ウルドゥー語](../ur/README.md) | [ベトナム語](../vi/README.md)
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](./README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
> **ローカルでクローンしたいですか?**
> **ローカルにクローンすることを好みますか?**
>
> このリポジトリには50以上の言語翻訳が含まれており、そのためダウンロードサイズが大幅に増加します。翻訳を除いてクローンするには、スパースチェックアウトを使用してください:
> このリポジトリには 50 以上の言語翻訳が含まれており、ダウンロードサイズが大幅に増加します。翻訳なしでクローンするには、スパースチェックアウトを使用してください:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,62 +33,63 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> これにより、より高速なダウンロードでコースを完了するのに必要なすべてが得られます。
> これにより、コースを完了するために必要なすべてのものがはるかに高速なダウンロードで得られます。
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### コミュニティに参加しよう
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
私たちはDiscordで「Learn with AI」シリーズを開催中です。詳細と参加は [Learn with AI Series](https://aka.ms/learnwithai/discord) から、2025年9月18日30日の期間にぜひご参加ください。GitHub Copilotを使ったデータサイエンスのコツやテクニックが得られます。
当コミュニティでは Discord の AI シリーズ学習を開催中です。詳細や参加は [Learn with AI Series](https://aka.ms/learnwithai/discord) にて、2025年9月18日30日開催。GitHub Copilot を使ったデータサイエンスのコツとテクニックをご紹介します。
![Learn with AI series](../../translated_images/ja/3.9b58fd8d6c373c20.webp)
# 機械学習入門 - カリキュラム
# 初心者向け機械学習 - カリキュラム
> 🌍 世界の文化を通して機械学習を探求しながら世界を旅しよう 🌍
> 🌍 世界各地の文化と言語を通じて機械学習を学びましょう 🌍
MicrosoftのCloud Advocatesが提供する、12週間・26レッスンにわたる<strong>機械学習</strong>のカリキュラムです。このカリキュラムでは、主にScikit-learnライブラリを用いた「古典的機械学習」クラシック機械学習について学び、ディープラーニングは[AI for Beginners のカリキュラム](https://aka.ms/ai4beginners)でカバーしています。さらに、『[データサイエンス入門カリキュラム](https://aka.ms/ds4beginners)』と組み合わせて学習してください
Microsoft のクラウドアドボケートチームは、12週間、26レッスンからなる <strong>機械学習</strong> に関するカリキュラムを提供しています。このカリキュラムでは、主に Scikit-learn ライブラリを用いた、いわゆる <strong>古典的機械学習</strong> を学習します。ディープラーニングは当社の [初心者向けAIカリキュラム](https://aka.ms/ai4beginners)で扱っています。さらに、当カリキュラムは ['初心者向けデータサイエンス'カリキュラム](https://aka.ms/ds4beginners) と組み合わせて受講できます
私たちと一緒に世界中を旅して、これらのクラシックな手法を世界各地のデータに適用してみましょう。各レッスンには、レッスン前後のクイズ、レッスンの説明、解答例、課題、その他が含まれています。プロジェクトベースの教育法により、学びながら実践することで新しいスキルが定着すると証明されています。
世界各地のデータを用いながら、古典的な手法を適用して旅をしましょう。各レッスンには事前・事後クイズ、説明資料、解答例、課題などが含まれています。実践型の教育法により、学びながら制作することで新しいスキルが定着しやすくなっています。
**✍️ 心から感謝申し上げます。著者の皆様:** Jen Looper、Stephen Howell、Francesca Lazzeri、Tomomi Imura、Cassie Breviu、Dmitry Soshnikov、Chris Noring、Anirban Mukherjee、Ornella Altunyan、Ruth Yakubu、Amy Boyd
**✍️ 執筆者の皆さまに心から感謝申し上げます** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd
**🎨 そしてイラストレーターの皆様にも感謝:** Tomomi Imura、Dasani Madipalli、Jen Looper
**🎨 イラストレーターにも感謝** Tomomi Imura, Dasani Madipalli, Jen Looper
**🙏 特別な感謝 🙏 Microsoft Student Ambassadorの著者、レビュアー、コンテンツ貢献者の皆様** 特にRishit Dagli、Muhammad Sakib Khan Inan、Rohan Raj、Alexandru Petrescu、Abhishek Jaiswal、Nawrin Tabassum、Ioan Samuila、Snigdha Agarwal
**🙏 Microsoft Student Ambassador 執筆者、レビュアー、コンテンツ貢献者の皆さまに特に感謝** Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal
**🤩 さらにMicrosoft Student AmbassadorsのEric Wanjau、Jasleen Sondhi、Vidushi GuptaにはR言語のレッスン制作で感謝!**
**🤩 R 言語レッスン担当の Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Gupta に特別感謝!**
# はじめに
# 始め方
以下の手順に従ってください:
1. <strong>リポジトリをフォークする</strong>:ページ右上の「Fork」ボタンをクリックします。
2. <strong>リポジトリをクローンする</strong> `git clone https://github.com/microsoft/ML-For-Beginners.git`
以下の手順に従ってください
1. <strong>リポジトリをフォークする</strong>: このページの右上にある「Fork」ボタンをクリックします。
2. <strong>リポジトリをクローンする</strong>: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [このコースの追加リソースはMicrosoft Learnのコレクションで見つけられます](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [Microsoft Learnコレクションでコースの追加リソースをすべて見つける](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **お困りですか?** インストールやセットアップ、レッスン実行の一般的な問題の解決には[トラブルシューティングガイド](TROUBLESHOOTING.md)を参照してください。
> 🔧 **困ったときは?** [トラブルシューティングガイド](TROUBLESHOOTING.md) を参照し、インストール、セットアップ、レッスン実行時の一般的な問題に対処してください。
**[学生の皆さん](https://aka.ms/student-page)**、このカリキュラムを使用するには、リポジトリ全体を自分のGitHubアカウントにフォークし、個人またはグループで課題を進めてください
- 講義前のクイズから始める。
- 講義を読み、各知識確認で一時停止しながら活動を完了する。
- 解答コードを動かすのではなく、レッスンを理解してプロジェクトを作成しよう。ただし解答コードは各プロジェクト指向のレッスンの `/solution` フォルダーにあります。
- 講義後のクイズを受ける。
- チャレンジを完了する。
- 課題を完了する。
- レッスングループを終えたら、[ディスカッションボード](https://github.com/microsoft/ML-For-Beginners/discussions)を訪れて、適宜PATルーブリックに記入して「学びを広げる」。PATは進捗評価ツールで、記入することで学習をさらに深められます。他のPATにリアクションもでき、一緒に学べます。
**[学生の皆さん](https://aka.ms/student-page)**、このカリキュラムを利用するには、リポジトリ全体を自分のGitHubアカウントにフォークし、個人またはグループで演習を完了してください
> さらなる学習には、次の[Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott)のモジュールや学習パスがお勧めです。
- 事前講義クイズから始めましょう。
- 講義を読み、各知識確認で一時停止しながら活動を完了してください。
- 解答コードを実行するのではなく、理解してプロジェクトを作成することを目指しましょう。ただし解答コードは関連プロジェクトの `/solution` フォルダにあります。
- 講義後クイズを受けましょう。
- チャレンジをクリアしましょう。
- 課題を完了しましょう。
- レッスングループを完了したら、[ディスカッションボード](https://github.com/microsoft/ML-For-Beginners/discussions) を訪れ、対応する PAT ルーブリックを記入して「学びを声に出しましょう」。'PAT' は進歩評価ツールの略で、学習を促進するためのルーブリックです。他の人のPATにも反応して、一緒に学びましょう。
<strong>教師の皆様</strong>、このカリキュラムの活用法について[提案](for-teachers.md)を用意しています。
> さらなる学習には、[Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) のモジュールや学習パスをおすすめします。
<strong>教師の方へ</strong>、このカリキュラムの使い方に関する[提案](for-teachers.md)を用意しています。
---
## ビデオウォークスルー
## 動画ウォークスルー
いくつかのレッスンはショートフォームのビデオで視聴可能です。これらはレッスン内に埋め込まれているか、または[Microsoft DeveloperのYouTubeチャンネルにあるML for Beginnersプレイリスト](https://aka.ms/ml-beginners-videos)から視聴できます。下の画像をクリックしてください。
一部のレッスンは短い動画で提供されています。レッスン内または[Microsoft Developer YouTube チャンネルの ML for Beginners プレイリスト](https://aka.ms/ml-beginners-videos)からご覧いただけます。下の画像をクリックしてください。
[![ML for beginners banner](../../translated_images/ja/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
@ -98,81 +99,81 @@ MicrosoftのCloud Advocatesが提供する、12週間・26レッスンにわた
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**Gif作者:** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
**Gif作** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 上の画像をクリックすると、プロジェクトとそれを作った人々についてのビデオが見られます!
> 🎥 上の画像をクリックすると、プロジェクトと制作チームの動画をご覧いただけます!
---
## 教育方針
このカリキュラムでは、実践的な<strong>プロジェクトベース</strong><strong>頻繁なクイズ</strong>の2つの教育的信念を採用しています。また、内容に一貫性を持たせるための共通の<strong>テーマ</strong>も設定しています。
このカリキュラム作成にあたり、以下2つの教育理念を選びました実践的な <strong>プロジェクトベース</strong> であること、<strong>頻繁なクイズ</strong> を含むことです。さらに、本カリキュラムには一貫性を持たせるため、共通の <strong>テーマ</strong> を設けています。
コンテンツをプロジェクトに合わせることで、学生の関心が高まり、概念の定着が促進されます。授業前の低難易度クイズは学習の意図を明確にし、授業後のクイズがさらに理解を深めます。このカリキュラムは柔軟で楽しく、全編または一部だけでも学習可能です。プロジェクトは小規模から始まり、12週間のサイクルの終わりにはより複雑になります。さらに実世界のML応用に関するあとがきを含み、追加の学習や議論の素材として使えます。
内容をプロジェクトに合わせることで、学習のモチベーションを高め、理解の定着を強化しています。授業前の軽いクイズは学生の学習意欲を促し、授業後のクイズは理解を深める役割を果たします。本カリキュラムは柔軟で楽しく、全体または一部を受講できます。プロジェクトは小規模から始まり、12週間の終了時には複雑さを増します。また、実世界での機械学習応用に関する追記も含まれており、追加学習内容や議論の素材として利用可能です。
> [行動規範](CODE_OF_CONDUCT.md)、[貢献ガイド](CONTRIBUTING.md)、[翻訳](..)、[トラブルシューティング](TROUBLESHOOTING.md)の方針もご覧ください。皆様からの建設的なフィードバックを歓迎します!
> [行動規範](CODE_OF_CONDUCT.md)、[貢献ガイド](CONTRIBUTING.md)、[翻訳](..)、[トラブルシューティング](TROUBLESHOOTING.md) ガイドラインもご覧ください。建設的なフィードバックをお待ちしています!
## 各レッスンに含まれるもの
- 任意のスケッチノート
- 任意の補動画
- ビデオウォークスルー(一部のレッスンのみ)
- 任意の補動画
- 動画ウォークスルー(一部レッスンのみ)
- [講義前ウォームアップクイズ](https://ff-quizzes.netlify.app/en/ml/)
- 書面によるレッスン
- プロジェクトベースレッスンにはプロジェクト構築手順のガイド付き
- 講義本文
- プロジェクトベースのレッスンでは、ステップバイステップのプロジェクト完成ガイド
- 知識確認問題
- チャレンジ
- 補助読書
- 補足読書資料
- 課題
- [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
> <strong>言語に関する注意事項</strong>: これらのレッスンは主にPythonで書かれていますが、多くはRでも利用可能です。Rのレッスンを完了するには、 `/solution` フォルダーに移動しRのレッスンを探してください。これらは **R Markdown** ファイルを表す .rmd 拡張子を含んでいます。これは簡単に言うと、`コードチャンク`Rやその他の言語の `YAMLヘッダー`PDFなどの出力フォーマットのガイド `Markdown文書` に埋め込んだものです。このため、コード、出力、考えをMarkdownで書き込み一体化できるため、データサイエンスの優れた作成フレームワークとして機能します。さらに、R Markdown文書はPDF、HTML、Wordなどの出力形式にレンダリングできます。
> <strong>クイズに関する注意事項</strong>: すべてのクイズは[Quiz Appフォルダー](../../quiz-app)にまとめられており、3問ずつ全52のクイズがあります。レッスン内からリンクされていますが、quiz appはローカルで実行可能です。`quiz-app` フォルダーの指示に従い、ローカルホストまたはAzureへのデプロイを行ってください。
| レッスン番号 | トピック | レッスングループ | 学習目標 | 関連レッスン | 著者 |
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 機械学習のイントロダクション | [Introduction](1-Introduction/README.md) | 機械学習の基本概念を学ぶ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機械学習の歴史 | [Introduction](1-Introduction/README.md) | この分野の歴史を学ぶ | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性と機械学習 | [Introduction](1-Introduction/README.md) | MLモデル構築と適用時に考慮すべき公平性に関する重要な哲学的問題は何か | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機械学習の技術 | [Introduction](1-Introduction/README.md) | ML研究者がMLモデル構築のために使用する技術は何か? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回帰分析のイントロダクション | [Regression](2-Regression/README.md) | PythonとScikit-learnを使った回帰モデル入門 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北米カボチャ価格 🎃 | [Regression](2-Regression/README.md) | MLの準備としてデータの可視化とクレンジング | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北米カボチャ価格 🎃 | [Regression](2-Regression/README.md) | 線形回帰および多項式回帰モデルの構築 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北米カボチャ価格 🎃 | [Regression](2-Regression/README.md) | ロジスティック回帰モデルの構築 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | ウェブアプリ 🔌 | [Web App](3-Web-App/README.md) | 学習済みモデルを使うウェブアプリの構築 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類のイントロダクション | [Classification](4-Classification/README.md) | データのクレンジング、準備、可視化;分類の入門 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味しいアジアおよびインド料理 🍜 | [Classification](4-Classification/README.md) | 分類器の紹介 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味しいアジアおよびインド料理 🍜 | [Classification](4-Classification/README.md) | より多くの分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味しいアジアおよびインド料理 🍜 | [Classification](4-Classification/README.md) | モデルを使った推薦ウェブアプリの構築 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | クラスタリングのイントロダクション | [Clustering](5-Clustering/README.md) | データのクレンジング、準備、可視化;クラスタリング入門 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | ナイジェリアの音楽嗜好探索 🎧 | [Clustering](5-Clustering/README.md) | K-Meansクラスタリング法の探索 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然言語処理入門 ☕️ | [Natural language processing](6-NLP/README.md) | 単純なボット構築でNLPの基本を学ぶ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 一般的なNLPタスク ☕️ | [Natural language processing](6-NLP/README.md) | 言語構造処理に必要な一般的タスクを理解しNLP知識を深める | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻訳と感情分析 ♥️ | [Natural language processing](6-NLP/README.md) | ジェーン・オースティンによる翻訳と感情分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | ヨーロッパのロマンチックホテル ♥️ | [Natural language processing](6-NLP/README.md) | ホテルレビューによる感情分析1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | ヨーロッパのロマンチックホテル ♥️ | [Natural language processing](6-NLP/README.md) | ホテルレビューによる感情分析2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時系列予測のイントロダクション | [Time series](7-TimeSeries/README.md) | 時系列予測入門 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界の電力使用量 ⚡️ - ARIMAを使った時系列予測 | [Time series](7-TimeSeries/README.md) | ARIMAを使った時系列予測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界の電力使用量 ⚡️ - SVRを使った時系列予測 | [Time series](7-TimeSeries/README.md) | サポートベクター回帰を使った時系列予測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化学習のイントロダクション | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learningを使った強化学習入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | ピーターをオオカミから守ろう! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化学習Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 追 | 実世界のMLシナリオと応用 | [ML in the Wild](9-Real-World/README.md) | 古典的MLの興味深く示唆に富む実世界アプリケーション | [Lesson](9-Real-World/1-Applications/README.md) | チーム |
| 追記 | RAIダッシュボードを使ったMLのモデルデバッグ | [ML in the Wild](9-Real-World/README.md) | Responsible AIダッシュボードコンポーネントを使った機械学習モデルデバッグ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [このコースの追加リソースはMicrosoft Learnコレクションで全て見つかります](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> <strong>言語についての注意</strong>: これらのレッスンは主にPythonで書かれていますが、多くはRでも提供されています。Rのレッスンを完了するには、`/solution`フォルダーに移動してRレッスンを探してください。そこには<strong>R Markdown</strong>ファイルを表す.rmd拡張子が付いています。これは`コードチャンク`Rやその他の言語のと`YAMLヘッダー`PDFなどの出力フォーマットのガイド`Markdownドキュメント`に埋め込んだものと簡単に定義できます。そのため、コード、その出力、そして考えをMarkdownで記述することで結合できるため、データサイエンスの優れた著述フレームワークとして機能します。さらに、R MarkdownドキュメントはPDF、HTML、Wordなどの出力形式にレンダリングすることができます。
> <strong>クイズについての注意</strong>: すべてのクイズは[Quiz App folder](../../quiz-app)に収められており、合計52のクイズがそれぞれ3問ずつ含まれています。クイズはレッスン内からリンクされていますが、クイズアプリはローカルでも実行可能です。`quiz-app`フォルダー内の指示に従ってローカルホストまたはAzureへのデプロイを行ってください。
| レッスン番号 | トピック | レッスングループ | 学習目標 | リンクされたレッスン | 著者 |
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | --------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 機械学習入門 | [Introduction](1-Introduction/README.md) | 機械学習の基本概念を学ぶ | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 機械学習の歴史 | [Introduction](1-Introduction/README.md) | この分野の歴史を学ぶ | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 公平性と機械学習 | [Introduction](1-Introduction/README.md) | 学習者がMLモデル構築と適用時に考慮すべき公平性に関する重要な哲学的問題は? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 機械学習のための技術 | [Introduction](1-Introduction/README.md) | ML研究者がMLモデルを構築するために用いる技術とは? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 回帰の入門 | [Regression](2-Regression/README.md) | PythonとScikit-learnを使った回帰モデルの基礎を学ぶ | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 北米のかぼちゃ価格 🎃 | [Regression](2-Regression/README.md) | MLの準備としてデータの可視化とクレンジング | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 北米のかぼちゃ価格 🎃 | [Regression](2-Regression/README.md) | 線形回帰と多項式回帰モデルの構築 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 北米のかぼちゃ価格 🎃 | [Regression](2-Regression/README.md) | ロジスティック回帰モデルの構築 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Webアプリ 🔌 | [Web App](3-Web-App/README.md) | トレーニング済みモデルを利用するWebアプリを作成 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 分類入門 | [Classification](4-Classification/README.md) | データのクレンジング、準備、可視化;分類の入門 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 美味しいアジアインド料理 🍜 | [Classification](4-Classification/README.md) | 分類器の入門 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 美味しいアジアインド料理 🍜 | [Classification](4-Classification/README.md) | さらに分類器 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 美味しいアジアインド料理 🍜 | [Classification](4-Classification/README.md) | モデルを使った推薦Webアプリを作成 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | クラスタリング入門 | [Clustering](5-Clustering/README.md) | データのクレンジング、準備、可視化;クラスタリング入門 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | ナイジェリアの音楽趣向を探る 🎧 | [Clustering](5-Clustering/README.md) | K-平均クラスタリング法を探る | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 自然言語処理入門 ☕️ | [Natural language processing](6-NLP/README.md) | 簡単なボットを作りながらNLPの基礎を学ぶ | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 一般的なNLPタスク ☕️ | [Natural language processing](6-NLP/README.md) | 言語構造を扱う際に必要な一般的なタスクを理解してNLP知識を深める | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 翻訳と感情分析 ♥️ | [Natural language processing](6-NLP/README.md) | ジェーン・オースティンを使った翻訳と感情分析 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | ヨーロッパのロマンチックホテル ♥️ | [Natural language processing](6-NLP/README.md) | ホテルレビューによる感情分析1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | ヨーロッパのロマンチックホテル ♥️ | [Natural language processing](6-NLP/README.md) | ホテルレビューによる感情分析2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 時系列予測入門 | [Time series](7-TimeSeries/README.md) | 時系列予測入門 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 世界の電力使用 ⚡️ - ARIMAによる時系列予測 | [Time series](7-TimeSeries/README.md) | ARIMAを用いた時系列予測 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 世界の電力使用 ⚡️ - SVRによる時系列予測 | [Time series](7-TimeSeries/README.md) | サポートベクター回帰による時系列予測 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 強化学習入門 | [Reinforcement learning](8-Reinforcement/README.md) | Q学習を用いた強化学習の入門 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | ピーターがオオカミを避けるのを助けよう! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 強化学習ジム | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 追 | 実世界のMLシナリオと応用 | [ML in the Wild](9-Real-World/README.md) | 古典的MLの興味深く示唆に富んだ実世界の応用 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| 追伸 | RAIダッシュボードを用いたMLのモデルデバッグ | [ML in the Wild](9-Real-World/README.md) | Responsible AIダッシュボードコンポーネントを用いた機械学習におけるモデルデバッグ | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [本コースのすべての追加リソースはこちらのMicrosoft Learnコレクションでご覧いただけます](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## オフラインアクセス
[Docsify](https://docsify.js.org/#/) を使用してこのドキュメントをオフラインで実行できます。このリポジトリをフォークし、ローカルマシンに[Docsifyをインストール](https://docsify.js.org/#/quickstart)した後、このリポジトリのルートフォルダーで `docsify serve` と入力してください。ウェブサイトはローカルホストのポート3000で提供されます: `localhost:3000`
[Docsify](https://docsify.js.org/#/) を使用してこのドキュメントをオフラインで実行できます。このリポジトリをフォークし、ローカルマシンに[Docsifyをインストール](https://docsify.js.org/#/quickstart)してから、このリポジトリのルートフォルダーで `docsify serve` を入力してください。ウェブサイトはポート3000でローカルホストで提供されます `localhost:3000`
## PDF
カリキュラムのPDF(リンク付き)は[こちら](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)でご覧いただけます
カリキュラムのpdf(リンク付き)は[こちら](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)でご覧ください
## 🎒 その他のコース
## 🎒 その他のコース
私たちのチームはその他のコースも制作しています!ぜひチェックしてください:
当チームは他のコースも制作しています!ぜひご覧ください:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
@ -214,24 +215,35 @@ MicrosoftのCloud Advocatesが提供する、12週間・26レッスンにわた
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## ヘルプを得る方法
## ヘルプを得る
AIアプリの構築で困ったり質問があれば、MCPに関する議論に参加して、他の学習者や経験豊富な開発者と交流しましょう。質問が歓迎され、知識が自由に共有される支援的なコミュニティです。
機械学習を学んだりAIアプリを作成したりする際に詰まったり質問があったりしても、心配はいりません — ヘルプをご利用いただけます。
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
他の学習者や開発者とディスカッションに参加し、質問し、アイデアを共有できます。
- コミュニティに参加して質問し、他の人と一緒に学ぶ
- 機械学習の概念やプロジェクトのアイデアを議論する
- 経験豊富な開発者から指導を受ける
支援的なコミュニティはスキルを伸ばし、問題をより速く解決するのに役立ちます。
製品のフィードバックや構築中のエラーがあれば、以下をご覧ください。
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
バグやエラーの発生、改善の提案があれば、このリポジトリで<strong>Issue</strong>を開いて問題を報告することもできます。
製品に関するフィードバックや既存のコミュニティ投稿を検索するには、開発者フォーラムをご覧ください:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 追加の学習のヒント
- 各レッスン後にノートブックを復習して理解を深めましょう。
- 自分でアルゴリズムを実装する練習をしましょう。
- 学んだ概念を使って実際のデータセットを探索しましょう。
- 自分でアルゴリズムを実装して練習しましょう。
- 学んだ概念を使って実世界のデータセットを探求しましょう。
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責事項**
本書類はAI翻訳サービス「[Co-op Translator](https://github.com/Azure/co-op-translator)」を使用して翻訳されています。正確性の向上に努めていますが、自動翻訳には誤りや不正確な箇所が含まれる場合があります。原文の言語による文書が正式な情報源とみなされるべきです。重要な情報については、専門の翻訳者による翻訳を推奨します。本翻訳の利用によって生じたいかなる誤解や解釈の相違についても、当方は一切の責任を負いかねます。
**免責事項**:
本書類はAI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性には努めておりますが、自動翻訳には誤りや不正確な内容が含まれる可能性があります。原文のネイティブ言語による文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用に起因する誤解や誤訳については、一切の責任を負いかねます。
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -90,8 +90,8 @@
"language_code": "ko"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "9a8359f1945bd3beccccb2b46592580e",
"translation_date": "2026-02-28T10:12:03+00:00",
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T16:41:12+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ko"
},
@ -168,8 +168,8 @@
"language_code": "ko"
},
"4-Classification/2-Classifiers-1/README.md": {
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T10:50:49+00:00",
"original_hash": "cb761595e5b6c42b99bb81bd13683311",
"translation_date": "2026-04-20T16:42:21+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "ko"
},
@ -552,8 +552,8 @@
"language_code": "ko"
},
"README.md": {
"original_hash": "7fb48097f57e680b380cd9aae988d317",
"translation_date": "2026-04-06T16:58:33+00:00",
"original_hash": "3e3a6c7e68e0afe7e2276ac046e4d7a0",
"translation_date": "2026-04-20T16:38:12+00:00",
"source_file": "README.md",
"language_code": "ko"
},

@ -1,137 +1,135 @@
# Scikit-learn을 사용하여 회귀 모델 구축하기: 회귀 네 가지 방법
# Scikit-learn을 사용하여 회귀 모델 구축: 회귀 네 가지 방법
## 초보자 주의사항
## 초보자 참고사항
선형 회귀는 **수치 값**을 예측하고자 할 때 사용합니다(예: 주택 가격, 온도, 판매량).
입력 변수와 출력 간의 관계를 가장 잘 나타내는 직선을 찾는 방식으로 작동합니다.
선형 회귀는 **숫자 값**(예: 주택 가격, 온도 또는 판매량)을 예측하려 할 때 사용됩니다.
이는 입력 특성과 출력 간의 관계를 최적으로 나타내는 직선을 찾는 방식으로 작동합니다.
이 수업에서는 좀 더 고급 회귀 기법을 탐구하기 전에 개념 이해에 집중합니다.
![선형 다항 회귀 인포그래픽](../../../../translated_images/ko/linear-polynomial.5523c7cb6576ccab.webp)
> 인포그래픽 출처: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
이 수업에서는 고급 회귀 기법을 다루기 전에 개념 이해에 집중합니다.
![선형 회귀 vs 다항 회귀 인포그래픽](../../../../translated_images/ko/linear-polynomial.5523c7cb6576ccab.webp)
> 인포그래픽: [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를 활용해 시각화도 했죠.
이제 머신러닝을 위한 회귀를 더 깊게 학습할 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진정한 힘은 _모델 학습_에 있습니다. 모델은 과거 데이터를 학습해 데이터 간의 관계를 자동으로 포착하며, 학습하지 않은 새로운 데이터에 대한 결과를 예측할 수 있게 해줍니다.
이제 머신러닝 회귀에 대해 더 깊이 들어갈 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진정한 힘은 _모델 학습_에 있습니다. 모델은 역사적 데이터를 기반으로 학습하여 자동으로 데이터 의존성을 포착하고, 모델이 본 적 없는 새 데이터의 결과를 예측할 수 있도록 해줍니다.
이번 수업에서는 _기본 선형 회귀__다항 회귀_ 두 가지 유형과 이 기법들의 수학적 배경에 관해 배웁니다. 이런 모델을 통해 다양한 입력 변수에 따라 호박 가격을 예측할 수 있게 됩니다.
이번 수업에서는 _기본 선형 회귀__다항 회귀_ 두 가지 회귀 유형과 관련 수학을 배웁니다. 이 모델들은 다양한 입력 데이터에 따라 호박 가격을 예측할 수 있게 해줍니다.
[![초보자용 머신러닝 - 선형 회귀 이해하기](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "초보자용 머신러닝 - 선형 회귀 이해하기")
[![초보자를 위한 ML - 선형 회귀 이해](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "초보자를 위한 ML - 선형 회귀 이해")
> 🎥 위 이미지를 클릭하면 선형 회귀에 관한 짧은 동영상을 볼 수 있습니다.
> 🎥 위 이미지 클릭 시 선형 회귀 짧은 동영상 개요를 볼 수 있습니다.
> 이 교육 과정 전반에서 최소한의 수학 지식을 가정하며, 다른 분야에서 온 학생들도 이해하기 쉽도록 노트, 🧮 주석, 도표 및 기타 학습 도구들을 활용합니다.
> 이 교육 과정 전반에 걸쳐 수학 지식을 최소화하고, 타 분야 학생도 이해하기 쉽게 만들고자 합니다. 노트, 🧮 계산 설명, 다이어그램 등 다양한 학습 도구를 참고하세요.
### 선수 지식
### 필수 준비 사항
당신은 현재 우리가 다루는 호박 데이터 구조에 익숙할 것입니다. 해당 데이터는 이번 수업의 _notebook.ipynb_ 파일에 미리 불러와지고 전처리되어 있습니다. 이 파일에서는 한 단위(bushel) 당 호박 가격이 새로운 데이터 프레임에 표시되어 있습니다. Visual Studio Code의 커널에서 해당 노트북을 실행할 수 있는지 확인하세요.
지금까지 살펴본 할로윈 호박 데이터 구조에 익숙해졌을 것입니다. 본 수업의 _notebook.ipynb_ 파일에는 미리 불러오고 정제한 데이터가 있습니다. 여기서 호박 가격은 부셸 단위로 새 데이터프레임에 표시되어 있습니다. Visual Studio Code의 커널에서 이 노트북들을 실행할 수 있어야 합니다.
### 준비 사항
### 준비
이 데이터를 불러오는 이유는 질문을 던지기 위해서입니다.
데이터를 불러온 목적은 질문을 던지는 데 있습니다.
- 호박을 가장 싸게 살 수 있는 시기는 언제일까요?
- 미니어처 호박 하나 가격은 대략 얼마일까요?
- 반 bushel 바구니 단위로 사는 게 좋을까요, 아니면 1 1/9 버셜 박스로 사는 게 좋을까요?
- 언제가 호박을 사기에 가장 좋은 시기일까요?
- 미니어처 호박 한 케이스 가격은 얼마일까요?
- 반 부셸 바구니로 사야 할까요, 아니면 1 1/9 부셸 상자로 사야 할까요?
더 깊이 탐색해 봅시다.
계속해서 이 데이터를 자세히 탐색해 봅시다.
지난 수업에서는 Pandas 데이터프레임을 만들고 원본 데이터셋 일부로 채우며, 부셸 단위 가격을 표준화했습니다. 하지만 이렇게 하다 보니 가을 몇 개월에 대해서만 약 400개의 데이터 포인트만 얻을 수 있었습니다.
이전 수업에서는 Pandas 데이터 프레임을 만들고 원본 데이터 일부를 기준으로 단위를 버셜별 가격으로 표준화했습니다. 하지만 그 경우 가을철 데이터 약 400개만 수집할 수 있었습니다.
본 수업의 동봉된 노트북에 미리 불러온 데이터를 살펴보세요. 전처리가 완료되었고, 초기 산점도가 월별 데이터를 보여줍니다. 데이터를 더 정제하면 보다 상세한 통찰을 얻을 수 있을지도 모릅니다.
이번 수업에 첨부된 노트북에 미리 불러온 데이터를 확인하세요. 데이터가 미리 불러와져 있으며, 기본 산점도가 월별 데이터를 보여 줍니다. 데이터를 더 정제하면 더 구체적인 데이터 특성을 알 수 있을지도 모릅니다.
## 선형 회귀 직선
## 선형 회귀선
1장에서 배운 바와 같이 선형 회귀 목표는 다음을 할 수 있는 직선을 그리는 것입니다:
1강에서 배운 것처럼, 선형 회귀 연습의 목표는 다음을 수행할 수 있는 선을 그리는 것입니다.
- **변수 간 관계 표시**: 변수 간 관계를 보여줍니다.
- **예측 수행**: 새 데이터가 그 직선에서 어디에 위치할지 정확히 예측합니다.
- **변수 관계 표시.** 변수 간 관계를 시각화합니다.
- **예측 수행.** 새로운 데이터가 이 선과 어떤 관계인지 정확히 예측합니다.
일반적으로 <strong>최소 제곱 회귀</strong>에서 이런 선을 그립니다. "최소 제곱"이란 모델에서 전체 오류를 최소화하는 과정을 의미합니다. 각 데이터 포인트마다 실제 점과 회귀선 사이의 수직 거리(잔차라고 함)를 측정합니다.
이런 선을 그릴 때 흔히 쓰는 방식이 **최소제곱법 회귀(Least-Squares Regression)**입니다. "최소제곱"이란 모델 오차의 총합을 최소화하는 과정을 뜻합니다. 각 데이터 점과 회귀선 사이 수직 거리(잔차)를 계산하며,
여기서 제곱하는 이유는 두 가지입니다:
이 거리 값들을 제곱하는 데는 다음 두 가지 이유가 있습니다:
1. **방향 무시, 크기만 고려:** -5와 +5의 오차를 동일하게 취급하기 위해 모든 값을 양수로 만듭니다.
2. **이상치 패널티:** 큰 오차가 더 크게 반영되어 선이 멀리 떨어진 점에 더 가깝게 위치하도록 합니다.
1. **크기만 고려, 방향 무시:** -5와 +5의 오차를 동일하게 취급하기 위해 모든 값을 양수로 만듭니다.
이렇게 제곱한 값들을 모두 더한 합을 최소화하는 선을 찾는 것이 목표입니다.
2. **이상치 가중:** 큰 오차에는 제곱값이 훨씬 커지므로 외곽값에 대해 더 강한 패널티를 줍니다.
이 제곱 거리들을 모두 더한 값이 가장 작은 선을 찾는 것이 목표입니다. 이 때문에 "최소제곱"이라는 이름이 붙었습니다.
> **🧮 수학으로 보기**
> **🧮 수학 공식 보여드리기**
>
> 최적의 선을 의미하는 _최적선_은 [다음 방정식](https://en.wikipedia.org/wiki/Simple_linear_regression)으로 표현할 수 있습니다:
> 최적 직선은 [다음 식](https://en.wikipedia.org/wiki/Simple_linear_regression)으로 나타낼 수 있습니다:
>
> ```
> Y = a + bX
> ```
>
> `X`는 독립 변수(설명 변수)이며, `Y`는 종속 변수입니다. 기울기를 나타내는 `b`와 y절편 `a``X=0`일 때 `Y`의 값입니다.
>
>![기울기 계산](../../../../translated_images/ko/slope.f3c9d5910ddbfcf9.webp)
>
> 먼저 기울기 `b`를 계산합니다. 인포그래픽 출처: [Jen Looper](https://twitter.com/jenlooper)
>
> 다시 말해 호박 데이터 문제에서 "한 달 단위로 버셜당 호박 가격을 예측"하는 것으로, `X`는 가격, `Y`는 판매 월을 나타낼 수 있습니다.
>
>![방정식 완성](../../../../translated_images/ko/calculation.a209813050a1ddb1.webp)
>
> `Y` 값을 계산하세요. 만약 가격이 약 4달러라면 4월일 겁니다! 인포그래픽 출처: [Jen Looper](https://twitter.com/jenlooper)
>
> 선의 기울기를 구하는 수학은 단절점(절편)에도 의존하며, `X=0`일 때 `Y`가 어디에 위치하는지 보여 줍니다.
>
> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 사이트에서 이 계산법을 확인할 수 있습니다. 또한 [이 최소제곱 계산기](https://www.mathsisfun.com/data/least-squares-calculator.html)에서 수치 변화가 선에 미치는 영향을 볼 수 있습니다.
## 상관관계
다음으로 알아야 할 용어는 주어진 X와 Y 변수 간의 **상관계수(Correlation Coefficient)**입니다. 산점도를 통해 빠르게 상관계수를 시각화할 수 있습니다. 데이터 점들이 한 줄로 정렬돼 있으면 상관관계가 높고, 산점도가 흩어져 있으면 상관관계가 낮습니다.
좋은 선형 회귀 모델은 최소제곱 회귀를 사용해 상관계수가 높게(0에 가까운 것보다 1에 가까운) 나오는 모델입니다.
✅ 강의 첨부 노트북을 실행하여 월별-가격 산점도를 살펴보세요. 호박 판매 월별 가격 데이터는 시각적으로 보았을 때 상관관계가 높아 보이나요, 낮아 보이나요? `Month` 대신 더 세분화한 척도(예: *연중 일수*, 즉 1년 시작일부터 지난 일수)를 사용하면 결과가 달라지나요?
다음 코드는 데이터를 정제하여 `new_pumpkins`라는 데이터 프레임을 얻었다고 가정합니다. 예시는 아래와 같습니다:
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` 열은 다음 식으로 계산했습니다:
>
> `X`는 설명 변수, `Y`는 종속 변수입니다. 기울기는 `b`이고, y절편은 `a`로, `X=0`일 때 `Y` 값입니다.
>
>![기울기 계산](../../../../translated_images/ko/slope.f3c9d5910ddbfcf9.webp)
>
> 먼저 기울기 `b`를 계산합니다. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
>
> 다시 말해, 본 호박 데이터 질문 "월별 부셸당 호박 가격 예측"에서 `X`는 가격, `Y`는 판매 월을 의미합니다.
>
>![방정식 완성](../../../../translated_images/ko/calculation.a209813050a1ddb1.webp)
>
> `Y` 값을 계산하세요. 약 $4라면 4월일 것입니다! 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
>
> 기울기뿐 아니라, `X=0`인 경우 `Y` 위치를 의미하는 절편도 계산식에 포함됩니다.
>
> 이 값 계산법은 [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) 사이트에서 상세히 볼 수 있습니다. [이 최소제곱 계산기](https://www.mathsisfun.com/data/least-squares-calculator.html)로 숫자 변화가 선에 미치는 영향도 확인하세요.
## 상관 관계
더 알아야 할 용어는 주어진 X와 Y 변수 간의 <strong>상관계수</strong>입니다. 산점도를 통해 쉽게 시각화할 수 있습니다. 데이터 포인트가 정렬된 직선에 가깝게 흩어져 있으면 강한 상관관계이고, 산만히 흩어져 있으면 약한 상관관계입니다.
좋은 선형 회귀 모델은 최소 제곱 회귀 방식으로 높은(0보다 1에 가까운) 상관계수를 갖습니다.
✅ 이번 수업 노트북을 실행하여 월별 가격 산점도를 봅시다. 호박 판매의 월별 가격 데이터가 산점도 시각판단상 상관관계가 높은가요, 아니면 낮은가요? `Month` 대신 연중 날짜(즉, 연도 시작부터의 일수) 같은 더 세분화된 변수를 이용하면 결과가 바뀔까요?
다음 코드는 데이터 정제 후 `new_pumpkins`라는 데이터프레임을 얻었다고 가정합니다:
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` 열을 계산했습니다:
>
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
선형 회귀의 수학적 이해를 마쳤으니, 어떤 호박 패키지가 최적의 가격을 가질지 예측하는 회귀 모델을 만들어 보겠습니다. 호박 밭을 위해 호박을 구매하는 사람은 최적의 구매를 위해 이 정보를 원할 것입니다.
선형 회귀의 수학적 배경을 이해했다면, 이제 어느 호박 패키지가 가장 좋은 가격을 보일지 예측하는 회귀 모델을 만들어 봅시다. 휴일 호박 패치용 호박을 구매하는 사람에게 필요한 정보를 제공하는 것이 목표입니다.
## 상관관계 찾기
## 상관 관계 찾아보기
[![초보자용 머신러닝 - 상관관계 찾기: 선형 회귀의 핵심](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "초보자용 머신러닝 - 상관관계 찾기: 선형 회귀의 핵심")
[![초보자를 위한 ML - 상관관계 찾기: 선형 회귀의 핵심](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "초보자를 위한 ML - 상관관계 찾기: 선형 회귀의 핵심")
> 🎥 위 이미지를 클릭하면 상관관계에 관한 짧은 동영상을 볼 수 있습니다.
> 🎥 위 이미지 클릭 시 상관관계 짧은 동영상 개요 시청
앞선 강의에서 월별 평균 가격이 다음과 같음을 봤을 겁니다:
이전 수업에서 월별 평균 가격이 다음과 같음을 보았을 것입니다:
<img alt="월별 평균 가격" src="../../../../translated_images/ko/barchart.a833ea9194346d76.webp" width="50%"/>
이는 상관관계가 다소 있음을 시사하며, `Month``Price` 또는 `DayOfYear``Price` 간의 관계를 예측하려 선형 회귀 모델을 훈련해볼 수 있음을 보여줍니다. 아래 산점도는 후자를 나타냅니다:
월별 가격 차이에서 상관 관계가 있어 보이고, `Month``Price` 또는 `DayOfYear``Price` 간의 관계를 예측하는 선형 회귀 모델을 훈련할 수 있겠습니다. 아래 그래프는 후자를 보여줍니다:
<img alt="가격 vs 연중 일수 산점도" src="../../../../translated_images/ko/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="가격 vs 연중 일수 산점도" src="../../../../translated_images/ko/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
`corr` 함수를 이용하면 상관관계 정도를 알 수 있습니다:
`corr` 함수를 이용해 상관관계가 있는지 확인해 봅시다:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
상관관계는 다소 작아서 `Month` 기준 -0.15, `DayOfMonth` 기준 -0.17 정도지만, 중요한 또 다른 관계가 있을지도 모릅니다. 서로 다른 호박 품종 별 가격 클러스터가 형성되어 보입니다. 이를 확인하려면 각 호박 품종을 다른 색상으로 표시해 봅시다. `scatter` 함수에 `ax` 파라미터를 넘겨 여러 데이터를 한 그래프에 겹쳐 그릴 수 있습니다:
`Month` 상관계수는 -0.15, `DayOfMonth`는 -0.17로 낮은 편입니다. 하지만 호박 품종별로 가격 군집이 다른 관계가 있을 수도 있습니다. 이를 확인하기 위해 각 호박 종류를 다른 색깔로 표시해 봅시다. `scatter` 함수에 `ax` 매개변수를 주어 한 그래프에 모든 점을 표시할 수 있습니다:
```python
ax=None
@ -140,92 +138,92 @@ 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)
```
<img alt="가격 vs 연중 일수 산점도 (색상별)" src="../../../../translated_images/ko/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="가격 vs 연중 일수 산점도 - 품종별 색상" src="../../../../translated_images/ko/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
조사 결과 품종이 실제 판매 날짜보다 가격에 더 큰 영향을 미치는 것 같습니다. 다음 막대 그래프로도 볼 수 있습니다:
품종이 실제 판매일보다 가격에 더 큰 영향을 미치는 것 같습니다. 막대 그래프로도 볼 수 있습니다:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="품종에 따른 가격 막대그래프" src="../../../../translated_images/ko/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="품종별 가격 막대 그래프" src="../../../../translated_images/ko/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
지금은 한 가지 품종인 'pie type'에만 집중해 가격에 날짜가 미치는 영향을 살펴봅시다:
현재는 'pie type' 품종 하나만 집중해, 날짜가 가격에 미치는 영향을 봅시다:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="가격 vs 연중 일수 산점도 - pie 타입" src="../../../../translated_images/ko/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="가격 vs 연중 일수 산점도" src="../../../../translated_images/ko/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
`corr` 함수를 써서 `Price``DayOfYear` 간 상관관계를 계산하면 -0.27 정도로, 예측 모델 훈련하기에 적합함을 알 수 있습니다.
`Price`와 `DayOfYear` 상관관계를 `corr` 함수로 계산하면 약 `-0.27`이 나옵니다. 이는 예측 모델 학습이 타당함을 의미합니다.
> 선형 회귀 모델을 학습하기 전에 데이터가 깨끗한지 확인해야 합니다. 선형 회귀는 결측치가 있는 데이터에 취약해 결측값이 있으면 데이터를 제거하는 편이 좋습니다:
> 선형 회귀 모델을 훈련하기 전, 데이터 정리가 중요합니다. 선형 회귀는 결측치가 있으면 잘 작동하지 않으므로, 빈 셀을 제거하는 것이 좋습니다:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
또 다른 방법으로, 해당 열의 평균값으로 결측값을 채우는 방법도 있습니다.
결측치를 해당 열 평균값으로 채우는 방법도 있습니다.
## 단순 선형 회귀
[![초보자용 머신러닝 - Scikit-learn으로 선형 및 다항 회귀](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "초보자용 머신러닝 - Scikit-learn으로 선형 및 다항 회귀")
[![초보자를 위한 ML - Scikit-learn을 사용한 선형 및 다항 회귀](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "초보자를 위한 ML - 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']
```
> Linear Regression 패키지가 데이터를 올바로 인식하려면 입력 데이터를 `reshape` 해야 합니다. Linear Regression은 입력을 2D 배열로 기대하며, 배열의 각 행이 입력 특징 벡터입니다. 여기선 입력이 하나뿐이므로, 크기 N×1 배열이어야 합니다(N은 데이터셋 크기).
> 입력 데이터를 선형 회귀 패키지가 올바르게 이해하도록 `reshape` 처리를 해야 했던 점을 유의하세요. 선형 회귀는 각 행이 입력 특징 벡터인 2차원 배열을 요구합니다. 현재 입력이 하나이므로, 데이터 크기 N에 대해 N×1 배열이 필요합니다.
그다음 데이터를 훈련용과 테스트용으로 나누어 훈련 후 모델을 검증할 수 있도록 합니다:
그다음, 훈련 데이터와 테스트 데이터로 나누어 모델 검증에 사용합니다:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
마지막으로, 실제 선형 회귀 모델 훈련은 두 줄의 코드만 필요합니다. `LinearRegression` 객체를 정의하고, `fit` 메서드로 데이터를 학습합니다:
마지막으로 Linear Regression 모델을 훈련하는 코드는 단 두 줄입니다. `LinearRegression` 객체를 만들고, `fit` 메서드로 데이터를 학습합니다:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`fit` 후의 `LinearRegression` 객체는 회귀의 모든 계수를 포함하며, `.coef_` 속성을 통해 접근할 수 있습니다. 이 예제에서는 하나의 계수만 있으며, 대략 `-0.017` 정도입니다. 이는 시간이 지남에 따라 가격이 약간 떨어지는 경향이 있음을 의미하며, 하루에 약 2센트 정도 하락하는 셈입니다. 또한 회귀의 Y축과의 교차점을 `lin_reg.intercept_`로 접근할 수 있는데, 이 값은 대략 `21` 정도로, 연초의 가격을 나타냅니다.
`fit` 후의 `LinearRegression` 객체는 회귀의 모든 계수를 포함하며 `.coef_` 속성을 사용해 접근할 수 있습니다. 우리 경우에는 계수가 하나뿐이며, 약 `-0.017` 정도일 것입니다. 이는 가격이 시간이 지남에 따라 약간씩 떨어지는 경향이 있지만 하루에 약 2센트 정도로 크게 떨어지지는 않는다는 뜻입니다. 또한 회귀의 Y축과의 교차점은 `lin_reg.intercept_`로 접근할 수 있는데, 우리 경우에는 약 `21`이 되어 연초의 가격을 나타냅니다.
모델의 정확도를 확인하려면, 테스트 데이터셋에서 가격을 예측하고 예측값과 실제값이 얼마나 가까운지 측정할 수 있습니다. 이는 평균 제곱 오차(MSE) 지표를 사용해 할 수 있는데, 이는 예상값과 예측값의 제곱 차이의 평균입니다.
모델의 정확도를 확인하려면 테스트 데이터셋에 대해 가격을 예측하고, 예측값이 기대값과 얼마나 가까운지 측정하면 됩니다. 이는 예상값과 예측값 사이 모든 제곱 차이의 평균의 제곱근인 root mean square error(RMSE) 지표로 측정할 수 있습니다.
```python
pred = lin_reg.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 = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
오차는 대략 2포인트로, 약 17% 정도입니다. 그리 좋지 않은 결과입니다. 모델 품질의 또 다른 지표는 **결정 계수(coefficient of determination)**로, 다음과 같이 얻을 수 있습니다:
오차는 약 2포인트, 즉 약 17% 정도로 보입니다. 그리 좋지 않군요. 모델 품질의 또 다른 지표는 <strong>결정 계수(coefficient of determination)</strong>로, 다음과 같이 얻을 수 있습니다:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
값이 0이라면 모델이 입력 데이터를 전혀 고려하지 않고, 단순히 결과의 평균값을 예측하는 *최악의 선형 예측자*임을 의미합니다. 1이라는 값은 모든 출력값을 완벽하게 예측할 수 있음을 뜻합니다. 우리의 경우, 결정 계수는 약 0.06으로 꽤 낮은 편입니다.
결정 계수가 0이라면 모델이 입력 데이터를 전혀 고려하지 않고 결과의 단순 평균값만을 예측하는 <em>최악의 선형 예측자</em>임을 의미합니다. 1이라면 모든 기대 출력값을 완벽하게 예측한다는 뜻입니다. 우리 경우 결정 계수는 약 0.06으로 꽤 낮습니다.
또한 회귀선과 테스트 데이터를 함께 그려서 회귀가 어떻게 작동하는지 더 잘 볼 수 있습니다:
테스트 데이터와 회귀선을 함께 그리면 회귀가 어떻게 동작하는지 더 잘 알 수 있습니다:
```python
plt.scatter(X_test,y_test)
@ -236,17 +234,17 @@ plt.plot(X_test,pred)
## 다항 회귀 (Polynomial Regression)
선형 회귀의 또 다른 유형은 다항 회귀입니다. 때로 변수들 간에 선형 관계가 존재하기도 하지만 — 예를 들어 부피가 큰 호박일수록 가격이 높음 — 때때로 이런 관계를 평면이나 직선으로 그릴 수 없을 수도 있습니다.
선형 회귀의 또 다른 유형은 다항 회귀입니다. 때때로 변수들 간에 선형 관계가 존재할 수 있지만 — 예를 들어 호박 부피가 크면 가격이 높아지는 것처럼 — 때로는 관계가 평면이나 직선으로 나타내기 어려울 때가 있습니다.
[여기에 다항 회귀를 사용할 수 있는 더 많은 예시](https://online.stat.psu.edu/stat501/lesson/9/9.8)가 있습니다.
여기에 [다항 회귀에 적합한 데이터의 몇 가지 예](https://online.stat.psu.edu/stat501/lesson/9/9.8)가 있습니다.
날짜와 가격 간 관계를 다시 보세요. 이 산점도가 반드시 직선으로 분석되어야 할까요? 가격이 변동할 수는 없을까요? 이런 경우 다항 회귀를 시도할 수 있습니다.
다시 `Date``Price` 관계를 살펴봅시다. 이 산점도가 반드시 직선으로 분석되어야 할까요? 가격이 변동할 수는 없을까요? 이런 경우에는 다항 회귀를 시도할 수 있습니다.
✅ 다항식은 하나 이상의 변수와 계수로 이루어진 수학적 표현입니다.
✅ 다항식은 하나 이상의 변수와 계수로 구성된 수학적 표현입니다.
다항 회귀는 곡선을 만들어 비선형 데이터를 더 잘 맞춥니다. 우리 경우 입력 데이터에 제곱된 `DayOfYear` 변수를 포함하면, 연 중 특정 지점에서 최솟값을 가지는 포물선 형태로 데이터를 적합할 수 있습니다.
다항 회귀는 비선형 데이터를 더 잘 맞추기 위해 곡선을 생성합니다. 우리 경우에 `DayOfYear`의 제곱 변수를 입력 데이터에 포함하면, 연중 특정 시점에 최소값이 있는 포물선 곡선으로 데이터를 맞출 수 있습니다.
Scikit-learn은 데이터 처리를 여러 단계로 결합할 수 있는 유용한 [파이프라인 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)를 제공합니다. **파이프라인**은 여러 **추정기(estimators)**가 연결된 체인입니다. 이 예제에서는 먼저 다항 특성을 추가하고, 그 다음 회귀를 학습하는 파이프라인을 만듭니다:
Scikit-learn에는 여러 데이터 처리 단계를 결합하는 데 유용한 [파이프라인 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)가 포함되어 있습니다. <strong>파이프라인</strong><strong>추정기(estimators)</strong>의 연결 고리입니다. 우리 경우 다항 특성을 먼저 추가하고 회귀를 학습하는 파이프라인을 생성할 것입니다:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -257,34 +255,34 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
`PolynomialFeatures(2)`는 입력 데이터에서 모든 2차 다항식을 포함한다는 의미입니다. 우리 경우에는 `DayOfYear`<sup>2</sup> 뿐이지만, 만약 X와 Y 두 변수가 있다면 X<sup>2</sup>, XY, Y<sup>2</sup>가 추가됩니다. 더 높은 차수의 다항식도 사용할 수 있습니다.
`PolynomialFeatures(2)`를 사용하면 입력 데이터의 모든 2차 다항식이 포함됩니다. 우리 경우는 `DayOfYear`<sup>2</sup>가 될 것이며, 만약 두 입력 변수 X, Y가 있다면 X<sup>2</sup>, XY, Y<sup>2</sup>가 추가됩니다. 필요하다면 더 높은 차수의 다항식도 사용할 수 있습니다.
파이프라인은 기본 `LinearRegression` 객체와 동일하게 사용할 수 있어, `fit`으로 학습시키고 `predict`로 결과를 얻을 수 있습니다. 다음은 테스트 데이터와 근사 곡선을 보여주는 그래프입니다:
파이프라인은 원래의 `LinearRegression` 객체처럼 사용할 수 있습니다. 즉, 파이프라인을 `fit`하고 `predict`를 사용해 예측 결과를 얻을 수 있습니다. 아래 그래프는 테스트 데이터와 근사 곡선을 보여줍니다:
<img alt="Polynomial regression" src="../../../../translated_images/ko/poly-results.ee587348f0f1f60b.webp" width="50%" />
다항 회귀를 사용하면 평균 제곱 오차(MSE)가 약간 낮아지고 결정 계수가 높아지긴 하지만 크게 개선되지는 않습니다. 다른 특성들을 더 고려할 필요가 있습니다!
다항 회귀를 사용하면 MSE가 약간 낮아지고 결정 계수가 높아지긴 하지만 크게 차이나진 않습니다. 더 정확한 예측을 위해서는 다른 피처도 고려해야 합니다!
> 최소 호박 가격이 할로윈 즈음에 관찰됩니다. 이것을 어떻게 설명할 수 있을까요?
> 할로윈 무렵 최소 호박 가격이 관찰된다는 점을 알 수 있습니다. 어떻게 설명할 수 있을까요?
🎃 축하합니다! 파이 호박의 가격을 예측하는 모델을 성공적으로 만들었습니다. 동일한 절차로 모든 호박 종류에 대해 반복할 수 있지만, 번거로울 수 있습니다. 이제 모델에 호박 품종을 반영하는 방법을 배워봅시다!
🎃 축하합니다, 당신은 호박 가격을 예측하는 모델을 만들었습니다. 아마도 모든 호박 종류에 대해 같은 절차를 반복할 수 있겠지만 이는 매우 번거롭습니다. 이제 호박 품종을 모델에 반영하는 방법을 배우겠습니다!
## 범주형 특성 (Categorical Features)
이상적인 상황에서 우리는 같은 모델로 다양한 호박 품종의 가격을 예측할 수 있기를 원합니다. 하지만 `Variety` 열은 `Month`와 같은 열과 다르게 숫자가 아닌 값을 포함하고 있습니다. 이러한 열을 **범주형(categorical)** 이라고 부릅니다.
이상적으로는 동일한 모델로 다양한 호박 품종의 가격을 예측할 수 있길 원합니다. 하지만 `Variety` 열은 `Month` 같은 열과 달리 수치 데이터가 아닌 값을 포함합니다. 이런 열을 **범주형(categorical)** 이라고 합니다.
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 위 이미지를 클릭하면 범주형 특성 사용에 대한 짧은 동영상 개요를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 범주형 특성 활용에 대한 간단한 동영상을 볼 수 있습니다.
아래 그래프는 품종에 따른 평균 가격 변화를 보여줍니다:
다음은 품종별 평균 가격입니다:
<img alt="Average price by variety" src="../../../../translated_images/ko/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
품종을 반영하려면 먼저 이를 숫자형으로 변환하거나, 즉 **인코딩** 해야 합니다. 방법은 여러 가지가 있습니다:
품종을 고려하려면 먼저 품종을 숫자형으로 변환하거나 <strong>인코딩</strong>해야 합니다. 인코딩하는 방법은 여러 가지가 있습니다:
* 간단한 **숫자 인코딩**은 서로 다른 품종 목록을 만들고, 품종 이름을 그 목록의 인덱스로 대체합니다. 이는 선형 회귀에는 최적의 방법이 아닙니다. 선형 회귀는 인덱스의 숫자 값을 그대로 사용해 결과에 계수와 곱하여 더하기 때문입니다. 예를 들어, 우리 예에서 인덱스 숫자와 가격 간 관계는 명백히 비선형적입니다.
* **원-핫 인코딩(one-hot encoding)**`Variety` 열을 품종별로 4개의 서로 다른 열로 분리합니다. 각 열은 해당 행이 그 품종이면 `1`, 그렇지 않으면 `0` 값을 가집니다. 이렇게 되면 선형 회귀에는 각 품종마다 하나씩 4개의 계수가 추가되어, 해당 품종의 "기본 가격"(또는 "추가 가격")을 결정합니다.
* 간단한 **숫자 인코딩(numeric encoding)** 은 다른 품종을 테이블로 만들고 품종명을 해당 인덱스로 대체하는 방법입니다. 이는 선형 회귀에는 적합하지 않은데, 선형 회귀는 인덱스의 수치값을 실제 값으로 받아들이고 계수를 곱해 결과에 더하기 때문입니다. 우리 경우 인덱스 번호와 가격의 관계는 명백히 비선형이므로 인덱스 순서가 선형 회귀에 적합하지 않습니다.
* **원-핫 인코딩(one-hot encoding)**`Variety` 열을 각 품종마다 한 개씩 총 4개의 열로 분리합니다. 각 열은 해당 행이 그 품종이면 `1`, 아니면 `0`을 가집니다. 이로 인해 선형 회귀는 네 개의 결정 계수를 갖게 되어 각각 품종마다 "기본 가격"(또는 "추가 가격")을 나타내게 됩니다.
다음 코드는 품종을 원-핫 인코딩하는 방법을 보여줍니다:
@ -303,14 +301,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
원-핫 인코딩된 품종을 입력값으로 하여 선형 회귀를 학습하려면, 단지 `X``y` 데이터를 올바르게 초기화하면 됩니다:
원-핫 인코딩된 품종을 입력으로 하여 선형 회귀를 학습시키려면, `X``y` 데이터를 적절히 초기화하기만 하면 됩니다:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
나머지 코드는 위에서 했던 선형 회귀 학습과 동일합니다. 시도해 보면 평균 제곱 오차는 거의 비슷하지만, 결정 계수가 훨씬 높아져 약 77%가 됩니다. 더 정밀한 예측을 위해서는 더 많은 범주형 특성과 더불어 `Month``DayOfYear` 같은 숫자형 특성도 함께 고려할 수 있습니다. 여러 특성을 하나의 큰 배열로 합치려면 `join`을 사용하면 됩니다:
나머지 코드는 위에서 선형 회귀 학습할 때 사용한 것과 동일합니다. 시도해 보면 평균 제곱 오차는 비슷하지만 결정 계수가 훨씬 높아져 약 77%에 이릅니다. 더욱 정확한 예측을 위해서는 추가 범주형 특성과 `Month`, `DayOfYear` 같은 숫자 특성도 함께 고려할 수 있습니다. 모든 피처를 하나의 큰 배열로 합치려면 `join`을 사용할 수 있습니다:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -320,14 +318,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
여기서는 `City``Package` 유형도 함께 고려하며, 이 경우 MSE는 2.84 (약 10%), 결정 계수는 0.94에 달합니다!
여기서는 `City``Package` 타입도 포함하여 MSE 2.84 (10%), 결정 계수 0.94가 나옵니다!
## 모두 함께 사용하
## 모두 함께 합치
적의 모델을 만들기 위해 위 예제에서 범주형(원-핫 인코딩) + 숫자형 데이터를 다항 회귀와 함께 사용할 수 있습니다. 편의를 위해 전체 코드를 여기에 제시합니다:
종 모델에는 위의 범주형 원-핫 인코딩 데이터와 숫자 데이터를 다항 회귀와 함께 사용합니다. 편의를 위해 전체 코드는 다음과 같습니다:
```python
# 훈련 데이터 설정
# 학습 데이터 설정
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
@ -337,14 +335,14 @@ y = new_pumpkins['Price']
# 학습-테스트 분할 수행
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 파이프라인 설정 및 훈련
# 파이프라인 설정 및 학습
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# 테스트 데이터에 대한 결과 예측
pred = pipeline.predict(X_test)
# MSE 및 결정 계수 계산
# MSE 및 결정계수 계산
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
@ -352,28 +350,28 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
이렇게 하면 거의 97%의 결정 계수와 MSE=2.23 (약 8% 예측 오차)을 얻을 수 있습니다.
이렇게 하면 거의 97%의 최고 결정 계수와 MSE=2.23 (약 8% 예측 오차)를 얻을 수 있습니다.
| 모델 | MSE | 결정 계수 |
|-------|-----|---------------|
| `DayOfYear` 선형 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 다항 | 2.73 (17.0%) | 0.08 |
| `Variety` 선형 | 5.24 (19.7%) | 0.77 |
| 모든 특성 선형 | 2.84 (10.5%) | 0.94 |
| 모든 특성 다항 | 2.23 (8.25%) | 0.97 |
| 전체 특성 선형 | 2.84 (10.5%) | 0.94 |
| 전체 특성 다항 | 2.23 (8.25%) | 0.97 |
🏆 훌륭합니다! 한 강의에서 네 개의 회귀 모델을 만들고 모델 품질을 97%까지 향상시켰습니다. 다음 회귀 강의의 마지막 부분에서 분류를 위한 로지스틱 회귀를 배우게 됩니다.
🏆 훌륭합니다! 한 수업에서 네 가지 회귀 모델을 만들고 모델 품질을 97%까지 향상시켰습니다. 마지막 회귀 섹션에서는 범주 분류를 위한 로지스틱 회귀에 대해 배울 것입니다.
---
## 🚀도전
## 🚀도전 과제
이 노트북에서 여러 변수들을 테스트해보고 상관관계가 모델 정확도에 어떻게 영향을 미치는지 확인해 보세요.
이 노트북에서 여러 변수를 시험하여 상관관계가 모델 정확도에 어떻게 대응하는지 확인해 보세요.
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자학습
## 복습 및 자기 주도 학습
이번 강의에서는 선형 회귀에 대해 배웠습니다. 그 외에도 중요한 회귀 유형들이 있습니다. 스텝와이즈, 리지, 라쏘, 엘라스틱넷 기법을 공부해 보세요. 더 배우기에 좋은 강의로는 [스탠포드 통계 학습 강의](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)가 있습니다.
이번 수업에서는 선형 회귀에 대해 배웠습니다. 회귀에는 다른 중요한 유형도 있습니다. 단계별 회귀(Stepwise), 릿지(Ridge), 라쏘(Lasso), 엘라스틱넷(Elasticnet) 기법을 공부해 보세요. 더 자세히 배우고 싶다면 [스탠퍼드 통계학습 과정](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)이 좋은 코스입니다.
## 과제
@ -383,5 +381,5 @@ print('Model determination: ', score)
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역은 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원래 문서의 원문이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 원어로 된 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 당사가 책임지지 않습니다.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,17 +1,17 @@
# 요리 분류기 1
# Cuisine classifiers 1
이 강의에서는 이전 강의에서 저장한 균형 잡히고 깨끗한 요리 데이터셋을 사용합니다.
이 강의에서는 앞서 강의에서 저장한 균형 잡히고 깔끔한 요리 데이터셋을 사용합니다.
이 데이터셋을 다양한 분류기와 함께 사용하여 _재료 그룹을 기반으로 특정 국가의 요리를 예측_합니다. 이를 통해 분류 작업에 알고리즘을 활용하는 방법에 대해 더 많이 배우게 됩니다.
이 데이터셋을 다양한 분류기와 함께 사용하여 _주어진 재료 그룹을 기반으로 특정 국가 요리를 예측하는 작업_을 수행할 것입니다. 이를 통해 알고리즘이 분류 작업에 어떻게 활용될 수 있는지에 대해 더 많이 배우게 됩니다.
## [강의 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## [사전 강의 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
# 준비
[Lesson 1](../1-Introduction/README.md)을 완료했다고 가정하고, _cleaned_cuisines.csv_ 파일이 이 네 강의를 위한 루트 `/data` 폴더에 존재하는지 확인하세요.
[Lesson 1](../1-Introduction/README.md)을 완료한 상태라면, 이 네 번의 강의를 위해 루트 `/data` 폴더에 _cleaned_cuisines.csv_ 파일이 존재하는지 확인하세요.
## 연습 - 국가 요리 예측하기
## 연습 - 국가 요리 예측
1. 이 강의의 _notebook.ipynb_ 폴더에서 Pandas 라이브러리와 함께 해당 파일을 가져옵니다:
1. 이 강의의 _notebook.ipynb_ 폴더에서 Pandas 라이브러리와 해당 파일을 불러옵니다:
```python
import pandas as pd
@ -19,7 +19,7 @@
cuisines_df.head()
```
데이터는 다음과 같이 보입니다:
데이터는 다음과 같니다:
| | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
@ -30,7 +30,7 @@
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. 이제 몇 가지 추가 라이브러리를 가져옵니다:
1. 이제 몇 가지 라이브러리를 더 불러옵니다:
```python
from sklearn.linear_model import LogisticRegression
@ -40,14 +40,14 @@
import numpy as np
```
1. X와 y 좌표를 두 개의 데이터프레임으로 나누어 훈련합니다. `cuisine`은 레이블 데이터프레임이 될 수 있습니다:
1. X와 y 좌표를 두 개의 데이터프레임으로 나눠 훈련에 사용하세요. `cuisine`은 레이블 데이터프레임이 될 수 있습니다:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
데이터는 다음과 같이 보일 것입니다:
이렇게 보일 것입니다:
```output
0 indian
@ -58,14 +58,14 @@
Name: cuisine, dtype: object
```
1. `Unnamed: 0` 열과 `cuisine` 열을 `drop()`을 사용하여 제거합니다. 나머지 데이터를 훈련 가능한 특징으로 저장하세요:
1. `Unnamed: 0` 열과 `cuisine` 열을 `drop()`으로 삭제하세요. 나머지 데이터를 학습 가능한 특징(feature)으로 저장합니다:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
특징 데이터는 다음과 같이 보입니다:
특징 데이터는 다음과 같니다:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -75,85 +75,86 @@
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
이제 모델을 훈련할 준비가 되었습니다!
이제 모델을 학습시킬 준비가 되었습니다!
## 분류기 선택하기
## 분류기 선택
데이터가 깨끗하고 훈련 준비가 되었으니, 어떤 알고리즘을 사용할지 결정해야 합니다.
데이터가 깨끗하고 학습할 준비가 되었으므로, 어떤 알고리즘을 사용할지 결정해야 합니다.
Scikit-learn은 분류를 지도 학습(Supervised Learning) 범주로 분류하며, 이 범주에서 다양한 분류 방법을 찾을 수 있습니다. [다양한 방법](https://scikit-learn.org/stable/supervised_learning.html)은 처음 보면 꽤 혼란스러울 수 있습니다. 다음 방법들은 모두 분류 기술을 포함합니다:
Scikit-learn은 분류를 감독 학습(Supervised Learning) 아래에 그룹화하며, 그 안에서 다양한 분류 방법을 찾을 수 있습니다. [다양한 방법](https://scikit-learn.org/stable/supervised_learning.html)은 처음 보면 꽤 복잡해 보일 수 있습니다. 다음 방법들이 모두 분류 기술을 포함합니다:
- 선형 모델(Linear Models)
- 서포트 벡터 머신(Support Vector Machines)
- 확률적 경사 하강법(Stochastic Gradient Descent)
- 최근접 이웃(Nearest Neighbors)
- 가우시안 프로세스(Gaussian Processes)
- 결정 트리(Decision Trees)
- 앙상블 방법(Ensemble methods, 투표 분류기)
- 다중 클래스 및 다중 출력 알고리즘(다중 클래스 및 다중 레이블 분류, 다중 클래스-다중 출력 분류)
- 선형 모델 (Linear Models)
- 서포트 벡터 머신 (Support Vector Machines)
- 확률적 경사 하강법 (Stochastic Gradient Descent)
- 최근접 이웃 알고리즘 (Nearest Neighbors)
- 가우시안 프로세스 (Gaussian Processes)
- 결정 트리 (Decision Trees)
- 앙상블 방법 (voting Classifier)
- 다중 클래스 및 다중 출력 알고리즘 (multiclass and multilabel classification, multiclass-multioutput classification)
> [신경망을 사용하여 데이터를 분류](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)할 수도 있지만, 이는 이 강의의 범위를 벗어납니다.
> [신경망으로도 분류가 가능합니다](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification). 하지만 이는 이 강의 범위를 벗어납니다.
### 어떤 분류기를 선택할까?
### 어떤 분류기를 까?
그렇다면 어떤 분류기를 선택해야 할까요? 종종 여러 분류기를 실행해보고 좋은 결과를 찾는 것이 테스트 방법입니다. Scikit-learn은 [비교 예제](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)를 제공하며, KNeighbors, SVC 두 가지 방식, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB 및 QuadraticDiscriminationAnalysis를 비교하여 결과를 시각화합니다:
그렇다면 어떤 분류기를 선택해야 할까요? 보통은 여러 분류기를 실행해보고 좋은 결과가 나오는 것을 선택하는 방법이 있습니다. Scikit-learn은 생성한 데이터셋 위에서 KNeighbors, 두 가지 방법의 SVC, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB, QuadraticDiscrinationAnalysis를 비교하는 [나란히 비교](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)를 제공합니다. 결과는 시각화되어 있습니다:
![분류기 비교](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> Scikit-learn 문서에서 생성된 플롯
![comparison of classifiers](../../../../translated_images/ko/comparison.edfab56193a85e7f.webp)
> 스캐킷런 문서에서 생성된 플롯
> AutoML은 클라우드에서 이러한 비교를 실행하여 데이터에 가장 적합한 알고리즘을 선택할 수 있도록 문제를 깔끔하게 해결합니다. [여기](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)에서 시도해보세요.
> AutoML은 이 문제를 클라우드에서 여러 비교를 실행해 가장 적합한 알고리즘을 선택할 수 있도록 깔끔하게 해결합니다. [여기서 시도해 보세요](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### 더 나은 접근법
무작위로 추측하는 것보다 더 나은 방법은 이 다운로드 가능한 [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)를 따르는 것입니다. 여기에서 다중 클래스 문제에 대해 몇 가지 선택지가 있다는 것을 알 수 있습니다:
무작위로 추측하는 것보다는 다운로드 가능한 [ML 치트 시트](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)의 아이디어를 따르는 것이 더 좋습니다. 여기서 다중 클래스 문제에 대해 다음과 같은 선택지를 알 수 있습니다:
![다중 클래스 문제를 위한 치트 시트](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> Microsoft의 알고리즘 치트 시트의 일부, 다중 클래스 분류 옵션을 설명
![cheatsheet for multiclass problems](../../../../translated_images/ko/cheatsheet.07a475ea444d2223.webp)
> 마이크로소프트 알고리즘 치트 시트 일부, 다중 클래스 분류 옵션 설명
✅ 이 치트 시트를 다운로드하고, 출력하여 벽에 걸어두세요!
✅ 이 치트 시트를 다운로드하여 출력한 후 벽에 붙여 두세요!
### 추론
### 이유 분석
제약 조건을 고려하여 다양한 접근법을 추론해 봅시다:
제약 조건을 고려해 서로 다른 접근법을 논리적으로 살펴봅시다:
- **신경망은 너무 무겁다**. 깨끗하지만 최소한의 데이터셋과 로컬 노트북을 통해 훈련을 실행한다는 점을 고려할 때, 신경망은 이 작업에 너무 무겁습니다.
- **이중 클래스 분류기는 사용하지 않는다**. 이중 클래스 분류기를 사용하지 않으므로 one-vs-all은 제외됩니다.
- **결정 트리 또는 로지스틱 회귀가 적합할 수 있다**. 결정 트리가 적합할 수 있으며, 다중 클래스 데이터에 대해 로지스틱 회귀도 적합할 수 있습니다.
- **다중 클래스 부스팅 결정 트리는 다른 문제를 해결한다**. 다중 클래스 부스팅 결정 트리는 비모수적 작업, 예를 들어 순위를 생성하는 작업에 가장 적합하므로 우리에게는 적합하지 않습니다.
- **신경망은 너무 무겁다**. 깔끔하지만 최소한의 데이터셋이고 노트북에서 로컬 학습을 진행하므로 신경망은 과도한 무게를 가집니다.
- **2클래스 분류기를 사용하지 않는다**. 2클래스 분류기가 아니므로 one-vs-all 방식은 제외됩니다.
- **결정 트리나 로지스틱 회귀가 가능하다**. 결정 트리나 다중 클래스 데이터용 로지스틱 회귀를 사용할 수 있습니다.
- **다중 클래스 부스팅 결정 트리는 다른 문제에 적합하다**. 다중 클래스 부스팅 결정 트리는 주로 순위 생성과 같은 비모수 작업에 적합하여 여기에는 적합하지 않습니다.
### Scikit-learn 사용하기
우리는 Scikit-learn을 사용하여 데이터를 분석할 것입니다. 그러나 Scikit-learn에서 로지스틱 회귀를 사용하는 방법은 여러 가지가 있습니다. [전달할 매개변수](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)를 확인세요.
데이터 분석을 위해 Scikit-learn을 사용할 것입니다. 하지만 Scikit-learn에서 로지스틱 회귀를 사용하는 방법은 다양합니다. [전달 가능한 파라미터](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)를 확인해 보세요.
본질적으로 두 가지 중요한 매개변수 - `multi_class``solver` - 를 지정해야 합니다. Scikit-learn에 로지스틱 회귀를 수행하도록 요청할 때 이 두 가지가 필요합니다. `multi_class` 값은 특정 동작을 적용합니다. solver 값은 사용할 알고리즘을 나타냅니다. 모든 solver가 모든 `multi_class` 값과 함께 사용할 수 있는 것은 아닙니다.
사실상 중요한 파라미터는 `multi_class``solver` 두 가지입니다. 로지스틱 회귀를 수행할 때 이 두 가지를 지정해야 합니다. `multi_class` 값은 특정 동작을 적용하고, `solver`는 사용할 알고리즘을 지정합니다. 모든 solver가 모든 `multi_class` 값과 호환되는 것은 아닙니다.
문서에 따르면, 다중 클래스의 경우 훈련 알고리즘은:
문서에 따르면, 다중 클래스의 경우 학습 알고리즘은:
- **one-vs-rest (OvR) 방식**을 사용합니다, 만약 `multi_class` 옵션이 `ovr`로 설정된 경우
- **교차 엔트로피 손실**을 사용합니다, 만약 `multi_class` 옵션이 `multinomial`로 설정된 경우. (현재 `multinomial` 옵션은 lbfgs, sag, saganewton-cg solver에서만 지원됩니다.)
- **`multi_class` 옵션이 `ovr`인 경우 one-vs-rest (OvR) 방식을 사용**합니다.
- **`multi_class` 옵션이 `multinomial`인 경우 교차 엔트로피 손실(cross-entropy loss)를 사용**합니다. (`multinomial` 옵션은 현재 'lbfgs', 'sag', 'saga', 'newton-cg' solver만 지원)
> 🎓 여기서 '방식'은 'ovr'(one-vs-rest) 또는 'multinomial'일 수 있습니다. 로지스틱 회귀는 본래 이진 분류를 지원하도록 설계되었기 때문에, 이러한 방식은 다중 클래스 분류 작업을 더 잘 처리할 수 있도록 합니다. [출처](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 여기서 'scheme'은 'ovr'(one-vs-rest) 또는 'multinomial'일 수 있습니다. 로지스틱 회귀는 기본적으로 이진 분류용이지만 이 방식들이 다중 클래스 분류에 적합하도록 돕습니다. [소스](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'solver'는 "최적화 문제에서 사용할 알고리즘"으로 정의됩니다. [출처](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'solver'는 "최적화 문제에서 사용하는 알고리즘"으로 정의됩니다. [소스](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn은 solver가 다양한 데이터 구조에서 발생하는 다양한 문제를 어떻게 처리하는지 설명하는 표를 제공합니다:
Scikit-learn은 소버가 서로 다른 데이터 구조에서 어떻게 문제를 처리하는지 설명하는 표를 제공합니다:
![solver](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
![solvers](../../../../translated_images/ko/solvers.5fc648618529e627.webp)
## 연습 - 데이터 나누기
## 연습 - 데이터 분할
이전 강의에서 배운 로지스틱 회귀를 첫 번째 훈련 시도로 사용할 수 있습니다.
`train_test_split()`을 호출하여 데이터를 훈련 및 테스트 그룹으로 나누세요:
최근 이전 강의에서 배운 로지스틱 회귀를 첫 번째 학습 시도에 집중하여 사용합시다.
`train_test_split()`을 호출하여 데이터를 학습 그룹과 평가 그룹으로 나눕니다:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
```
## 연습 - 로지스틱 회귀 적용하기
## 연습 - 로지스틱 회귀 적용
다중 클래스의 경우, 어떤 _방식_을 사용할지와 어떤 _solver_를 설정할지 선택해야 합니다. 다중 클래스 설정과 **liblinear** solver를 사용하여 LogisticRegression을 훈련하세요.
다중 클래스 설정을 사용하기 때문에 어떤 _scheme__solver_를 쓸지 선택해야 합니다. `multi_class`를 설정하고 **liblinear** solver를 사용해 LogisticRegression을 학습하세요.
1. `multi_class``ovr`로 설정하고 solver를 `liblinear`로 설정하여 로지스틱 회귀를 생성하세요:
1. multi_class를 `ovr`로, solver를 `liblinear`로 설정해 로지스틱 회귀를 만듭니다:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -163,11 +164,13 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
기본값으로 자주 설정되는 `lbfgs`와 같은 다른 solver를 시도해보세요.
> 참고로, 데이터가 필요할 때 평탄화하려면 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 함수를 사용하세요.
정확도가 **80%** 이상으로 좋습니다!
`lbfgs`와 같은 다른 solver도 시도해 보세요. 보통 기본값으로 설정되어 있습니다.
> 필요할 때 Pandas의 [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 함수를 사용해 데이터를 평탄화하세요.
1. 데이터의 한 행(#50)을 테스트하여 이 모델의 작동을 확인할 수 있습니다:
정확도는 <strong>80% 이상</strong>으로 좋습니다!
1. 데이터 한 행 (#50)으로 테스트하여 이 모델이 어떻게 동작하는지 확인할 수 있습니다:
```python
print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
@ -181,9 +184,8 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
cuisine: indian
```
✅ 다른 행 번호를 시도하고 결과를 확인해 보세요.
1. 더 깊이 탐구하여 이 예측의 정확도를 확인할 수 있습니다:
✅ 다른 행 번호로 바꿔 결과를 확인해 보세요.
1. 좀 더 자세히 살펴보면, 이 예측의 정확성을 확인할 수 있습니다:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -195,7 +197,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
결과가 출력됩니다 - 인도 요리가 가장 높은 확률로 예측되었습니다:
결과가 출력됩니다 - 인도 요리가 모델의 가장 좋은 추측이며, 높은 확률입니다:
| | 0 |
| -------: | -------: |
@ -205,9 +207,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ 모델이 왜 이 요리가 인도 요리라고 확신하는지 설명할 수 있나요?
✅ 모델이 왜 이 음식이 인도 요리라고 꽤 확신하는지 설명할 수 있나요?
1. 회귀 수업에서 했던 것처럼 분류 보고서를 출력하여 더 많은 세부 정보를 확인하세요:
1. 회귀 수업에서 했던 것처럼, 분류 보고서를 출력하여 더 자세한 정보를 얻으세요:
```python
y_pred = model.predict(X_test)
@ -221,24 +223,26 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| japanese | 0.70 | 0.75 | 0.72 | 220 |
| korean | 0.86 | 0.76 | 0.81 | 242 |
| thai | 0.79 | 0.85 | 0.82 | 254 |
| accuracy | 0.80 | 1199 | | |
| accuracy | | | 0.80 | 1199 |
| macro avg | 0.80 | 0.80 | 0.80 | 1199 |
| weighted avg | 0.80 | 0.80 | 0.80 | 1199 |
## 🚀도전 과제
이번 수업에서는 정제된 데이터를 사용하여 재료 목록을 기반으로 국가별 요리를 예측하는 머신 러닝 모델을 구축했습니다. Scikit-learn이 데이터를 분류하기 위해 제공하는 다양한 옵션을 읽어보세요. 'solver'의 개념을 더 깊이 탐구하여 내부적으로 어떤 일이 일어나는지 이해해 보세요.
이번 수업에서는 정리된 데이터를 사용해 일련의 재료를 기반으로 국가 요리를 예측하는 머신러닝 모델을 만들었습니다. Scikit-learn이 제공하는 다양한 데이터 분류 옵션을 살펴볼 시간을 가지세요. 'solver' 개념을 더 깊게 파고들어 내부에서 어떤 일이 일어나는지 이해해 보세요.
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
## 복습 및 자기 주도 학습
로지스틱 회귀의 수학적 배경을 [이 강의](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)에서 더 깊이 탐구해 보세요.
## 과제
[이 수업](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)에서 로지스틱 회귀의 수학적 배경을 좀 더 깊이 탐구해 보세요.
## 과제
[solver에 대해 공부하기](assignment.md)
[솔버 학습](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문가의 인적 번역을 권장합니다. 본 번역 사용으로 인한 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -10,14 +10,14 @@
### 🌐 다국어 지원
#### GitHub Action을 통한 지원 (자동화 및 항상 최신 상태 유지)
#### GitHub 액션을 통해 지원 (자동화 및 항상 최신 상태 유지)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](./README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
[아랍어](../ar/README.md) | [벵골어](../bn/README.md) | [불가리아어](../bg/README.md) | [버마어 (미얀마)](../my/README.md) | [중국어 (간체)](../zh-CN/README.md) | [중국어 (번체, 홍콩)](../zh-HK/README.md) | [중국어 (번체, 마카오)](../zh-MO/README.md) | [중국어 (번체, 대만)](../zh-TW/README.md) | [크로아티아어](../hr/README.md) | [체코어](../cs/README.md) | [덴마크어](../da/README.md) | [네덜란드어](../nl/README.md) | [에스토니아어](../et/README.md) | [핀란드어](../fi/README.md) | [프랑스어](../fr/README.md) | [독일어](../de/README.md) | [그리스어](../el/README.md) | [히브리어](../he/README.md) | [힌디어](../hi/README.md) | [헝가리어](../hu/README.md) | [인도네시아어](../id/README.md) | [이탈리아어](../it/README.md) | [일본어](../ja/README.md) | [칸나다어](../kn/README.md) | [크메르어](../km/README.md) | [한국어](./README.md) | [리투아니아어](../lt/README.md) | [말레이어](../ms/README.md) | [말라얄람어](../ml/README.md) | [마라티어](../mr/README.md) | [네팔어](../ne/README.md) | [나이지리아 피진어](../pcm/README.md) | [노르웨이어](../no/README.md) | [페르시아어 (파르시)](../fa/README.md) | [폴란드어](../pl/README.md) | [포르투갈어 (브라질)](../pt-BR/README.md) | [포르투갈어 (포르투칼)](../pt-PT/README.md) | [펀자브어 (구르무키)](../pa/README.md) | [루마니아어](../ro/README.md) | [러시아어](../ru/README.md) | [세르비아어 (키릴문자)](../sr/README.md) | [슬로바키아어](../sk/README.md) | [슬로베니아어](../sl/README.md) | [스페인어](../es/README.md) | [스와힐리어](../sw/README.md) | [스웨덴어](../sv/README.md) | [타갈로그어 (필리핀어)](../tl/README.md) | [타밀어](../ta/README.md) | [텔루구어](../te/README.md) | [태국어](../th/README.md) | [터키어](../tr/README.md) | [우크라이나어](../uk/README.md) | [우르두어](../ur/README.md) | [베트남어](../vi/README.md)
> **로컬 복제를 선호하시나요?**
> **로컬에서 클론 하시겠습니까?**
>
> 이 저장소에는 50개 이상의 언어 번역본이 포함되어 있어 다운로드 크기가 상당히 커집니다. 번역 없이 복제하려면 sparse checkout을 사용하세요:
> 이 저장소에는 50개 이상의 언어 번역본이 포함되어 있어 다운로드 크기가 상당히 커집니다. 번역 없이 클론하려면 sparse checkout을 사용하세요:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,62 +33,63 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 이렇게 하면 훨씬 더 빠른 다운로드로 코스 완료에 필요한 모든 것을 받을 수 있습니다.
> 이 방법은 훨씬 빠른 다운로드 속도로 코스 완료에 필요한 모든 것을 제공합니다.
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
#### 커뮤니티에 참여하세요
#### 커뮤니티에 참여하
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
우리는 Discord에서 AI와 함께 배우는 시리즈를 진행 중이며, 2025년 9월 18일부터 30일까지 [Learn with AI Series](https://aka.ms/learnwithai/discord)에서 자세히 알아보고 참여할 수 있습니다. 여기서 GitHub Copilot을 데이터 과학에 활용하는 팁과 요령을 얻을 수 있습니다.
현재 Discord에서 AI와 함께 배우는 시리즈가 진행 중이며, 2025년 9월 18일부터 30일까지 [Learn with AI Series](https://aka.ms/learnwithai/discord)에서 더 많은 정보를 얻고 참여할 수 있습니다. GitHub Copilot을 활용한 데이터 과학 사용 팁과 요령을 배울 수 있습니다.
![Learn with AI series](../../translated_images/ko/3.9b58fd8d6c373c20.webp)
# 초보자를 위한 머신러닝 - 교과정
# 초보자를 위한 머신러닝 - 교과정
> 🌍 세계 문화를 통해 머신러닝을 탐구하며 전 세계를 여행해요 🌍
> 🌍 전 세계 문화를 통해 머신러닝을 탐험하는 세계 일주 🌍
Microsoft의 Cloud Advocates는 머신러닝에 관한 12주간 26개 강의의 커리큘럼을 기쁘게 제공합니다. 이 커리큘럼에서는 주로 Scikit-learn 라이브러리를 사용하여, 때로는 <strong>고전적 머신러닝</strong>이라 불리는 내용을 배우고, 심층 학습은 [AI for Beginners 커리큘럼](https://aka.ms/ai4beginners)에서 다룹니다. 이 강의를 ['데이터 과학 초보자' 커리큘럼](https://aka.ms/ds4beginners)과 함께 진행하세요!
Microsoft의 클라우드 옹호자들이 제공하는 12주, 26강의의 <strong>머신러닝</strong>에 관한 교육과정을 제공합니다. 이 교육과정에서는 주로 Scikit-learn 라이브러리를 사용하며, 종종 '고전적 머신러닝'이라고도 부르는 것을 배우고 딥러닝은 [AI for Beginners 교육과정](https://aka.ms/ai4beginners)에서 다룹니다. 또한 이 강의들을 ['데이터 과학 초보자' 교육과정](https://aka.ms/ds4beginners)과 함께 학습할 수 있습니다.
전 세계를 여행하면서 이러한 고전 기술을 세계 여러 지역의 데이터를 다루는 데 적용해봅니다. 각 강의에는 강의 전 및 후 퀴즈, 완성 지침서, 해답, 과제 등이 포함되어 있습니다. 프로젝트 기반 교육법으로 학습하는 동안 직접 만들어 봄으로써 새로운 기술을 확실히 익힐 수 있습니다.
전 세계를 여행하며 여러 지역의 데이터를 이용해 이 고전적 기법들을 적용해봅니다. 각 강의에는 사전 및 사후 퀴즈, 수업 완료를 위한 작성된 지침, 해답, 과제 등이 포함되어 있습니다. 프로젝트 기반 수업 방식으로 학습하며, 새로운 기술 습득에 효과적입니다.
**✍️ 저자분들께 진심으로 감사드립니다** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu, Amy Boyd
**✍️ 저자분들께 감사드립니다** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu Amy Boyd
**🎨 일러스트 작업을 해주신 분들께도 감사드립니다** Tomomi Imura, Dasani Madipalli, Jen Looper
**🎨 일러스트레이터분들께도 감사드립니다** Tomomi Imura, Dasani Madipalli, 그리고 Jen Looper
**🙏 Microsoft 학생 홍보대사 저자, 리뷰어 및 콘텐츠 기여자분들께 특별 감사드립니다.** Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal 님.
**🙏 Microsoft 학생 홍보대사 저자, 리뷰어, 콘텐츠 기여자분들께 특별히 감사드립니다**, 특히 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, 그리고 Snigdha Agarwal
**🤩 R 강의를 위해 도움 주신 Microsoft 학생 홍보대사 Eric Wanjau, Jasleen Sondhi, Vidushi Gupta 님께도 감사드립니다!**
**🤩 Microsoft 학생 홍보대사 Eric Wanjau, Jasleen Sondhi, Vidushi Gupta께 R 강의에 대해 특별한 감사를 드립니다!**
# 시작하기
다음 단계를 따라 주세요:
1. **저장소 포크하기**: 이 페이지 오른쪽 상단의 "Fork" 버튼을 클릭하세요.
2. **저장소 복제하기**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
다음 단계를 따세요:
1. **저장소 포크하기**: 이 페이지 우측 상단의 "Fork" 버튼을 클릭하세요.
2. **저장소 클론하기**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [코스의 모든 추가 자료는 Microsoft Learn 컬렉션에서 찾을 수 있습니다](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [강의와 관련된 추가 자료 모두는 Microsoft Learn 컬렉션에서 확인할 수 있습니다](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **도움이 필요하신가요?** 설치, 설정, 강의 실행 시 발생하는 일반적인 문제 해결책은 [문제 해결 가이드](TROUBLESHOOTING.md)를 확인하세요.
> 🔧 **도움이 필요하신가요?** 일반적인 설치, 설정, 강의 실행 문제에 대한 해결책은 [문제 해결 가이드](TROUBLESHOOTING.md)를 확인하세요.
**[학생](https://aka.ms/student-page) 여러분**, 이 커리큘럼을 사용하려면 저장소 전체를 본인 GitHub 계정으로 포크하여 혼자 또는 그룹과 함께 연습문제를 완료하세요:
**[학생](https://aka.ms/student-page)** 여러분, 이 교육과정을 활용하려면 전체 저장소를 자신의 GitHub 계정으로 포크한 후 개별 또는 그룹으로 연습 문제를 완수하세요:
- 강의 전 퀴즈부터 시작하세요.
- 강의를 읽고 활동을 완료하며 각 지식 점검에서 잠시 멈추고 성찰하십시오.
- 강의 내용을 이해하여 프로젝트를 직접 만들려고 시도하세요. 해결 코드가 필요하면 각 프로젝트 지향 강의의 `/solution` 폴더에 있습니다.
- 강의를 읽고 각 지식 확인에서 잠시 멈추어 반성하며 활동을 완료하세요.
- 솔루션 코드를 그대로 실행하기보다 내용을 이해하며 프로젝트를 직접 생성해보세요; 솔루션 코드는 각 프로젝트별 `/solution` 폴더에 있습니다.
- 강의 후 퀴즈를 풀어보세요.
- 도전을 완료하세요.
- 과제를 제출하세요.
- 한 강의 그룹을 마친 후 [토론 게시판](https://github.com/microsoft/ML-For-Beginners/discussions)에 방문해 "큰 소리로 배우기"를 위해 적절한 PAT 루브릭을 작성하세요. 'PAT'은 학습을 더욱 심화시키기 위한 평가 도구입니다. 다른 PAT에도 반응하여 함께 배울 수 있습니다.
- 과제를 완료하세요.
- 강의 그룹을 완료한 후 [토론 게시판](https://github.com/microsoft/ML-For-Beginners/discussions)을 방문하여 적절한 PAT 루브릭을 작성하며 "소리내어 배우기"에 참여하세요. PAT는 학습 진척도를 평가하는 도구로, 학습을 더 깊게 하기 위해 작성하는 루브릭입니다. 다른 사람의 PAT에도 반응하며 함께 배울 수 있습니다.
> 추가 학습을 위해 다음 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 모듈 학습 경로를 추천합니다.
> 추가 학습을 위해서는 [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) 모듈 학습 경로를 추천합니다.
**교사 여러분**, 이 커리큘럼을 활용하는 방법에 관한 [제안 사항](for-teachers.md)도 포함되어 있습니다.
<strong>교사분들께서는</strong>, 이 교육과정을 활용하는 방법에 대해 [몇 가지 제안](for-teachers.md)을 마련해 두었습니다.
---
## 비디오 안내
## 비디오 워크스루
일부 강의는 짧은 영상으로 제공됩니다. 강의 내에서 직접 보거나, 이미지 클릭 시 [Microsoft Developer YouTube 채널의 ML for Beginners 재생목록](https://aka.ms/ml-beginners-videos)에서 모두 확인할 수 있습니다.
일부 강의는 짧은 형식의 비디오로 제공됩니다. 모든 비디오는 강의 내에서 확인하거나 Microsoft Developer 유튜브 채널의 [ML for Beginners 재생목록](https://aka.ms/ml-beginners-videos)에서 아래 이미지를 클릭해 볼 수 있습니다.
[![ML for beginners banner](../../translated_images/ko/ml-for-beginners-video-banner.63f694a100034bc6.webp)](https://aka.ms/ml-beginners-videos)
@ -98,140 +99,151 @@ Microsoft의 Cloud Advocates는 머신러닝에 관한 12주간 26개 강의의
[![Promo video](../../images/ml.gif)](https://youtu.be/Tj1XWrDSYJU)
**GIF 제작자** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
**Gif 제작** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)
> 🎥 위 이미지를 클릭하여 프로젝트와 제작진에 대한 영상을 시청하세요!
> 🎥 위 이미지를 클릭하면 프로젝트 및 제작자에 관한 영상을 볼 수 있습니다!
---
## 교육 철학
## 교수법
커리큘럼을 만들면서 두 가지 교육 원칙을 선택했습니다: 실습 중심의 <strong>프로젝트 기반 학습</strong>**빈번한 퀴즈** 포함입니다. 또한 일관된 <strong>주제</strong>를 설정해 통일감을 갖도록 했습니다.
교육과정을 만들면서 두 가지 교수 원칙을 선택했습니다: 실습 중심의 <strong>프로젝트 기반 학습</strong>**자주 있는 퀴즈** 포함입니다. 또한, 교육과정 전반에 통일감을 주는 공통된 <strong>주제</strong>가 있습니다.
내용을 프로젝트와 일치시키면 학생들의 참여도가 높아지고 개념 이해가 더 잘 유지됩니다. 수업 전 간단한 퀴즈는 학습 의도를 다지게 하며, 수업 후 퀴즈는 이해도를 높입니다. 이 커리큘럼은 유연하고 재미있게 설계돼 전체 또는 일부만 진행할 수 있습니다. 프로젝트는 작게 시작하여 12주 사이클이 끝날 때쯤 점차 복잡해집니다. 추가 학점이나 토론 주제로 쓸 수 있는 실제 ML 적용 후문도 포함되어 있습니다.
콘텐츠가 프로젝트와 연계되어 있으므로, 학생들의 참여도가 높아지고 개념의 이해가 향상됩니다. 수업 전 부담 없는 퀴즈는 학생들의 학습 의도를 설정하며, 수업 후 두 번째 퀴즈는 학습 내용의 지속적인 유지에 도움을 줍니다. 이 교육과정은 유연하고 재미있게 설계되어 전체 진행이 가능하며 일부만 수강할 수도 있습니다. 프로젝트는 작은 단계로 시작하고 12주 사이클 마지막에 갈수록 복잡해집니다. 마지막에는 머신러닝의 실제 활용에 관한 부록이 포함되어 있어 추가 점수나 토론 자료로 활용할 수 있습니다.
> [행동 강령](CODE_OF_CONDUCT.md), [기여 가이드](CONTRIBUTING.md), [번역](..), [문제 해결](TROUBLESHOOTING.md) 지침을 확인하세요. 여러분의 건설적인 피드백을 환영합니다!
> 우리의 [행동 강령](CODE_OF_CONDUCT.md), [기여 가이드](CONTRIBUTING.md), [번역](..), [문제 해결](TROUBLESHOOTING.md) 지침을 참고하세요. 건설적인 피드백을 환영합니다!
## 각 강의 구성 요소
## 각 강의에 포함된 내용
- 선택적 스케치노트
- 선택적 보 비디오
- 비디오 안내 (일부 강의만)
- [강의 전 워밍업 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
- 서면 강의 자료
- 프로젝트 기반 강의의 경우 프로젝트 만드는 단계별 가이드
- 지식 점검
- 선택적 보 비디오
- 비디오 워크스루 (일부 강의만)
- [강의 전 준비 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
- 작성된 강의 내용
- 프로젝트 기반 강의의 경우, 프로젝트 구축 단계별 안내
- 지식 확인
- 도전 과제
- 보조 읽기 자료
- 추가 읽기 자료
- 과제
- [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> **언어에 대한 참고 사항**: 이 강의들은 주로 Python으로 작성되었지만, 많은 강의가 R로도 제공됩니다. R 강의를 완료하려면 `/solution` 폴더로 이동하여 R 강의를 찾아보세요. 이 강의들은 `.rmd` 확장자를 가지고 있으며, 이는 `코드 청크`(R 또는 다른 언어)와 `YAML 헤더`(PDF와 같은 출력 형식을 안내하는)를 `Markdown 문서`에 포함한 **R Markdown** 파일을 의미합니다. 따라서 R Markdown은 코드, 출력 결과, 그리고 생각을 Markdown으로 작성할 수 있게 해줘 데이터 과학에 적합한 저작 프레임워크로 활용됩니다. 또한, R Markdown 문서는 PDF, HTML, Word와 같은 출력 형식으로 렌더링할 수 있습니다.
> **퀴즈에 한 참고 사항**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 포함되어 있으며, 총 52개의 퀴즈가 각기 세 개의 질문으로 구성되어 있습니다. 이 퀴즈들은 강의 내에서 연결되어 있지만, 퀴즈 앱은 로컬에서 실행할 수 있습니다; `quiz-app` 폴더 내 지침을 따라 로컬로 호스트하거나 Azure에 배포할 수 있습니다.
| Lesson Number | Topic | Lesson Grouping | Learning Objectives | Linked Lesson | Author |
| :-----------: | :------------------------------------------------------------: | :-------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 머신러닝 소개 | [Introduction](1-Introduction/README.md) | 머신러닝의 기본 개념을 학습하세요 | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 머신러닝의 역사 | [Introduction](1-Introduction/README.md) | 이 분야의 역사를 학습하세요 | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 공정성과 머신러닝 | [Introduction](1-Introduction/README.md) | 학생들이 ML 모델을 구축하고 적용할 때 고려해야 할 공정성과 관련된 중요한 철학적 문제는 무엇인가? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 머신러닝 기법 | [Introduction](1-Introduction/README.md) | ML 연구자들이 ML 모델을 구축하는 데 사용하는 기법은 무엇인가? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 회귀 분석 소개 | [Regression](2-Regression/README.md) | Python과 Scikit-learn으로 회귀 모델 시작하기 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 머신러닝 준비를 위한 데이터 시각화 및 정제 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 선형 및 다항 회귀 모델 구축 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 로지스틱 회귀 모델 구축 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 웹 앱 🔌 | [Web App](3-Web-App/README.md) | 훈련된 모델을 사용하기 위한 웹 앱 구축 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 분류 소개 | [Classification](4-Classification/README.md) | 데이터 정제, 준비 및 시각화; 분류 소개 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 분류기 소개 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 추가 분류기 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 모델을 사용해 추천 웹 앱 구축 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 군집화 소개 | [Clustering](5-Clustering/README.md) | 데이터 정제, 준비 및 시각화; 군집화 소개 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 나이지리아 음악 취향 탐색 🎧 | [Clustering](5-Clustering/README.md) | K-평균 군집화 방법 탐구 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 자연어 처리 소개 ☕️ | [Natural language processing](6-NLP/README.md) | 간단한 봇을 만들어 NLP 기본 배우기 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 일반적인 NLP 작업 ☕️ | [Natural language processing](6-NLP/README.md) | 언어 구조를 다룰 때 필요한 일반적인 작업 이해로 NLP 지식 심화 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 번역 및 감성 분석 ♥️ | [Natural language processing](6-NLP/README.md) | 제인 오스틴과 함께하는 번역 및 감성 분석 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 유럽의 낭만적인 호텔들 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰 감성 분석 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 유럽의 낭만적인 호텔들 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰 감성 분석 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 시계열 예측 소개 | [Time series](7-TimeSeries/README.md) | 시계열 예측 소개 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 세계 전력 사용량 ⚡️ - ARIMA를 이용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | ARIMA를 이용한 시계열 예측 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 세계 전력 사용량 ⚡️ - SVR을 이용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | 서포트 벡터 회귀(SVR)를 이용한 시계열 예측 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 강화 학습 소개 | [Reinforcement learning](8-Reinforcement/README.md) | Q-러닝을 통한 강화 학습 소개 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 피터가 늑대를 피하도록 도와주세요! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 강화 학습 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | 실제 ML 시나리오 및 응용 사례 | [ML in the Wild](9-Real-World/README.md) | 고전적인 ML의 흥미롭고 드러나는 실제 응용 사례 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | RAI 대시보드를 활용한 ML 모델 디버깅 | [ML in the Wild](9-Real-World/README.md) | Responsible AI 대시보드 구성 요소를 활용한 머신러닝 모델 디버깅 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [이 과정의 모든 추가 자료는 Microsoft Learn 컬렉션에서 확인하세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> **언어에 관한 참고 사항**: 이 수업들은 주로 Python으로 작성되었지만, 많은 수업이 R로도 제공됩니다. R 수업을 완료하려면 `/solution` 폴더로 이동하여 R 수업을 찾으세요. 여기에는 **R Markdown** 파일을 나타내는 .rmd 확장자가 포함되어 있으며, 이는 `code chunks`(R 또는 다른 언어로 된 코드 블록)와 `YAML 헤더`(PDF와 같은 출력 형식을 안내함)를 `Markdown 문서`에 내장한 것으로 간단히 정의할 수 있습니다. 따라서 코드, 출력 및 생각을 Markdown으로 작성하여 결합할 수 있으므로 데이터 과학 저작 프레임워크의 모범 사례 역할을 합니다. 또한, R Markdown 문서는 PDF, HTML 또는 Word와 같은 출력 형식으로 렌더링될 수 있습니다.
> **퀴즈에 한 참고 사항**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 포함되어 있으며 총 52개의 퀴즈가 각 3개의 질문으로 구성되어 있습니다. 퀴즈들은 수업 내에서 연결되어 있지만, 퀴즈 앱은 로컬에서 실행할 수 있으며, 로컬 호스팅 또는 Azure 배포 방법은 `quiz-app` 폴더의 지침을 따르세요.
| 수업 번호 | 주제 | 수업 그룹 | 학습 목표 | 연결된 수업 | 저자 |
| :-------: | :-----------------------------------------------------------------: | :----------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------: |
| 01 | 기계 학습 소개 | [소개](1-Introduction/README.md) | 기계 학습의 기본 개념 학습 | [수업](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | 기계 학습의 역사 | [소개](1-Introduction/README.md) | 이 분야의 역사 학습 | [수업](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | 공정성과 기계 학습 | [소개](1-Introduction/README.md) | ML 모델 구축 및 적용 시 학생들이 고려해야 할 공정성에 관련된 중요한 철학적 이슈는 무엇인가? | [수업](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | 기계 학습 기법 | [소개](1-Introduction/README.md) | ML 연구자들이 ML 모델을 구축할 때 사용하는 기법은 무엇인가? | [수업](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | 회귀 소개 | [회귀](2-Regression/README.md) | Python과 Scikit-learn으로 회귀 모델 시작 | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | 북미 호박 가격 🎃 | [회귀](2-Regression/README.md) | ML 준비를 위한 데이터 시각화 및 정리 | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | 북미 호박 가격 🎃 | [회귀](2-Regression/README.md) | 선형 및 다항 회귀 모델 구축 | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | 북미 호박 가격 🎃 | [회귀](2-Regression/README.md) | 로지스틱 회귀 모델 구축 | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | 웹 앱 🔌 | [웹 앱](3-Web-App/README.md) | 훈련된 모델을 사용할 웹 앱 구축 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 분류 소개 | [분류](4-Classification/README.md) | 데이터 정리, 준비 및 시각화; 분류 소개 | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | 맛있는 아시아 및 인도 요리 🍜 | [분류](4-Classification/README.md) | 분류기 소개 | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | 맛있는 아시아 및 인도 요리 🍜 | [분류](4-Classification/README.md) | 더 많은 분류기 | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | 맛있는 아시아 및 인도 요리 🍜 | [분류](4-Classification/README.md) | 모델을 사용한 추천 웹 앱 구축 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 군집화 소개 | [군집화](5-Clustering/README.md) | 데이터 정리, 준비 및 시각화; 군집화 소개 | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | 나이지리아 음악 취향 탐색 🎧 | [군집화](5-Clustering/README.md) | K-평균 군집화 방법 탐색 | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | 자연어 처리 소개 ☕️ | [자연어 처리](6-NLP/README.md) | 간단한 봇을 만들어 NLP 기초 학습 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 일반적인 NLP 작업 ☕️ | [자연어 처리](6-NLP/README.md) | 언어 구조를 다룰 때 필요한 일반 작업 이해로 NLP 지식 심화 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 번역 및 감정 분석 ♥️ | [자연어 처리](6-NLP/README.md) | Jane Austen과 함께하는 번역 및 감정 분석 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 유럽의 로맨틱 호텔 ♥️ | [자연어 처리](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 유럽의 로맨틱 호텔 ♥️ | [자연어 처리](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 시계열 예측 소개 | [시계열](7-TimeSeries/README.md) | 시계열 예측 소개 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 세계 전력 사용량 ⚡️ - ARIMA를 이용한 시계열 예측 | [시계열](7-TimeSeries/README.md) | ARIMA를 이용한 시계열 예측 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 세계 전력 사용량 ⚡️ - SVR을 이용한 시계열 예측 | [시계열](7-TimeSeries/README.md) | 지원 벡터 회귀를 이용한 시계열 예측 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 강화 학습 소개 | [강화 학습](8-Reinforcement/README.md) | Q-러닝을 활용한 강화 학습 소개 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 피터가 늑대를 피하도록 도우세요! 🐺 | [강화 학습](8-Reinforcement/README.md) | 강화 학습 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| 후주(Postscript) | 실제 ML 시나리오 및 응용 | [실제 ML](9-Real-World/README.md) | 고전 ML의 흥미롭고 유용한 실제 응용 사례 | [수업](9-Real-World/1-Applications/README.md) | |
| 후주(Postscript) | RAI 대시보드를 이용한 ML 모델 디버깅 | [실제 ML](9-Real-World/README.md) | 책임 있는 AI 대시보드 구성요소를 활용한 머신러닝 모델 디버깅 | [수업](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [이 과정의 모든 추가 자료는 Microsoft Learn 모음에서 확인하세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 오프라인 접근
[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인에서 실행할 수 있습니다. 이 저장소를 포크하고, 로컬 컴퓨터에 [Docsify를 설치](https://docsify.js.org/#/quickstart)한 다음, 이 저장소의 루트 폴더에서 `docsify serve`를 입력하세요. 웹사이트는 로컬호스트의 3000번 포트에 제공됩니다: `localhost:3000`.
[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인으로 실행할 수 있습니다. 이 저장소를 포크하고, 로컬 머신에 [Docsify 설치](https://docsify.js.org/#/quickstart) 후 저장소의 루트 폴더에서 `docsify serve`를 입력하세요. 웹사이트는 로컬호스트의 3000번 포트에 제공됩니다: `localhost:3000`.
## PDF
링크된 PDF 교육 과정은 [여기](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)에서 찾으실 수 있습니다.
커리큘럼 PDF와 링크는 [여기](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf)에서 찾을 수 있습니다.
## 🎒 기타 강좌
## 🎒 기타 과정
우리 팀은 다른 강좌들도 제작합니다! 확인해 보세요:
우리 팀은 다른 과정들도 제작합니다! 확인해보세요:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain4j 입문용](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js 입문용](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain 입문용](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
### Azure / Edge / MCP / 에이전트
[![AZD 입문용](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI 입문용](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 MCP](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 AI 에이전트](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 생성 AI 시리즈
[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### 생성 AI 시리즈
[![초보자를 위한 생성형 AI](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![생성형 AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![생성형 AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![생성형 AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### 핵심 학습
[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 ML](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 데이터 과학](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 AI](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 사이버 보안](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![초보자를 위한 웹 개발](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 IoT](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![초보자를 위한 XR 개발](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 코파일럿 시리즈
[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
[![AI 페어 프로그래밍용 코파일럿](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET용 코파일럿](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![코파일럿 어드벤처](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## 도움 받기
AI 앱 개발 중 막히거나 궁금한 점이 있다면, MCP에 대해 함께 배우는 학습자와 경험이 풍부한 개발자들과 토론에 참여하세요. 질문을 환영하고 지식을 자유롭게 공유하는 지원 커뮤니티입니다.
머신러닝을 배우거나 AI 애플리케이션을 구축하는 중에 막히거나 질문이 생기면 걱정하지 마세요 — 도움을 받을 수 있습니다.
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
다른 학습자 및 개발자와 토론에 참여하고, 질문하며, 아이디어를 커뮤니티와 공유할 수 있습니다.
- 커뮤니티에 참여하여 질문하고 함께 배워보세요
- 머신러닝 개념과 프로젝트 아이디어를 토론하세요
- 경험 있는 개발자로부터 조언을 받으세요
지원하는 커뮤니티는 여러분의 역량을 키우고 문제를 더 빠르게 해결하는 데 큰 도움이 됩니다.
[Microsoft Foundry Discord Community](https://discord.gg/nTYy5BXMWG)
버그, 오류가 발생하거나 개선 사항에 대한 제안이 있다면, 이 저장소에 <strong>Issue</strong>를 열어 문제를 보고할 수도 있습니다.
제품 피드백을 주거나 기존 커뮤니티 게시물을 검색하려면 개발자 포럼을 방문하세요:
제품 피드백이 있거나 개발 중 오류가 발생하면 다음을 방문하세요:
[![Microsoft Foundry 개발자 포럼](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
## 추가 학습 팁
- 각 강의 후 노트북을 검토하여 이해도를 높이세요.
- 알고리즘 구현을 직접 연습해 보세요.
- 배운 개념을 활용하여 실제 데이터셋을 탐색해 보세요.
- 각 강의 후 노트북을 복습하여 이해도를 높이세요.
- 알고리즘을 스스로 구현해보며 연습하세요.
- 배운 개념을 활용해 실제 데이터를 탐색해보세요.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원문 문서는 해당 원어로 된 문서가 권위 있는 출처임을 인정해 주십시오. 중요한 정보의 경우 전문가의 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확한 내용이 포함될 수 있습니다. 원문 문서는 해당 언어의 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우 전문 인력에 의한 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save