# Scikit-learn का उपयोग करके रिग्रेशन मॉडल बनाएं: चार तरीकों से रिग्रेशन
## शुरुआत के लिए नोट
## शुरुआती नोट
लाइनियर रिग्रेशन का उपयोग तब किया जाता है जब हम एक **संख्यात्मक मान** (उदाहरण के लिए, घर की कीमत, तापमान, या बिक्री) की भविष्यवाणी करना चाहते हैं।
यह इनपुट फीचर्स और आउटपुट के बीच संबंध को सबसे अच्छी तरह दर्शाने वाली एक सीधी रेखा खोजकर काम करता है।
जब हम एक **सांख्यिकीय मान** की भविष्यवाणी करना चाहते हैं (उदाहरण के लिए, घर की कीमत, तापमान, या बिक्री), तब लाइनियर रिग्रेशन का उपयोग किया जाता है। यह इनपुट फ़ीचर्स और आउटपुट के बीच संबंध का सर्वश्रेष्ठ प्रतिनिधित्व करने वाली एक सीधी रेखा खोजकर काम करता है।
इस पाठ में, हम अधिक उन्नत रिग्रेशन तकनीकों का पता लगाने से पहले अवधारणा को समझने पर ध्यान केंद्रित करते हैं।

> इनफोग्राफिक द्वारा [दसानी माडिपल्ली](https://twitter.com/dasani_decoded)
> ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### परिचय
अब तक आपने रिग्रेशन क्या है, इसे कद्दू की कीमतों के डेटासेट से प्राप्त नमूना डेटा के साथ समझा है, जिसे हम इस पाठ में उपयोग करेंगे। आपने इसे Matplotlib का उपयोग करके भी विज़ुअलाइज़ किया है।
अब तक आपने रिग्रेशन क्या है इसका अन्वेषण किया है, जिसमें कद्दू की कीमतों के डेटासेट के साथ नमूना डेटा शामिल है, जिसे हम इस पाठ में प्रयोग करेंगे। आपने इसे Matplotlib का उपयोग करके भी विज़ुअलाइज़ किया है।
अब आप एमएल के लिए रिग्रेशन में और गहराई तक जाने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली ताकत _मॉडल ट्रेनिंग_ से आती है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित किए जाते हैं ताकि वे डेटा निर्भरताओं को स्वचालित रूप से पकड़ सकें, और नए डेटा के लिए पूर्वानुमान लगाने की अनुमति देते हैं, जिसे मॉडल ने पहले नहीं देखा होता है।
अब आप मशीन लर्निंग के लिए रिग्रेशन में गहराई से जाने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन आपको डेटा को समझने में मदद करता है, मशीन लर्निंग की असली शक्ति _मॉडल प्रशिक्षण_ से आती है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित होते हैं ताकि वे डेटा निर्भरताओं को स्वचालित रूप से पकड़ सकें, और ये मॉडल नए डेटा के लिए परिणामों की भविष्यवाणी कर सकते हैं, जिसे मॉडल ने पहले नहीं देखा है।
इस पाठ में, आप दो प्रकार के रिग्रेशन के बारे में और जानेंगे: _मूलभूत लाइनियर रिग्रेशन_ और _पॉलीनॉमियल रिग्रेशन_, साथ ही इन तकनीकों के पीछे की कुछ गणित। ये मॉडल हमें विभिन्न इनपुट डेटा के आधार पर कद्दू के दामों की भविष्यवाणी करने में सक्षम बनाएंगे।
इस पाठ में, आप दो प्रकार के रिग्रेशन सीखेंगे: _बुनियादी लाइनियर रिग्रेशन_ और _पॉलीनोमियल रिग्रेशन_, साथ ही इन तकनीकों के कुछ गणितीय पहलू। ये मॉडल हमें अलग-अलग इनपुट डेटा के आधार पर कद्दू की कीमतों की भविष्यवाणी करने की अनुमति देंगे।
[](https://youtu.be/CRxFT8oTDMg "एमएल शुरुआती के लिए - लाइनियर रिग्रेशन को समझना")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 ऊपर दिए गए चित्र पर क्लिक करें लाइनियर रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें लाइनियर रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> इस पूरे पाठ्यक्रम में, हम गणित का न्यूनतम ज्ञान मानते हैं, और इसे उन छात्रों के लिए सुलभ बनाने का प्रयास करते हैं जो अन्य क्षेत्रों से आते हैं, इसलिए समझ में मदद के लिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरण देखें।
> इस पाठ्यक्रम में, हम न्यूनतम गणितीय ज्ञान मानते हैं, और इसे अन्य क्षेत्रों से आने वाले छात्रों के लिए सुलभ बनाने का प्रयास करते हैं, इसलिए समझ में सहायता के लिए नोट्स, 🧮 कॉलआउट्स, आरेख, और अन्य शिक्षण उपकरण देखें।
### पूर्वापेक्षा
### पूर्वापेक्षाएँ
अब तक आपको उस कद्दू डेटा की संरचना का परिचय मिल चुका होगा जिसका हम निरीक्षण कर रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में पहले से लोड और साफ-सुथरा पा सकते हैं। फ़ाइल में, कद्दू की कीमत प्रति बशेल नए डेटा फ्रेम में दिखाई गई है। सुनिश्चित करें कि आप इन नोटबुक्स को Visual Studio Code में कर्नल में चला सकते हैं।
अब तक आप उस कद्दू डेटा की संरचना से परिचित हो जाएंगे, जिसे हम देख रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में प्रीलोडेड और पूर्व-साफ किया हुआ पाएंगे। फ़ाइल में, कद्दू की कीमत प्रति बशल नए डेटा फ़्रेम में प्रदर्शित की गई है। सुनिश्चित करें कि आप इन नोटबुक को Visual Studio Code में कर्नेल में चलाने में सक्षम हैं।
### तैयारी
एक अनुस्मारक के रूप में, आप यह डेटा इस उद्देश्य से लोड कर रहे हैं कि आप इसके बारे में प्रश्न पूछ सकें।
- कद्दू खरीदने का सबसे अच्छा समय कब होता है?
- मुझे मिनिएचर कद्दू के एक केस की क्या कीमत मिल सकती है?
- क्या मुझे उन्हें आधा-बशेल बास्केट में खरीदना चाहिए या 1 1/9 बशेल बॉक्स में?
स्मरण कराने के लिए, आप यह डेटा इस तरह की प्रश्न पूछने के लिए लोड कर रहे हैं:
आइए इस डेटा में और गहराई से उतारते रहें।
- कद्दू खरीदने का सबसे अच्छा समय कब है?
- एक केस मिनिएचर कद्दुओं की क्या कीमत हो सकती है?
- क्या मुझे इन्हें आधे बशल टोकरी में खरीदना चाहिए या 1 1/9 बशल बॉक्स के अनुसार?
आइए इस डेटा में और खुदाई करते रहें।
पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया और इसे मूल डेटासेट के एक हिस्से से भरा, प्राइजिंग को बशेल के अनुसार मानकीकृत करते हुए। ऐसा करते हुए, आप केवल लगभग 400 डेटा पॉइंट्स जुटा सके और वे केवल पतझड़ के महीनों के लिए थे।
पिछले पाठ में, आपने एक Pandas डेटा फ़्रेम बनाया और इसे मूल डेटा सेट के एक भाग से भरा, कीमत को बशल द्वारा मानकीकृत करते हुए। ऐसा करने से, हालांकि, आप केवल लगभग 400 डेटा पॉइंट और केवल पतझड़ के महीनों के लिए डेटा इकट्ठा कर पाए।
इस पाठ के साथ आने वाली नोटबुक में प्रीलोड किए गए डेटा को देखें। डेटा पहले से लोड है और एक प्रारंभिक स्कैटरप्लॉट माह डेटा दिखाने के लिए बनाया गया है। शायद हम इसे और साफ़ करके डेटा की प्रकृति के बारे में थोड़ी अधिक जानकारी प्राप्त कर सकते हैं।
इस पाठ के साथ आने वाली नोटबुक में हमने जो डेटा प्रीलोड किया है, उस पर नज़र डालें। डेटा प्रीलोड किया गया है और प्रारंभिक स्कैटरप्लॉट चार्ट किया गया है जो महीनों के डेटा को दिखाता है। संभव है कि डेटा की प्रकृति के बारे में थोड़ा और विवरण प्राप्त किया जा सके, इसे और साफ करके।
## एक लाइनियर रिग्रेशन लाइन
जैसा कि आपने पाठ 1 में सीखा, लाइनियर रिग्रेशन अभ्यास का उद्देश्य एक ऐसी रेखा प्लॉट करना है जो:
जैसा कि आपने पाठ 1 में सीखा, एक लाइनियर रिग्रेशन व्यायाम का लक्ष्य यह है कि एक रेखा प्लाट की जा सके ताकि:
- **चर संबंध दर्शाए।** चर के बीच संबंध दिखाना
- **पूर्वानुमान करना।** यह सावधानीपूर्वक पूर्वानुमान लगाना कि नया डेटा पॉइंट उस रेखा के संबंध में कहां पड़ता है।
- **चर संबंध दिखाएं**। चर के बीच संबंध दिखाएं
- **भविष्यवाणियाँ करें**। यह सही पूर्वानुमान लगाएं कि कोई नया डेटा पॉइंट उस रेखा के संबंध में कहाँ आएगा।
**लीस्ट-स्क्वेयर रिग्रेशन** के तहत ऐसी रेखा खींचना आम बात है। "लीस्ट-स्क्वेयर" शब्द हमारे मॉडल में कुल त्रुटि को न्यूनतम करने की प्रक्रिया को संदर्भित करता है। प्रत्येक डेटा पॉइंट के लिए, हम वास्तविक पॉइंट और हमारी रिग्रेशन रेखा के बीच ऊर्ध्वाधर दूरी (जिसे अवशिष्ट कहा जाता है) को मापते हैं।
यह सामान्य है कि **लीस्ट-स्क्वेयर रिग्रेशन** इस प्रकार की रेखा खींचे। "लीस्ट-स्क्वेयर" शब्द हमारे मॉडल में कुल त्रुटि को कम करने की प्रक्रिया को दर्शाता है। प्रत्येक डेटा पॉइंट के लिए, हम वास्तविक पॉइंट और हमारे रिग्रेशन लाइन के बीच ऊर्ध्वाधर दूरी (जिसे अवशिष्ट कहते हैं) मापते हैं।
हम इन दूरियों के वर्ग करते हैं इसके दो मुख्य कारण हैं:
हम इन दूरीयों को दो मुख्य कारणों से वर्ग करते हैं:
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` का मान दर्शाता है।
>
>
>
>
> सबसे पहले, ढलान `b` की गणना करें। इनफोग्राफिक द्वारा [जेन लूपर](https://twitter.com/jenlooper)
> पहले, ढलान `b` की गणना करें। इन्फोग्राफिक द्वारा [Jen Looper](https://twitter.com/jenlooper)
>
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न को संदर्भित करते हुए: "माह के द्वारा प्रति बशेल कद्दू की कीमत की भविष्यवाणी करें", `X`मूल्य को संदर्भित करता है और `Y` बिक्री के माह को।
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न को ध्यान में रखते हुए: "महीने के अनुसार प्रति बशल कद्दू की कीमत की भविष्यवाणी करें", `X`कीमत को संदर्भित करता है और `Y` बिक्री के महीने को।
>
>
>
>
> 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
> डेटा साफ़ करने के लिए कोड [`notebook.ipynb`](notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ की तरह ही सफाई के चरण किए हैं, और `DayOfYear` कॉलम को निम्न अभिव्यक्ति का उपयोग करके निकाला है:
> डेटा साफ़ करने के लिए कोड [`notebook.ipynb`](notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ की तरह ही सफाई के चरण किए हैं, और `DayOfYear` कॉलम का मूल्य निम्नलिखित अभिव्यक्ति से निकाला है:
अब जब आपको लाइनियर रिग्रेशन के पीछे गणित की समझ है, तो चलिए एक रिग्रेशन मॉडल बनाते हैं ताकि हम देख सकें कि कौन-सा कद्दू पैकेज सबसे अच्छे दाम देगा। कोई जो छुट्टियों के लिए कद्दू की खेती कर रहा है, वे इस जानकारी का उपयोग पैच के लिए अपने कद्दू पैकेजों की खरीद को अनुकूलित करने के लिए करना चाहेंगे।
## सहसंबंध की तलाश
अब जब आपको लाइनियर रिग्रेशन के पीछे का गणित समझ में आ गया है, तो आइए रिग्रेशन मॉडल बनाएं ताकि हम यह देख सकें कि कौन सा कद्दू पैकेज सबसे अच्छी कीमत देगा। कोई भी जो हॉलीडे कद्दू उद्घाटित करने के लिए कद्दू खरीद रहा है, यह जानकारी उनके पैच के कद्दू पैकेज की खरीद को अनुकूल बनाने में मदद कर सकती है।
## सहसंबंध की खोज
[](https://youtu.be/uoRq-lW2eQo "एमएल शुरुआती के लिए - सहसंबंध की तलाश: लाइनियर रिग्रेशन की कुंजी")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 ऊपर दिए गए चित्र पर क्लिक करें सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें सहसंबंध का संक्षिप्त वीडियो अवलोकन देखने के लिए।
पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत इस प्रकार है:
पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत कुछ इस प्रकार दिखती है:
<imgalt="Average price by month"src="../../../../translated_images/hi/barchart.a833ea9194346d76.webp"width="50%"/>
यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम `Month` और `Price`, या `DayOfYear` और `Price` के बीच संबंध का पूर्वानुमान लगाने के लिए लाइनियर रिग्रेशन मॉडल प्रशिक्षण देने का प्रयास कर सकते हैं। यहाँ वह स्कैटरप्लॉट है जो बाद वाले संबंध को दिखाता है:
यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम प्रयास कर सकते हैं कि लाइनियर रिग्रेशन मॉडल प्रशिक्षित करें जो `Month` और `Price` के बीच, या `DayOfYear` और `Price` के बीच संबंध की भविष्यवाणी करे। नीचे स्कैटर प्लॉट है जो बाद के संबंध को दिखाता है:
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/hi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/hi/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
आइए देखें कि `corr` फ़ंक्शन का उपयोग करके सहसंबंध क्या है:
आइए `corr` फ़ंक्शन का उपयोग करके देखें कि क्या सहसंबंध है:
ऐसा लगता है कि सहसंबंध काफी छोटा है, `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()):
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/hi/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="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()
```
एक अन्य तरीका यह होगा कि ख़ाली मानों को संबंधित कॉलम के औसत मान से भर दें।
एक अन्य तरीका यह होगा कि उन खाली मानों को संबंधित कॉलम के औसत मान से भर दिया जाए।
## सरल लाइनियर रिग्रेशन
[](https://youtu.be/e4c_UP2fSjg "एमएल शुरुआती के लिए - Scikit-learn का उपयोग करके लाइनियर और पॉलीनॉमियल रिग्रेशन")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 ऊपर दिए गए चित्र पर क्लिक करें लाइनियर और पॉलीनॉमियल रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें लाइनियर और पॉलीनोमियल रिग्रेशन का संक्षिप्त वीडियो अवलोकन देखने के लिए।
हमारा लाइनियर रिग्रेशन मॉडल ट्रेनिंग के लिए, हम **Scikit-learn** लाइब्रेरी का उपयोग करेंगे।
हम अपने लाइनियर रिग्रेशन मॉडल को प्रशिक्षित करने के लिए **Scikit-learn** पुस्तकालय का उपयोग करेंगे।
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
हम प्रारंभ करते हैं इनपुट मानों (फीचर्स) और अपेक्षित आउटपुट (लेबल) को अलग-अलग numpy 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) मेट्रिक का उपयोग करके किया जा सकता है, जो कि अपेक्षित और भविष्यवाणी किए गए मानों के बीच सभी वर्गीकृत अंतर का माध्य का मूल है।
हमारी त्रुटि लगभग 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 है, जो काफी कम है।
हम परीक्षण डेटा को रिग्रेशन लाइन के साथ भी प्लॉट कर सकते हैं ताकि बेहतर तरीके से देख सकें कि हमारे मामले में रिग्रेशन कैसे काम करता है:
हम टेस्ट डेटा को रिग्रेशन लाइन के साथ प्लॉट भी कर सकते हैं ताकि यह बेहतर दिख सके कि हमारे मामले में रिग्रेशन कैसे काम करता है:
रैखिक रिग्रेशन का एक अन्य प्रकार है बहुपद रिग्रेशन। जबकि कभी-कभी चर के बीच रैखिक संबंध होता है - जैसे लंबे आकार वाला कद्दू का दाम अधिक होता है - कभी-कभी इन संबंधों को तल या सीधी रेखा के रूप में प्रदर्शित नहीं किया जा सकता।
रैखिक रिग्रेशन का एक और प्रकार पॉलीनॉमियल रिग्रेशन है। जबकि कभी-कभी वेरिएबल्स के बीच एक रैखिक संबंध होता है - जैसे कि कद्दू जितना बड़ा होगा, कीमत उतनी ही अधिक होगी - कभी-कभी ये संबंध कोई समतल या सीधी रेखा नहीं हो सकते।
✅ यहां [कुछ और उदाहरण](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
`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` का उपयोग करके भविष्यवाणी के परिणाम प्राप्त कर सकते हैं। यहाँ ग्राफ है जो टेस्ट डेटा और अनुमानित वक्र दिखाता है:
बहुपद रिग्रेशन का उपयोग करते हुए, हम थोड़ा कम MSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन विशेष रूप से नहीं। हमें अन्य विशेषताओं को भी ध्यान में रखना होगा!
पॉलीनॉमियल रिग्रेशन का उपयोग करके, हम थोड़ा नीचे MSE और उच्च निर्धारण प्राप्त कर सकते हैं, लेकिन बहुत अधिक नहीं। हमें अन्य फीचर्स को भी ध्यान में रखना होगा!
> आप देख सकते हैं कि न्यूनतम कद्दू के दाम लगभग हैलोवीन के आसपास होते हैं। आप इसे कैसे समझाएंगे?
> आप देख सकते हैं कि न्यूनतम कद्दू की कीमतें लगभग हैलोवीन के आसपास देखी जाती हैं। आप इसे कैसे समझाएंगे?
🎃 बधाई हो, आपने एक ऐसा मॉडल बनाया है जो पाई कद्दू की कीमत का पूर्वानुमान लगाने में मदद कर सकता है। आप संभवतः सभी कद्दू प्रकारों के लिए समान प्रक्रिया दोहरा सकते हैं, लेकिन वह थकाऊ होगा। अब सीखते हैं कि हमारे मॉडल में कद्दू की किस्म को कैसे ध्यान में रखा जाए!
🎃 बधाई हो, आपने अभी एक ऐसा मॉडल बनाया है जो पैसे कद्दू की कीमत की भविष्यवाणी करने में मदद कर सकता है। आप शायद इसी प्रक्रिया को सभी कद्दू प्रकारों के लिए दोहरा सकते हैं, लेकिन यह मुश्किल होगा। आइए अब सीखते हैं कि मॉडल में कद्दू की किस्म (variety) को कैसे शामिल करें!
## श्रेणीबद्ध विशेषताएँ (Categorical Features)
## श्रेणीबद्ध फीचर्स (Categorical Features)
आदर्श दुनिया में, हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों के लिए कीमतों की भविष्यवाणी कर सके। हालांकि, `Variety` कॉलम कुछ हद तक `Month` जैसे कॉलमों से अलग है, क्योंकि इसमें गैर-आंकिक (non-numeric) मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध** कहा जाता है।
आदर्श दुनिया में, हम चाहते हैं कि हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू किस्मों की कीमतें भविष्यवाणी कर सकें। हालांकि, `Variety` कॉलम `Month` जैसे कॉलमों से थोड़ा अलग है, क्योंकि इसमें गैर-संख्यात्मक (non-numeric) मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध (categorical)** कहा जाता है।
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 श्रेणीबद्ध विशेषताओं के उपयोग पर एक संक्षिप्त वीडियो अवलोकन के लिए ऊपर की छवि पर क्लिक करें।
> 🎥 ऊपर दिए गए इमेज पर क्लिक करें एक संक्षिप्त वीडियो अवलोकन के लिए जिसमें श्रेणीबद्ध फीचर्स के उपयोग को बताया गया है।
यहाँ आप देख सकते हैं कि औसत कीमत किस्म पर कैसे निर्भर करती है:
<imgalt="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
वन-हॉट एन्कोडेड किस्म को इनपुट के रूप में उपयोग करके रैखिक रिग्रेशन को प्रशिक्षित करने के लिए, हमें केवल`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 मिलता है!
## सब कुछ एक साथ जोड़ना
सबसे अच्छा मॉडल बनाने के लिए, हम उपरोक्त उदाहरण से संयुक्त (वन-हॉट एन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा को बहुपद रिग्रेशन के साथ उपयोग कर सकते हैं। आपके सुविधाजनक उपयोग के लिए यहां पूर्ण कोड है:
सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर के उदाहरण से संयुक्त (वन-हॉट इन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा को पॉलीनॉमियल रिग्रेशन के साथ उपयोग कर सकते हैं। आपकी सुविधा के लिए यहाँ पूरा कोड है:
यह हमें लगभग 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/)
इस पाठ में हमने रैखिक रिग्रेशन के बारे में सीखा। अन्य महत्वपूर्ण प्रकार के रिग्रेशन भी हैं। स्टेपवाइज, रिज, लासो और इलास्टिकनेट तकनीकों के बारे में पढ़ें। अधिक जानने के लिए एक अच्छा कोर्स है [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) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में दस्तावेज़ को ही अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटासेट का उपयोग करेंगे, जिसमें संतुलित और साफ डेटा है, जो विभिन्न व्यंजनों के बारे में है।
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटासेट का उपयोग करेंगे, जिसमें संतुलित, साफ-सुथरा डेटा व्यंजनों के बारे में है।
आप इस डेटासेट का उपयोग विभिन्न वर्गीकरणकर्ताओं के साथ करेंगे ताकि _सामग्री के समूह के आधार पर किसी राष्ट्रीय व्यंजन की भविष्यवाणी की जा सके_। ऐसा करते समय, आप यह जानेंगे कि वर्गीकरण कार्यों के लिए एल्गोरिदम का उपयोग कैसे किया जा सकता है।
आप इस डेटासेट का उपयोग विभिन्न वर्गीकर्ताओं के साथ _एक समूह के घटकों के आधार पर दिए गए राष्ट्रीय व्यंजन की भविष्यवाणी करने के लिए_ करेंगे। ऐसा करते समय, आप सीखेंगे कि कैसे कुछ एल्गोरिदमों का उपयोग वर्गीकरण कार्यों के लिए किया जा सकता है।
मान लें कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, सुनिश्चित करें कि _cleaned_cuisines.csv_ फ़ाइल इन चार पाठों के लिए रूट `/data` फ़ोल्डर में मौजूद है।
मान लेते हैं कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, तो सुनिश्चित करें कि एक _cleaned_cuisines.csv_ फ़ाइल रूट `/data` फ़ोल्डर में इन चार पाठों के लिए मौजूद है।
## अभ्यास - राष्ट्रीय व्यंजन की भविष्यवाणी करें
## अभ्यास - एक राष्ट्रीय व्यंजन का अनुमान लगाएं
1. इस पाठ के _notebook.ipynb_ फ़ोल्डर में काम करते हुए, उस फ़ाइल को Pandas लाइब्रेरी के साथ आयात करें:
अब आप अपने मॉडल को प्रशिक्षित करने के लिए तैयार हैं!
अब आप अपने मॉडल को प्रशिक्षण देने के लिए तैयार हैं!
## अपने वर्गीकरणकर्ता का चयन करना
## अपना वर्गीकर्ता चुनना
अब जब आपका डेटा साफ और प्रशिक्षण के लिए तैयार है, तो आपको यह तय करना होगा कि इस काम के लिए कौन सा एल्गोरिदम उपयोग करना है।
अब जब आपका डेटा साफ़ और प्रशिक्षण के लिए तैयार है, आपको यह निर्णय लेना होगा कि किस एल्गोरिदम का उपयोग करना है।
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 की तुलना एक बनाए गए डेटासेट पर की जाती है, जो परिणामों को विज़ुअलाइज्ड दिखाती है:

> Scikit-learn के दस्तावेज़ों पर उत्पन्न प्लॉट्स

> प्लॉट 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) के विचारों का पालन करना। यहाँ, हम पाते हैं कि हमारे मल्टीक्लास समस्या के लिए कुछ विकल्प हैं:

> Microsoft के एल्गोरिदम चीट शीट का एक भाग, जिसमें मल्टीक्लास वर्गीकरण विकल्पों का विवरण है

> माइक्रोसॉफ्ट के 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 विभिन्न डेटा संरचनाओं की चुनौतियों को कैसे संभालते हैं:
चूंकि आप मल्टीक्लास मामले का उपयोग कर रहे हैं, आपको यह चुनना होगा कि कौन सा _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')
✅ एक अलग 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) के डेटा का परीक्षण करके सक्रिय रूप में देख सकते हैं:
इस पाठ में, आपने अपने साफ किए गए डेटा का उपयोग करके एक मशीन लर्निंग मॉडल बनाया जो सामग्री की एक श्रृंखला के आधार पर राष्ट्रीय व्यंजन की भविष्यवाणी कर सकता है। 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) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान रखें कि स्वचालित अनुवाद में त्रुटियाँ या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
हमारे पास 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 का उपयोग करने के टिप्स और ट्रिक्स मिलेंगे।

# शुरुआती लोगों के लिए मशीन लर्निंग - एक पाठ्यक्रम
> 🌍 दुनिया भर में यात्रा करें क्योंकि हम मशीन लर्निंग को विश्व की संस्कृतियों के माध्यम से सीखते हैं 🌍
> 🌍 विश्व की संस्कृतियों के माध्यम से मशीन लर्निंग का अन्वेषण करते हुए विश्वभर की यात्रा करें 🌍
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" बटन पर क्लिक करें।
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) में नीचे दिए चित्र पर क्लिक करके देख सकते हैं।
[](https://aka.ms/ml-beginners-videos)
@ -96,83 +96,83 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
**गिफ़ के निर्माता** [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) दिशानिर्देश देखें। हम आपकी रचनात्मक प्रतिक्रिया का स्वागत करते हैं!
> **भाषाओं के बारे में एक नोट**: ये लेसन मुख्य रूप से 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) देखें।
> **भाषाओं के बारे में एक नोट**: ये पाठ मुख्य रूप से 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 |
| 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
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / एजेंट्स
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
@ -189,7 +189,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### जनरेटिव एआई श्रृंखला
### जेनरेटिव एआई श्रृंखला
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -197,7 +197,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### मूल सीखना
### कोर लर्निंग
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -208,7 +208,7 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
---
### कोपिलॉट श्रृंखला
### कॉपिलट श्रृंखला
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
@ -216,22 +216,33 @@ Microsoft के क्लाउड समर्थक 12 सप्ताह, 26
## सहायता प्राप्त करना
यदि आप फंसे हुए हैं या AI ऐप्स बनाने के बारे में कोई प्रश्न हैं। साथ सीखने वालों और अनुभवी डेवलपर्स के साथ MCP के बारे में चर्चाओं में शामिल हों। यह एक सहायक समुदाय है जहाँ प्रश्न स्वागत योग्य हैं और ज्ञान मुक्त रूप से साझा किया जाता है।
यदि आप मशीन लर्निंग सीखते समय या एआई अनुप्रयोग बनाने में फंस जाते हैं या आपके पास प्रश्न हैं, तो चिंता न करें — सहायता उपलब्ध है।
- बेहतर समझ के लिए प्रत्येक पाठ के बाद नोटबुक की समीक्षा करें।
- स्वयं एल्गोरिदम लागू करने का अभ्यास करें।
- सीखी गई अवधारणाओं का उपयोग करके वास्तविक दुनिया के डेटा सेट का अन्वेषण करें।
- अपने आप एल्गोरिदम को लागू करने का अभ्यास करें।
- सीखे गए सिद्धांतों का उपयोग करके वास्तविक दुनिया के डेटा सेट खोजें।
---
<!-- 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) का उपयोग करके अनूदित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या असंगतियाँ हो सकती हैं। मूल दस्तावेज़ अपनी स्थानीय भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
かぼちゃのデータ構造についてはすでに理解しているはずです。このレッスンの _notebook.ipynb_ ファイル内に、事前に読み込みと整形済みのデータがあります。その中で、かぼちゃの価格が単位「ブッシェル(容量単位)」あたりの価格として新しいデータフレームに表示されています。Visual Studio Codeのカーネル環境でこれらのノートブックが実行できることを確認してください。
かぼちゃデータの構造に既に慣れているはずです。このレッスンの_notebook.ipynb_に前処理済みの状態で組み込まれています。ファイル内ではバッシェル単位のかぼちゃ価格が新しいデータフレームに表示されています。Visual Studio Codeのカーネルでこれらのノートブックが動作するか必ず確認してください。
> これらの計算方法は[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) で数値が直線に与える影響を確認できます。
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 上の画像をクリックすると、カテゴリ特徴量を使う簡単なビデオ説明が見られます。
> 🎥 カテゴリカル特徴を使う方法を簡単に解説した動画は上の画像をクリックしてください。
ここでは品種ごとの平均価格の違いがわかります。
ここでは種類ごとの平均価格がどう違うかがわかります:
<imgalt="Average price by variety"src="../../../../translated_images/ja/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
私たちは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 を使ったデータサイエンスのコツとテクニックをご紹介します。

# 機械学習入門 - カリキュラム
# 初心者向け機械学習 - カリキュラム
> 🌍 世界の文化を通して機械学習を探求しながら世界を旅しよう 🌍
> 🌍 世界各地の文化と言語を通じて機械学習を学びましょう 🌍
MicrosoftのCloud Advocatesが提供する、12週間・26レッスンにわたる<strong>機械学習</strong>のカリキュラムです。このカリキュラムでは、主にScikit-learnライブラリを用いた「古典的機械学習」(クラシック機械学習)について学び、ディープラーニングは[AI for Beginners のカリキュラム](https://aka.ms/ai4beginners)でカバーしています。さらに、『[データサイエンス入門カリキュラム](https://aka.ms/ds4beginners)』と組み合わせて学習してください。
いくつかのレッスンはショートフォームのビデオで視聴可能です。これらはレッスン内に埋め込まれているか、または[Microsoft DeveloperのYouTubeチャンネルにあるML for Beginnersプレイリスト](https://aka.ms/ml-beginners-videos)から視聴できます。下の画像をクリックしてください。
一部のレッスンは短い動画で提供されています。レッスン内または[Microsoft Developer YouTube チャンネルの ML for Beginners プレイリスト](https://aka.ms/ml-beginners-videos)からご覧いただけます。下の画像をクリックしてください。
[](https://aka.ms/ml-beginners-videos)
| 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 |
| 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 |
> ### [이 강의는 R 버전으로도 제공됩니다!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [이 수업은 R 버전으로도 제공됩니다!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 소개
지금까지 당신은 우리 수업 전반에 걸쳐 사용할 호박 가격 데이터로부터 회귀가 무엇인지 탐구했습니다. 또한 Matplotlib를 사용해 시각화해 보았습니다.
지금까지 할로윈 호박 가격 데이터셋에서 샘플 데이터를 사용하며 회귀가 무엇인지 탐색했습니다. Matplotlib를 활용해 시각화도 했죠.
이제 머신러닝을 위한 회귀를 더 깊게 학습할 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진정한 힘은 _모델 학습_에 있습니다. 모델은 과거 데이터를 학습해 데이터 간의 관계를 자동으로 포착하며, 학습하지 않은 새로운 데이터에 대한 결과를 예측할 수 있게 해줍니다.
이제 머신러닝 회귀에 대해 더 깊이 들어갈 준비가 되었습니다. 시각화는 데이터를 이해하는 데 도움을 주지만, 머신러닝의 진정한 힘은 _모델 학습_에 있습니다. 모델은 역사적 데이터를 기반으로 학습하여 자동으로 데이터 의존성을 포착하고, 모델이 본 적 없는 새 데이터의 결과를 예측할 수 있도록 해줍니다.
이번 수업에서는 _기본 선형 회귀_와 _다항 회귀_ 두 가지 유형과 이 기법들의 수학적 배경에 관해 배웁니다. 이런 모델을 통해 다양한 입력 변수에 따라 호박 가격을 예측할 수 있게 됩니다.
이번 수업에서는 _기본 선형 회귀_와 _다항 회귀_ 두 가지 회귀 유형과 관련 수학을 배웁니다. 이 모델들은 다양한 입력 데이터에 따라 호박 가격을 예측할 수 있게 해줍니다.
[](https://youtu.be/CRxFT8oTDMg "초보자용 머신러닝 - 선형 회귀 이해하기")
[](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`의 값입니다.
> `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
> `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
상관관계는 다소 작아서 `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()):
<imgalt="가격 vs 연중 일수 산점도 - pie 타입" src="../../../../translated_images/ko/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="가격 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()
```
또 다른 방법으로, 해당 열의 평균값으로 결측값을 채우는 방법도 있습니다.
결측치를 해당 열 평균값으로 채우는 방법도 있습니다.
## 단순 선형 회귀
[](https://youtu.be/e4c_UP2fSjg "초보자용 머신러닝 - Scikit-learn으로 선형 및 다항 회귀")
[](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) 지표로 측정할 수 있습니다.
오차는 대략 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
`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`를 사용해 예측 결과를 얻을 수 있습니다. 아래 그래프는 테스트 데이터와 근사 곡선을 보여줍니다:
다항 회귀를 사용하면 평균 제곱 오차(MSE)가 약간 낮아지고 결정 계수가 높아지긴 하지만 크게 개선되지는 않습니다. 다른 특성들을 더 고려할 필요가 있습니다!
다항 회귀를 사용하면 MSE가 약간 낮아지고 결정 계수가 높아지긴 하지만 크게 차이나진 않습니다. 더 정확한 예측을 위해서는 다른 피처도 고려해야 합니다!
> 최소 호박 가격이 할로윈 즈음에 관찰됩니다. 이것을 어떻게 설명할 수 있을까요?
> 할로윈 무렵 최소 호박 가격이 관찰된다는 점을 알 수 있습니다. 어떻게 설명할 수 있을까요?
🎃 축하합니다! 파이 호박의 가격을 예측하는 모델을 성공적으로 만들었습니다. 동일한 절차로 모든 호박 종류에 대해 반복할 수 있지만, 번거로울 수 있습니다. 이제 모델에 호박 품종을 반영하는 방법을 배워봅시다!
🎃 축하합니다, 당신은 호박 가격을 예측하는 모델을 만들었습니다. 아마도 모든 호박 종류에 대해 같은 절차를 반복할 수 있겠지만 이는 매우 번거롭습니다. 이제 호박 품종을 모델에 반영하는 방법을 배우겠습니다!
## 범주형 특성 (Categorical Features)
이상적인 상황에서 우리는 같은 모델로 다양한 호박 품종의 가격을 예측할 수 있기를 원합니다. 하지만 `Variety` 열은 `Month`와 같은 열과 다르게 숫자가 아닌 값을 포함하고 있습니다. 이러한 열을 **범주형(categorical)** 이라고 부릅니다.
이상적으로는 동일한 모델로 다양한 호박 품종의 가격을 예측할 수 있길 원합니다. 하지만 `Variety` 열은 `Month` 같은 열과 달리 수치 데이터가 아닌 값을 포함합니다. 이런 열을 **범주형(categorical)** 이라고 합니다.
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 위 이미지를 클릭하면 범주형 특성 사용에 대한 짧은 동영상 개요를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 범주형 특성 활용에 대한 간단한 동영상을 볼 수 있습니다.
아래 그래프는 품종에 따른 평균 가격 변화를 보여줍니다:
다음은 품종별 평균 가격입니다:
<imgalt="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`을 가집니다. 이로 인해 선형 회귀는 네 개의 결정 계수를 갖게 되어 각각 품종마다 "기본 가격"(또는 "추가 가격")을 나타내게 됩니다.
원-핫 인코딩된 품종을 입력값으로 하여 선형 회귀를 학습하려면, 단지 `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)
이렇게 하면 거의 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)이 좋은 코스입니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역은 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원래 문서의 원문이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 원어로 된 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해서는 당사가 책임지지 않습니다.
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)를 제공합니다. 결과는 시각화되어 있습니다:

> 스캐킷런 문서에서 생성된 플롯
> AutoML은 클라우드에서 이러한 비교를 실행하여 데이터에 가장 적합한 알고리즘을 선택할 수 있도록 문제를 깔끔하게 해결합니다. [여기](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)에서 시도해보세요.
> AutoML은 이 문제를 클라우드에서 여러 비교를 실행해 가장 적합한 알고리즘을 선택할 수 있도록 깔끔하게 해결합니다. [여기서 시도해 보세요](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### 더 나은 접근법
무작위로 추측하는 것보다 더 나은 방법은 이 다운로드 가능한 [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)를 따르는 것입니다. 여기에서 다중 클래스 문제에 대해 몇 가지 선택지가 있다는 것을 알 수 있습니다:
무작위로 추측하는 것보다는 다운로드 가능한 [ML 치트 시트](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)의 아이디어를 따르는 것이 더 좋습니다. 여기서 다중 클래스 문제에 대해 다음과 같은 선택지를 알 수 있습니다:

> Microsoft의 알고리즘 치트 시트의 일부, 다중 클래스 분류 옵션을 설명

> 마이크로소프트 알고리즘 치트 시트 일부, 다중 클래스 분류 옵션 설명
✅ 이 치트 시트를 다운로드하고, 출력하여 벽에 걸어두세요!
✅ 이 치트 시트를 다운로드하여 출력한 후 벽에 붙여 두세요!
### 추론
### 이유 분석
제약 조건을 고려하여 다양한 접근법을 추론해 봅시다:
제약 조건을 고려해 서로 다른 접근법을 논리적으로 살펴봅시다:
- **신경망은 너무 무겁다**. 깨끗하지만 최소한의 데이터셋과 로컬 노트북을 통해 훈련을 실행한다는 점을 고려할 때, 신경망은 이 작업에 너무 무겁습니다.
- **이중 클래스 분류기는 사용하지 않는다**. 이중 클래스 분류기를 사용하지 않으므로 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’, ‘saga’ 및 ‘newton-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은 소버가 서로 다른 데이터 구조에서 어떻게 문제를 처리하는지 설명하는 표를 제공합니다:
이번 수업에서는 정제된 데이터를 사용하여 재료 목록을 기반으로 국가별 요리를 예측하는 머신 러닝 모델을 구축했습니다. 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)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서가 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우 전문가의 인적 번역을 권장합니다. 본 번역 사용으로 인한 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
우리는 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을 활용한 데이터 과학 사용 팁과 요령을 배울 수 있습니다.

# 초보자를 위한 머신러닝 - 교과 과정
# 초보자를 위한 머신러닝 - 교육과정
> 🌍 세계 문화를 통해 머신러닝을 탐구하며 전 세계를 여행해요 🌍
> 🌍 전 세계 문화를 통해 머신러닝을 탐험하는 세계 일주 🌍
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 강의에 대해 특별한 감사를 드립니다!**
> [이 코스의 모든 추가 자료는 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)에서 아래 이미지를 클릭해 볼 수 있습니다.
[](https://aka.ms/ml-beginners-videos)
이 커리큘럼을 만들면서 두 가지 교육 원칙을 선택했습니다: 실습 중심의 <strong>프로젝트 기반 학습</strong>과 **빈번한 퀴즈** 포함입니다. 또한 일관된 <strong>주제</strong>를 설정해 통일감을 갖도록 했습니다.
이 교육과정을 만들면서 두 가지 교수 원칙을 선택했습니다: 실습 중심의 <strong>프로젝트 기반 학습</strong>과 **자주 있는 퀴즈** 포함입니다. 또한, 교육과정 전반에 통일감을 주는 공통된 <strong>주제</strong>가 있습니다.
내용을 프로젝트와 일치시키면 학생들의 참여도가 높아지고 개념 이해가 더 잘 유지됩니다. 수업 전 간단한 퀴즈는 학습 의도를 다지게 하며, 수업 후 퀴즈는 이해도를 높입니다. 이 커리큘럼은 유연하고 재미있게 설계돼 전체 또는 일부만 진행할 수 있습니다. 프로젝트는 작게 시작하여 12주 사이클이 끝날 때쯤 점차 복잡해집니다. 추가 학점이나 토론 주제로 쓸 수 있는 실제 ML 적용 후문도 포함되어 있습니다.
콘텐츠가 프로젝트와 연계되어 있으므로, 학생들의 참여도가 높아지고 개념의 이해가 향상됩니다. 수업 전 부담 없는 퀴즈는 학생들의 학습 의도를 설정하며, 수업 후 두 번째 퀴즈는 학습 내용의 지속적인 유지에 도움을 줍니다. 이 교육과정은 유연하고 재미있게 설계되어 전체 진행이 가능하며 일부만 수강할 수도 있습니다. 프로젝트는 작은 단계로 시작하고 12주 사이클 마지막에 갈수록 복잡해집니다. 마지막에는 머신러닝의 실제 활용에 관한 부록이 포함되어 있어 추가 점수나 토론 자료로 활용할 수 있습니다.
- [강의 전 워밍업 퀴즈](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에 배포할 수 있습니다.
| 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 |
| 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 |
| 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
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 생성 AI 시리즈
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### 생성형 AI 시리즈
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### 핵심 학습
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### 코파일럿 시리즈
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원문 문서는 해당 원어로 된 문서가 권위 있는 출처임을 인정해 주십시오. 중요한 정보의 경우 전문가의 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역에는 오류나 부정확한 내용이 포함될 수 있습니다. 원문 문서는 해당 언어의 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우 전문 인력에 의한 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.