Merge pull request #856 from microsoft/update-translations

🌐 Update translations via Co-op Translator
pull/857/head
Lee Stott 2 weeks ago committed by GitHub
commit 7cdb35d07b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,105 +1,105 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "73e9a7245aa57f00cd413ffd22c0ccb6",
"translation_date": "2025-09-03T23:37:55+00:00",
"original_hash": "69389392fa6346e0dfa30f664b7b6fec",
"translation_date": "2025-09-05T10:24:35+00:00",
"source_file": "1-Introduction/1-intro-to-ML/README.md",
"language_code": "hi"
}
-->
# मशीन लर्निंग का परिचय
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
---
[![शुरुआती लोगों के लिए मशीन लर्निंग - मशीन लर्निंग का परिचय](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "शुरुआती लोगों के लिए मशीन लर्निंग - मशीन लर्निंग का परिचय")
[![शुरुआती लोगों के लिए मशीन लर्निंग का परिचय](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "शुरुआती लोगों के लिए मशीन लर्निंग का परिचय")
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ को समझने के लिए एक छोटा वीडियो देखने के लिए।
क्लासिकल मशीन लर्निंग पर आधारित इस कोर्स में आपका स्वागत है! चाहे आप इस विषय में बिल्कुल नए हों या एक अनुभवी मशीन लर्निंग प्रैक्टिशनर जो अपने ज्ञान को ताज़ा करना चाहते हैं, हम आपके साथ जुड़ने के लिए उत्साहित हैं। हम आपके मशीन लर्निंग अध्ययन के लिए एक दोस्ताना शुरुआत प्रदान करना चाहते हैं और आपके [फीडबैक](https://github.com/microsoft/ML-For-Beginners/discussions) का मूल्यांकन, उत्तर और समावेश करने के लिए तैयार हैं।
शुरुआती लोगों के लिए क्लासिकल मशीन लर्निंग पर इस कोर्स में आपका स्वागत है! चाहे आप इस विषय में बिल्कुल नए हों, या एक अनुभवी एमएल प्रैक्टिशनर जो किसी क्षेत्र को फिर से सीखना चाहते हैं, हमें खुशी है कि आप हमारे साथ जुड़ रहे हैं! हम आपके एमएल अध्ययन के लिए एक दोस्ताना शुरुआत प्रदान करना चाहते हैं और आपके [फीडबैक](https://github.com/microsoft/ML-For-Beginners/discussions) का मूल्यांकन, उत्तर और समावेश करने के लिए तैयार हैं।
[![मशीन लर्निंग का परिचय](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "मशीन लर्निंग का परिचय")
> 🎥 ऊपर दी गई छवि पर क्लिक करें: MIT के जॉन गुट्टाग मशीन लर्निंग का परिचय देते हैं
> 🎥 ऊपर दी गई छवि पर क्लिक करें: एमआईटी के जॉन गुट्टाग मशीन लर्निंग का परिचय देते हैं
---
## मशीन लर्निंग की शुरुआत
## मशीन लर्निंग शुरू करना
इस पाठ्यक्रम को शुरू करने से पहले, आपको अपने कंप्यूटर को नोटबुक्स को लोकल रूप से चलाने के लिए तैयार करना होगा
इस पाठ्यक्रम को शुरू करने से पहले, आपको अपने कंप्यूटर को सेटअप करना होगा ताकि आप नोटबुक्स को लोकल रूप से चला सकें
- **अपने सिस्टम को इन वीडियो के साथ कॉन्फ़िगर करें**। [Python कैसे इंस्टॉल करे](https://youtu.be/CXZYvNRIAKM) और [टेक्स्ट एडिटर सेटअप कर](https://youtu.be/EU8eayHWoZg) सीखने के लिए दिए गए लिंक का उपयोग करें।
- **Python सीखें**। यह अनुशंसा की जाती है कि आप [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) की बुनियादी समझ रखें, जो डेटा वैज्ञानिकों के लिए उपयोगी प्रोग्रामिंग भाषा है और जिसे हम इस कोर्स में उपयोग करते हैं।
- **अपने सिस्टम को इन वीडियो के साथ कॉन्फ़िगर करें**। [Python इंस्टॉल करे](https://youtu.be/CXZYvNRIAKM) और [टेक्स्ट एडिटर सेटअप करे](https://youtu.be/EU8eayHWoZg) के लिए दिए गए लिंक का उपयोग करें।
- **Python सीखें**। यह अनुशंसा की जाती है कि आप [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) की बुनियादी समझ रखें, एक प्रोग्रामिंग भाषा जो डेटा वैज्ञानिकों के लिए उपयोगी है और जिसे हम इस कोर्स में उपयोग करते हैं।
- **Node.js और JavaScript सीखें**। हम इस कोर्स में वेब ऐप्स बनाने के लिए कुछ बार JavaScript का उपयोग करते हैं, इसलिए आपको [node](https://nodejs.org) और [npm](https://www.npmjs.com/) इंस्टॉल करना होगा, साथ ही [Visual Studio Code](https://code.visualstudio.com/) को Python और JavaScript विकास के लिए उपलब्ध रखना होगा।
- **GitHub अकाउंट बनाएं**। चूंकि आपने हमें [GitHub](https://github.com) पर पाया है, आपके पास पहले से ही एक अकाउंट हो सकता है, लेकिन यदि नहीं, तो एक अकाउंट बनाएं और फिर इस पाठ्यक्रम को अपने उपयोग के लिए फोर्क करें। (हमें एक स्टार देना न भूलें 😊)
- **Scikit-learn का अन्वेषण करें**। [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) के साथ परिचित हों, जो एक ML लाइब्रेरी है जिसे हम इन पाठों में संदर्भित करते हैं।
- **GitHub अकाउंट बनाएं**। चूंकि आपने हमें [GitHub](https://github.com) पर पाया है, आपके पास पहले से ही एक अकाउंट हो सकता है, लेकिन अगर नहीं है, तो एक बनाएं और फिर इस पाठ्यक्रम को अपने उपयोग के लिए फोर्क करें। (हमें एक स्टार देना न भूलें 😊)
- **Scikit-learn का अन्वेषण करें**। [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) के साथ परिचित हों, एमएल लाइब्रेरी का एक सेट जिसे हम इन पाठों में संदर्भित करते हैं।
---
## मशीन लर्निंग क्या है?
'मशीन लर्निंग' शब्द आज के समय में सबसे लोकप्रिय और अक्सर उपयोग किए जाने वाले शब्दों में से एक है। यदि आप किसी भी प्रकार की तकनीक से परिचित ैं, तो संभावना है कि आपने इस शब्द को कम से कम एक बार सुना होगा, चाहे आप किसी भी क्षेत्र में काम करते हों। हालांकि, मशीन लर्निंग की प्रक्रिया अधिकांश लोगों के लिए एक रहस्य है। एक शुरुआती के लिए, यह विषय कभी-कभी भारी लग सकता है। इसलिए, यह समझना महत्वपूर्ण है कि मशीन लर्निंग वास्तव में क्या है और इसे व्यावहारिक उदाहरणों के माध्यम से चरण-दर-चरण सीखना चाहिए
'मशीन लर्निंग' शब्द आज के सबसे लोकप्रिय और अक्सर उपयोग किए जाने वाले शब्दों में से एक है। यह संभावना है कि आपने इस शब्द को कम से कम एक बार सुना होगा यदि आप किसी भी प्रकार की तकनीक से परिचित हैं, चाहे आप किसी भी क्षेत्र में काम करते हों। हालांकि, मशीन लर्निंग की प्रक्रिया अधिकांश लोगों के लिए एक रहस्य है। एक मशीन लर्निंग शुरुआती के लिए, यह विषय कभी-कभी भारी लग सकता है। इसलिए, यह समझना महत्वपूर्ण है कि मशीन लर्निंग वास्तव में क्या है, और इसे व्यावहारिक उदाहरणों के माध्यम से चरण-दर-चरण सीखना।
---
## प्रचार वक्र
![मशीन लर्निंग प्रचार वक्र](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.hi.png)
![मशीन लर्निंग प्रचार वक्र](../../../../1-Introduction/1-intro-to-ML/images/hype.png)
> Google Trends 'मशीन लर्निंग' शब्द के हालिया प्रचार वक्र को दिखाता है
---
## एक रहस्यमय ब्रह्मांड
हम एक ब्रह्मांड में रहते हैं जो रहस्यों से भरा हुआ है। स्टीफन हॉकिंग, अल्बर्ट आइंस्टीन और कई अन्य महान वैज्ञानिकों ने अपने जीवन को इस दुनिया के रहस्यों को उजागर करने वाली जानकारी की खोज में समर्पित किया है। यह सीखने की मानव स्थिति है: एक मानव बच्चा नई चीजें सीखता है और जैसे-जैसे वह वयस्कता तक बढ़ता है, अपने आसपास की दुनिया की संरचना को उजागर करता है।
हम एक ब्रह्मांड में रहते हैं जो रहस्यों से भरा हुआ है। स्टीफन हॉकिंग, अल्बर्ट आइंस्टीन और कई अन्य महान वैज्ञानिकों ने अपने जीवन को उस जानकारी की खोज में समर्पित किया है जो हमारे चारों ओर की दुनिया के रहस्यों को उजागर करती है। यह सीखने की मानव स्थिति है: एक मानव बच्चा नई चीजें सीखता है और जैसे-जैसे वह वयस्कता तक बढ़ता है, अपने दुनिया की संरचना को साल दर साल उजागर करता है।
---
## बच्चे का मस्तिष्क
एक बच्चे का मस्तिष्क और उसकी इंद्रियां अपने आसपास के तथ्यों को महसूस करती हैं और धीरे-धीरे जीवन के छिपे हुए पैटर्न को सीखती हैं, जो बच्चे को सीखे गए पैटर्न की पहचान करने के लिए तार्किक नियम बनाने में मदद करती हैं। मानव मस्तिष्क की सीखने की प्रक्रिया मनुष्यों को इस दुनिया का सबसे परिष्कृत जीवित प्राणी बनाती है। छिपे हुए पैटर्न की खोज करके लगातार सीखना और फिर उन पैटर्न पर नवाचार करना हमें अपने जीवनकाल में बेहतर और बेहतर बनाने में सक्षम बनाता है। यह सीखने की क्षमता और विकसित होने की क्षमता एक अवधारणा से संबंधित है जिसे [मस्तिष्क प्लास्टिसिटी](https://www.simplypsychology.org/brain-plasticity.html) कहा जाता है। सतही तौर पर, हम मानव मस्तिष्क की सीखने की प्रक्रिया और मशीन लर्निंग की अवधारणाओं के बीच कुछ प्रेरणादायक समानताएं खींच सकते हैं।
एक बच्चे का मस्तिष्क और उसकी इंद्रियां अपने आस-पास के तथ्यों को महसूस करती हैं और धीरे-धीरे जीवन के छिपे हुए पैटर्न को सीखती हैं जो बच्चे को सीखे गए पैटर्न की पहचान करने के लिए तार्किक नियम बनाने में मदद करती हैं। मानव मस्तिष्क की सीखने की प्रक्रिया मनुष्यों को इस दुनिया का सबसे परिष्कृत जीवित प्राणी बनाती है। छिपे हुए पैटर्न की खोज करके लगातार सीखना और फिर उन पैटर्न पर नवाचार करना हमें अपने जीवनकाल में बेहतर और बेहतर बनाने में सक्षम बनाता है। यह सीखने की क्षमता और विकसित होने की क्षमता एक अवधारणा से संबंधित है जिसे [मस्तिष्क प्लास्टिसिटी](https://www.simplypsychology.org/brain-plasticity.html) कहा जाता है। सतही तौर पर, हम मानव मस्तिष्क की सीखने की प्रक्रिया और मशीन लर्निंग की अवधारणाओं के बीच कुछ प्रेरणादायक समानताएं खींच सकते हैं।
---
## मानव मस्तिष्क
[मानव मस्तिष्क](https://www.livescience.com/29365-human-brain.html) वास्तविक दुनिया से चीजों को महसूस करता है, प्राप्त जानकारी को संसाधित करता है, तार्किक निर्णय लेता है, और परिस्थितियों के आधार पर कुछ कार्य करता है। इसे हम बुद्धिमानी से व्यवहार करना कहते हैं। जब हम एक मशीन में बुद्धिमान व्यवहार प्रक्रिया की नकल को प्रोग्राम करते हैं, तो इसे कृत्रिम बुद्धिमत्ता (AI) कहा जाता है।
[मानव मस्तिष्क](https://www.livescience.com/29365-human-brain.html) वास्तविक दुनिया से चीजों को महसूस करता है, प्राप्त जानकारी को संसाधित करता है, तार्किक निर्णय लेता है, और परिस्थितियों के आधार पर कुछ कार्य करता है। इसे हम बुद्धिमानी से व्यवहार करना कहते हैं। जब हम बुद्धिमान व्यवहार प्रक्रिया की नकल को एक मशीन में प्रोग्राम करते हैं, तो इसे कृत्रिम बुद्धिमत्ता (AI) कहा जाता है।
---
## कुछ शब्दावली
हालांकि इन शब्दों को भ्रमित किया जा सकता है, मशीन लर्निंग (ML) कृत्रिम बुद्धिमत्ता का एक महत्वपूर्ण उपसमुच्चय है। **ML विशेष एल्गोरिदम का उपयोग करके प्राप्त डेटा से छिपे हुए पैटर्न और सार्थक जानकारी को उजागर करने और तार्किक निर्णय लेने की प्रक्रिया को समर्थन देने के लिए चिंतित है।**
हालांकि इन शब्दों को भ्रमित किया जा सकता है, मशीन लर्निंग (ML) कृत्रिम बुद्धिमत्ता का एक महत्वपूर्ण उपसमुच्चय है। **एमएल विशेष एल्गोरिदम का उपयोग करके प्राप्त डेटा से छिपे हुए पैटर्न और सार्थक जानकारी खोजने और तार्किक निर्णय लेने की प्रक्रिया को समर्थन देने के लिए चिंतित है।**
---
## AI, ML, डीप लर्निंग
## एआई, एमएल, डीप लर्निंग
![AI, ML, डीप लर्निंग, डेटा साइंस](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.hi.png)
![एआई, एमएल, डीप लर्निंग, डेटा साइंस](../../../../1-Introduction/1-intro-to-ML/images/ai-ml-ds.png)
> AI, ML, डीप लर्निंग और डेटा साइंस के बीच संबंधों को दिखाने वाला एक आरेख। [Jen Looper](https://twitter.com/jenlooper) द्वारा बनाया गया इन्फोग्राफिक, [इस ग्राफिक](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) से प्रेरित
> एआई, एमएल, डीप लर्निंग और डेटा साइंस के बीच संबंधों को दिखाने वाला एक आरेख। [जेन लूपर](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक, [इस ग्राफिक](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) से प्रेरित
---
## कवर करने के लिए अवधारणाएं
इस पाठ्यक्रम में, हम केवल मशीन लर्निंग की मुख्य अवधारणाओं को कवर करेंगे जो एक शुरुआती को जानना चाहिए। हम 'क्लासिकल मशीन लर्निंग' को मुख्य रूप से Scikit-learn का उपयोग करके कवर करेंगे, जो एक उत्कृष्ट लाइब्रेरी है जिसे कई छात्र बुनियादी बातें सीखने के लिए उपयोग करते हैं। कृत्रिम बुद्धिमत्ता या डीप लर्निंग की व्यापक अवधारणाओं को समझने के लिए, मशीन लर्निंग का मजबूत मौलिक ज्ञान अनिवार्य है, और हम इसे यहां प्रदान करना चाहते हैं।
इस पाठ्यक्रम में, हम केवल मशीन लर्निंग की मुख्य अवधारणाओं को कवर करेंगे जो एक शुरुआती को जानना चाहिए। हम मुख्य रूप से Scikit-learn का उपयोग करके 'क्लासिकल मशीन लर्निंग' को कवर कर हैं, एक उत्कृष्ट लाइब्रेरी जिसे कई छात्र बुनियादी बातों को सीखने के लिए उपयोग करते हैं। कृत्रिम बुद्धिमत्ता या डीप लर्निंग की व्यापक अवधारणाओं को समझने के लिए, मशीन लर्निंग का मजबूत मौलिक ज्ञान अनिवार्य है, और इसलिए हम इसे यहां प्रदान करना चाहते हैं।
---
## इस कोर्स में आप सीखेंगे:
- मशीन लर्निंग की मुख्य अवधारणाएं
- मशीन लर्निंग का इतिहास
- मशीन लर्निंग और निष्पक्षता
- रिग्रेशन मशीन लर्निंग तकनीकें
- वर्गीकरण मशीन लर्निंग तकनीकें
- क्लस्टरिंग मशीन लर्निंग तकनीकें
- प्राकृतिक भाषा प्रसंस्करण मशीन लर्निंग तकनीकें
- टाइम सीरीज़ पूर्वानुमान मशीन लर्निंग तकनीकें
- एमएल का इतिहास
- एमएल और निष्पक्षता
- रिग्रेशन एमएल तकनीकें
- वर्गीकरण एमएल तकनीकें
- क्लस्टरिंग एमएल तकनीकें
- प्राकृतिक भाषा प्रसंस्करण एमएल तकनीकें
- टाइम सीरीज़ फोरकास्टिंग एमएल तकनीकें
- सुदृढीकरण सीखना
- मशीन लर्निंग के वास्तविक दुनिया के अनुप्रयोग
- एमएल के वास्तविक दुनिया के अनुप्रयोग
---
## हम क्या कवर नहीं करेंगे
- डीप लर्निंग
- न्यूरल नेटवर्क्स
- AI
- एआई
बेहतर सीखने के अनुभव के लिए, हम न्यूरल नेटवर्क्स, 'डीप लर्निंग' - कई-स्तरीय मॉडल-निर्माण का उपयोग करके न्यूरल नेटवर्क्स - और AI की जटिलताओं से बचेंगे, जिसे हम एक अलग पाठ्यक्रम में चर्चा करेंगे। हम डेटा साइंस पर ध्यान केंद्रित करने के लिए एक आगामी पाठ्यक्रम भी प्रदान करेंगे।
बेहतर सीखने के अनुभव के लिए, हम न्यूरल नेटवर्क्स, 'डीप लर्निंग' - न्यूरल नेटवर्क्स का उपयोग करके कई-स्तरीय मॉडल-निर्माण - और एआई की जटिलताओं से बचेंगे, जिसे हम एक अलग पाठ्यक्रम में चर्चा करेंगे। हम डेटा साइंस पर ध्यान केंद्रित करने के लिए एक आगामी पाठ्यक्रम भी प्रदान करेंगे।
---
## मशीन लर्निंग क्यों पढ़ें?
@ -108,45 +108,45 @@ CO_OP_TRANSLATOR_METADATA:
यह प्रेरणा ढीले तौर पर इस बात से प्रेरित है कि मानव मस्तिष्क बाहरी दुनिया से प्राप्त डेटा के आधार पर कुछ चीजें कैसे सीखता है।
✅ एक मिनट के लिए सोचें कि कोई व्यवसाय मशीन लर्निंग रणनीतियों का उपयोग क्यों करना चाहेगा बनाम एक हार्ड-कोडेड नियम-आधारित इंजन।
✅ एक मिनट के लिए सोचें कि कोई व्यवसाय मशीन लर्निंग रणनीतियों का उपयोग क्यों करना चाहेगा बनाम एक हार्ड-कोडेड नियम-आधारित इंजन बनाना
---
## मशीन लर्निंग के अनुप्रयोग
मशीन लर्निंग के अनुप्रयोग अब लगभग हर जगह हैं, और हमारे समाजों में बहने वाले डेटा जितने सर्वव्यापी हैं, जो हमारे स्मार्टफोन, कनेक्टेड डिवाइस और अन्य सिस्टम द्वारा उत्पन्न होते हैं। अत्याधुनिक मशीन लर्निंग एल्गोरिदम की अपार क्षमता को देखते हुए, शोधकर्ता बहु-आयामी और बहु-विषयक वास्तविक जीवन की समस्याओं को सकारात्मक परिणामों के साथ हल करने की उनकी क्षमता का पता लगा रहे हैं।
मशीन लर्निंग के अनुप्रयोग अब लगभग हर जगह हैं, और हमारे समाजों में बहने वाले डेटा जितने सर्वव्यापी हैं, जो हमारे स्मार्ट फोन, कनेक्टेड डिवाइस और अन्य सिस्टम द्वारा उत्पन्न होते हैं। अत्याधुनिक मशीन लर्निंग एल्गोरिदम की अपार क्षमता को देखते हुए, शोधकर्ता बहु-आयामी और बहु-विषयक वास्तविक जीवन की समस्याओं को सकारात्मक परिणामों के साथ हल करने की उनकी क्षमता का पता लगा रहे हैं।
---
## लागू मशीन लर्निंग के उदाहरण
## लागू एमएल के उदाहरण
**आप मशीन लर्निंग का कई तरीकों से उपयोग कर सकते हैं**:
- किसी रोगी के मेडिकल इतिहास या रिपोर्ट से बीमारी की संभावना का पूर्वानुमान लगाने के लिए।
- मौसम डेटा का उपयोग करके मौसम की घटनाओं का पूर्वानुमान लगाने के लिए।
- किसी रोगी के मेडिकल इतिहास या रिपोर्ट से बीमारी की संभावना का नुमान लगाने के लिए।
- मौसम डेटा का उपयोग करके मौसम की घटनाओं की भविष्यवाणी करने के लिए।
- किसी टेक्स्ट की भावना को समझने के लिए।
- नकली समाचार का पता लगाने के लिए ताकि प्रचार के प्रसार को रोका जा सके।
- फेक न्यूज़ का पता लगाने के लिए ताकि प्रोपेगैंडा के प्रसार को रोका जा सके।
वित्त, अर्थशास्त्र, पृथ्वी विज्ञान, अंतरिक्ष अन्वेषण, बायोमेडिकल इंजीनियरिंग, संज्ञानात्मक विज्ञान, और यहां तक कि मानविकी के क्षेत्र भी मशीन लर्निंग को अपने क्षेत्र की कठिन, डेटा-प्रसंस्करण भारी समस्याओं को हल करने के लिए अपना चुके हैं
वित्त, अर्थशास्त्र, पृथ्वी विज्ञान, अंतरिक्ष अन्वेषण, बायोमेडिकल इंजीनियरिंग, संज्ञानात्मक विज्ञान, और यहां तक कि मानविकी के क्षेत्रों ने अपने डोमेन की कठिन, डेटा-प्रोसेसिंग भारी समस्याओं को हल करने के लिए मशीन लर्निंग को अपनाया है
---
## निष्कर्ष
मशीन लर्निंग वास्तविक दुनिया या उत्पन्न डेटा से सार्थक अंतर्दृष्टि खोजने के लिए पैटर्न-खोज प्रक्रिया को स्वचालित करता है। यह व्यवसाय, स्वास्थ्य, और वित्तीय अनुप्रयोगों सहित अन्य क्षेत्रों में अत्यधिक मूल्यवान साबित हुआ है।
निकट भविष्य में, मशीन लर्निंग की बुनियादी बातों को समझना किसी भी क्षेत्र के लोगों के लिए आवश्यक होने वाला है क्योंकि इसका व्यापक रूप से अपनाया जा रहा है।
निकट भविष्य में, मशीन लर्निंग की बुनियादी बातों को समझना किसी भी क्षेत्र के लोगों के लिए आवश्यक होने जा रहा है क्योंकि इसका व्यापक रूप से अपनाया जा रहा है।
---
# 🚀 चुनौती
कागज पर या [Excalidraw](https://excalidraw.com/) जैसे ऑनलाइन ऐप का उपयोग करके AI, ML, डीप लर्निंग, और डेटा साइंस के बीच के अंतर को समझाने के लिए एक स्केच बनाएं। उन समस्याओं के कुछ विचार जोड़ें जिन्हें इन तकनीकों द्वारा हल किया जा सकता है।
कागज पर या [Excalidraw](https://excalidraw.com/) जैसे ऑनलाइन ऐप का उपयोग करके, एआई, एमएल, डीप लर्निंग और डेटा साइंस के बीच के अंतर को समझाने के लिए एक स्केच बनाएं। उन समस्याओं के कुछ विचार जोड़ें जिन्हें इन तकनीकों द्वारा हल किया जा सकता है।
# [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/)
# [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
---
# समीक्षा और स्व-अध्ययन
यह जानने के लिए कि आप क्लाउड में ML एल्गोरिदम के साथ कैसे काम कर सकते हैं, इस [लर्निंग पाथ](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) का अनुसरण करें।
यह जानने के लिए कि आप क्लाउड में एमएल एल्गोरिदम के साथ कैसे काम कर सकते हैं, इस [लर्निंग पाथ](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) का अनुसरण करें।
मशीन लर्निंग की मूल बातें के बारे में जानने के लिए इस [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) को लें।
एमएल की बुनियादी बातों के बारे में जानने के लिए इस [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) को लें।
---
# असाइनमेंट
@ -156,4 +156,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,36 +1,36 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b2d11df10030cacc41427a1fbc8bc8f1",
"translation_date": "2025-09-03T23:41:44+00:00",
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
"translation_date": "2025-09-05T10:25:07+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "hi"
}
-->
# मशीन लर्निंग का इतिहास
![मशीन लर्निंग के इतिहास का सारांश एक स्केच नोट में](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.hi.png)
![मशीन लर्निंग के इतिहास का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-history.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
---
[![मशीन लर्निंग के शुरुआती दिनों का इतिहास](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "मशीन लर्निंग के शुरुआती दिनों का इतिहास")
[![मशीन लर्निंग के शुरुआती चरण - मशीन लर्निंग का इतिहास](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "मशीन लर्निंग के शुरुआती चरण - मशीन लर्निंग का इतिहास")
> 🎥 ऊपर दी गई तस्वीर पर क्लिक करें इस पाठ को समझने के लिए एक छोटा वीडियो देखने हेतु
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ को समझने के लिए एक छोटा वीडियो देखने के लिए
इस पाठ में, हम मशीन लर्निंग और कृत्रिम बुद्धिमत्ता के इतिहास में प्रमुख मील के पत्थरों पर चर्चा करेंगे।
इस पाठ में, हम मशीन लर्निंग और कृत्रिम बुद्धिमत्ता के इतिहास में प्रमुख मील के पत्थरों को देखेंगे।
कृत्रिम बुद्धिमत्ता (AI) का इतिहास मशीन लर्निंग के इतिहास से जुड़ा हुआ है, क्योंकि ML के अंतर्गत आने वाले एल्गोरिदम और कंप्यूटेशनल प्रगति ने AI के विकास में योगदान दिया। यह याद रखना उपयोगी है कि, जबकि ये क्षेत्र 1950 के दशक में अलग-अलग अध्ययन के रूप में उभरने लगे, महत्वपूर्ण [एल्गोरिदमिक, सांख्यिकीय, गणितीय, कंप्यूटेशनल और तकनीकी खोजें](https://wikipedia.org/wiki/Timeline_of_machine_learning) इस युग से पहले और इसके साथ-साथ हुईं। वास्तव में, लोग इन सवालों पर [सैकड़ों वर्षों](https://wikipedia.org/wiki/History_of_artificial_intelligence) से विचार कर रहे हैं: यह लेख 'सोचने वाली मशीन' के विचार के ऐतिहासिक बौद्धिक आधार पर चर्चा करता है।
कृत्रिम बुद्धिमत्ता (AI) का इतिहास मशीन लर्निंग के इतिहास से जुड़ा हुआ है, क्योंकि ML के अंतर्गत आने वाले एल्गोरिदम और कंप्यूटेशनल प्रगति ने AI के विकास में योगदान दिया। यह याद रखना उपयोगी है कि, जबकि ये क्षेत्र 1950 के दशक में अलग-अलग अध्ययन के रूप में उभरने लगे, महत्वपूर्ण [एल्गोरिदमिक, सांख्यिकीय, गणितीय, कंप्यूटेशनल और तकनीकी खोजें](https://wikipedia.org/wiki/Timeline_of_machine_learning) इस युग से पहले और इसके साथ-साथ हुईं। वास्तव में, लोग इन सवालों पर [सैकड़ों वर्षों](https://wikipedia.org/wiki/History_of_artificial_intelligence) से विचार कर रहे हैं: यह लेख 'सोचने वाली मशीन' के विचार के ऐतिहासिक बौद्धिक आधारों पर चर्चा करता है।
---
## उल्लेखनीय खोजें
- 1763, 1812 [बेस प्रमेय](https://wikipedia.org/wiki/Bayes%27_theorem) और इसके पूर्ववर्ती। यह प्रमेय और इसके अनुप्रयोग पूर्व ज्ञान के आधार पर किसी घटना के होने की संभावना का वर्णन करते हैं।
- 1763, 1812 [बेस प्रमेय](https://wikipedia.org/wiki/Bayes%27_theorem) और इसके पूर्ववर्ती। यह प्रमेय और इसके अनुप्रयोग पूर्व ज्ञान के आधार पर किसी घटना के होने की संभावना का वर्णन करते हैं।
- 1805 [लीस्ट स्क्वायर थ्योरी](https://wikipedia.org/wiki/Least_squares) फ्रांसीसी गणितज्ञ एड्रियन-मैरी लेजेंड्रे द्वारा। यह सिद्धांत, जिसे आप हमारे रिग्रेशन यूनिट में सीखेंगे, डेटा फिटिंग में मदद करता है।
- 1913 [मार्कोव चेन](https://wikipedia.org/wiki/Markov_chain), रूसी गणितज्ञ एंड्रे मार्कोव के नाम पर, पिछले स्थिति के आधार पर संभावित घटनाओं की एक श्रृंखला का वर्णन करने के लिए उपयोग किया जाता है।
- 1957 [पर्सेप्ट्रॉन](https://wikipedia.org/wiki/Perceptron) एक प्रकार का लीनियर क्लासिफायर है जिसे अमेरिकी मनोवैज्ञानिक फ्रैंक रोसेनब्लाट ने आविष्कार किया था और यह डीप लर्निंग में प्रगति का आधार है।
- 1913 [मार्कोव चेन](https://wikipedia.org/wiki/Markov_chain), रूसी गणितज्ञ एंड्रे मार्कोव के नाम पर, पिछले स्थिति के आधार पर संभावित घटनाओं की एक श्रृंखला का वर्णन करता है।
- 1957 [पर्सेप्ट्रॉन](https://wikipedia.org/wiki/Perceptron) एक प्रकार का लीनियर क्लासिफायर है जिसे अमेरिकी मनोवैज्ञानिक फ्रैंक रोसेनब्लाट ने विकसित किया था और यह डीप लर्निंग में प्रगति का आधार है।
---
@ -43,25 +43,25 @@ CO_OP_TRANSLATOR_METADATA:
---
## 1950: सोचने वाली मशीनें
एलन ट्यूरिंग, एक असाधारण व्यक्ति जिन्हें [2019 में जनता द्वारा](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20वीं सदी के सबसे महान वैज्ञानिक के रूप में चुना गया था, को 'सोचने वाली मशीन' की अवधारणा की नींव रखने में मदद करने का श्रेय दिया जाता है। उन्होंने इस अवधारणा के लिए [ट्यूरिंग टेस्ट](https://www.bbc.com/news/technology-18475646) बनाया, जिसे आप हमारे NLP पाठों में खोजेंगे।
एलन ट्यूरिंग, एक असाधारण व्यक्ति जिन्हें [2019 में जनता द्वारा](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20वीं सदी के सबसे महान वैज्ञानिक के रूप में चुना गया था, को 'सोचने वाली मशीन' की अवधारणा की नींव रखने में मदद करने का श्रेय दिया जाता है। उन्होंने इस अवधारणा के लिए [ट्यूरिंग टेस्ट](https://www.bbc.com/news/technology-18475646) बनाया, जिसे आप हमारे NLP पाठों में देखेंगे।
---
## 1956: डार्टमाउथ समर रिसर्च प्रोजेक्ट
"डार्टमाउथ समर रिसर्च प्रोजेक्ट कृत्रिम बुद्धिमत्ता के क्षेत्र के लिए एक महत्वपूर्ण घटना थी," और यहीं पर 'कृत्रिम बुद्धिमत्ता' शब्द गढ़ा गया ([स्रोत](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))।
"डार्टमाउथ समर रिसर्च प्रोजेक्ट ऑन आर्टिफिशियल इंटेलिजेंस कृत्रिम बुद्धिमत्ता के क्षेत्र के लिए एक महत्वपूर्ण घटना थी," और यहीं पर 'कृत्रिम बुद्धिमत्ता' शब्द का निर्माण हुआ ([स्रोत](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))।
> सीखने या बुद्धिमत्ता की किसी अन्य विशेषता का हर पहलू सिद्धांत रूप में इतनी सटीकता से वर्णित किया जा सकता है कि एक मशीन इसे अनुकरण कर सके।
> सीखने या बुद्धिमत्ता की किसी भी अन्य विशेषता को इतनी सटीकता से वर्णित किया जा सकता है कि एक मशीन इसे अनुकरण कर सके।
---
मुख्य शोधकर्ता, गणित के प्रोफेसर जॉन मैकार्थी, ने आशा व्यक्त की कि "सीखने या बुद्धिमत्ता की किसी अन्य विशेषता का हर पहलू सिद्धांत रूप में इतनी सटीकता से वर्णित किया जा सकता है कि एक मशीन इसे अनुकरण कर सके।" प्रतिभागियों में इस क्षेत्र के एक और प्रमुख व्यक्ति, मार्विन मिंस्की, भी शामिल थे।
मुख्य शोधकर्ता, गणित के प्रोफेसर जॉन मैकार्थी, ने आशा व्यक्त की कि "सीखने या बुद्धिमत्ता की किसी भी अन्य विशेषता को इतनी सटीकता से वर्णित किया जा सकता है कि एक मशीन इसे अनुकरण कर सके।" प्रतिभागियों में इस क्षेत्र के एक और प्रमुख व्यक्ति, मार्विन मिंस्की, भी शामिल थे।
इस कार्यशाला को "प्रतीकात्मक विधियों का उदय, सीमित डोमेन पर केंद्रित प्रणालियाँ (प्रारंभिक विशेषज्ञ प्रणालियाँ), और निगमनात्मक प्रणालियों बनाम आगमनात्मक प्रणालियों" जैसे कई चर्चाओं को शुरू करने और प्रोत्साहित करने का श्रेय दिया जाता है। ([स्रोत](https://wikipedia.org/wiki/Dartmouth_workshop))।
इस कार्यशाला को "प्रतीकात्मक विधियों का उदय, सीमित डोमेन पर केंद्रित सिस्टम (प्रारंभिक विशेषज्ञ सिस्टम), और निगमनात्मक सिस्टम बनाम आगमनात्मक सिस्टम" सहित कई चर्चाओं को शुरू करने और प्रोत्साहित करने का श्रेय दिया जाता है। ([स्रोत](https://wikipedia.org/wiki/Dartmouth_workshop))।
---
## 1956 - 1974: "स्वर्ण युग"
1950 के दशक से लेकर 70 के दशक के मध्य तक, AI के कई समस्याओं को हल करने की आशा में बहुत उत्साह था। 1967 में, मार्विन मिंस्की ने आत्मविश्वास से कहा, "एक पीढ़ी के भीतर ... 'कृत्रिम बुद्धिमत्ता' बनाने की समस्या काफी हद तक हल हो जाएगी।" (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
1950 के दशक से लेकर 70 के दशक के मध्य तक, AI के कई समस्याओं को हल करने की उम्मीद में काफी आशावाद था। 1967 में, मार्विन मिंस्की ने आत्मविश्वास से कहा, "एक पीढ़ी के भीतर ... 'कृत्रिम बुद्धिमत्ता' बनाने की समस्या काफी हद तक हल हो जाएगी।" (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
प्राकृतिक भाषा प्रसंस्करण अनुसंधान फला-फूला, खोज को परिष्कृत और अधिक शक्तिशाली बनाया गया, और 'माइक्रो-वर्ल्ड्स' की अवधारणा बनाई गई, जहां सरल कार्यों को साधारण भाषा निर्देशों का उपयोग करके पूरा किया गया।
@ -69,25 +69,25 @@ CO_OP_TRANSLATOR_METADATA:
सरकारी एजेंसियों द्वारा अनुसंधान को अच्छी तरह से वित्त पोषित किया गया, कंप्यूटेशन और एल्गोरिदम में प्रगति हुई, और बुद्धिमान मशीनों के प्रोटोटाइप बनाए गए। इनमें से कुछ मशीनें शामिल हैं:
* [शेकी रोबोट](https://wikipedia.org/wiki/Shakey_the_robot), जो कार्यों को 'बुद्धिमानी से' करने का निर्णय ले सकता था।
* [शेकी रोबोट](https://wikipedia.org/wiki/Shakey_the_robot), जो 'बुद्धिमानी' से कार्यों को करने का निर्णय ले सकता था।
![शेकी, एक बुद्धिमान रोबोट](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.hi.jpg)
> शेकी 1972 में
![शेकी, एक बुद्धिमान रोबोट](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg)
> 1972 में शेकी
---
* एलिजा, एक प्रारंभिक 'चैटरबॉट', लोगों से बातचीत कर सकता था और एक आदिम 'थेरेपिस्ट' के रूप में कार्य कर सकता था। आप NLP पाठों में एलिजा के बारे में अधिक जानेंगे।
* एलिजा, एक प्रारंभिक 'चैटरबॉट', लोगों से बातचीत कर सकता था और एक आदिम 'थेरेपिस्ट' के रूप में कार्य कर सकता था। आप NLP पाठों में एलिजा के बारे में अधिक जानेंगे।
![एलिज़ा, एक बॉट](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.hi.png)
> एलिजा का एक संस्करण, एक चैटबॉट
![एलिजा, एक बॉट](../../../../1-Introduction/2-history-of-ML/images/eliza.png)
> एलिजा का एक संस्करण, एक चैटबॉट
---
* "ब्लॉक्स वर्ल्ड" एक माइक्रो-वर्ल्ड का उदाहरण था जहां ब्लॉक्स को स्टैक और सॉर्ट किया जा सकता था, और मशीनों को निर्णय लेने के लिए सिखाने के प्रयोग किए जा सकते थे। [SHRDLU](https://wikipedia.org/wiki/SHRDLU) जैसी लाइब्रेरी के साथ बनाए गए प्रगति ने भाषा प्रसंस्करण को आगे बढ़ाने में मदद की।
[![ब्लॉक्स वर्ल्ड SHRDLU के साथ](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "ब्लॉक्स वर्ल्ड SHRDLU के साथ")
[![SHRDLU के साथ ब्लॉक्स वर्ल्ड](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU के साथ ब्लॉक्स वर्ल्ड")
> 🎥 ऊपर दी गई तस्वीर पर क्लिक करें: SHRDLU के साथ ब्लॉक्स वर्ल्ड का वीडियो
> 🎥 ऊपर दी गई छवि पर क्लिक करें एक वीडियो देखने के लिए: SHRDLU के साथ ब्लॉक्स वर्ल्ड
---
## 1974 - 1980: "AI विंटर"
@ -97,56 +97,56 @@ CO_OP_TRANSLATOR_METADATA:
- **सीमाएं**। कंप्यूट पावर बहुत सीमित थी।
- **कॉम्बिनेटोरियल विस्फोट**। कंप्यूटर से अधिक मांग करने पर प्रशिक्षित किए जाने वाले पैरामीटर की मात्रा तेजी से बढ़ गई, लेकिन कंप्यूट पावर और क्षमता समानांतर रूप से विकसित नहीं हुई।
- **डेटा की कमी**। डेटा की कमी ने एल्गोरिदम का परीक्षण, विकास और परिष्कृत करने की प्रक्रिया को बाधित किया।
- **क्या हम सही सवाल पूछ रहे हैं?**। पूछे जा रहे सवालों पर ही सवाल उठने लगे। शोधकर्ताओं ने अपने दृष्टिकोणों पर आलोचना का सामना करना शुरू किया:
- ट्यूरिंग टेस्ट को 'चीनी कक्ष सिद्धांत' जैसे विचारों के माध्यम से सवालों के घेरे में लाया गया, जिसमें कहा गया कि, "डिजिटल कंप्यूटर को प्रोग्राम करना इसे भाषा समझने में सक्षम बना सकता है लेकिन वास्तविक समझ पैदा नहीं कर सकता।" ([स्रोत](https://plato.stanford.edu/entries/chinese-room/))
- समाज में "थेरेपिस्ट" ELIZA जैसे कृत्रिम बुद्धिमत्ता को पेश करने की नैतिकता को चुनौती दी गई।
- **क्या हम सही सवाल पूछ रहे हैं?**। पूछे जा रहे सवालों पर ही सवाल उठने लगे। शोधकर्ताओं ने अपने दृष्टिकोणों के बारे में आलोचना का सामना करना शुरू किया:
- ट्यूरिंग टेस्ट को 'चीनी कक्ष सिद्धांत' जैसे विचारों के माध्यम से सवालों के घेरे में लाया गया, जिसमें कहा गया कि "डिजिटल कंप्यूटर को प्रोग्राम करना इसे भाषा को समझने में सक्षम बना सकता है लेकिन वास्तविक समझ पैदा नहीं कर सकता।" ([स्रोत](https://plato.stanford.edu/entries/chinese-room/))
- समाज में "थेरेपिस्ट" एलिजा जैसे कृत्रिम बुद्धिमत्ता को पेश करने की नैतिकता को चुनौती दी गई।
---
इसी समय, AI के विभिन्न स्कूल ऑफ थॉट बनने लगे। ["स्क्रफी" बनाम "नीट AI"](https://wikipedia.org/wiki/Neats_and_scruffies) प्रथाओं के बीच एक विभाजन स्थापित हुआ। _स्क्रफी_ लैब्स ने वांछित परिणाम प्राप्त करने तक प्रोग्रामों को घंटों तक ट्वीक किया। _नीट_ लैब्स "तार्किक और औपचारिक समस्या समाधान" पर केंद्रित थे। ELIZA और SHRDLU प्रसिद्ध _स्क्रफी_ सिस्टम थे। 1980 के दशक में, जब ML सिस्टम को पुन: उत्पन्न करने की मांग उभरी, तो _नीट_ दृष्टिकोण धीरे-धीरे प्रमुखता प्राप्त करने लगा क्योंकि इसके परिणाम अधिक व्याख्यात्मक हैं।
इसी समय, विभिन्न AI विचारधाराएं बनने लगीं। ["स्क्रफी" बनाम "नीट AI"](https://wikipedia.org/wiki/Neats_and_scruffies) प्रथाओं के बीच एक विभाजन स्थापित हुआ। _स्क्रफी_ लैब्स ने वांछित परिणाम प्राप्त करने तक प्रोग्रामों को घंटों तक समायोजित किया। _नीट_ लैब्स "तार्किक और औपचारिक समस्या समाधान" पर केंद्रित थे। ELIZA और SHRDLU प्रसिद्ध _स्क्रफी_ सिस्टम थे। 1980 के दशक में, जब ML सिस्टम को पुन: उत्पन्न करने की मांग उभरी, _नीट_ दृष्टिकोण धीरे-धीरे प्रमुखता में आया क्योंकि इसके परिणाम अधिक व्याख्यात्मक हैं।
---
## 1980 के दशक: विशेषज्ञ प्रणालियाँ
## 1980 के दशक: विशेषज्ञ सिस्टम
जैसे-जैसे क्षेत्र बढ़ा, इसका व्यवसाय के लिए लाभ स्पष्ट होने लगा, और 1980 के दशक में 'विशेषज्ञ प्रणालियों' का प्रसार हुआ। "विशेषज्ञ प्रणालियाँ कृत्रिम बुद्धिमत्ता (AI) सॉफ़्टवेयर के पहले वास्तव में सफल रूपों में से थीं।" ([स्रोत](https://wikipedia.org/wiki/Expert_system))।
जैसे-जैसे क्षेत्र बढ़ा, इसका व्यवसाय के लिए लाभ स्पष्ट हुआ, और 1980 के दशक में 'विशेषज्ञ सिस्टम' का प्रसार हुआ। "विशेषज्ञ सिस्टम कृत्रिम बुद्धिमत्ता (AI) सॉफ़्टवेयर के पहले वास्तव में सफल रूपों में से थ।" ([स्रोत](https://wikipedia.org/wiki/Expert_system))।
इस प्रकार की प्रणाली वास्तव में _हाइब्रिड_ होती है, जिसमें आंशिक रूप से एक नियम इंजन होता है जो व्यवसायिक आवश्यकताओं को परिभाषित करता है, और एक इंफेरेंस इंजन होता है जो नियम प्रणाली का उपयोग करके नए तथ्यों का अनुमान लगाता है।
इस प्रकार का सिस्टम वास्तव में _हाइब्रिड_ है, जिसमें आंशिक रूप से एक नियम इंजन होता है जो व्यवसाय आवश्यकताओं को परिभाषित करता है, और एक इंफेरेंस इंजन होता है जो नियम प्रणाली का उपयोग करके नए तथ्यों का अनुमान लगाता है।
इस युग में न्यूरल नेटवर्क पर भी बढ़ती ध्यान दिया गया।
---
## 1987 - 1993: AI 'चिल'
विशेषज्ञ प्रणालियों के हार्डवेयर का प्रसार दुर्भाग्यवश बहुत अधिक विशिष्ट हो गया। व्यक्तिगत कंप्यूटरों के उदय ने इन बड़े, विशिष्ट, केंद्रीकृत प्रणालियों के साथ प्रतिस्पर्धा की। कंप्यूटिंग का लोकतंत्रीकरण शुरू हो गया था, और इसने अंततः बड़े डेटा के आधुनिक विस्फोट का मार्ग प्रशस्त किया।
विशेषज्ञ सिस्टम हार्डवेयर के प्रसार का दुर्भाग्यपूर्ण प्रभाव यह हुआ कि यह बहुत अधिक विशिष्ट हो गया। व्यक्तिगत कंप्यूटरों के उदय ने इन बड़े, विशिष्ट, केंद्रीकृत सिस्टमों के साथ प्रतिस्पर्धा की। कंप्यूटिंग का लोकतंत्रीकरण शुरू हो गया था, और इसने अंततः बड़े डेटा के आधुनिक विस्फोट का मार्ग प्रशस्त किया।
---
## 1993 - 2011
इस युग ने ML और AI के लिए एक नया दौर देखा, जिसमें पहले की समस्याओं को हल करने की क्षमता थी जो डेटा और कंप्यूट पावर की कमी के कारण उत्पन्न हुई थीं। डेटा की मात्रा तेजी से बढ़ने लगी और अधिक व्यापक रूप से उपलब्ध हो गई, अच्छे और बुरे दोनों के लिए, विशेष रूप से 2007 के आसपास स्मार्टफोन के आगमन के साथ। कंप्यूट पावर तेजी से बढ़ी, और एल्गोरिदम साथ-साथ विकसित हुए। क्षेत्र ने परिपक्वता प्राप्त करना शुरू कर दिया क्योंकि अतीत के स्वतंत्र दिनों ने एक सच्चे अनुशासन का रूप लेना शुरू कर दिया
इस युग ने ML और AI के लिए एक नया दौर देखा, जिसमें पहले की समस्याओं को हल करने की क्षमता थी जो डेटा और कंप्यूट पावर की कमी के कारण उत्पन्न हुई थीं। डेटा की मात्रा तेजी से बढ़ने लगी और अधिक व्यापक रूप से उपलब्ध हो गई, अच्छे और बुरे दोनों के लिए, विशेष रूप से 2007 के आसपास स्मार्टफोन के आगमन के साथ। कंप्यूट पावर तेजी से बढ़ी, और एल्गोरिदम साथ-साथ विकसित हुए। क्षेत्र ने परिपक्वता प्राप्त करना शुरू कर दिया क्योंकि अतीत के मुक्त-प्रवाह वाले दिन एक सच्चे अनुशासन में बदलने लगे
---
## वर्तमान
आज मशीन लर्निंग और AI हमारे जीवन के लगभग हर हिस्से को छूते हैं। यह युग इन एल्गोरिदम के मानव जीवन पर संभावित प्रभावों और जोखिमों को सावधानीपूर्वक समझने की मांग करता है। जैसा कि माइक्रोसॉफ्ट के ब्रैड स्मिथ ने कहा है, "सूचना प्रौद्योगिकी ऐसे मुद्दों को उठाती है जो गोपनीयता और अभिव्यक्ति की स्वतंत्रता जैसे मौलिक मानवाधिकार संरक्षण के दिल तक जाते हैं। ये मुद्दे उन तकनीकी कंपनियों के लिए जिम्मेदारी बढ़ाते हैं जो इन उत्पादों को बनाती हैं। हमारे विचार में, ये विचारशील सरकारी विनियमन और स्वीकार्य उपयोगों के आसपास मानदंडों के विकास के लिए भी कहते हैं।" ([स्रोत](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))।
आज मशीन लर्निंग और AI हमारे जीवन के लगभग हर हिस्से को छूते हैं। इस युग में इन एल्गोरिदम के मानव जीवन पर संभावित प्रभावों और जोखिमों को सावधानीपूर्वक समझने की आवश्यकता है। जैसा कि माइक्रोसॉफ्ट के ब्रैड स्मिथ ने कहा है, "सूचना प्रौद्योगिकी ऐसे मुद्दों को उठाती है जो गोपनीयता और अभिव्यक्ति की स्वतंत्रता जैसे मौलिक मानवाधिकार सुरक्षा के दिल तक जाते हैं। ये मुद्दे उन तकनीकी कंपनियों के लिए जिम्मेदारी बढ़ाते हैं जो इन उत्पादों को बनाती हैं। हमारे विचार में, ये विचारशील सरकारी विनियमन और स्वीकार्य उपयोगों के आसपास मानदंडों के विकास के लिए भी कहते हैं।" ([स्रोत](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/))।
---
यह देखना बाकी है कि भविष्य क्या रखता है, लेकिन इन कंप्यूटर सिस्टम और सॉफ़्टवेयर और एल्गोरिदम को समझना महत्वपूर्ण है जो वे चलाते हैं। हमें उम्मीद है कि यह पाठ्यक्रम आपको बेहतर समझ प्राप्त करने में मदद करेगा ताकि आप स्वयं निर्णय ले सकें।
यह देखना बाकी है कि भविष्य क्या रखता है, लेकिन इन कंप्यूटर सिस्टम और उनके द्वारा चलाए जाने वाले सॉफ़्टवेयर और एल्गोरिदम को समझना महत्वपूर्ण है। हमें उम्मीद है कि यह पाठ्यक्रम आपको बेहतर समझ प्राप्त करने में मदद करेगा ताकि आप स्वयं निर्णय ले सकें।
[![डीप लर्निंग का इतिहास](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "डीप लर्निंग का इतिहास")
> 🎥 ऊपर दी गई तस्वीर पर क्लिक करें: यान लेकुन इस व्याख्यान में डीप लर्निंग के इतिहास पर चर्चा करते हैं
> 🎥 ऊपर दी गई छवि पर क्लिक करें एक वीडियो देखने के लिए: यान लेकुन इस व्याख्यान में डीप लर्निंग के इतिहास पर चर्चा करते हैं
---
## 🚀चुनौती
इन ऐतिहासिक क्षणों में से किसी एक में गहराई से जाएं और उनके पीछे के लोगों के बारे में अधिक जानें। ये पात्र आकर्षक हैं, और कोई भी वैज्ञानिक खोज कभी सांस्कृतिक शून्य में नहीं बनाई गई। आप क्या खोजते हैं?
इन ऐतिहासिक क्षणों में से किसी एक में गहराई से जाएं और उनके पीछे के लोगों के बारे में अधिक जानें। ये पात्र आकर्षक हैं, और कोई भी वैज्ञानिक खोज कभी सांस्कृतिक शून्य में नहीं बनाई गई थी। आप क्या खोजते हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
---
## समीक्षा और स्व-अध्ययन
यहां देखने और सुनने के लिए आइटम हैं:
देखने और सुनने के लिए यहां कुछ आइटम हैं:
[यह पॉडकास्ट जहां एमी बॉयड AI के विकास पर चर्चा करती हैं](http://runasradio.com/Shows/Show/739)
@ -161,4 +161,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,162 +1,164 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "8f819813b2ca08ec7b9f60a2c9336045",
"translation_date": "2025-09-03T23:30:24+00:00",
"original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
"translation_date": "2025-09-05T10:22:56+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "hi"
}
-->
# जिम्मेदार AI के साथ मशीन लर्निंग समाधान बनाना
![मशीन लर्निंग में जिम्मेदार AI का सारांश एक स्केच नोट में](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.hi.png)
> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
![मशीन लर्निंग में जिम्मेदार AI का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-fairness.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
## [ाठ से पहले का क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## परिचय
इस पाठ्यक्रम में, आप यह जानना शुरू करेंगे कि मशीन लर्निंग हमारे रोज़मर्रा के जीवन को कैसे प्रभावित कर रही है। आज भी, सिस्टम और मॉडल स्वास्थ्य देखभाल निदान, ऋण स्वीकृति, या धोखाधड़ी का पता लगाने जैसे दैनिक निर्णय लेने के कार्यों में शामिल हैं। इसलिए यह महत्वपूर्ण है कि ये मॉडल भरोसेमंद परिणाम प्रदान करने के लिए अच्छी तरह से काम करें। जैसे किसी भी सॉफ़्टवेयर एप्लिकेशन में, AI सिस्टम उम्मीदों पर खरा नहीं उतर सकते या अवांछनीय परिणाम दे सकते हैं। यही कारण है कि AI मॉडल के व्यवहार को समझने और समझाने में सक्षम होना आवश्यक है।
इस पाठ्यक्रम में, आप जानेंगे कि मशीन लर्निंग हमारे दैनिक जीवन को कैसे प्रभावित कर रही है। आज भी, सिस्टम और मॉडल स्वास्थ्य देखभाल निदान, ऋण स्वीकृति, या धोखाधड़ी का पता लगाने जैसे दैनिक निर्णय लेने के कार्यों में शामिल हैं। इसलिए यह महत्वपूर्ण है कि ये मॉडल भरोसेमंद परिणाम प्रदान करने के लिए अच्छी तरह से काम करें। जैसे किसी भी सॉफ़्टवेयर एप्लिकेशन में, AI सिस्टम भी अपेक्षाओं से चूक सकते हैं या अवांछनीय परिणाम दे सकते हैं। यही कारण है कि AI मॉडल के व्यवहार को समझना और समझाना आवश्यक है।
कल्पना करें कि जब आप इन मॉडलों को बनाने के लिए उपयोग किए जा रहे डेटा में कुछ जनसांख्यिकी जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म की कमी हो, या इन जनसांख्यिकी का असमान प्रतिनिधित्व हो, तो क्या हो सकता है। क्या होगा जब मॉडल का आउटपुट किसी जनसांख्यिकी को प्राथमिकता देने के लिए व्याख्या किया जाए? एप्लिकेशन के लिए इसका क्या परिणाम होगा? इसके अलावा, जब मॉडल का प्रतिकूल परिणाम होता है और यह लोगों के लिए हानिकारक होता है, तो क्या होता है? AI सिस्टम के व्यवहार के लिए कौन जिम्मेदार है? ये कुछ सवाल हैं जिन्हें हम इस पाठ्यक्रम में खोजेंगे।
कल्पना करें कि जब आप इन मॉडलों को बनाने के लिए उपयोग किए जा रहे डेटा में कुछ जनसांख्यिकी, जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, या असमान रूप से प्रतिनिधित्व करने वाले जनसांख्यिकी की कमी हो, तो क्या हो सकता है। अगर मॉडल का आउटपुट किसी विशेष जनसांख्यिकी को प्राथमिकता देता है, तो इसका एप्लिकेशन पर क्या प्रभाव पड़ेगा? इसके अलावा, जब मॉडल का परिणाम हानिकारक हो और लोगों को नुकसान पहुंचाए, तो क्या होगा? AI सिस्टम के व्यवहार के लिए कौन जिम्मेदार होगा? ये कुछ सवाल हैं जिनकी हम इस पाठ्यक्रम में जांच करेंगे।
इस पाठ में, आप:
- मशीन लर्निंग में निष्पक्षता और निष्पक्षता से संबंधित नुकसान के महत्व के बारे में जागरूकता बढ़ाएंगे।
- असामान्य परिदृश्यों और बाहरी तत्वों की जांच करने की प्रथा से परिचित होंगे ताकि विश्वसनीयता और सुरक्षा सुनिश्चित हो सके।
- मशीन लर्निंग में निष्पक्षता और इससे संबंधित हानियों के महत्व के बारे में जागरूकता बढ़ाएंगे।
- असामान्य परिदृश्यों और बाहरी मूल्यों की जांच करने की प्रक्रिया से परिचित होंगे ताकि विश्वसनीयता और सुरक्षा सुनिश्चित की जा सके।
- समावेशी सिस्टम डिज़ाइन करके सभी को सशक्त बनाने की आवश्यकता को समझेंगे।
- डेटा और लोगों की गोपनीयता और सुरक्षा की रक्षा करने के महत्व का पता लगाएंगे।
- AI मॉडल के व्यवहार को समझाने के लिए एक पारदर्शी दृष्टिकोण अपनाने के महत्व को देखेंगे।
- AI सिस्टम में विश्वास बनाने के लिए जवाबदेही के महत्व को ध्यान में रखेंगे
- यह समझेंगे कि AI सिस्टम में विश्वास बनाने के लिए जवाबदेही क्यों आवश्यक है
## पूर्वापेक्षा
पूर्वापेक्षा के रूप में, कृपया "जिम्मेदार AI सिद्धांत" सीखने का पथ लें और नीचे दिए गए विषय पर वीडियो देखें:
इस पाठ से पहले, कृपया "जिम्मेदार AI सिद्धांत" सीखने का पथ पूरा करें और नीचे दिए गए वीडियो को देखें:
जिम्मेदार AI के बारे में अधिक जानने के लिए इस [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) का अनुसरण करें।
[![Microsoft का जिम्मेदार AI दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft का जिम्मेदार AI दृष्टिकोण")
[![Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण")
> 🎥 ऊपर दी गई छवि पर क्लिक करें: Microsoft का जिम्मेदार AI दृष्टिकोण
> 🎥 ऊपर दी गई छवि पर क्लिक करें: Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण
## निष्पक्षता
AI सिस्टम को सभी के साथ निष्पक्ष व्यवहार करना चाहिए और समान समूहों के लोगों को अलग-अलग तरीकों से प्रभावित करने से बचना चाहिए। उदाहरण के लिए, जब AI सिस्टम चिकित्सा उपचार, ऋण आवेदन, या रोजगार पर मार्गदर्शन प्रदान करते हैं, तो उन्हें समान लक्षण, वित्तीय परिस्थितियों, या पेशेवर योग्यता वाले सभी लोगों को समान सिफारिशें देनी चाहिए। हम में से प्रत्येक, एक इंसान के रूप में, अपने निर्णयों और कार्यों को प्रभावित करने वाले पूर्वाग्रहों को अपने साथ लेकर चलता है। ये पूर्वाग्रह उस डेटा में दिखाई दे सकते हैं जिसका उपयोग हम AI सिस्टम को प्रशिक्षित करने के लिए करते हैं। ऐसा हेरफेर कभी-कभी अनजाने में हो सकता है। यह अक्सर जानबूझकर समझना मुश्किल होता है कि आप डेटा में पूर्वाग्रह कब पेश कर रहे हैं।
AI सिस्टम को सभी के साथ निष्पक्ष व्यवहार करना चाहिए और समान समूहों के लोगों को अलग-अलग तरीक से प्रभावित करने से बचना चाहिए। उदाहरण के लिए, जब AI सिस्टम चिकित्सा उपचार, ऋण आवेदन, या रोजगार पर मार्गदर्शन प्रदान करते हैं, तो उन्हें समान लक्षण, वित्तीय परिस्थितियों, या पेशेवर योग्यताओं वाले सभी लोगों को समान सिफारिशें देनी चाहिए। हम सभी मनुष्य अपनी निर्णय लेने की प्रक्रिया में अंतर्निहित पूर्वाग्रह रखते हैं। ये पूर्वाग्रह उस डेटा में भी दिखाई दे सकते हैं जिसका उपयोग हम AI सिस्टम को प्रशिक्षित करने के लिए करते हैं। कभी-कभी यह हेरफेर अनजाने में हो सकता है। यह जानबूझकर पहचानना कठिन हो सकता है कि आप डेटा में पूर्वाग्रह कब पेश कर रहे हैं।
**"असमानता"** में एक समूह के लोगों के लिए नकारात्मक प्रभाव या "हानियां" शामिल हैं, जैसे कि जाति, लिंग, आयु, या विकलांगता की स्थिति के संदर्भ में परिभाषित। मुख्य निष्पक्षता से संबंधित नुकसान को निम्नलिखित रूप में वर्गीकृत किया जा सकता है:
**"असमानता"** का मतलब है किसी समूह के लिए नकारात्मक प्रभाव या "हानियां", जैसे कि जाति, लिंग, आयु, या विकलांगता की स्थिति के संदर्भ में परिभाषित समूह। मुख्य निष्पक्षता-संबंधी हानियों को निम्नलिखित श्रेणियों में वर्गीकृत किया जा सकता है:
- **आवंटन**, यदि उदाहरण के लिए एक लिंग या जातीयता को दूसरे पर प्राथमिकता दी जाती है।
- **सेवा की गुणवत्ता**। यदि आप डेटा को एक विशिष्ट परिदृश्य के लिए प्रशिक्षित करते हैं लेकिन वास्तविकता बहुत अधिक जटिल होती है, तो यह खराब प्रदर्शन करने वाली सेवा की ओर ले जाता है। उदाहरण के लिए, एक हैंड सोप डिस्पेंसर जो गहरे रंग की त्वचा वाले लोगों को पहचानने में असमर्थ था। [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **निंदा**। किसी चीज़ या किसी व्यक्ति की अनुचित आलोचना और लेबलिंग। उदाहरण के लिए, एक इमेज लेबलिंग तकनीक ने काले रंग की त्वचा वाले लोगों की छवियों को गोरिल्ला के रूप में गलत तरीके से लेबल किया।
- **अधिक या कम प्रतिनिधित्व**। विचार यह है कि एक निश्चित समूह को एक निश्चित पेशे में नहीं देखा जाता है, और कोई भी सेवा या कार्य जो इसे बढ़ावा देता है वह नुकसान में योगदान दे रहा है।
- **रूढ़िवादिता**। किसी दिए गए समूह को पूर्व-निर्धारित विशेषताओं के साथ जोड़ना। उदाहरण के लिए, अंग्रेजी और तुर्की के बीच एक भाषा अनुवाद प्रणाली में लिंग से जुड़े रूढ़िवादी शब्दों के कारण गलतियां हो सकती हैं।
- **आवंटन**: यदि किसी लिंग या जातीयता को दूसरे पर प्राथमिकता दी जाती है।
- **सेवा की गुणवत्ता**: यदि आप डेटा को केवल एक विशिष्ट परिदृश्य के लिए प्रशिक्षित करते हैं, लेकिन वास्तविकता अधिक जटिल होती है, तो यह खराब प्रदर्शन वाली सेवा की ओर ले जाता है। उदाहरण के लिए, एक साबुन डिस्पेंसर जो गहरे रंग की त्वचा वाले लोगों को पहचानने में असमर्थ था। [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **अपमान**: किसी चीज़ या व्यक्ति की अनुचित आलोचना और लेबलिंग। उदाहरण के लिए, एक छवि लेबलिंग तकनीक ने काले रंग की त्वचा वाले लोगों की छवियों को गोरिल्ला के रूप में गलत लेबल किया।
- **अधिक या कम प्रतिनिधित्व**: यह विचार कि एक निश्चित समूह को किसी पेशे में नहीं देखा जाता है, और कोई भी सेवा या कार्य जो इसे बढ़ावा देता है, वह नुकसान में योगदान देा है।
- **रूढ़िबद्धता**: किसी दिए गए समूह को पूर्व-निर्धारित विशेषताओं के साथ जोड़ना। उदाहरण के लिए, अंग्रेजी और तुर्की के बीच एक भाषा अनुवाद प्रणाली में लिंग से संबंधित रूढ़ियों के कारण गलतियां हो सकती हैं।
![तुर्की में अनुवाद](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.hi.png)
![तुर्की में अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png)
> तुर्की में अनुवाद
![फिर से अंग्रेजी में अनुवाद](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.hi.png)
![फिर से अंग्रेजी में अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png)
> फिर से अंग्रेजी में अनुवाद
AI सिस्टम को डिज़ाइन और परीक्षण करते समय, हमें यह सुनिश्चित करना होगा कि AI निष्पक्ष हो और इसे पक्षपाती या भेदभावपूर्ण निर्णय लेने के लिए प्रोग्राम न किया जाए, जो मनुष्यों को भी करने से रोका गया है। AI और मशीन लर्निंग में निष्पक्षता सुनिश्चित करना एक जटिल सामाजिक-तकनीकी चुनौती बनी हुई है।
AI सिस्टम को डिज़ाइन और परीक्षण करते समय, हमें यह सुनिश्चित करना चाहिए कि AI निष्पक्ष हो और इसे पूर्वाग्रही या भेदभावपूर्ण निर्णय लेने के लिए प्रोग्राम न किया गया हो, जो मनुष्यों के लिए भी निषिद्ध हैं। AI और मशीन लर्निंग में निष्पक्षता सुनिश्चित करना एक जटिल सामाजिक-तकनीकी चुनौती बनी हुई है।
### विश्वसनीयता और सुरक्षा
विश्वास बनाने के लिए, AI सिस्टम को सामान्य और अप्रत्याशित परिस्थितियों में विश्वसनीय, सुरक्षित और सुसंगत होना चाहिए। यह जानना महत्वपूर्ण है कि AI सिस्टम विभिन्न परिस्थितियों में कैसा व्यवहार करेगा, विशेष रूप से जब वे बाहरी तत्व हों। AI समाधान बनाते समय, उन परिस्थितियों की विस्तृत विविधता को संभालने पर पर्याप्त ध्यान देने की आवश्यकता होती है जिनका सामना AI समाधान कर सकता है। उदाहरण के लिए, एक सेल्फ-ड्राइविंग कार को लोगों की सुरक्षा को सर्वोच्च प्राथमिकता देनी चाहिए। नतीजतन, कार को चलाने वाले AI को उन सभी संभावित परिदृश्यों पर विचार करना चाहिए जिनका सामना कार कर सकती है, जैसे रात, तूफान, बर्फ़ील तूफ़ान, सड़क पर दौड़ते बच्चे, पालतू जानवर, सड़क निर्माण आदि। AI सिस्टम कितनी अच्छी तरह से विभिन्न परिस्थितियों को विश्वसनीय और सुरक्षित तरीके से संभाल सकता है, यह डेटा वैज्ञानिक या AI डेवलपर द्वारा डिज़ाइन या परीक्षण के दौरान विचार किए गए स्तर को दर्शाता है।
विश्वास बनाने के लिए, AI सिस्टम को सामान्य और अप्रत्याशित परिस्थितियों में विश्वसनीय, सुरक्षित और सुसंगत होना चाहिए। यह जानना महत्वपूर्ण है कि AI सिस्टम विभिन्न परिस्थितियों में कैसा व्यवहार करेगा, विशेष रूप से जब वे असामान्य हों। AI समाधान बनाते समय, उन सभी संभावित परिस्थितियों को संभालने पर ध्यान केंद्रित करना आवश्यक है जिनका सामना AI समाधान कर सकता है। उदाहरण के लिए, एक स्वचालित कार को लोगों की सुरक्षा को सर्वोच्च प्राथमिकता देनी चाहिए। इसलिए, कार को चलाने वाले AI को सभी संभावित परिदृश्यों पर विचार करना चाहिए, जैसे रात, तूफान, बर्फ़ील तूफ़ान, सड़क पर दौड़ते बच्चे, पालतू जानवर, सड़क निर्माण आदि। AI सिस्टम कितनी अच्छी तरह से विभिन्न परिस्थितियों को विश्वसनीय और सुरक्षित रूप से संभाल सकता है, यह डेटा वैज्ञानिक या AI डेवलपर द्वारा डिज़ाइन या परीक्षण के दौरान विचार किए गए पूर्वानुमान के स्तर को दर्शाता है।
> [🎥 यहां वीडियो के लिए क्लिक करें: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
> [🎥 वीडियो के लिए यहां क्लिक करें: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### समावेशिता
AI सिस्टम को सभी को शामिल करने और सशक्त बनाने के लिए डिज़ाइन किया जाना चाहिए। AI सिस्टम को डिज़ाइन और लागू करते समय डेटा वैज्ञानिक और AI डेवलपर सिस्टम में संभावित बाधाओं की पहचान करते हैं और उन्हें संबोधित करते हैं जो अनजाने में लोगों को बाहर कर सकत हैं। उदाहरण के लिए, दुनिया भर में 1 अरब लोग विकलांगता के साथ रहते हैं। AI की प्रगति के साथ, वे अपनी दैनिक जिंदगी में अधिक आसानी से जानकारी और अवसरों तक पहुंच सकते हैं। बाधाओं को संबोधित करके, यह नवाचार के अवसर पैदा करता है और बेहतर अनुभवों के साथ AI उत्पादों को विकसित करता है जो सभी को लाभ पहुंचाते हैं।
AI सिस्टम को सभी को शामिल करने और सशक्त बनाने के लिए डिज़ाइन किया जाना चाहिए। AI सिस्टम को डिज़ाइन और लागू करते समय, डेटा वैज्ञानिक और AI डेवलपर सिस्टम में संभावित बाधाओं की पहचान करते हैं और उन्हें संबोधित करते हैं जो अनजाने में लोगों को बाहर कर सकत हैं। उदाहरण के लिए, दुनिया भर में 1 बिलियन लोग विकलांग हैं। AI की प्रगति के साथ, वे अपने दैनिक जीवन में अधिक आसानी से जानकारी और अवसरों तक पहुंच सकते हैं। बाधाओं को दूर करके, यह नवाचार के अवसर पैदा करता है और बेहतर अनुभवों के साथ AI उत्पादों को विकसित करता है जो सभी को लाभान्वित करते हैं।
> [🎥 यहां वीडियो के लिए क्लिक करें: AI में समावेशिता](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
> [🎥 वीडियो के लिए यहां क्लिक करें: AI में समावेशिता](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### सुरक्षा और गोपनीयता
AI सिस्टम को सुरक्षित होना चाहिए और लोगों की गोपनीयता का सम्मान करना चाहिए। लोग उन सिस्टमों पर कम विश्वास करते हैं जो उनकी गोपनीयता, जानकारी, या जीवन को जोखिम में डालते हैं। मशीन लर्निंग मॉडल को प्रशिक्षित करते समय, हम सर्वोत्तम परिणाम प्राप्त करने के लिए डेटा पर निर्भर करते हैं। ऐसा करते समय, डेटा की उत्पत्ति और अखंडता पर विचार करना आवश्यक है। उदाहरण के लिए, क्या डेटा उपयोगकर्ता द्वारा प्रस्तुत किया गया था या सार्वजनिक रूप से उपलब्ध था? इसके बाद, डेटा के साथ काम करते समय, यह महत्वपूर्ण है कि AI सिस्टम गोपनीय जानकारी की रक्षा कर सके और हमलों का प्रतिरोध कर सके। जैसे-जैसे AI अधिक व्यापक होता जा रहा है, गोपनीयता की रक्षा करना और महत्वपूर्ण व्यक्तिगत और व्यावसायिक जानकारी को सुरक्षित रना अधिक महत्वपूर्ण और जटिल होता जा रहा है। गोपनीयता और डेटा सुरक्षा मुद्दों को AI के लिए विशेष रूप से ध्यान देने की आवश्यकता है क्योंकि डेटा तक पहुंच AI सिस्टम को लोगों के बारे में सटीक और सूचित भविष्यवाणियां और निर्णय लेने के लिए आवश्यक है।
AI सिस्टम को सुरक्षित होना चाहिए और लोगों की गोपनीयता का सम्मान करना चाहिए। लोग उन सिस्टमों पर कम विश्वास करते हैं जो उनकी गोपनीयता, जानकारी, या जीवन को जोखिम में डालते हैं। मशीन लर्निंग मॉडल को प्रशिक्षित करते समय, हम सर्वोत्तम परिणाम प्राप्त करने के लिए डेटा पर निर्भर करते हैं। ऐसा करते समय, डेटा की उत्पत्ति और अखंडता पर विचार करना आवश्यक है। उदाहरण के लिए, क्या डेटा उपयोगकर्ता द्वारा प्रस्तुत किया गया था या सार्वजनिक रूप से उपलब्ध था? इसके बाद, डेटा के साथ काम करते समय, यह महत्वपूर्ण है कि AI सिस्टम गोपनीय जानकारी की रक्षा कर सके और हमलों का विरोध कर सके। जैसे-जैसे AI अधिक प्रचलित होता जा रहा है, गोपनीयता की रक्षा करना और महत्वपूर्ण व्यक्तिगत और व्यावसायिक जानकारी को सुरक्षित रना अधिक महत्वपूर्ण और जटिल होता जा रहा है। गोपनीयता और डेटा सुरक्षा के मुद्दों को AI के लिए विशेष रूप से ध्यान देने की आवश्यकता है क्योंकि डेटा तक पहुंच AI सिस्टम को लोगों के बारे में सटीक और सूचित भविष्यवाणियां और निर्णय लेने के लिए आवश्यक है।
> [🎥 यहां वीडियो के लिए क्लिक करें: AI में सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 वीडियो के लिए यहां क्लिक करें: AI में सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- उद्योग के रूप में हमने गोपनीयता और सुरक्षा में महत्वपूर्ण प्रगति की है, जिसे GDPR (जनरल डेटा प्रोटेक्शन रेगुलेशन) जैसे नियमों द्वारा काफी हद तक बढ़ावा दिया गया है।
- उद्योग के रूप में हमने गोपनीयता और सुरक्षा में महत्वपूर्ण प्रगति की है, जो मुख्य रूप से GDPR (जनरल डेटा प्रोटेक्शन रेगुलेशन) जैसे नियमों द्वारा संचालित है।
- फिर भी AI सिस्टम के साथ हमें यह स्वीकार करना होगा कि सिस्टम को अधिक व्यक्तिगत और प्रभावी बनाने के लिए अधिक व्यक्तिगत डेटा की आवश्यकता और गोपनीयता के बीच तनाव है।
- जैसे इंटरनेट के साथ जुड़े कंप्यूटरों के जन्म के साथ, हम AI से संबंधित सुरक्षा मुद्दों की संख्या में भी भारी वृद्धि देख रहे हैं।
- जैसे इंटरनेट के साथ जुड़े कंप्यूटरों के जन्म के साथ, हम AI से संबंधित सुरक्षा मुद्दों की संख्या में भारी वृद्धि देख रहे हैं।
- साथ ही, हमने सुरक्षा में सुधार के लिए AI का उपयोग होते देखा है। उदाहरण के लिए, अधिकांश आधुनिक एंटी-वायरस स्कैनर आज AI ह्यूरिस्टिक्स द्वारा संचालित हैं।
- हमें यह सुनिश्चित करने की आवश्यकता है कि हमारे डेटा विज्ञान प्रक्रियाएं नवीनतम गोपनीयता और सुरक्षा प्रथाओं के साथ सामंजस्यपूर्ण रूप से मिश्रित हों।
### पारदर्शिता
AI सिस्टम को समझने योग्य होना चाहिए। पारदर्शिता का एक महत्वपूर्ण हिस्सा AI सिस्टम और उनके घटकों के व्यवहार को समझाना है। AI सिस्टम की समझ में सुधार के लिए यह आवश्यक है कि हितधारक यह समझें कि वे कैसे और क्यों का करते हैं ताकि वे संभावित प्रदर्शन मुद्दों, सुरक्षा और गोपनीयता चिंताओं, पूर्वाग्रहों, बहिष्करण प्रथाओं, या अनपेक्षित परिणामों की पहचान कर सकें। हम यह भी मानते हैं कि जो लोग AI सिस्टम का उपयोग करते हैं, उन्हें यह बताने में ईमानदार और स्पष्ट होना चाहिए कि वे उन्हें कब, क्यों, और कैसे तैनात करने का निर्णय लेते हैं। साथ ही, वे जिन सिस्टमों का उपयोग करते हैं, उनकी सीमाओं के बारे में भी। उदाहरण के लिए, यदि कोई बैंक अपने उपभोक्ता ऋण निर्णयों का समर्थन करने के लिए AI सिस्टम का उपयोग करता है, तो यह महत्वपूर्ण है कि परिणामों की जांच की जाए और यह समझा जाए कि कौन सा डेटा सिस्टम की सिफारिशों को प्रभावित करता है। सरकारें उद्योगों में AI को विनियमित करना शुरू कर रही हैं, इसलिए डेटा वैज्ञानिकों और संगठनों को यह समझाना होगा कि AI सिस्टम नियामक आवश्यकताओं को पूरा करता है या नहीं, विशेष रूप से जब कोई अवांछनीय परिणाम होता है।
AI सिस्टम को समझने योग्य होना चाहिए। पारदर्शिता का एक महत्वपूर्ण हिस्सा AI सिस्टम और उनके घटकों के व्यवहार को समझाना है। AI सिस्टम की समझ में सुधार के लिए यह आवश्यक है कि हितधारक यह समझें कि वे कैसे और क्यों कार्य करते हैं ताकि वे संभावित प्रदर्शन मुद्दों, सुरक्षा और गोपनीयता चिंताओं, पूर्वाग्रहों, बहिष्करण प्रथाओं, या अनपेक्षित परिणामों की पहचान कर सकें। हम यह भी मानते हैं कि जो लोग AI सिस्टम का उपयोग करते हैं, उन्हें यह स्पष्ट और ईमानदारी से बताना चाहिए कि वे कब, क्यों, और कैसे उनका उपयोग करते हैं। साथ ही, उनके उपयोग की सीमाओं के बारे में भी जानकारी होनी चाहिए। उदाहरण के लिए, यदि कोई बैंक अपने उपभोक्ता ऋण निर्णयों का समर्थन करने के लिए AI सिस्टम का उपयोग करता है, तो यह महत्वपूर्ण है कि परिणामों की जांच की जाए और यह समझा जाए कि कौन सा डेटा सिस्टम की सिफारिशों को प्रभावित करता है। सरकारें उद्योगों में AI को विनियमित करना शुरू कर रही हैं, इसलिए डेटा वैज्ञानिकों और संगठनों को यह समझाना होगा कि AI सिस्टम नियामक आवश्यकताओं को पूरा करता है या नहीं, विशेष रूप से जब कोई अवांछनीय परिणाम होता है।
> [🎥 यहां वीडियो के लिए क्लिक करें: AI में पारदर्शिता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
> [🎥 वीडियो के लिए यहां क्लिक करें: AI में पारदर्शिता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- क्योंकि AI सिस्टम इतने जटिल हैं, यह समझना मुश्किल है कि वे कैसे काम करते हैं और परिणामों की व्याख्या कर हैं।
- इस समझ की कमी इन सिस्टमों के प्रबंधन, संचालन, और दस्तावेज़ीकरण को प्रभावित करती है।
- यह समझ की कमी अधिक महत्वपूर्ण रूप से उन निर्णयों को प्रभावित करती है जो इन सिस्टमों द्वारा उत्पन्न परिणामों का उपयोग करके किए जाते हैं।
- क्योंकि AI सिस्टम इतने जटिल हैं, यह समझना कठिन है कि वे कैसे काम करते हैं और उनके परिणामों की व्याख्या कैसे करें।
- इस समझ की कमी इन सिस्टमों के प्रबंधन, संचालन, और प्रलेखन को प्रभावित करती है।
- यह समझ की कमी, विशेष रूप से, उन निर्णयों को प्रभावित करती है जो इन सिस्टमों द्वारा उत्पन्न परिणामों का उपयोग करके किए जाते हैं।
### जवाबदेही
AI सिस्टम को डिज़ाइन और तैनात करने वाले लोगों को उनके सिस्टम के संचालन के लिए जवाबदेह होना चाहिए। जवाबदेही की आवश्यकता विशेष रूप से संवेदनशील उपयोग प्रौद्योगिकियों जैसे चेहरे की पहचान के साथ महत्वपूर्ण है। हाल ही में, चेहरे की पहचान तकनीक की बढ़ती मांग रही है, विशेष रूप से कानून प्रवर्तन संगठनों से जो लापता बच्चों को खोजने जैसे उपयोगों में तकनीक की क्षमता देखते हैं। हालांकि, ये तकनीकें संभावित रूप से सरकार द्वारा अपने नागरिकों की मौलिक स्वतंत्रताओं को खतरे में डाल सकती हैं, उदाहरण के लिए, विशिष्ट व्यक्तियों की निरंतर निगरानी को सक्षम करके। इसलिए, डेटा वैज्ञानिकों और संगठनों को यह सुनिश्चित करने के लिए जिम्मेदार होना चाहिए कि उनका AI सिस्टम व्यक्तियों या समाज को कैसे प्रभावित करता है
जो लोग AI सिस्टम डिज़ाइन और तैनात करते हैं, उन्हें यह सुनिश्चित करना चाहिए कि उनके सिस्टम कैसे काम करते हैं, इसके लिए वे जवाबदेह हों। जवाबदेही की आवश्यकता विशेष रूप से संवेदनशील उपयोग प्रौद्योगिकियों जैसे चेहरे की पहचान के साथ महत्वपूर्ण है। हाल ही में, चेहरे की पहचान तकनीक की मांग बढ़ रही है, विशेष रूप से कानून प्रवर्तन संगठनों से जो इस तकनीक की क्षमता को लापता बच्चों को खोजने जैसे उपयोगों में देखते हैं। हालांकि, इन तकनीकों का उपयोग सरकार द्वारा नागरिकों की मौलिक स्वतंत्रताओं को खतरे में डालने के लिए किया जा सकता है, जैसे कि विशिष्ट व्यक्तियों की निरंतर निगरानी को सक्षम करना। इसलिए, डेटा वैज्ञानिकों और संगठनों को यह सुनिश्चित करना चाहिए कि उनके AI सिस्टम का प्रभाव व्यक्तियों या समाज पर जिम्मेदार हो
[![प्रमुख AI शोधकर्ता चेहरे की पहचान के माध्यम से बड़े पैमाने पर निगरानी की चेतावनी देते हैं](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.hi.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft का जिम्मेदार AI दृष्टिकोण")
[![AI शोधकर्ता ने चेहरे की पहचान के माध्यम से बड़े पैमाने पर निगरानी की चेतावनी दी](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण")
> 🎥 ऊपर दी गई छवि पर क्लिक करें: चेहरे की पहचान के माध्यम से बड़े पैमाने पर निगरानी की चेतावनी
आखिरकार, हमारी पीढ़ी के लिए सबसे बड़े सवालों में से एक, जो AI को समाज में लाने वाली पहली पीढ़ी है, यह है कि यह सुनिश्चित कैसे किया जाए कि कंप्यूटर लोगों के प्रति जवाबदेह बने रहेंगे और यह सुनिश्चित कैसे किया जाए कि कंप्यूटर डिज़ाइन करने वाले लोग बाकी सभी के प्रति जवाबदेह बने रहें।
आखिरकार, हमारे युग के लिए सबसे बड़े सवालों में से एक यह है कि, AI को समाज में लाने वाली पहली पीढ़ी के रूप में, हम यह कैसे सुनिश्चित करेंगे कि कंप्यूटर लोगों के प्रति जवाबदेह बने रहें और यह सुनिश्चित करें कि कंप्यूटर डिज़ाइन करने वाले लोग बाकी सभी के प्रति जवाबदेह बने रहें।
## प्रभाव मूल्यांकन
मशीन लर्निंग मॉडल को प्रशिक्षित करने से पहले, AI सिस्टम के उद्देश्य को समझने के लिए प्रभाव मूल्यांकन करना महत्वपूर्ण है; इसका इरादा उपयोग क्या है; इसे कहाँ तैनात किया जाएगा; और कौन सिस्टम के साथ बातचीत करेगा। ये समीक्षक या परीक्षक के लिए सहायक होते हैं जो सिस्टम का मूल्यांकन कर रहे हैं ताकि संभावित जोखिमों और अपेक्षित परिणामों की पहचान करते समय किन कारकों पर विचार करना है, यह जान सकें।
मशीन लर्निंग मॉडल को प्रशिक्षित करने से पहले, AI सिस्टम के उद्देश्य को समझने के लिए प्रभाव मूल्यांकन करना महत्वपूर्ण है; इसका इरादा उपयोग क्या है; इसे कहाँ तैनात किया जाएगा; और कौन सिस्टम के साथ इंटरैक्ट करेगा। ये समीक्षक या परीक्षक के लिए सहायक होते हैं ताकि वे संभावित जोखिमों और अपेक्षित परिणामों की पहचान करते समय किन कारकों पर विचार करें, यह जान सकें।
प्रभाव मूल्यांकन करते समय ध्यान केंद्रित करने के क्षेत्र निम्नलिखित हैं:
* **व्यक्तियों पर प्रतिकूल प्रभाव** किसी भी प्रतिबंध या आवश्यकताओं, असमर्थित उपयोग या किसी भी ज्ञात सीमाओं के बारे में जागरूक होना जो सिस्टम के प्रदर्शन को बाधित कर सकती हैं, यह सुनिश्चित करने के लिए महत्वपूर्ण है कि सिस्टम का उपयोग इस तरह से न किया जाए जो व्यक्तियों को नुकसान पहुंचा सके।
* **डेटा आवश्यकताएँ**। यह समझ प्राप्त करना कि सिस्टम डेटा का उपयोग कैसे और कहाँ करेगा, समीक्षकों को किसी भी डेटा आवश्यकताओं का पता लगाने में सक्षम बनाता है जिनके बारे में आपको जागरूक होना चाहिए (जैसे, GDPR या HIPPA डेटा नियम)। इसके अलावा, यह जांचें कि प्रशिक्षण के लिए डेटा का स्रोत या मात्रा पर्याप्त है या नहीं
* **प्रभाव का सारांश**। संभावित नुकसान की एक सूची एकत्र करें जो सिस्टम का उपयोग करने से उत्पन्न हो सकती है। ML जीवनचक्र के दौरान, यह समीक्षा करें कि पहचानी गई समस्याओं को कम किया गया है या संबोधित किया गया है।
* **छह मुख्य सिद्धांतों के लिए लागू लक्ष्य**। मूल्यांकन करें कि प्रत्येक सिद्धांत के लक्ष्यों को पूरा किया गया है या नहीं और क्या कोई अंतराल है।
* **व्यक्तियों पर प्रतिकूल प्रभाव**: किसी भी प्रतिबंध या आवश्यकताओं, असमर्थित उपयोग, या किसी भी ज्ञात सीमाओं के बारे में जागरूक होना जो सिस्टम के प्रदर्शन को बाधित कर सकती हैं, यह सुनिश्चित करने के लिए महत्वपूर्ण है कि सिस्टम का उपयोग इस तरह से न हो जो व्यक्तियों को नुकसान पहुंचा सके।
* **डेटा आवश्यकताएं**: यह समझना कि सिस्टम डेटा का उपयोग कैसे और कहाँ करेगा, समीक्षकों को उन डेटा आवश्यकताओं का पता लगाने में सक्षम बनाता है जिनका आपको ध्यान रखना चाहिए (जैसे, GDPR या HIPPA डेटा नियम)। इसके अलावा, यह जांचें कि क्या डेटा का स्रोत या मात्रा प्रशिक्षण के लिए पर्याप्त है।
* **प्रभाव का सारांश**: संभावित हानियों की एक सूची एकत्र करें जो सिस्टम का उपयोग करने से उत्पन्न हो सकती है। ML जीवनचक्र के दौरान, यह समीक्षा करें कि पहचानी गई समस्याओं को कम किया गया है या संबोधित किया गया है।
* **प्रत्येक छह मुख्य सिद्धांतों के लिए लागू लक्ष्य**: मूल्यांकन करें कि क्या प्रत्येक सिद्धांत के लक्ष्यों को पूरा किया गया है और क्या कोई अंतराल है।
## जिम्मेदार AI के साथ डिबगिंग
किसी सॉफ़्टवेयर एप्लिकेशन को डिबग करने के समान, AI सिस्टम को डिबग करना सिस्टम में समस्याओं की पहचान और समाधान करने की एक आवश्यक प्रक्रिया है। कई कारक हैं जो मॉडल को अपेक्षित या जिम्मेदारी से प्रदर्शन न करने को प्रभावित कर सकते हैं। अधिकांश पारंपरिक मॉडल प्रदर्शन मेट्रिक्स मॉडल के प्रदर्शन के मात्रात्मक समुच्चय हैं, जो यह विश्लेषण करने के लिए पर्याप्त नहीं हैं कि मॉडल जिम्मेदार AI सिद्धांतों का उल्लंघन कैसे करता है। इसके अलावा, मशीन लर्निंग मॉडल एक ब्लैक बॉक्स है जो यह समझना मुश्किल बनाता है कि इसके परिणाम को क्या प्रेरित करता है या जब यह गलती करता है तो स्पष्टीकरण प्रदान करता है। इस पाठ्यक्रम में बाद में, हम जिम्मेदार AI डैशबोर्ड का उपयोग करना सीखेंगे ताकि AI सिस्टम को डिबग करने में मदद मिल सके। डैशबोर्ड डेटा वैज्ञानिकों और AI डेवलपर्स को निम्नलिखित कार्य करने के लिए एक समग्र उपकरण प्रदान करता है:
जैसे सॉफ़्टवेयर एप्लिकेशन को डिबग करना आवश्यक है, वैसे ही AI सिस्टम को डिबग करना भी आवश्यक है ताकि सिस्टम में समस्याओं की पहचान की जा सके और उन्हें हल किया जा सके। कई कारक हैं जो एक मॉडल को अपेक्षित या जिम्मेदार तरीके से प्रदर्शन करने से रोक सकते हैं। अधिकांश पारंपरिक मॉडल प्रदर्शन मेट्रिक्स मॉडल के प्रदर्शन के मात्रात्मक समुच्चय होते हैं, जो यह विश्लेषण करने के लिए पर्याप्त नहीं हैं कि मॉडल जिम्मेदार AI सिद्धांतों का उल्लंघन कैसे करता है। इसके अलावा, मशीन लर्निंग मॉडल एक ब्लैक बॉक्स है जो यह समझना कठिन बनाता है कि इसके परिणामों को क्या प्रेरित करता है या जब यह गलती करता है तो स्पष्टीकरण प्रदान करता है। इस पाठ्यक्रम में बाद में, हम जिम्मेदार AI डैशबोर्ड का उपयोग करना सीखेंगे ताकि AI सिस्टम को डिबग करने में मदद मिल सके। डैशबोर्ड डेटा वैज्ञानिकों और AI डेवलपर्स के लिए एक समग्र उपकरण प्रदान करता है ताकि वे निम्नलिखित कार्य कर सकें:
* **त्रुटि विश्लेषण** मॉडल की त्रुटि वितरण की पहचान करने के लिए जो सिस्टम की निष्पक्षता या विश्वसनीयता को प्रभावित कर सकता है।
* **मॉडल अवलोकन** यह पता लगाने के लिए कि डेटा समूहों में मॉडल के प्रदर्शन में कहाँ असमानताएँ हैं।
* **डेटा विश्लेषण** डेटा वितरण को समझने और डेटा में किसी भी संभावित पूर्वाग्रह की पहचान करने के लिए जो निष्पक्षता, समावेशिता, और विश्वसनीयता मुद्दों को जन्म दे सकता है।
* **मॉडल व्याख्या** यह समझने के लिए कि मॉडल की भविष्यवाणियों को क्या प्रभावित करता है या प्रेरित करता है। यह मॉडल के व्यवहार को समझाने में मदद करता है, जो पारदर्शिता और जवाबदेही के लिए महत्वपूर्ण है।
* **त्रुटि विश्लेषण**: मॉडल की त्रुटि वितरण की पहचान करने के लिए जो सिस्टम की निष्पक्षता या विश्वसनीयता को प्रभावित कर सकता है।
* **मॉडल अवलोकन**: यह पता लगाने के लिए कि डेटा समूहों में मॉडल के प्रदर्शन में असमानताएं कहाँ हैं।
* **डेटा विश्लेषण**: डेटा वितरण को समझने और डेटा में किसी भी संभावित पूर्वाग्रह की पहचान करने के लिए जो निष्पक्षता, समावेशिता, और विश्वसनीयता के मुद्दों को जन्म दे सकता है।
* **मॉडल व्याख्या**: यह समझने के लिए कि मॉडल की भविष्यवाणियों को क्या प्रभावित करता है। यह मॉडल के व्यवहार को समझाने में मदद करता है, जो पारदर्शिता और जवाबदेही के लिए महत्वपूर्ण है।
## 🚀 चुनौती
हानियों को पहली जगह में पेश होने से रोकने के लिए, हमें:
- सिस्टम पर काम करने वाले लोगों के बीच पृष्ठभूमि और दृष्टिकोण की विविधता होनी चाहिए।
- ऐसे डेटा सेट में निवेश करना चाहिए जो हमारे समाज की विविधता को दर्शाते हों।
- सिस्टम पर काम करने वाले लोगों में पृष्ठभूमि और दृष्टिकोण की विविधता होनी चाहिए।
- ऐसे डेटासेट में निवेश करना चाहिए जो हमारे समाज की विविधता को दर्शाते हों।
- मशीन लर्निंग जीवनचक्र के दौरान जिम्मेदार AI का पता लगाने और सुधारने के लिए बेहतर तरीकों का विकास करना चाहिए।
वास्तविक जीवन परिदृश्यों के बारे में सोचें जहां मॉडल की अविश्वसनीयता मॉडल-निर्माण और उपयोग में स्पष्ट है। हमें और क्या विचार करना चाहिए?
उन वास्तविक जीवन परिदृश्यों के बारे में सोचें जहां मॉडल की अविश्वसनीयता मॉडल-निर्माण और उपयोग में स्पष्ट है। हमें और क्या विचार करना चाहिए?
## [पोस्ट
इस पाठ में, आपने मशीन लर्निंग में निष्पक्षता और अन्याय के कुछ मूलभूत सिद्धांतों के बारे में सीखा।
## [पाठ के बाद का क्विज़](https://ff-quizzes.netlify.app/en/ml/)
इन विषयों को गहराई से समझने के लिए इस कार्यशाला को देखें:
## समीक्षा और स्व-अध्ययन
- जिम्मेदार AI की खोज में: सिद्धांतों को व्यवहार में लाना, प्रस्तुतकर्ता: बिसमिरा नुशी, मेहरनूश सामेकी और अमित शर्मा
इस पाठ में, आपने मशीन लर्निंग में निष्पक्षता और असमानता की अवधारणाओं की कुछ मूल बातें सीखी हैं।
इस कार्यशाला को देखें ताकि विषयों को गहराई से समझा जा सके:
- जिम्मेदार AI की खोज में: सिद्धांतों को व्यवहार में लाने पर Besmira Nushi, Mehrnoosh Sameki और Amit Sharma द्वारा प्रस्तुति
[![Responsible AI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क")
> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क, प्रस्तुतकर्ता: बिसमिरा नुशी, मेहरनूश सामेकी और अमित शर्म
> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क, Besmira Nushi, Mehrnoosh Sameki और Amit Sharma द्वार
इसके अलावा, पढ़ें:
साथ ही पढ़ें:
- Microsoft का RAI संसाधन केंद्र: [Responsible AI Resources Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft का RAI संसाधन केंद्र: [Responsible AI Resources Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft का FATE शोध समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft का FATE अनुसंधान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI Toolbox:
RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
- [Responsible AI Toolbox GitHub रिपॉजिटरी](https://github.com/microsoft/responsible-ai-toolbox)
Azure Machine Learning के उपकरणों के बारे में पढ़ें जो निष्पक्षता सुनिश्चित करते हैं:
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## असाइनमेंट
@ -165,4 +167,4 @@ Azure Machine Learning के उपकरणों के बारे मे
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,126 +1,126 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "dc4575225da159f2b06706e103ddba2a",
"translation_date": "2025-09-03T23:34:29+00:00",
"original_hash": "9d91f3af3758fdd4569fb410575995ef",
"translation_date": "2025-09-05T10:23:54+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "hi"
}
-->
# मशीन लर्निंग की तकनीकें
मशीन लर्निंग मॉडल और उनके उपयोग किए जाने वाले डेटा को बनाना, उपयोग करना और बनाए रखना कई अन्य विकास वर्कफ़्लो से बहुत अलग प्रक्रिया है। इस पाठ में, हम इस प्रक्रिया को सरल बनाएंगे और उन मुख्य तकनीकों को रेखांकित करेंगे जिन्हें आपको जानना आवश्यक है। आप:
मशीन लर्निंग मॉडल और उनके उपयोग और रखरखाव की प्रक्रिया अन्य विकास वर्कफ़्लो से काफी अलग होती है। इस पाठ में, हम इस प्रक्रिया को सरल बनाएंगे और उन मुख्य तकनीकों को समझाएंगे जिन्हें आपको जानना चाहिए। आप:
- मशीन लर्निंग की प्रक्रियाओं को उच्च स्तर पर समझेंगे।
- 'मॉडल', 'भविष्यवाणी', और 'ट्रेनिंग डेटा' जैसे मूलभूत अवधारणाओं का अन्वेषण करेंगे।
- 'मॉडल', 'प्रेडिक्शन', और 'ट्रेनिंग डेटा' जैसे मूलभूत अवधारणाओं का अन्वेषण करेंगे।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
[![मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग की तकनीकें](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग की तकनीकें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ को समझने के लिए एक छोटा वीडियो देखने के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ को समझाने वाले एक छोटे वीडियो के लिए।
## परिचय
उच्च स्तर पर, मशीन लर्निंग (ML) प्रक्रियाओं को बनाने की कला में कई चरण शामिल होते हैं:
1. **प्रश्न तय करें**। अधिकांश ML प्रक्रियाएं एक ऐसे प्रश्न से शुरू होती हैं जिसे एक साधारण कंडीशनल प्रोग्राम या नियम-आधारित इंजन द्वारा उत्तर नहीं दिया जा सकता। ये प्रश्न अक्सर डेटा के संग्रह के आधार पर भविष्यवाणियों के इर्द-गिर्द घूमते हैं।
2. **डेटा एकत्रित और तैयार करें**। अपने प्रश्न का उत्तर देने के लिए, आपको डेटा की आवश्यकता होती है। आपके डेटा की गुणवत्ता और कभी-कभी मात्रा यह निर्धारित करेगी कि आप अपने प्रारंभिक प्रश्न का उत्तर कितनी अच्छी तरह दे सकते हैं। इस चरण में डेटा को विज़ुअलाइज़ करना एक महत्वपूर्ण पहलू है। इस चरण में डेटा को ट्रेनिंग और टेस्टिंग समूहों में विभाजित करना भी शामिल है ताकि मॉडल बनाया जा सके।
3. **ट्रेनिंग विधि चुनें**। आपके प्रश्न और आपके डेटा की प्रकृति के आधार पर, आपको यह चुनना होगा कि आप अपने डेटा को सबसे अच्छी तरह से प्रतिबिंबित करे और इसके खिलाफ सटीक भविष्यवाणी करने के लिए मॉडल को कैसे प्रशिक्षित करना चाहते हैं। यह आपके ML प्रक्रिया का वह हिस्सा है जो विशिष्ट विशेषज्ञता और अक्सर काफी मात्रा में प्रयोग की आवश्यकता होती है।
4. **मॉडल को प्रशिक्षित करें**। अपने ट्रेनिंग डेटा का उपयोग करके, आप विभिन्न एल्गोरिदम का उपयोग करके मॉडल को डेटा में पैटर्न पहचानने के लिए प्रशिक्षित करेंगे। मॉडल आंतरिक वज़न का उपयोग कर सकता है जिन्हें डेटा के कुछ हिस्सों को दूसरों पर प्राथमिकता देने के लिए समायोजित किया जा सकता है ताकि बेहतर मॉडल बनाया जा सके।
2. **डेटा एकत्रित और तैयार करें**। अपने प्रश्न का उत्तर देने के लिए, आपको डेटा की आवश्यकता होती है। आपके डेटा की गुणवत्ता और कभी-कभी मात्रा यह निर्धारित करती है कि आप अपने प्रारंभिक प्रश्न का उत्तर कितनी अच्छी तरह दे सकते हैं। इस चरण में डेटा को विज़ुअलाइज़ करना एक महत्वपूर्ण पहलू है। इस चरण में डेटा को ट्रेनिंग और टेस्टिंग समूह में विभाजित करना भी शामिल है ताकि मॉडल बनाया जा सके।
3. **ट्रेनिंग विधि चुनें**। आपके प्रश्न और डेटा की प्रकृति के आधार पर, आपको यह तय करना होगा कि आप मॉडल को कैसे ट्रेन करना चाहते हैं ताकि यह आपके डेटा को सबसे अच्छी तरह से प्रतिबिंबित करे और इसके खिलाफ सटीक भविष्यवाणियां करे। यह आपके ML प्रक्रिया का वह हिस्सा है जो विशेष विशेषज्ञता और अक्सर काफी मात्रा में प्रयोग की आवश्यकता होती है।
4. **मॉडल को ट्रेन करें**। अपने ट्रेनिंग डेटा का उपयोग करके, आप विभिन्न एल्गोरिदम का उपयोग करके मॉडल को डेटा में पैटर्न पहचानने के लिए ट्रेन करेंगे। मॉडल आंतरिक वेट्स का उपयोग कर सकता है जिन्हें डेटा के कुछ हिस्सों को दूसरों पर प्राथमिकता देने के लिए समायोजित किया जा सकता है ताकि बेहतर मॉडल बनाया जा सके।
5. **मॉडल का मूल्यांकन करें**। आप अपने संग्रहित सेट से पहले कभी न देखे गए डेटा (अपने टेस्टिंग डेटा) का उपयोग करके देख सकते हैं कि मॉडल कैसा प्रदर्शन कर रहा है।
6. **पैरामीटर ट्यूनिंग**। आपके मॉडल के प्रदर्शन के आधार पर, आप प्रक्रिया को अलग-अलग पैरामीटर या वेरिएबल का उपयोग करके फिर से कर सकते हैं जो मॉडल को प्रशिक्षित करने के लिए उपयोग किए गए एल्गोरिदम के व्यवहार को नियंत्रित करते हैं।
7. **भविष्यवाणी करें**। अपने मॉडल की सटीकता का परीक्षण करने के लिए नए इनपुट का उपयोग करें।
6. **पैरामीटर ट्यूनिंग**। आपके मॉडल के प्रदर्शन के आधार पर, आप प्रक्रिया को अलग-अलग पैरामीटर या वेरिएबल का उपयोग करके फिर से कर सकते हैं जो मॉडल को ट्रेन करने के लिए उपयोग किए गए एल्गोरिदम के व्यवहार को नियंत्रित करते हैं।
7. **भविष्यवाणी करें**। नए इनपुट का उपयोग करके अपने मॉडल की सटीकता का परीक्षण करें।
## कौन सा प्रश्न पूछना है
कंप्यूटर डेटा में छिपे पैटर्न खोजने में विशेष रूप से कुशल होते हैं। यह उपयोगिता उन शोधकर्ताओं के लिए बहुत मददगार है जिनके पास किसी दिए गए डोमेन के बारे में ऐसे प्रश्न हैं जिन्हें आसानी से कंडीशनली-आधारित नियम इंजन बनाकर उत्तर नहीं दिया जा सकता। उदाहरण के लिए, एक एक्चुरियल कार्य को देखते हुए, एक डेटा वैज्ञानिक धूम्रपान करने वालों बनाम गैर-धूम्रपान करने वालों की मृत्यु दर के आसपास हस्तनिर्मित नियम बना सकता है।
कंप्यूटर डेटा में छिपे पैटर्न खोजने में विशेष रूप से कुशल होते हैं। यह उपयोगिता उन शोधकर्ताओं के लिए बहुत मददगार है जिनके पास किसी दिए गए डोमेन के बारे में ऐसे प्रश्न होते हैं जिन्हें आसानी से कंडीशनली-आधारित नियम इंजन बनाकर उत्तर नहीं दिया जा सकता। उदाहरण के लिए, एक एक्चुरियल कार्य को देखते हुए, एक डेटा वैज्ञानिक धूम्रपान करने वालों बनाम गैर-धूम्रपान करने वालों की मृत्यु दर के आसपास हस्तनिर्मित नियम बना सकता है।
हालांकि, जब कई अन्य वेरिएबल समीकरण में लाए जाते हैं, तो एक ML मॉडल पिछले स्वास्थ्य इतिहास के आधार पर भविष्य की मृत्यु दर की भविष्यवाणी करने में अधिक कुशल साबित हो सकता है। एक अधिक खुशहाल उदाहरण अप्रैल के महीने में किसी दिए गए स्थान के लिए मौसम की भविष्यवाणी करना हो सकता है, जिसमें अक्षांश, देशांतर, जलवायु परिवर्तन, महासागर के निकटता, जेट स्ट्रीम के पैटर्न और अधिक शामिल हैं।
हालांकि, जब कई अन्य वेरिएबल समीकरण में लाए जाते हैं, तो एक ML मॉडल पिछले स्वास्थ्य इतिहास के आधार पर भविष्य की मृत्यु दर की भविष्यवाणी करने में अधिक कुशल साबित हो सकता है। एक अधिक सुखद उदाहरण अप्रैल के महीने में किसी दिए गए स्थान के लिए मौसम की भविष्यवाणी करना हो सकता है, जिसमें अक्षांश, देशांतर, जलवायु परिवर्तन, महासागर के निकटता, जेट स्ट्रीम के पैटर्न और अधिक जैसे डेटा शामिल हैं।
✅ यह [स्लाइड डेक](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) मौसम मॉडल पर ML का उपयोग करने के लिए एक ऐतिहासिक दृष्टिकोण प्रदान करता है।
## मॉडल बनाने से पहले के कार्य
मॉडल बनाना शुरू करने से पहले, आपको कई कार्य पूरे करने होंगे। अपने प्रश्न का परीक्षण करने और मॉडल की भविष्यवाणियों के आधार पर एक परिकल्पना बनाने के लिए, आपको कई तत्वों की पहचान और कॉन्फ़िगर करना होगा।
मॉडल बनाना शुरू करने से पहले, आपको कई कार्य पूरे करने की आवश्यकता होती है। अपने प्रश्न का परीक्षण करने और मॉडल की भविष्यवाणियों के आधार पर एक परिकल्पना बनाने के लिए, आपको कई तत्वों की पहचान और कॉन्फ़िगर करना होगा।
### डेटा
अपने प्रश्न का किसी भी प्रकार की निश्चितता के साथ उत्तर देने के लिए, आपको सही प्रकार का पर्याप्त डेटा चाहिए। इस बिंदु पर आपको दो चीजें करनी होंगी:
अपने प्रश्न का उत्तर किसी भी प्रकार की निश्चितता के साथ देने के लिए, आपको सही प्रकार का पर्याप्त डेटा चाहिए। इस बिंदु पर आपको दो चीजें करनी होंगी:
- **डेटा एकत्रित करें**। डेटा विश्लेषण में निष्पक्षता पर पिछले पाठ को ध्यान में रखते हुए, अपने डेटा को सावधानीपूर्वक एकत्रित करें। इस डेटा के स्रोतों, इसमें मौजूद किसी भी अंतर्निहित पूर्वाग्रहों के बारे में जागरूक रहें और इसके स्रोत का दस्तावेज़ीकरण करें।
- **डेटा तैयार करें**। डेटा तैयारी प्रक्रिया में कई चरण होते हैं। यदि डेटा विभिन्न स्रोतों से आता है, तो आपको इसे एकत्रित और सामान्यीकृत करने की आवश्यकता हो सकती है। आप स्ट्रिंग्स को नंबर में बदलने जैसे विभिन्न तरीकों से डेटा की गुणवत्ता और मात्रा में सुधार कर सकते हैं (जैसा कि हम [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) में करते हैं)। आप मूल डेटा के आधार पर नया डेटा उत्पन्न कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/1-Introduction/README.md) में करते हैं)। आप डेटा को साफ और संपादित कर सकते हैं (जैसा कि हम [वेब ऐप](../../3-Web-App/README.md) पाठ से पहले करेंगे)। अंत में, आप इसे यादृच्छिक और शफल भी कर सकते हैं, यह आपके ट्रेनिंग तकनीकों पर निर्भर करता है।
- **डेटा एकत्रित करें**। डेटा विश्लेषण में निष्पक्षता पर पिछले पाठ को ध्यान में रखते हुए, अपने डेटा को सावधानीपूर्वक एकत्रित करें। इस डेटा के स्रोतों, इसमें मौजूद किसी भी अंतर्निहित पूर्वाग्रहों के बारे में जागरूक रहें और इसकी उत्पत्ति का दस्तावेज़ बनाएं।
- **डेटा तैयार करें**। डेटा तैयारी प्रक्रिया में कई चरण होते हैं। यदि डेटा विभिन्न स्रोतों से आता है, तो आपको इसे एकत्रित और सामान्यीकृत करने की आवश्यकता हो सकती है। आप डेटा की गुणवत्ता और मात्रा को विभिन्न तरीकों से सुधार सकते हैं, जैसे स्ट्रिंग्स को नंबर में बदलना (जैसा कि हम [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) में करते हैं)। आप मूल डेटा के आधार पर नया डेटा भी उत्पन्न कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/1-Introduction/README.md) में करते हैं)। आप डेटा को साफ और संपादित कर सकते हैं (जैसा कि हम [वेब ऐप](../../3-Web-App/README.md) पाठ से पहले करेंगे)। अंत में, आप इसे यादृच्छिक और शफल भी कर सकते हैं, यह आपके ट्रेनिंग तकनीकों पर निर्भर करता है।
✅ डेटा एकत्रित और प्रोसेस करने के बाद, एक पल लें यह देखने के लिए कि क्या इसका आकार आपके इच्छित प्रश्न को संबोधित करने की अनुमति देगा। यह हो सकता है कि डेटा आपके दिए गए कार्य में अच्छा प्रदर्शन न करे, जैसा कि हम अपने [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) पाठ में खोजते हैं!
✅ डेटा एकत्रित और प्रोसेस करने के बाद, एक पल लें और देखें कि क्या इसका आकार आपके इच्छित प्रश्न को संबोधित करने की अनुमति देगा। ऐसा हो सकता है कि डेटा आपके दिए गए कार्य में अच्छा प्रदर्शन न करे, जैसा कि हम अपने [क्लस्टरिंग](../../5-Clustering/1-Visualize/README.md) पाठ में खोजते हैं!
### फीचर्स और टारगेट
एक [फीचर](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) आपके डेटा की एक मापने योग्य संपत्ति है। कई डेटासेट में इसे 'तारीख', 'आकार' या 'रंग' जैसे कॉलम हेडिंग के रूप में व्यक्त किया जाता है। आपका फीचर वेरिएबल, जिसे आमतौर पर कोड में `X` के रूप में दर्शाया जाता है, वह इनपुट वेरिएबल है जिसका उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाएगा।
एक [फीचर](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) आपके डेटा की एक मापने योग्य संपत्ति है। कई डेटासेट में इसे 'तारीख', 'आकार' या 'रंग' जैसे कॉलम हेडिंग के रूप में व्यक्त किया जाता है। आपका फीचर वेरिएबल, जिसे आमतौर पर कोड में `X` के रूप में दर्शाया जाता है, वह इनपुट वेरिएबल है जिसका उपयोग मॉडल को ट्रेन करने के लिए किया जाएगा।
एक टारगेट वह चीज़ है जिसे आप भविष्यवाणी करने की कोशिश कर रहे हैं। टारगेट, जिसे आमतौर पर कोड में `y` के रूप में दर्शाया जाता है, आपके डेटा से पूछे जा रहे प्रश्न का उत्तर दर्शाता है: दिसंबर में कौन से **रंग** के कद्दू सबसे सस्ते होंगे? सैन फ्रांसिस्को में कौन से पड़ोस में सबसे अच्छी रियल एस्टेट **कीमत** होगी? कभी-कभी टारगेट को लेबल एट्रिब्यूट भी कहा जाता है।
### अपने फीचर वेरिएबल का चयन करना
🎓 **फीचर चयन और फीचर एक्सट्रैक्शन** जब आप मॉडल बनाते समय वेरिएबल चुनते हैं तो आप कैसे जानते हैं कि कौन सा वेरिएबल चुनना है? आप शायद फीचर चयन या फीचर एक्सट्रैक्शन की प्रक्रिया से गुजरेंगे ताकि सबसे प्रदर्शनकारी मॉडल के लिए सही वेरिएबल चुने जा सकें। हालांकि, वे एक जैसे नहीं हैं: "फीचर एक्सट्रैक्शन मूल फीचर्स के फंक्शन्स से नए फीचर्स बनाता है, जबकि फीचर चयन फीचर्स का एक उपसमुच्चय लौटाता है।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection))
🎓 **फीचर चयन और फीचर एक्सट्रैक्शन** जब आप मॉडल बनाते समय वेरिएबल चुनते हैं तो आप कैसे जानते हैं कि कौन सा वेरिएबल चुनना है? आप शायद फीचर चयन या फीचर एक्सट्रैक्शन की प्रक्रिया से गुजरेंगे ताकि सबसे अच्छा प्रदर्शन करने वाले मॉडल के लिए सही वेरिएबल चुने जा सकें। हालांकि, वे समान नहीं हैं: "फीचर एक्सट्रैक्शन मूल फीचर्स के फंक्शन्स से नए फीचर्स बनाता है, जबकि फीचर चयन फीचर्स का एक सबसेट लौटाता है।" ([स्रोत](https://wikipedia.org/wiki/Feature_selection))
### अपने डेटा को विज़ुअलाइज़ करें
डेटा वैज्ञानिक के टूलकिट का एक महत्वपूर्ण पहलू डेटा को विज़ुअलाइज़ करने की शक्ति है, जिसमें Seaborn या MatPlotLib जैसी कई उत्कृष्ट लाइब्रेरी शामिल हैं। अपने डेटा को विज़ुअल रूप से प्रस्तुत करना आपको छिपे हुए सहसंबंधों को उजागर करने की अनुमति दे सकता है जिन्हें आप लाभ उठा सकते हैं। आपके विज़ुअलाइज़ेशन आपको पूर्वाग्रह या असंतुलित डेटा को उजागर करने में भी मदद कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/2-Classifiers-1/README.md) में खोजते हैं)।
डेटा वैज्ञानिक के टूलकिट का एक महत्वपूर्ण पहलू डेटा को विज़ुअलाइज़ करने की शक्ति है, जिसमें Seaborn या MatPlotLib जैसी कई उत्कृष्ट लाइब्रेरी शामिल हैं। अपने डेटा को विज़ुअल रूप से प्रस्तुत करना आपको छिपे हुए संबंधों को उजागर करने की अनुमति दे सकता है जिन्हें आप लाभ उठा सकते हैं। आपके विज़ुअलाइज़ेशन आपको पूर्वाग्रह या असंतुलित डेटा को उजागर करने में भी मदद कर सकते हैं (जैसा कि हम [क्लासिफिकेशन](../../4-Classification/2-Classifiers-1/README.md) में खोजते हैं)।
### अपने डेटासेट को विभाजित करें
ट्रेनिंग से पहले, आपको अपने डेटासेट को दो या अधिक असमान आकार के हिस्सों में विभाजित करना होगा जो अभी भी डेटा का अच्छा प्रतिनिधित्व करते हैं।
- **ट्रेनिंग**। डेटासेट का यह हिस्सा आपके मॉडल को प्रशिक्षित करने के लिए फिट किया जाता है। यह सेट मूल डेटासेट का अधिकांश हिस्सा बनाता है।
- **ट्रेनिंग**। डेटासेट का यह हिस्सा आपके मॉडल को ट्रेन करने के लिए फिट किया जाता है। यह सेट मूल डेटासेट का अधिकांश हिस्सा बनाता है।
- **टेस्टिंग**। एक टेस्ट डेटासेट एक स्वतंत्र डेटा समूह है, जिसे अक्सर मूल डेटा से एकत्रित किया जाता है, जिसका उपयोग आप बनाए गए मॉडल के प्रदर्शन की पुष्टि करने के लिए करते हैं।
- **वैलिडेटिंग**। एक वैलिडेशन सेट एक छोटा स्वतंत्र उदाहरणों का समूह है जिसका उपयोग आप मॉडल के हाइपरपैरामीटर या आर्किटेक्चर को ट्यून करने के लिए करते हैं ताकि मॉडल में सुधार किया जा सके। आपके डेटा के आकार और आपके द्वारा पूछे गए प्रश्न के आधार पर, आपको इस तीसरे सेट को बनाने की आवश्यकता नहीं हो सकती (जैसा कि हम [टाइम सीरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) में नोट करते हैं)।
- **वैलिडेशन**। एक वैलिडेशन सेट एक छोटा स्वतंत्र उदाहरणों का समूह है जिसका उपयोग आप मॉडल के हाइपरपैरामीटर या आर्किटेक्चर को ट्यून करने के लिए करते हैं ताकि मॉडल को बेहतर बनाया जा सके। आपके डेटा के आकार और आपके द्वारा पूछे गए प्रश्न के आधार पर, आपको इस तीसरे सेट को बनाने की आवश्यकता नहीं हो सकती (जैसा कि हम [टाइम सीरीज फोरकास्टिंग](../../7-TimeSeries/1-Introduction/README.md) में नोट करते हैं)।
## मॉडल बनाना
अपने ट्रेनिंग डेटा का उपयोग करके, आपका लक्ष्य एक मॉडल बनाना है, या आपके डेटा का एक सांख्यिकीय प्रतिनिधित्व, जिसे विभिन्न एल्गोरिदम का उपयोग करके **प्रशिक्षित** किया जाता है। मॉडल को प्रशिक्षित करना इसे डेटा के संपर्क में लाता है और इसे खोजे गए पैटर्न के बारे में धारणाएं बनाने, मान्य करने और स्वीकार या अस्वीकार करने की अनुमति देता है।
अपने ट्रेनिंग डेटा का उपयोग करते हुए, आपका लक्ष्य विभिन्न एल्गोरिदम का उपयोग करके एक मॉडल, या आपके डेटा का सांख्यिकीय प्रतिनिधित्व बनाना है ताकि इसे **ट्रेन** किया जा सके। मॉडल को ट्रेन करना इसे डेटा के संपर्क में लाता है और इसे खोजे गए पैटर्न के बारे में धारणाएं बनाने, मान्य करने और स्वीकार या अस्वीकार करने की अनुमति देता है।
### ट्रेनिंग विधि तय करें
आपके प्रश्न और आपके डेटा की प्रकृति के आधार पर, आप इसे प्रशिक्षित करने के लिए एक विधि चुनेंगे। [Scikit-learn के दस्तावेज़](https://scikit-learn.org/stable/user_guide.html) के माध्यम से कदम उठाते हुए - जिसे हम इस पाठ्यक्रम में उपयोग करते हैं - आप मॉडल को प्रशिक्षित करने के कई तरीके खोज सकते हैं। आपके अनुभव के आधार पर, आपको सबसे अच्छा मॉडल बनाने के लिए कई अलग-अलग तरीकों को आजमाना पड़ सकता है। आप संभवतः एक प्रक्रिया से गुजरेंगे जिसमें डेटा वैज्ञानिक मॉडल के प्रदर्शन का मूल्यांकन करते हैं, इसे अनदेखे डेटा खिलाते हैं, सटीकता, पूर्वाग्रह और अन्य गुणवत्ता-घटाने वाले मुद्दों की जांच करते हैं, और कार्य के लिए सबसे उपयुक्त ट्रेनिंग विधि का चयन करते हैं।
आपके प्रश्न और आपके डेटा की प्रकृति के आधार पर, आप इसे ट्रेन करने के लिए एक विधि चुनेंगे। [Scikit-learn के दस्तावेज़](https://scikit-learn.org/stable/user_guide.html) के माध्यम से कदम उठाते हुए - जिसे हम इस पाठ्यक्रम में उपयोग करते हैं - आप मॉडल को ट्रेन करने के कई तरीके खोज सकते हैं। आपके अनुभव के आधार पर, आपको सबसे अच्छा मॉडल बनाने के लिए कई अलग-अलग तरीकों को आजमाना पड़ सकता है। आप एक प्रक्रिया से गुजरने की संभावना रखते हैं जिसमें डेटा वैज्ञानिक मॉडल के प्रदर्शन का मूल्यांकन करते हैं, इसे अनदेखे डेटा खिलाते हैं, सटीकता, पूर्वाग्रह और अन्य गुणवत्ता-घटाने वाले मुद्दों की जांच करते हैं, और दिए गए कार्य के लिए सबसे उपयुक्त ट्रेनिंग विधि का चयन करते हैं।
### मॉडल को प्रशिक्षित करें
### मॉडल को ट्रेन करें
अपने ट्रेनिंग डेटा से लैस, आप इसे 'फिट' करने के लिए तैयार हैं ताकि एक मॉडल बनाया जा सके। आप देखेंगे कि कई ML लाइब्रेरी में आप 'model.fit' कोड पाएंगे - यह वह समय है जब आप अपने फीचर वेरिएबल को मानों के एक रे के रूप में भेजते हैं (आमतौर पर 'X') और एक टारगेट वेरिएबल (आमतौर पर 'y')।
अपने ट्रेनिंग डेटा से लैस, आप इसे 'फिट' करने के लिए तैयार हैं ताकि एक मॉडल बनाया जा सके। आप देखेंगे कि कई ML लाइब्रेरी में आपको 'model.fit' कोड मिलेगा - यह वह समय है जब आप अपने फीचर वेरिएबल को मानों के एक रे के रूप में भेजते हैं (आमतौर पर 'X') और एक टारगेट वेरिएबल (आमतौर पर 'y')।
### मॉडल का मूल्यांकन करें
एक बार ट्रेनिंग प्रक्रिया पूरी हो जाने के बाद (एक बड़े मॉडल को प्रशिक्षित करने में कई पुनरावृत्तियां, या 'epochs', लग सकते हैं), आप टेस्ट डेटा का उपयोग करके मॉडल की गुणवत्ता का मूल्यांकन करने में सक्षम होंगे। यह डेटा मूल डेटा का एक उपसमुच्चय है जिसे मॉडल ने पहले कभी विश्लेषण नहीं किया है। आप अपने मॉडल की गुणवत्ता के बारे में मेट्रिक्स की एक तालिका प्रिंट कर सकते हैं।
एक बार ट्रेनिंग प्रक्रिया पूरी हो जाने के बाद (एक बड़े मॉडल को ट्रेन करने में कई पुनरावृत्तियां, या 'epochs', लग सकते हैं), आप टेस्ट डेटा का उपयोग करके मॉडल की गुणवत्ता का मूल्यांकन करने में सक्षम होंगे ताकि इसके प्रदर्शन का आकलन किया जा सके। यह डेटा मूल डेटा का एक उपसमुच्चय है जिसे मॉडल ने पहले कभी विश्लेषण नहीं किया है। आप अपने मॉडल की गुणवत्ता के बारे में मेट्रिक्स की एक तालिका प्रिंट कर सकते हैं।
🎓 **मॉडल फिटिंग**
मशीन लर्निंग के संदर्भ में, मॉडल फिटिंग उस मॉडल की अंतर्निहित फ़ंक्शन की सटीकता को संदर्भित करता है क्योंकि यह डेटा का विश्लेषण करने का प्रयास करता है जिससे यह परिचित नहीं है।
मशीन लर्निंग के संदर्भ में, मॉडल फिटिंग उस मॉडल की अंतर्निहित फ़ंक्शन की सटीकता को संदर्भित करता है क्योंकि यह उस डेटा का विश्लेषण करने का प्रयास करता है जिससे यह परिचित नहीं है।
🎓 **अंडरफिटिंग** और **ओवरफिटिंग** आम समस्याएं हैं जो मॉडल की गुणवत्ता को खराब करती हैं, क्योंकि मॉडल या तो पर्याप्त रूप से फिट नहीं होता या बहुत अधिक फिट होता है। इससे मॉडल या तो अपने ट्रेनिंग डेटा के साथ बहुत अधिक संरेखित भविष्यवाणियां करता है या बहुत कम संरेखित करता है। एक ओवरफिट मॉडल ट्रेनिंग डेटा को बहुत अच्छी तरह से भविष्यवाणी करता है क्योंकि उसने डेटा के विवरण और शोर को बहुत अच्छी तरह से सीखा है। एक अंडरफिट मॉडल सटीक नहीं है क्योंकि यह न तो अपने ट्रेनिंग डेटा का सटीक विश्लेषण कर सकता है और न ही डेटा जिसे उसने अभी तक 'देखा' नहीं है।
🎓 **अंडरफिटिंग** और **ओवरफिटिंग** आम समस्याएं हैं जो मॉडल की गुणवत्ता को खराब करती हैं, क्योंकि मॉडल या तो पर्याप्त रूप से फिट नहीं होता है या बहुत अधिक फिट होता है। इससे मॉडल या तो अपने ट्रेनिंग डेटा के साथ बहुत अधिक संरेखित भविष्यवाणियां करता है या बहुत कम संरेखित करता है। एक ओवरफिट मॉडल ट्रेनिंग डेटा को बहुत अच्छी तरह से भविष्यवाणी करता है क्योंकि उसने डेटा के विवरण और शोर को बहुत अच्छी तरह से सीखा है। एक अंडरफिट मॉडल सटीक नहीं है क्योंकि यह न तो अपने ट्रेनिंग डेटा का सही तरीके से विश्लेषण कर सकता है और न ही उस डेटा का जिसे उसने अभी तक 'देखा' नहीं है।
![ओवरफिटिंग मॉडल](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.hi.png)
![ओवरफिटिंग मॉडल](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png)
> [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
## पैरामीटर ट्यूनिंग
एक बार आपका प्रारंभिक ट्रेनिंग पूरा हो जाने के बाद, मॉडल की गुणवत्ता का अवलोकन करें और इसे 'हाइपरपैरामीटर' को समायोजित करके इसे सुधारने पर विचार करें। इस प्रक्रिया के बारे में अधिक पढ़ें [दस्तावेज़ में](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)।
एक बार आपकी प्रारंभिक ट्रेनिंग पूरी हो जाने के बाद, मॉडल की गुणवत्ता का अवलोकन करें और इसे 'हाइपरपैरामीटर' को समायोजित करके सुधारने पर विचार करें। इस प्रक्रिया के बारे में अधिक पढ़ें [दस्तावेज़ में](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)।
## भविष्यवाणी
यह वह क्षण है जब आप पूरी तरह से नए डेटा का उपयोग करके अपने मॉडल की सटीकता का परीक्षण कर सकते हैं। एक 'लागू' ML सेटिंग में, जहां आप मॉडल को प्रोडक्शन में उपयोग करने के लिए वेब एसेट्स बना रहे हैं, यह प्रक्रिया उपयोगकर्ता इनपुट (जैसे बटन दबाना) को एक वेरिएबल सेट करने और मॉडल को अनुमान या मूल्यांकन के लिए भेजने में शामिल कर सकती है।
यह वह क्षण है जब आप पूरी तरह से नए डेटा का उपयोग करके अपने मॉडल की सटीकता का परीक्षण कर सकते हैं। एक 'एप्लाइड' ML सेटिंग में, जहां आप मॉडल को प्रोडक्शन में उपयोग करने के लिए वेब एसेट्स बना रहे हैं, यह प्रक्रिया उपयोगकर्ता इनपुट (जैसे बटन दबाना) को एक वेरिएबल सेट करने और मॉडल को इनफरेंस या मूल्यांकन के लिए भेजने में शामिल कर सकती है।
इन पाठों में, आप इन चरणों को तैयार करने, बनाने, परीक्षण करने, मूल्यांकन करने और भविष्यवाणी करने के तरीके खोजेंगे - डेटा वैज्ञानिक के सभी इशारों और अधिक, जैसे-जैसे आप 'फुल स्टैक' ML इंजीनियर बनने की अपनी यात्रा में आगे बढ़ते हैं।
इन पाठों में, आप इन चरणों का उपयग करके तैयार करने, बनाने, परीक्षण करने, मूल्यांकन करने और भविष्यवाणी करने के तरीके खोजेंगे - डेटा वैज्ञानिक के सभी इशारों और अधिक, जैसे-जैसे आप 'फुल स्टैक' ML इंजीनियर बनने की अपनी यात्रा में आगे बढ़ते हैं।
---
## 🚀चुनौती
एक फ्लो चार्ट बनाएं जो एक ML प्रैक्टिशनर के चरणों को दर्शाता है। आप इस प्रक्रिया में अभी खुद को कहां देखते हैं? आप कहां कठिनाई का सामना करने की भविष्यवाणी करते हैं? आपको क्या आसान लगता है?
एक फ्लो चार्ट बनाएं जो एक ML प्रैक्टिशनर के चरणों को दर्शाता है। आप इस प्रक्रिया में अभी खुद को कहां देखते हैं? आपको कहां कठिनाई का सामना करना पड़ सकता है? आपको क्या आसान लगता है?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
ऑनलाइन खोजें कि डेटा वैज्ञानिकों के साथ साक्षात्कार जो उनके दैनिक कार्य पर चर्चा करते हैं। यहाँ [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) है।
ऑनलाइन खोजें कि डेटा वैज्ञानिक अपने दैनिक कार्य के बारे में चर्चा करते हुए साक्षात्कार में क्या कहते हैं। यहाँ [एक](https://www.youtube.com/watch?v=Z3IjgbbCEfs) है।
## असाइनमेंट
@ -129,4 +129,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,19 +1,19 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6b1cb0e46d4c5b747eff6e3607642760",
"translation_date": "2025-09-03T22:35:21+00:00",
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
"translation_date": "2025-09-05T10:15:47+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "hi"
}
-->
# Python और Scikit-learn के साथ रिग्रेशन मॉडल्स शुरू करें
![रिग्रेशन का स्केच नोट में सारांश](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.hi.png)
![रिग्रेशन का स्केच नोट में सारांश](../../../../sketchnotes/ml-regression.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
@ -26,47 +26,47 @@ CO_OP_TRANSLATOR_METADATA:
- अपने कंप्यूटर को स्थानीय मशीन लर्निंग कार्यों के लिए कॉन्फ़िगर करना।
- Jupyter नोटबुक्स के साथ काम करना।
- Scikit-learn का उपयोग करना, जिसमें इंस्टॉलेशन शामिल है।
- एक व्यावहारिक अभ्यास के साथ लीनियर रिग्रेशन का अन्वेषण करना।
- एक हैंड्स-ऑन अभ्यास के साथ लीनियर रिग्रेशन का अन्वेषण करना।
## इंस्टॉलेशन और कॉन्फ़िगरेशन
[![मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग मॉडल्स बनाने के लिए अपने उपकरण सेट करें](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंग के लिए शुरुआती - मशीन लर्निंग मॉडल्स बनाने के लिए अपने उपकरण सेट करें")
[![मशीन लर्निंग के लिए शुरुआती - अपने उपकरण सेटअप करें](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंग के लिए शुरुआती - अपने उपकरण सेटअप करें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें, अपने कंप्यूटर को मशीन लर्निंग के लिए कॉन्फ़िगर करने की प्रक्रिया के लिए एक छोटा वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप अपने कंप्यूटर को मशीन लर्निंग के लिए कॉन्फ़िगर करने की प्रक्रिया देख सकें।
1. **Python इंस्टॉल करें**। सुनिश्चित करें कि [Python](https://www.python.org/downloads/) आपके कंप्यूटर पर इंस्टॉल है। आप Python का उपयोग कई डेटा साइंस और मशीन लर्निंग कार्यों के लिए करेंगे। अधिकांश कंप्यूटर सिस्टम में पहले से ही Python इंस्टॉल होता है। [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) भी उपलब्ध हैं, जो कुछ उपयोगकर्ताओं के लिए सेटअप को आसान बनाते हैं।
1. **Python इंस्टॉल करें**। सुनिश्चित करें कि [Python](https://www.python.org/downloads/) आपके कंप्यूटर पर इंस्टॉल है। आप डेटा साइंस और मशीन लर्निंग कार्यों के लिए Python का उपयोग करेंगे। अधिकांश कंप्यूटर सिस्टम में पहले से ही Python इंस्टॉल होता है। कुछ उपयोगकर्ताओं के लिए सेटअप को आसान बनाने के लिए उपयोगी [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) भी उपलब्ध हैं।
हालांकि, Python के कुछ उपयोगों के लिए सॉफ़्टवेयर का एक संस्करण आवश्यक होता है, जबकि अन्य के लिए अलग संस्करण। इस कारण से, [वर्चुअल एनवायरनमेंट](https://docs.python.org/3/library/venv.html) में काम करना उपयोगी होता है।
2. **Visual Studio Code इंस्टॉल करें**। सुनिश्चित करें कि आपके कंप्यूटर पर Visual Studio Code इंस्टॉल है। [Visual Studio Code इंस्टॉल करने](https://code.visualstudio.com/) के लिए इन निर्देशों का पालन करें। इस पाठ्यक्रम में आप Visual Studio Code में Python का उपयोग करेंगे, इसलिए [Python विकास के लिए Visual Studio Code को कॉन्फ़िगर करने](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) के बारे में जानकारी प्राप्त करना उपयोगी हो सकता है
2. **Visual Studio Code इंस्टॉल करें**। सुनिश्चित करें कि आपके कंप्यूटर पर Visual Studio Code इंस्टॉल है। [Visual Studio Code इंस्टॉल करने](https://code.visualstudio.com/) के लिए इन निर्देशों का पालन करें। इस पाठ्यक्रम में आप Visual Studio Code में Python का उपयोग करेंगे, इसलिए आप [Python विकास के लिए Visual Studio Code को कॉन्फ़िगर करने](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) के बारे में जानकारी प्राप्त कर सकते हैं
> Python के साथ सहज होने के लिए इस [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) संग्रह को देखें।
>
> [![Visual Studio Code के साथ Python सेटअप करें](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code के साथ Python सेटअप करें")
> [![Python को Visual Studio Code के साथ सेटअप करें](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python को Visual Studio Code के साथ सेटअप करें")
>
> 🎥 ऊपर दी गई छवि पर क्लिक करें, Visual Studio Code में Python का उपयोग करने के लिए एक वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप Python को VS Code में उपयोग करने की प्रक्रिया देख सकें।
3. **Scikit-learn इंस्टॉल करें**, [इन निर्देशों](https://scikit-learn.org/stable/install.html) का पालन करके। चूंकि आपको Python 3 का उपयोग सुनिश्चित करना है, इसलिए वर्चुअल एनवायरनमेंट का उपयोग करने की सिफारिश की जाती है। ध्यान दें, यदि आप M1 Mac पर इस लाइब्रेरी को इंस्टॉल कर रहे हैं, तो ऊपर दिए गए पृष्ठ पर विशेष निर्देश हैं।
3. **Scikit-learn इंस्टॉल करें**, [इन निर्देशों](https://scikit-learn.org/stable/install.html) का पालन करके। चूंकि आपको Python 3 का उपयोग सुनिश्चित करना है, इसलिए वर्चुअल एनवायरनमेंट का उपयोग करने की सिफारिश की जाती है। ध्यान दें, यदि आप इस लाइब्रेरी को M1 Mac पर इंस्टॉल कर रहे हैं, तो ऊपर दिए गए पृष्ठ पर विशेष निर्देश हैं।
4. **Jupyter Notebook इंस्टॉल करें**। आपको [Jupyter पैकेज इंस्टॉल](https://pypi.org/project/jupyter/) करना होगा।
4. **Jupyter Notebook इंस्टॉल करें**। आपको [Jupyter पैकेज](https://pypi.org/project/jupyter/) इंस्टॉल करना होगा।
## आपका मशीन लर्निंग लेखन वातावरण
आप **नोटबुक्स** का उपयोग अपने Python कोड को विकसित करने और मशीन लर्निंग मॉडल्स बनाने के लि करेंगे। यह प्रकार की फाइल डेटा वैज्ञानिकों के लिए एक सामान्य उपकरण है, और इसे `.ipynb` एक्सटेंशन द्वारा पहचाना जा सकता है।
आप **नोटबुक्स** का उपयोग करके Python कोड विकसित करेंगे और मशीन लर्निंग मॉडल बनाएंगे। यह प्रकार की फाइल डेटा वैज्ञानिकों के लिए एक सामान्य उपकरण है, और इन्हें उनके `.ipynb` एक्सटेंशन से पहचाना जा सकता है।
नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने और उसके आसपास नोट्स और दस्तावेज़ लिखने की अनुमति देते हैं, जो शोध-उन्मुख परियोजनाओं के लिए काफी उपयोगी है।
नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने और उसके आसपास नोट्स और दस्तावेज़ जोड़ने की अनुमति देते हैं, जो शोध-उन्मुख परियोजनाओं के लिए काफी उपयोगी है।
[![मशीन लर्निंग के लिए शुरुआती - रिग्रेशन मॉडल्स बनाने के लिए Jupyter नोटबुक्स सेट करें](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंग के लिए शुरुआती - रिग्रेशन मॉडल्स बनाने के लिए Jupyter नोटबुक्स सेट करें")
[![मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें, इस अभ्यास को पूरा करने के लिए एक छोटा वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
### अभ्यास - नोटबुक के साथ काम करें
इस फ़ोल्डर में, आपको _notebook.ipynb_ाइल मिलेगी।
इस फ़ोल्डर में, आपको _notebook.ipynb_ नामक फाइल मिलेगी।
1. _notebook.ipynb_ को Visual Studio Code में खोलें।
एक Jupyter सर्वर Python 3+ के साथ शुरू होगा। आप नोटबुक के उन क्षेत्रों को पाएंगे जिन्हें `run` किया जा सकता है, कोड के टुकड़े। आप कोड ब्लॉक को चलाने के लिए उस आइकन का चयन कर सकते हैं जो प्ले बटन जैसा दिखता है।
एक Jupyter सर्वर Python 3+ के साथ शुरू होगा। आप नोटबुक के उन क्षेत्रों को पाएंगे जिन्हें `run` किया जा सकता है, यानी कोड के टुकड़े। आप कोड ब्लॉक को चलाने के लिए उस आइकन का चयन कर सकते हैं जो प्ले बटन जैसा दिखता है।
2. `md` आइकन का चयन करें और थोड़ा मार्कडाउन जोड़ें, और निम्नलिखित टेक्स्ट लिखें **# Welcome to your notebook**।
@ -75,27 +75,27 @@ CO_OP_TRANSLATOR_METADATA:
3. कोड ब्लॉक में **print('hello notebook')** टाइप करें।
4. कोड चलाने के लिए तीर का चयन करें।
आपको प्रिंटेड स्टेटमेंट देखना चाहिए:
आपको प्रिंट किया गया कथन दिखाई देना चाहिए:
```output
hello notebook
```
![VS Code में एक नोटबुक खुला हुआ](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.hi.jpg)
![VS Code में एक नोटबुक खुला हुआ](../../../../2-Regression/1-Tools/images/notebook.jpg)
आप अपने कोड को टिप्पणियों के साथ इंटरलीफ कर सकते हैं ताकि नोटबुक को स्वयं दस्तावेज़ित किया जा सके।
आप अपने कोड के साथ टिप्पणियां जोड़ सकते हैं ताकि नोटबुक को स्वयं दस्तावेज़ित किया जा सके।
✅ एक मिनट के लिए सोचें कि एक वेब डेवलपर का कार्य वातावरण डेटा वैज्ञानिक के कार्य वातावरण से कितना अलग है।
## Scikit-learn के साथ शुरुआत
अब जब Python आपके स्थानीय वातावरण में सेट हो गया है, और आप Jupyter नोटबुक्स के साथ सहज हैं, तो चलिए Scikit-learn के साथ भी उतना ही सहज हो जाते हैं (इसे `sci` के रूप में उच्चारित करें, जैसे `science`)। Scikit-learn आपको मशीन लर्निंग कार्यों को करने में मदद करने के लिए [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करता है।
अब जब Python आपके स्थानीय वातावरण में सेटअप हो गया है, और आप Jupyter नोटबुक्स के साथ सहज हैं, तो आइए Scikit-learn के साथ भी उतना ही सहज हो जाएं। (इसे `sci` के रूप में उच्चारित करें, जैसे `science`)। Scikit-learn आपको मशीन लर्निंग कार्यों को करने में मदद करने के लिए एक [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करता है।
उनकी [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) के अनुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है जो सुपरवाइज्ड और अनसुपरवाइज्ड लर्निंग का समर्थन करती है। यह मॉडल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडल चयन और मूल्यांकन, और कई अन्य उपयोगिताओं के लिए विभिन्न उपकरण प्रदान करती है।"
उनकी [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) के अनुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है जो सुपरवाइज्ड और अनसुपरवाइज्ड लर्निंग का समर्थन करती है। यह मॉडल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडल चयन और मूल्यांकन, और कई अन्य उपयोगिताओं के लिए विभिन्न उपकरण भी प्रदान करती है।"
इस पाठ्यक्रम में, आप Scikit-learn और अन्य उपकरणों का उपयोग करके मशीन लर्निंग मॉडल्स बनाएंगे ताकि 'पारंपरिक मशीन लर्निंग' कार्यों को अंजाम दिया जा सके। हमने जानबूझकर न्यूरल नेटवर्क्स और डीप लर्निंग को शामिल नहीं किया है, क्योंकि इन्हें हमारे आगामी 'AI for Beginners' पाठ्यक्रम में बेहतर तरीके से कवर किया जाएगा।
इस पाठ्यक्रम में, आप Scikit-learn और अन्य उपकरणों का उपयोग करके मशीन लर्निंग मॉडल बनाएंगे ताकि 'पारंपरिक मशीन लर्निंग' कार्यों को अंजाम दिया जा सके। हमने जानबूझकर न्यूरल नेटवर्क्स और डीप लर्निंग को शामिल नहीं किया है, क्योंकि इन्हें हमारे आगामी 'AI for Beginners' पाठ्यक्रम में बेहतर तरीके से कवर किया जाएगा।
Scikit-learn मॉडल्स को बनाना और उनका मूल्यांकन करना आसान बनाता है। यह मुख्य रूप से संख्यात्मक डेटा का उपयोग करता है और सीखने के उपकरण के रूप में उपयोग के लिए कई तैयार किए गए डेटासेट्स प्रदान करता है। इसमें छात्रों के लिए आज़माने के लिए प्री-बिल्ट मॉडल्स भी शामिल हैं। चलिए पहले Scikit-learn के साथ कुछ बुनियादी डेटा का उपयोग करके प्रीपैकेज्ड डेटा लोड करने और एक बिल्ट-इन एस्टीमेटर का उपयोग करने की प्रक्रिया का अन्वेषण कर हैं।
Scikit-learn मॉडल्स को बनाना और उनका मूल्यांकन करना आसान बनाता है। यह मुख्य रूप से संख्यात्मक डेटा का उपयोग करता है और सीखने के उपकरण के रूप में उपयोग के लिए कई तैयार किए गए डेटासेट्स प्रदान करता है। इसमें छात्रों के लिए आज़माने के लिए प्री-बिल्ट मॉडल्स भी शामिल हैं। आइए पहले Scikit-learn के साथ प्रीपैकेज्ड डेटा को लोड करने और एक बिल्ट-इन एस्टीमेटर का उपयोग करके पहला मशीन लर्निंग मॉडल बनाने की प्रक्रिया का अन्वेषण करें।
## अभ्यास - आपका पहला Scikit-learn नोटबुक
@ -103,21 +103,21 @@ Scikit-learn मॉडल्स को बनाना और उनका म
[![मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट")
> 🎥 ऊपर दी गई छवि पर क्लिक करें, इस अभ्यास को पूरा करने के लिए एक छोटा वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
इस पाठ से संबंधित _notebook.ipynb_ाइल में, सभी सेल्स को 'trash can' आइकन दबाकर साफ़ करें।
इस पाठ से संबंधित _notebook.ipynb_ फाइल में, सभी सेल्स को 'trash can' आइकन दबाकर साफ़ करें।
इस सेक्शन में, आप Scikit-learn में सीखने के उद्देश्यों के लिए बनाए गए एक छोटे डेटासेट के साथ काम करेंगे जो डायबिटीज़ के बारे में है। कल्पना करें कि आप डायबिटीज रोगियों के लिए एक उपचार का परीक्षण करना चाहते हैं। मशीन लर्निंग मॉडल्स आपको यह निर्धारित करने में मदद कर सकते हैं कि कौन से रोगी उपचार के लिए बेहतर प्रतिक्रिया देंगे, चर के संयोजनों के आधार पर। यहां तक कि एक बहुत ही बुनियादी रिग्रेशन मॉडल, जब विज़ुअलाइज़ किया जाता है, तो चर के बारे में जानकारी दिखा सकता है जो आपको अपने सैद्धांतिक क्लिनिकल ट्रायल्स को व्यवस्थित करने में मदद कर सकता है।
इस सेक्शन में, आप Scikit-learn में सीखने के उद्देश्यों के लिए बनाए गए एक छोटे से डायबिटीज डेटासेट के साथ काम करेंगे। कल्पना करें कि आप डायबिटीज रोगियों के लिए एक उपचार का परीक्षण करना चाहते हैं। मशीन लर्निंग मॉडल्स आपको यह निर्धारित करने में मदद कर सकते हैं कि कौन से रोगी उपचार के लिए बेहतर प्रतिक्रिया देंगे, चर के संयोजनों के आधार पर। यहां तक कि एक बहुत ही बुनियादी रिग्रेशन मॉडल, जब विज़ुअलाइज़ किया जाता है, तो चर के बारे में जानकारी दिखा सकता है जो आपको अपने सैद्धांतिक क्लिनिकल ट्रायल्स को व्यवस्थित करने में मदद कर सकता है।
✅ रिग्रेशन विधियों के कई प्रकार होते हैं, और आप कौन सा चुनते हैं यह उस उत्तर पर निर्भर करता है जिसे आप ढूंढ रहे हैं। यदि आप किसी दिए गए उम्र के व्यक्ति की संभावित ऊंचाई की भविष्यवाणी करना चाहते हैं, तो आप लीनियर रिग्रेशन का उपयोग करेंगे, क्योंकि आप एक **संख्यात्मक मान** की तलाश कर रहे हैं। यदि आप यह पता लगाना चाहते हैं कि किसी प्रकार के भोजन को शाकाहारी माना जाना चाहिए या नहीं, तो आप एक **श्रेणी असाइनमेंट** की तलाश कर रहे हैं, इसलिए आप लॉजिस्टिक रिग्रेशन का उपयोग करेंगे। आप बाद में लॉजिस्टिक रिग्रेशन के बारे में अधिक जानेंगे। डेटा से कुछ प्रश्न पूछने के बारे में सोचें, और इनमें से कौन सी विधि अधिक उपयुक्त होगी।
चलो इस कार्य को शुरू कर हैं।
आइए इस कार्य को शुरू करें।
### लाइब्रेरीज़ इंपोर्ट करें
इस कार्य के लिए हम कुछ लाइब्रेरीज़ इंपोर्ट करेंगे:
- **matplotlib**। यह एक उपयोगी [ग्राफिंग टूल](https://matplotlib.org/) है और हम इसका उपयोग एक लाइन प्लॉट बनाने के लिए करेंगे।
- **matplotlib**। यह एक उपयोगी [ग्राफिंग टूल](https://matplotlib.org/) है और हम इसका उपयोग लाइन प्लॉट बनाने के लिए करेंगे।
- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python में संख्यात्मक डेटा को संभालने के लिए एक उपयोगी लाइब्रेरी है।
- **sklearn**। यह [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) लाइब्रेरी है।
@ -133,22 +133,22 @@ Scikit-learn मॉडल्स को बनाना और उनका म
ऊपर आप `matplotlib`, `numpy` और `sklearn` से `datasets`, `linear_model` और `model_selection` इंपोर्ट कर रहे हैं। `model_selection` का उपयोग डेटा को ट्रेनिंग और टेस्ट सेट्स में विभाजित करने के लिए किया जाता है।
### डायबिटीज डेटासेट
### डायबिटीज डेटासेट
बिल्ट-इन [डायबिटीज डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) में डायबिटीज़ के आसपास 442 नमूनों का डेटा शामिल है, जिसमें 10 फीचर वेरिएबल्स हैं, जिनमें से कुछ शामिल हैं:
बिल्ट-इन [डायबिटीज डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) में डायबिटीज से संबंधित 442 नमूनों का डेटा है, जिसमें 10 फीचर वेरिएबल्स शामिल हैं, जिनमें से कुछ हैं:
- age: उम्र वर्षों में
- bmi: बॉडी मास इंडेक्स
- bp: औसत रक्तचाप
- s1 tc: टी-सेल्स (सफेद रक्त कोशिकाओं का एक प्रकार)
✅ इस डेटासेट में डायबिटीज़ के शोध के लिए महत्वपूर्ण फीचर वेरिएबल के रूप में 'sex' की अवधारणा शामिल है। कई मेडिकल डेटासेट्स में इस प्रकार का बाइनरी वर्गीकरण शामिल होता है। सोचें कि इस प्रकार की वर्गीकरण कैसे आबादी के कुछ हिस्सों को उपचार से बाहर कर सकती है।
✅ इस डेटासेट में 'sex' की अवधारणा एक फीचर वेरिएबल के रूप में शामिल है, जो डायबिटीज के शोध के लिए महत्वपूर्ण है। कई मेडिकल डेटासेट्स में इस प्रकार का बाइनरी वर्गीकरण शामिल होता है। सोचें कि इस प्रकार की श्रेणियां आबादी के कुछ हिस्सों को उपचार से कैसे बाहर कर सकती है
अब, X और y डेटा लोड करें।
> 🎓 याद रखें, यह सुपरवाइज्ड लर्निंग है, और हमें एक नामित 'y' टारगेट की आवश्यकता है।
> 🎓 याद रखें, यह सुपरवाइज्ड लर्निंग है, और हमें एक नामित 'y' टारगेट की आवश्यकता है।
एक नए कोड सेल में, डायबिटीज डेटासेट को `load_diabetes()` कॉल करके लोड करें। इनपुट `return_X_y=True` संकेत देता है कि `X` एक डेटा मैट्रिक्स होगा, और `y` रिग्रेशन टारगेट होगा।
एक नए कोड सेल में, डायबिटीज डेटासेट को `load_diabetes()` कॉल करके लोड करें। इनपुट `return_X_y=True` संकेत देता है कि `X` एक डेटा मैट्रिक्स होगा, और `y` रिग्रेशन टारगेट होगा।
1. डेटा मैट्रिक्स के आकार और इसके पहले तत्व को दिखाने के लिए कुछ प्रिंट कमांड जोड़ें:
@ -158,9 +158,9 @@ Scikit-learn मॉडल्स को बनाना और उनका म
print(X[0])
```
जो प्रतिक्रिया आप वापस प्राप्त कर रहे हैं, वह एक ट्यूपल है। आप जो कर रहे हैं वह ट्यूपल के पहले दो मानों को क्रमशः `X` और `y` को असाइन करना है। [ट्यूपल्स](https://wikipedia.org/wiki/Tuple) के बारे में अधिक जानें।
जो प्रतिक्रिया आपको मिल रही है, वह एक ट्यूपल है। आप जो कर रहे हैं वह ट्यूपल के पहले दो मानों को क्रमशः `X` और `y` को असाइन करना है। [ट्यूपल्स](https://wikipedia.org/wiki/Tuple) के बारे में अधिक जानें।
आप देख सकते हैं कि इस डेटा में 442 आइटम्स हैं जो 10 तत्वों के एरेज़ में आकारित हैं:
आप देख सकते हैं कि इस डेटा में 442 आइटम हैं जो 10 तत्वों के एरे में आकारित हैं:
```text
(442, 10)
@ -168,9 +168,9 @@ Scikit-learn मॉडल्स को बनाना और उनका म
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ डेटा और रिग्रेशन टारगेट के बीच संबंध के बारे में सोचें। लीनियर रिग्रेशन फीचर X और टारगेट वेरिएबल y के बीच संबंधों की भविष्यवाणी करता है। क्या आप डायबिटीज डेटासेट के लिए [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) को दस्तावेज़ में पा सकते हैं? यह डेटासेट क्या प्रदर्शित कर रहा है, दिए गए टारगेट को देखते हुए?
✅ डेटा और रिग्रेशन टारगेट के बीच संबंध के बारे में सोचें। लीनियर रिग्रेशन फीचर X और टारगेट वेरिएबल y के बीच संबंधों की भविष्यवाणी करता है। क्या आप डायबिटीज डेटासेट के लिए [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) को दस्तावेज़ में पा सकते हैं? यह डेटासेट क्या प्रदर्शित कर रहा है, टारगेट को देखते हुए?
2. इसके बाद, इस डेटासेट के एक हिस्से को प्लॉट करने के लिए चुनें, डेटासेट के तीसरे कॉलम का चयन करके। आप `:` ऑपरेटर का उपयोग करके सभी पंक्तियों का चयन कर सकते हैं, और फिर इंडेक्स (2) का उपयोग करके तीसरे कॉलम का चयन कर सकते हैं। आप `reshape(n_rows, n_columns)` का उपयोग करके डेटा को 2D एरे में आकार दे सकते हैं - जैसा कि प्लॉटिंग के लिए आवश्यक है। यदि किसी पैरामीटर का मान -1 है, तो संबंधित आयाम स्वचालित रूप से गणना किया जाता है।
2. इसके बाद, इस डेटासेट के एक हिस्से को प्लॉट करने के लिए चुनें, डेटासेट के तीसरे कॉलम का चयन करके। आप `:` ऑपरेटर का उपयोग करके सभी पंक्तियों का चयन कर सकते हैं, और फिर इंडेक्स (2) का उपयोग करके तीसरे कॉलम का चयन कर सकते हैं। आप डेटा को 2D एरे में आकार देने के लिए `reshape(n_rows, n_columns)` का उपयोग कर सकते हैं - जैसा कि प्लॉटिंग के लिए आवश्यक है। यदि पैरामीटर में से एक -1 है, तो संबंधित आयाम स्वचालित रूप से गणना किया जाता है।
```python
X = X[:, 2]
@ -192,7 +192,7 @@ Scikit-learn मॉडल्स को बनाना और उनका म
model.fit(X_train, y_train)
```
`model.fit()` एक फ़ंक्शन है जिसे आप TensorFlow जैस कई ML लाइब्रेरीज़ में देखेंगे।
`model.fit()` एक फ़ंक्शन है जिसे आप TensorFlow जैस कई ML लाइब्रेरीज़ में देखेंगे।
5. फिर, टेस्ट डेटा का उपयोग करके एक प्रेडिक्शन बनाएं, `predict()` फ़ंक्शन का उपयोग करके। इसका उपयोग डेटा समूहों के बीच लाइन खींचने के लिए किया जाएगा।
@ -211,23 +211,23 @@ Scikit-learn मॉडल्स को बनाना और उनका म
plt.show()
```
![डायबिटीज के आसपास डेटा पॉइंट्स दिखाने वाला एक स्कैटरप्लॉट](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.hi.png)
सोचें कि यहाँ क्या हो रहा है। एक सीधी रेखा कई छोटे डेटा बिंदुओं के बीच से गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि इस रेखा का उपयोग करके आप यह अनुमान लगा सकते हैं कि एक नया, अनदेखा डेटा बिंदु प्लॉट के y अक्ष के संबंध में कहा फिट होगा? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें।
![डायबिटीज के आसपास डेटा पॉइंट्स दिखाने वाला एक स्कैटरप्लॉट](../../../../2-Regression/1-Tools/images/scatterplot.png)
यहां क्या हो रहा है, इस पर थोड़ा विचार करें। एक सीधी रेखा कई छोटे डेटा बिंदुओं के बीच से गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि इस रेखा का उपयोग करके आप यह अनुमान कैसे लगा सकते हैं कि एक नया, अनदेखा डेटा बिंदु प्लॉट के y अक्ष के संबंध में कहा फिट होगा? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें।
बधाई हो, आपने अपना पहला लीनियर रिग्रेशन मॉडल बनाया, इसके साथ एक भविष्यवाणी की, और इसे एक प्लॉट में प्रदर्शित किया!
---
## 🚀चुनौती
इस डेटा सेट से एक अलग वेरिएबल को प्लॉट करें। संकेत: इस लाइन को एडिट करें: `X = X[:,2]`। इस डेटा सेट के टारगेट को देखते हुए, आप डायबिटीज के रोग के प्रगति के बारे में क्या पता लगा सकते हैं?
इस डेटा सेट से एक अलग वेरिएबल को प्लॉट करें। संकेत: इस लाइन को एडिट करें: `X = X[:,2]`। इस डेटा सेट के टारगेट को देखते हुए, आप डायबिटीज के एक बीमारी के रूप में प्रगति के बारे में क्या पता लगा सकते हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
इस ट्यूटोरियल में, आपने सिंपल लीनियर रिग्रेशन के साथ काम किया, न कि यूनिवेरिएट या मल्टीपल लीनियर रिग्रेशन के साथ। इन विधियों के बीच के अंतर के बारे में थोड़ा पढ़ें, या [इस वीडियो](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) को देखें।
रिग्रेशन की अवधारणा के बारे में अधिक पढ़ें और सोचें कि इस तकनीक से किस प्रकार के प्रश्नों का उत्तर दिया जा सकता है। अपनी समझ को गहरा करने के लिए यह [ट्यूटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) लें।
रिग्रेशन की अवधारणा के बारे में अधिक पढ़ें और सोचें कि इस तकनीक द्वारा किस प्रकार के प्रश्नों का उत्तर दिया जा सकता है। अपनी समझ को गहरा करने के लिए यह [ट्यूटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) लें।
## असाइनमेंट
@ -236,4 +236,4 @@ Scikit-learn मॉडल्स को बनाना और उनका म
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,25 +1,25 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a683e1fe430bb0d4a10b68f6ca15e0a6",
"translation_date": "2025-09-03T22:39:43+00:00",
"original_hash": "7c077988328ebfe33b24d07945f16eca",
"translation_date": "2025-09-05T10:16:34+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "hi"
}
-->
# Scikit-learn का उपयोग करके एक रिग्रेशन मॉडल बनाएं: डेटा तैयार करें और विज़ुअलाइज़ करें
![डेटा विज़ुअलाइज़ेशन इन्फोग्राफिक](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.hi.png)
![डेटा विज़ुअलाइज़ेशन इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png)
इन्फोग्राफिक: [दसानी मडिपल्ली](https://twitter.com/dasani_decoded)
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## परिचय
अब जब आपके पास Scikit-learn के साथ मशीन लर्निंग मॉडल बनाने के लिए आवश्यक उपकरण हैं, तो आप अपने डेटा से सवाल पूछने के लिए तैयार हैं। जब आप डेटा के साथ काम करते हैं और ML समाधान लागू करते हैं, तो सही सवाल पूछना बहुत महत्वपूर्ण है ताकि आप अपने डेटा सेट की संभावनाओं को सही तरीके से खोल सकें।
अब जब आपके पास Scikit-learn के साथ मशीन लर्निंग मॉडल बनाने के लिए आवश्यक टूल्स हैं, तो आप अपने डेटा से सवाल पूछने के लिए तैयार हैं। जब आप डेटा के साथ काम करते हैं और ML समाधान लागू करते हैं, तो सही सवाल पूछना बहुत महत्वपूर्ण है ताकि आप अपने डेटा सेट की संभावनाओं को सही तरीके से समझ सकें।
इस पाठ में, आप सीखेंगे:
@ -32,29 +32,29 @@ CO_OP_TRANSLATOR_METADATA:
इस पाठ के लिए दिए गए [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) पर एक नज़र डालें। आप इस .csv फ़ाइल को VS Code में खोल सकते हैं। एक त्वरित स्कैन से तुरंत पता चलता है कि इसमें खाली स्थान हैं और स्ट्रिंग्स और संख्यात्मक डेटा का मिश्रण है। इसमें 'Package' नाम का एक अजीब कॉलम भी है, जिसमें डेटा 'sacks', 'bins' और अन्य मानों का मिश्रण है। वास्तव में, यह डेटा थोड़ा गड़बड़ है।
[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
[![शुरुआती के लिए ML - डेटा सेट का विश्लेषण और सफाई कैसे करें](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "शुरुआती के लिए ML - डेटा सेट का विश्लेषण और सफाई कैसे करें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा तैयार करने की प्रक्रिया को दिखाने वाले एक छोटे वीडियो के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा तैयार करने पर एक छोटा वीडियो देखने के लिए।
वास्तव में, ऐसा बहुत कम होता है कि आपको एक ऐसा डेटा सेट मिले जो पूरी तरह से तैयार हो और जिसे सीधे ML मॉडल बनाने के लिए उपयोग किया जा सके। इस पाठ में, आप मानक Python लाइब्रेरी का उपयोग करके एक कच्चे डेटा सेट को तैयार करना सीखेंगे। आप डेटा को विज़ुअलाइज़ करने की विभिन्न तकनीकों को भी सीखेंगे।
## केस स्टडी: 'कद्दू बाजार'
## केस स्टडी: 'कद्दू का बाजार'
इस फ़ोल्डर में आपको रूट `data` फ़ोल्डर में [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामक एक .csv फ़ाइल मिलेगी, जिसमें 1757 पंक्तियों का डेटा है जो शहर के अनुसार कद्दू बाजार के बारे में जानकारी देता है। यह डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) से लिया गया है, जिसे संयुक्त राज्य अमेरिका के कृषि विभाग द्वारा वितरित किया गया है।
इस फ़ोल्डर में आपको रूट `data` फ़ोल्डर में [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामक एक .csv फ़ाइल मिलेगी, जिसमें कद्दू के बाजार के बारे में 1757 पंक्तियों का डेटा है, जो शहर के अनुसार वर्गीकृत है। यह कच्चा डेटा [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) से निकाला गया है, जिसे संयुक्त राज्य अमेरिका के कृषि विभाग द्वारा वितरित किया गया है।
### डेटा तैयार करना
यह डेटा सार्वजनिक डोमेन में है। इसे USDA वेबसाइट से अलग-अलग शहरों के लिए कई अलग-अलग फ़ाइलों में डाउनलोड किया जा सकता है। बहुत अधिक अलग-अलग फ़ाइलों से बचने के लिए, हमने सभी शहरों के डेटा को एक स्प्रेडशीट में जोड़ दिया है, इस प्रकार हमने डेटा को पहले ही _थोड़ा तैयार_ कर लिया है। अब, आइए डेटा को करीब से देखें।
यह डेटा सार्वजनिक डोमेन में है। इसे USDA वेबसाइट से कई अलग-अलग फ़ाइलों में, प्रत्येक शहर के लिए, डाउनलोड किया जा सकता है। बहुत अधिक अलग-अलग फ़ाइलों से बचने के लिए, हमने सभी शहरों के डेटा को एक स्प्रेडशीट में जोड़ दिया है, इस प्रकार हमने पहले ही डेटा को थोड़ा _तैयार_ कर लिया है। अब, आइए डेटा को करीब से देखें।
### कद्दू डेटा - प्रारंभिक निष्कर्ष
### कद्दू का डेटा - प्रारंभिक निष्कर्ष
आप इस डेटा के बारे में क्या नोटिस करते हैं? आपने पहले ही देखा है कि इसमें स्ट्रिंग्स, नंबर, खाली स्थान और अजीब मानों का मिश्रण है, जिन्हें समझने की आवश्यकता है।
आप इस डेटा के बारे में क्या नोटिस करते हैं? आपने पहले ही देखा है कि इसमें स्ट्रिंग्स, नंबर, खाली स्थान और अजीब मानों का मिश्रण है, जिसे आपको समझने की आवश्यकता है।
आप इस डेटा से कौन सा सवाल पूछ सकते हैं, रिग्रेशन तकनीक का उपयोग करके? उदाहरण के लिए, "किसी दिए गए महीने में बिक्री के लिए कद्दू की कीमत का अनुमान लगाएं।" डेटा को फिर से देखते हुए, आपको इस कार्य के लिए आवश्यक डेटा संरचना बनाने के लिए कुछ बदलाव करने होंगे।
आप इस डेटा से कौन सा सवाल पूछ सकते हैं, रिग्रेशन तकनीक का उपयोग करके? उदाहरण के लिए, "किसी दिए गए महीने में बिक्री के लिए कद्दू की कीमत का अनुमान लगाएं।" डेटा को फिर से देखते हुए, आपको डेटा संरचना बनाने के लिए कुछ बदलाव करने होंगे जो इस कार्य के लिए आवश्यक है
## अभ्यास - कद्दू डेटा का विश्लेषण करें
## अभ्यास - कद्दू के डेटा का विश्लेषण करें
आइए [Pandas](https://pandas.pydata.org/) का उपयोग करें, (जिसका नाम `Python Data Analysis` के लिए है) जो डेटा को आकार देने के लिए बहुत उपयोगी है, इस कद्दू डेटा का विश्लेषण और तैयारी करने के लिए।
आइए [Pandas](https://pandas.pydata.org/) का उपयोग करें, (जिसका नाम `Python Data Analysis` के लिए है) जो डेटा को आकार देने के लिए बहुत उपयोगी टूल है, इस कद्दू के डेटा का विश्लेषण और तैयारी करने के लिए।
### सबसे पहले, गायब तारीखों की जांच करें
@ -83,7 +83,7 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
डेटा गायब है, लेकिन शायद यह वर्तमान कार्य के लिए मायने नहीं रखता।
1. अपने डेटा फ्रेम को काम करने में आसान बनाने के लिए, केवल आवश्यक कॉलम का चयन करें, `loc` फ़ंक्शन का उपयोग करके जो मूल डेटा फ्रेम से पंक्तियों (पहला पैरामीटर) और कॉलम (दूसरा पैरामीटर) का एक समूह निकालता है। नीचे दिए गए मामले में अभिव्यक्ति `:` का अर्थ है "सभी पंक्तियाँ।"
1. अपने डेटा फ्रेम को काम करने में आसान बनाने के लिए, केवल उन कॉलमों का चयन करें जिनकी आपको आवश्यकता है, `loc` फ़ंक्शन का उपयोग करके जो मूल डेटा फ्रेम से पंक्तियों (पहले पैरामीटर के रूप में पास की गई) और कॉलमों (दूसरे पैरामीटर के रूप में पास की गई) का एक समूह निकालता है। नीचे दिए गए मामले में अभिव्यक्ति `:` का अर्थ है "सभी पंक्तियाँ।"
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@ -121,7 +121,7 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
> कद्दू को लगातार तौलना बहुत कठिन लगता है
मूल डेटा में गहराई से देखने पर, यह दिलचस्प है कि जिनका `Unit of Sale` 'EACH' या 'PER BIN' के बराबर है, उनके `Package` प्रकार प्रति इंच, प्रति बिन, या 'each' भी हैं। कद्दू को लगातार तौलना बहुत कठिन लगता है, इसलिए आइए उन्हें फ़िल्टर करें और केवल उन कद्दू का चयन करें जिनके `Package` कॉलम में 'bushel' शब्द है।
मूल डेटा में गहराई से देखें, यह दिलचस्प है कि जिनका `Unit of Sale` 'EACH' या 'PER BIN' के बराबर है, उनके `Package` प्रकार प्रति इंच, प्रति बिन, या 'each' भी हैं। कद्दू को लगातार तौलना बहुत कठिन लगता है, इसलिए आइए उन्हें फ़िल्टर करें और केवल उन कद्दूओं का चयन करें जिनके `Package` कॉलम में 'bushel' शब्द है।
1. फ़ाइल के शीर्ष पर, प्रारंभिक .csv आयात के तहत एक फ़िल्टर जोड़ें:
@ -129,11 +129,11 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
यदि आप अब डेटा प्रिंट करते हैं, तो आप देख सकते हैं कि आपको केवल लगभग 415 पंक्तियों का डेटा मिल रहा है जिसमें कद्दू बसल द्वारा हैं।
यदि आप अब डेटा प्रिंट करते हैं, तो आप देख सकते हैं कि आपको केवल लगभग 415 पंक्तियों का डेटा मिल रहा है जिसमें कद्दू बसल के अनुसार हैं।
### लेकिन रुको! एक और काम करना बाकी है
क्या आपने देखा कि बसल की मात्रा प्रति पंक्ति बदलती है? आपको मूल्य निर्धारण को सामान्य करना होगा ताकि आप बसल के आधार पर मूल्य दिखा सकें, इसलिए इसे मानकीकृत करने के लिए कुछ गणना करें।
क्या आपने देखा कि बसल की मात्रा प्रति पंक्ति बदलती है? आपको मूल्य निर्धारण को सामान्य करना होगा ताकि आप बसल के अनुसार मूल्य दिखा सकें, इसलिए इसे मानकीकृत करने के लिए कुछ गणना करें।
1. नए_pumpkins डेटा फ्रेम बनाने वाले ब्लॉक के बाद ये लाइनें जोड़ें:
@ -143,23 +143,23 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) के अनुसार, बसल का वजन उत्पाद के प्रकार पर निर्भर करता है, क्योंकि यह एक वॉल्यूम माप है। "उदाहरण के लिए, टमाटर का एक बसल 56 पाउंड वजन का होना चाहिए... पत्ते और साग अधिक जगह लेते हैं और कम वजन होता है, इसलिए पालक का एक बसल केवल 20 पाउंड होता है।" यह सब काफी जटिल है! आइए बसल-से-पाउंड रूपांतरण करने की बजाय बसल के आधार पर मूल्य निर्धारण करें। हालांकि, कद्दू के बसल का यह अध्ययन दिखाता है कि आपके डेटा की प्रकृति को समझना कितना महत्वपूर्ण है!
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) के अनुसार, बसल का वजन उत्पाद के प्रकार पर निर्भर करता है, क्योंकि यह एक वॉल्यूम माप है। "उदाहरण के लिए, टमाटर का एक बसल 56 पाउंड वजन का होना चाहिए... पत्ते और साग अधिक जगह लेते हैं और कम वजन होता है, इसलिए पालक का एक बसल केवल 20 पाउंड होता है।" यह सब काफी जटिल है! आइए बसल-से-पाउंड रूपांतरण करने की बजाय बसल के अनुसार मूल्य निर्धारण करें। हालांकि, कद्दू के बसल का यह अध्ययन यह दिखाता है कि आपके डेटा की प्रकृति को समझना कितना महत्वपूर्ण है!
अब, आप उनके बसल माप के आधार पर प्रति यूनिट मूल्य का विश्लेषण कर सकते हैं। यदि आप डेटा को एक बार फिर प्रिंट करते हैं, तो आप देख सकते हैं कि यह मानकीकृत है।
✅ क्या आपने देखा कि आधे बसल द्वारा बेचे जाने वाले कद्दू बहुत महंगे हैं? क्या आप इसका कारण पता लगा सकते हैं? संकेत: छोटे कद्दू बड़े कद्दू की तुलना में बहुत महंगे होते हैं, शायद इसलिए कि एक बड़े खोखले पाई कद्दू द्वारा लिए गए खाली स्थान को देखते हुए प्रति बसल उनमें से बहुत अधिक होते हैं।
✅ क्या आपने देखा कि आधे बसल में बेचे जाने वाले कद्दू बहुत महंगे हैं? क्या आप इसका कारण पता लगा सकते हैं? संकेत: छोटे कद्दू बड़े कद्दू की तुलना में बहुत महंगे होते हैं, शायद इसलिए कि एक बड़े खोखले पाई कद्दू द्वारा लिए गए खाली स्थान को देखते हुए प्रति बसल उनमें बहुत अधिक होते हैं।
## विज़ुअलाइज़ेशन रणनीतियाँ
डेटा वैज्ञानिक का एक हिस्सा यह प्रदर्शित करना है कि वे जिस डेटा के साथ काम कर रहे हैं उसकी गुणवत्ता और प्रकृति क्या है। ऐसा करने के लिए, वे अक्सर दिलचस्प विज़ुअलाइज़ेशन, या प्लॉट्स, ग्राफ़ और चार्ट बनाते हैं, जो डेटा के विभिन्न पहलुओं को दिखाते हैं। इस तरह, वे दृश्य रूप से उन संबंधों और अंतरालों को दिखा सकते हैं जिन्हें अन्यथा उजागर करना कठिन होता है।
डेटा वैज्ञानिक का एक हिस्सा यह प्रदर्शित करना है कि वे जिस डेटा के साथ काम कर रहे हैं उसकी गुणवत्ता और प्रकृति क्या है। ऐसा करने के लिए, वे अक्सर दिलचस्प विज़ुअलाइज़ेशन, जैसे प्लॉट्स, ग्राफ़्स, और चार्ट्स बनाते हैं, जो डेटा के विभिन्न पहलुओं को दिखाते हैं। इस तरह, वे दृश्य रूप से उन संबंधों और अंतरालों को दिखा सकते हैं जिन्हें अन्यथा समझना कठिन होता है।
[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
[![शुरुआती के लिए ML - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "शुरुआती के लिए ML - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा को विज़ुअलाइज़ करने की प्रक्रिया को दिखाने वाले एक छोटे वीडियो के लिए।
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा को विज़ुअलाइज़ करने पर एक छोटा वीडियो देखने के लिए।
विज़ुअलाइज़ेशन यह निर्धारित करने में भी मदद कर सकते हैं कि डेटा के लिए कौन सी मशीन लर्निंग तकनीक सबसे उपयुक्त है। उदाहरण के लिए, एक स्कैटरप्लॉट जो एक रेखा का अनुसरण करता हुआ प्रतीत होता है, यह संकेत देता है कि डेटा एक रेखीय रिग्रेशन अभ्यास के लिए एक अच्छा उम्मीदवार है।
एक डेटा विज़ुअलाइज़ेशन लाइब्रेरी जो Jupyter नोटबुक में अच्छी तरह काम करती है वह है [Matplotlib](https://matplotlib.org/) (जिसे आपने पिछले पाठ में भी देखा था)।
एक डेटा विज़ुअलाइज़ेशन लाइब्रेरी जो Jupyter नोटबुक्स में अच्छी तरह काम करती है वह है [Matplotlib](https://matplotlib.org/) (जिसे आपने पिछले पाठ में भी देखा था)।
> डेटा विज़ुअलाइज़ेशन के साथ अधिक अनुभव प्राप्त करें [इन ट्यूटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) में।
@ -183,7 +183,7 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
plt.show()
```
![एक स्कैटरप्लॉट जो कीमत और महीने के संबंध को दिखाता है](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.hi.png)
![एक स्कैटरप्लॉट जो महीने और कीमत के संबंध को दिखाता है](../../../../2-Regression/2-Data/images/scatterplot.png)
क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ ऐसा है जो आपको आश्चर्यचकित करता है?
@ -191,16 +191,16 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
### इसे उपयोगी बनाएं
चार्ट को उपयोगी डेटा प्रदर्शित करने के लिए, आपको आमतौर पर डेटा को किसी तरह से समूहित करना होता है। आइए एक प्लॉट बनाएं जहां y अक्ष महीनों को दिखाता है और डेटा वितरण को प्रदर्शित करता है
उपयोगी डेटा प्रदर्शित करने के लिए, आपको आमतौर पर डेटा को किसी न किसी तरह से समूहित करना होता है। आइए एक प्लॉट बनाएं जहां y अक्ष महीने दिखाए और डेटा वितरण को प्रदर्शित करे
1. एक समूहित बार चार्ट बनाने के लिए एक सेल जोड़ें:
1. एक सेल जोड़ें ताकि एक समूहित बार चार्ट बनाया जा सके:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![एक बार चार्ट जो कीमत और महीने के संबंध को दिखाता है](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.hi.png)
![एक बार चार्ट जो महीने और कीमत के संबंध को दिखाता है](../../../../2-Regression/2-Data/images/barchart.png)
यह एक अधिक उपयोगी डेटा विज़ुअलाइज़ेशन है! ऐसा लगता है कि कद्दू की सबसे अधिक कीमत सितंबर और अक्टूबर में होती है। क्या यह आपकी अपेक्षा के अनुरूप है? क्यों या क्यों नहीं?
@ -210,11 +210,11 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
Matplotlib द्वारा प्रदान किए गए विभिन्न प्रकार के विज़ुअलाइज़ेशन का अन्वेषण करें। कौन से प्रकार रिग्रेशन समस्याओं के लिए सबसे उपयुक्त हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
डेटा को विज़ुअलाइज़ करने के कई तरीकों पर एक नज़र डालें। उपलब्ध विभिन्न लाइब्रेरी की एक सूची बनाएं और नोट करें कि कौन सी लाइब्रेरी किस प्रकार के कार्यों के लिए सबसे अच्छी है, उदाहरण के लिए 2D विज़ुअलाइज़ेशन बनाम 3D विज़ुअलाइज़ेशन। आप क्या खोजते हैं?
डेटा को विज़ुअलाइज़ करने के कई तरीकों को देखें। उपलब्ध विभिन्न लाइब्रेरी की एक सूची बनाएं और नोट करें कि कौन सी लाइब्रेरी किस प्रकार के कार्यों के लिए सबसे अच्छी है, उदाहरण के लिए 2D विज़ुअलाइज़ेशन बनाम 3D विज़ुअलाइज़ेशन। आप क्या खोजते हैं?
## असाइनमेंट
@ -223,4 +223,4 @@ Matplotlib द्वारा प्रदान किए गए विभि
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,93 +1,92 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2f88fbc741d792890ff2f1430fe0dae0",
"translation_date": "2025-09-03T22:20:55+00:00",
"original_hash": "40e64f004f3cb50aa1d8661672d3cd92",
"translation_date": "2025-09-05T10:12:48+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "hi"
}
-->
# Scikit-learn का उपयोग करके एक रिग्रेशन मॉडल बनाएं: चार तरीकों से रिग्रेशन
![लिनियर बनाम पॉलिनोमियल रिग्रेशन इन्फोग्राफिक](../../../../translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.hi.png)
> इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/)
![लिनियर बनाम पॉलिनोमियल रिग्रेशन इन्फोग्राफिक](../../../../2-Regression/3-Linear/images/linear-polynomial.png)
> इन्फोग्राफिक: [दसानी मडिपल्ली](https://twitter.com/dasani_decoded)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### परिचय
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### परिचय
अब तक आपने रिग्रेशन के बारे में जानकारी प्राप्त की है और इसे कद्दू की कीमतों के डेटा सेट के साथ देखा है, जिसे हम इस पाठ में उपयोग करेंगे। आपने इसे Matplotlib का उपयोग करके विज़ुअलाइज़ भी किया है
अब तक आपने कद्दू की कीमतों के डेटा का उपयोग करके रिग्रेशन के बारे में जाना और इसे Matplotlib का उपयोग करके विज़ुअलाइज़ किया।
अब आप मशीन लर्निंग के लिए रिग्रेशन को गहराई से समझने के लिए तैयार हैं। जबकि विज़ुअलाइज़ेशन डेटा को समझने में मदद करता है, मशीन लर्निंग की असली ताकत _मॉडल को ट्रेन करने_ में है। मॉडल ऐतिहासिक डेटा पर प्रशिक्षित होते हैं ताकि डेटा की निर्भरताओं को स्वचालित रूप से कैप्चर किया जा सके, और वे नए डेटा के लिए परिणामों की भविष्यवाणी करने की अनुमति देते हैं, जिसे मॉडल ने पहले नहीं देखा है।
इस पाठ में, आप रिग्रेशन के दो प्रकारों के बारे में अधिक जानेंगे: _बेसिक लिनियर रिग्रेशन_ और _पॉलिनोमियल रिग्रेशन_, साथ ही इन तकनीकों के पीछे की गणितीय अवधारणाओं को समझेंगे। ये मॉडल हमें विभिन्न इनपुट डेटा के आधार पर कद्दू की कीमतों की भविष्यवाणी करने में मदद करेंगे।
इस पाठ में, आप रिग्रेशन के दो प्रकारों के बारे में जानेंगे: _बेसिक लिनियर रिग्रेशन_ और _पॉलिनोमियल रिग्रेशन_, साथ ही इन तकनीकों के पीछे की गणितीय अवधारणाओं को भी समझेंगे। ये मॉडल हमें विभिन्न इनपुट डेटा के आधार पर कद्दू की कीमतों की भविष्यवाणी करने में मदद करेंगे।
[![मशीन लर्निंग के लिए शुरुआती - लिनियर रिग्रेशन को समझना](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "मशीन लर्निंग के लिए शुरुआती - लिनियर रिग्रेशन को समझना")
[![शुरुआती के लिए मशीन लर्निंग - लिनियर रिग्रेशन को समझना](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "शुरुआती के लिए मशीन लर्निंग - लिनियर रिग्रेशन को समझना")
> 🎥 ऊपर दी गई छवि पर क्लिक करें और लिनियर रिग्रेशन का संक्षिप्त वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें और लिनियर रिग्रेशन का एक छोटा वीडियो देखें।
> इस पाठ्यक्रम में, हम गणित का न्यूनतम ज्ञान मानते हैं और इसे अन्य क्षेत्रों से आने वाले छात्रों के लिए सुलभ बनाने का प्रयास करते हैं। इसलिए नोट्स, 🧮 गणितीय कॉलआउट, डायग्राम और अन्य शिक्षण उपकरणों पर ध्यान दें जो समझने में मदद करेंगे।
> इस पाठ्यक्रम में, हम गणित का न्यूनतम ज्ञान मानते हैं और इसे अन्य क्षेत्रों से आने वाले छात्रों के लिए सुलभ बनाने का प्रयास करते हैं। इसलिए, नोट्स, 🧮 गणना, आरेख और अन्य शिक्षण उपकरणों पर ध्यान दें जो समझने में मदद करेंगे।
### पूर्वापेक्षा
अब तक आपको कद्दू के डेटा की संरचना से परिचित होना चाहिए जिसे हम जांच रहे हैं। आप इसे इस पाठ के _notebook.ipynb_ फ़ाइल में प्रीलोड और प्री-क्लीन किया हुआ पा सकते हैं। इस फ़ाइल में, कद्दू की कीमत प्रति बुशल एक नए डेटा फ्रेम में प्रदर्शित की गई है। सुनिश्चित करें कि आप इन नोटबुक्स को Visual Studio Code के कर्नल्स में चला सकते हैं।
अब तक आपको उस कद्दू डेटा की संरचना से परिचित होना चाहिए जिसे हम जांच रहे हैं। यह डेटा इस पाठ के _notebook.ipynb_ फ़ाइल में पहले से लोड और साफ किया गया है। इस फ़ाइल में, कद्दू की कीमत प्रति बुशल एक नए डेटा फ्रेम में प्रदर्शित की गई है। सुनिश्चित करें कि आप इन नोटबुक्स को Visual Studio Code के कर्नल्स में चला सकते हैं।
### तैयारी
याद दिलाने के लिए, आप इस डेटा को लोड कर रहे हैं ताकि इससे सवाल पूछ सकें।
याद दिलाने के लिए, आप इस डेटा को लोड कर रहे हैं ताकि आप इससे सवाल पूछ सकें।
- कद्दू खरीदने का सबसे अच्छा समय कब है?
- मिनिएचर कद्द के एक केस की कीमत क्या हो सकती है?
- कद्दू खरीदने का सबसे अच्छा समय कब है?
- मिनिएचर कद्दुओं के एक केस की कीमत क्या हो सकती है?
- क्या मुझे उन्हें आधे-बुशल की टोकरी में खरीदना चाहिए या 1 1/9 बुशल बॉक्स में?
आइए इस डेटा में और गहराई से खुदाई करें।
आइए इस डेटा में और गहराई से जाएं।
पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया और इसे मूल डेटा सेट के एक हिस्से से भरा, बुशल द्वारा कीमतों को मानकीकृत किया। ऐसा करने पर, हालांकि, आप केवल लगभग 400 डेटा पॉइंट्स और केवल पतझड़ के महीनों के लिए डेटा एकत्र कर सके।
पिछले पाठ में, आपने एक Pandas डेटा फ्रेम बनाया और इसे मूल डेटा सेट के हिस्से से भरा, कीमतों को बुशल के अनुसार मानकीकृत किया। हालांकि, ऐसा करने से आप केवल लगभग 400 डेटा पॉइंट्स और केवल पतझड़ के महीनों के लिए डेटा प्राप्त कर सके।
इस पाठ के साथ आने वाले नोटबुक में प्रीलोड किए गए डेटा को देखें। डेटा प्रीलोड किया गया है और एक प्रारंभिक स्कैटरप्लॉट चार्ट किया गया है जो महीने के डेटा को दिखाता है। शायद हम डेटा की प्रकृति के बारे में अधिक विवरण प्राप्त कर सकते हैं यदि इसे और अधिक साफ किया जाए।
इस पाठ के साथ आने वाले नोटबुक में पहले से लोड किए गए डेटा पर एक नज़र डालें। डेटा पहले से लोड है और एक प्रारंभिक स्कैटरप्लॉट महीने के डेटा को दिखाने के लिए चार्ट किया गया है। शायद हम इसे और साफ करके डेटा की प्रकृति के बारे में अधिक जानकारी प्राप्त कर सकते हैं।
## एक लिनियर रिग्रेशन लाइन
जैसा कि आपने पाठ 1 में सीखा, लिनियर रिग्रेशन अभ्यास का लक्ष्य एक लाइन को प्लॉट करना है ताकि:
- **चर संबंध दिखाएं**। चर के बीच संबंध दिखाएं।
- **भविष्यवाणी करें**। यह भविष्यवाणी करें कि एक नया डेटा पॉइंट उस लाइन के संबंध में कहां गिरेगा।
जैसा कि आपने पाठ 1 में सीखा, लिनियर रिग्रेशन अभ्यास का लक्ष्य एक रेखा खींचना है ताकि:
यह **लीस्ट-स्क्वेयर रिग्रेशन** के लिए सामान्य है कि इस प्रकार की लाइन खींची जाए। 'लीस्ट-स्क्वेयर' शब्द का मतलब है कि रिग्रेशन लाइन के चारों ओर सभी डेटा पॉइंट्स को वर्गीकृत किया जाता है और फिर जोड़ा जाता है। आदर्श रूप से, अंतिम योग जितना संभव हो उतना छोटा होना चाहिए, क्योंकि हम त्रुटियों की कम संख्या चाहते हैं, या `लीस्ट-स्क्वेयर`
- **चर के संबंध दिखाए जा सकें**। चर के बीच संबंध दिखाएं
- **भविष्यवाणियां करें**। यह सटीक भविष्यवाणी करें कि एक नया डेटा पॉइंट उस रेखा के संबंध में कहां गिरेगा।
**लीस्ट-स्क्वेयर्स रिग्रेशन** का उपयोग इस प्रकार की रेखा खींचने के लिए किया जाता है। 'लीस्ट-स्क्वेयर्स' शब्द का मतलब है कि रिग्रेशन लाइन के चारों ओर के सभी डेटा पॉइंट्स को वर्गाकार किया जाता है और फिर जोड़ा जाता है। आदर्श रूप से, वह अंतिम योग जितना संभव हो उतना छोटा होना चाहिए, क्योंकि हम त्रुटियों की कम संख्या चाहते हैं, या `लीस्ट-स्क्वेयर्स`
हम ऐसा इसलिए करते हैं क्योंकि हम एक ऐसी लाइन को मॉडल करना चाहते हैं जिसका सभी डेटा पॉइंट्स से संचयी दूरी कम से कम हो। हम इन शर्तों को जोड़ने से पहले वर्गीकृत करते हैं क्योंकि हम इसकी परिमाण के बारे में चिंतित हैं, न कि इसकी दिशा के बारे में।
हम ऐसा इसलिए करते हैं क्योंकि हम एक ऐसी रेखा का मॉडल बनाना चाहते हैं जो हमारे सभी डेटा पॉइंट्स से न्यूनतम संचयी दूरी रखती हो। हम इन शब्दों को जोड़ने से पहले वर्गाकार करते हैं क्योंकि हमें इसकी दिशा की बजाय इसकी परिमाण की परवाह है
> **🧮 गणित दिखाएं**
>
> इस लाइन, जिसे _सर्वश्रेष्ठ फिट की लाइन_ कहा जाता है, को [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है:
>
> **🧮 मुझे गणित दिखाएं**
>
> इस रेखा, जिसे _सर्वश्रेष्ठ फिट की रेखा_ कहा जाता है, को [एक समीकरण](https://en.wikipedia.org/wiki/Simple_linear_regression) द्वारा व्यक्त किया जा सकता है:
>
> ```
> Y = a + bX
> ```
>
> `X` 'स्पष्टीकरण चर' है। `Y` 'निर्भर चर' है। लाइन की ढलान `b` है और `a` y-इंटरसेप्ट है, जो उस समय `Y` का मान है जब `X = 0`
> `X` 'स्पष्टीकरण चर' है। `Y` 'निर्भर चर' है। रेखा का ढलान `b` है और `a` वाई-अवरोध है, जो उस समय `Y` का मान दर्शाता है जब `X = 0` होता है
>
>![ढलान की गणना करें](../../../../translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.hi.png)
>![ढलान की गणना करें](../../../../2-Regression/3-Linear/images/slope.png)
>
> पहले, ढलान `b` की गणना करें। इन्फोग्राफिक: [Jen Looper](https://twitter.com/jenlooper)
> पहले, ढलान `b` की गणना करें। इन्फोग्राफिक: [जेन लूपर](https://twitter.com/jenlooper)
>
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न का संदर्भ देते हुए: "महीने के अनुसार प्रति बुशल कद्दू की कीमत की भविष्यवाणी करें", `X` कीमत को संदर्भित करेगा और `Y` बिक्री के महीने को।
> दूसरे शब्दों में, और हमारे कद्दू डेटा के मूल प्रश्न का संदर्भ देते हुए: "महीने के अनुसार प्रति बुशल कद्दू की कीमत की भविष्यवाणी करें", `X` कीमत को संदर्भित करेगा और `Y` बिक्री के महीने को।
>
>![समीकरण पूरा करें](../../../../translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.hi.png)
>![समीकरण पूरा करें](../../../../2-Regression/3-Linear/images/calculation.png)
>
> `Y` का मान निकालें। यदि आप लगभग $4 का भुगतान कर रहे हैं, तो यह अप्रैल होना चाहिए! इन्फोग्राफिक: [Jen Looper](https://twitter.com/jenlooper)
> `Y` का मान निकालें। यदि आप लगभग $4 का भुगतान कर रहे हैं, तो यह अप्रैल होना चाहिए! इन्फोग्राफिक: [जेन लूपर](https://twitter.com/jenlooper)
>
> लाइन की गणना करने वाला गणित लाइन की ढलान को प्रदर्शित करना चाहिए, जो इंटरसेप्ट पर भी निर्भर करता है, या जहां `Y` स्थित है जब `X = 0`
> इस रेखा की गणना करने वाला गणित रेखा के ढलान को प्रदर्शित करना चाहिए, जो अवरोध पर भी निर्भर करता है, या जहां `Y` स्थित है जब `X = 0`
>
> आप इन मूल्यों की गणना की विधि [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। [इस लीस्ट-स्क्वेयर कैलकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) पर भी जाएं और देखें कि संख्याओं के मान लाइन को कैसे प्रभावित करते हैं।
> आप इन मूल्यों की गणना की विधि को [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) वेबसाइट पर देख सकते हैं। साथ ही, [इस लीस्ट-स्क्वेयर्स कैलकुलेटर](https://www.mathsisfun.com/data/least-squares-calculator.html) पर जाएं और देखें कि संख्याओं के मान रेखा को कैसे प्रभावित करते हैं।
## सहसंबंध
## सहसंबंध (Correlation)
एक और शब्द जिसे समझना महत्वपूर्ण है वह है **सहसंबंध गुणांक** दिए गए X और Y चर के बीच। स्कैटरप्लॉट का उपयोग करके, आप इस गुणांक को जल्दी से विज़ुअलाइज़ कर सकते हैं। एक प्लॉट जिसमें डेटा पॉइंट्स एक साफ लाइन में बिखरे होते हैं, उसमें उच्च सहसंबंध होता है, लेकिन एक प्लॉट जिसमें डेटा पॉइंट्स X और Y के बीच हर जगह बिखरे होते हैं, उसमें कम सहसंबंध होता है।
एक और शब्द जिसे समझना महत्वपूर्ण है वह है **सहसंबंध गुणांक** (Correlation Coefficient) जो दिए गए X और Y चर के बीच होता है। स्कैटरप्लॉट का उपयोग करके, आप इस गुणांक को जल्दी से विज़ुअलाइज़ कर सकते हैं। यदि डेटा पॉइंट्स एक सीधी रेखा में व्यवस्थित हैं, तो सहसंबंध उच्च होता है, लेकिन यदि डेटा पॉइंट्स X और Y के बीच हर जगह बिखरे हुए हैं, तो सहसंबंध कम होता है।
एक अच्छा लिनियर रिग्रेशन मॉडल वह होगा जिसमें लीस्ट-स्क्वेयर रिग्रेशन विधि का उपयोग करके रिग्रेशन लाइन के साथ उच्च (1 के करीब) सहसंबंध गुणांक हो।
एक अच्छा लिनियर रिग्रेशन मॉडल वह होगा जिसका सहसंबंध गुणांक उच्च (1 के करीब) हो, न कि 0 के करीब, और जो लीस्ट-स्क्वेयर्स रिग्रेशन विधि का उपयोग करके रिग्रेशन की रेखा के साथ मेल खाता हो।
✅ इस पाठ के साथ आने वाले नोटबुक को चलाएं और महीने से कीमत के स्कैटरप्लॉट को देखें। क्या कद्दू की बिक्री के लिए महीने से कीमत को जोड़ने वाला डेटा आपके स्कैटरप्लॉट की दृश्य व्याख्या के अनुसार उच्च या निम्न सहसंबंध रखता है? क्या यह बदलता है यदि आप `महीने` के बजाय अधिक सूक्ष्म माप का उपयोग करते हैं, जैसे *साल का दिन* (यानी साल की शुरुआत से दिन की संख्या)?
✅ इस पाठ के साथ आने वाले नोटबुक को चलाएं और महीने से कीमत के स्कैटरप्लॉट को देखें। क्या कद्दू की बिक्री के लिए महीने और कीमत के बीच डेटा का सहसंबंध उच्च या निम्न लगता है, आपकी दृश्य व्याख्या के अनुसार? क्या यह बदलता है यदि आप `महीने` के बजाय अधिक सूक्ष्म माप, जैसे *साल का दिन* (यानी साल की शुरुआत से दिनों की संख्या) का उपयोग करते हैं?
नीचे दिए गए कोड में, हम मानते हैं कि हमने डेटा को साफ कर लिया है और `new_pumpkins` नामक एक डेटा फ्रेम प्राप्त किया है, जो निम्नलिखित के समान है:
@ -99,25 +98,25 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> डेटा को साफ करने का कोड [`notebook.ipynb`](notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ में समान सफाई चरणों का प्रदर्शन किया है और निम्नलिखित अभिव्यक्ति का उपयोग करके `DayOfYear` कॉलम की गणना की है:
> डेटा को साफ करने का कोड [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb) में उपलब्ध है। हमने पिछले पाठ में समान सफाई चरणों का पालन किया है और `DayOfYear` कॉलम की गणना निम्नलिखित अभिव्यक्ति का उपयोग करके की है:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
अब जब आपको लिनियर रिग्रेशन के पीछे की गणितीय अवधारणाओं की समझ हो गई है, तो आइए एक रिग्रेशन मॉडल बनाएं और देखें कि हम कद्दू के पैकेजों की कीमतों की भविष्यवाणी कर सकते हैं या नहीं। कोई व्यक्ति जो छुट्टी के लिए कद्दू पैच खरीद रहा है, वह इस जानकारी का उपयोग कद्दू पैच के लिए कद्दू पैकेजों की खरीद को अनुकूलित करने के लिए कर सकता है।
अब जब आपको लिनियर रिग्रेशन के पीछे के गणित की समझ हो गई है, तो आइए एक रिग्रेशन मॉडल बनाएं और देखें कि क्या हम यह भविष्यवाणी कर सकते हैं कि कद्दू के किस पैकेज की कीमत सबसे अच्छी होगी। कोई व्यक्ति जो छुट्टी के लिए कद्दू का पैच खरीद रहा है, वह इस जानकारी का उपयोग कद्दू के पैकेजों की खरीद को अनुकूलित करने के लिए कर सकता है।
## सहसंबंध की तलाश
[![मशीन लर्निंग के लिए शुरुआती - सहसंबंध की तलाश: लिनियर रिग्रेशन की कुंजी](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "मशीन लर्निंग के लिए शुरुआती - सहसंबंध की तलाश: लिनियर रिग्रेशन की कुंजी")
[![शुरुआती के लिए मशीन लर्निंग - सहसंबंध की तलाश: लिनियर रिग्रेशन की कुंजी](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "शुरुआती के लिए मशीन लर्निंग - सहसंबंध की तलाश: लिनियर रिग्रेशन की कुंजी")
> 🎥 ऊपर दी गई छवि पर क्लिक करें और सहसंबंध का संक्षिप्त वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें और सहसंबंध का एक छोटा वीडियो देखें।
पिछले पाठ से आपने शायद देखा ह कि विभिन्न महीनों के लिए औसत कीमत इस प्रकार दिखती है:
पिछले पाठ से आपने शायद देखा होगा कि विभिन्न महीनों के लिए औसत कीमत इस प्रकार दिखती है:
<img alt="महीने के अनुसार औसत कीमत" src="../2-Data/images/barchart.png" width="50%"/>
यह सुझाव देता है कि कुछ सहसंबंध होना चाहिए, और हम `Month` और `Price` के बीच या `DayOfYear` और `Price` के बीच संबंध की भविष्यवाणी करने के लिए लिनियर रिग्रेशन मॉडल को प्रशिक्षित करने का प्रयास कर सकते हैं। यहा स्कैटरप्लॉट है जो बाद के संबंध को दिखाता है:
यह सुझाव देता है कि कुछ सहसंबंध हो सकता है, और हम `Month` और `Price` के बीच, या `DayOfYear` और `Price` के बीच संबंध की भविष्यवाणी करने के लिए एक लिनियर रिग्रेशन मॉडल को प्रशिक्षित करने का प्रयास कर सकते हैं। यहाँ एक स्कैटरप्लॉट है जो बाद के संबंध को दिखाता है:
<img alt="साल के दिन बनाम कीमत का स्कैटरप्लॉट" src="images/scatter-dayofyear.png" width="50%" />
@ -128,7 +127,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
ऐसा लगता है कि सहसंबंध काफी छोटा है, `Month` के लिए -0.15 और `DayOfMonth` के लिए -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि विभिन्न कद्दू की किस्मों के लिए कीमतों के अलग-अलग समूह हैं। इस परिकल्पना की पुष्टि करने के लिए, आइए प्रत्येक कद्दू श्रेणी को एक अलग रंग का उपयोग करके प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन को `ax` पैरामीटर पास करके हम सभी पॉइंट्स को एक ही ग्राफ पर प्लॉट कर सकते हैं:
ऐसा लगता है कि सहसंबंध बहुत छोटा है, `Month` के लिए -0.15 और `DayOfMonth` के लिए -0.17, लेकिन एक और महत्वपूर्ण संबंध हो सकता है। ऐसा लगता है कि विभिन्न कद्दू की किस्मों के लिए कीमतों के अलग-अलग समूह हैं। इस परिकल्पना की पुष्टि करने के लिए, आइए प्रत्येक कद्दू श्रेणी को एक अलग रंग का उपयोग करके प्लॉट करें। `scatter` प्लॉटिंग फ़ंक्शन में `ax` पैरामीटर पास करके हम सभी बिंदुओं को एक ही ग्राफ़ पर प्लॉट कर सकते हैं:
```python
ax=None
@ -140,13 +139,13 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<img alt="साल के दिन बनाम कीमत का स्कैटरप्लॉट" src="images/scatter-dayofyear-color.png" width="50%" />
हमारी जांच से पता चलता है कि तारीख की तुलना में किस्म का कुल कीमत पर अधिक प्रभाव पड़ता है। हम इसे बार ग्राफ के साथ देख सकते हैं:
हमारी जांच से पता चलता है कि किस्म का समग्र कीमत पर तारीख की तुलना में अधिक प्रभाव है। हम इसे बार ग्राफ के साथ देख सकते हैं:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="किस्म बनाम कीमत का बार ग्राफ" src="images/price-by-variety.png" width="50%" />
<img alt="किस्म बनाम कीमत का बार ग्राफ" src="images/price-by-variety.png" width="50%" />
आइए फिलहाल केवल एक कद्दू की किस्म, 'पाई टाइप', पर ध्यान केंद्रित करें और देखें कि तारीख का कीमत पर क्या प्रभाव पड़ता है:
@ -156,22 +155,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="साल के दिन बनाम कीमत का स्कैटरप्लॉट" src="images/pie-pumpkins-scatter.png" width="50%" />
यदि हम अब `corr` फ़ंक्शन का उपयोग करके `Price` और `DayOfYear` के बीच सहसंबंध की गणना करते हैं, तो हमें कुछ `-0.27` जैसा मिलेगा - जो इंगित करता है कि एक भविष्यवाणी मॉडल को प्रशिक्षित करना समझ में आता है।
यदि हम अब `corr` फ़ंक्शन का उपयोग करके `Price` और `DayOfYear` के बीच सहसंबंध की गणना करते हैं, तो हमें कुछ `-0.27` जैसा मिलेगा - जिसका अर्थ है कि एक भविष्यवाणी मॉडल को प्रशिक्षित करना समझ में आता है।
> लिनियर रिग्रेशन मॉडल को प्रशिक्षित करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा साफ है। लिनियर रिग्रेशन खाली मानों के साथ अच्छा काम नहीं करता है, इसलिए सभी खाली सेल्स को हटाना समझ में आता है:
> एक लिनियर रिग्रेशन मॉडल को प्रशिक्षित करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि हमारा डेटा साफ है। लिनियर रिग्रेशन खाली मानों के साथ अच्छा काम नहीं करता है, इसलिए सभी खाली कोशिकाओं से छुटकारा पाना समझदारी है:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
एक अन्य दृष्टिकोण यह होगा कि उन खाली मानों को संबंधित कॉलम के औसत मानों से भर दिया जाए।
एक और दृष्टिकोण यह होगा कि उन खाली मानों को संबंधित कॉलम के औसत मानों से भर दिया जाए।
## सरल लिनियर रिग्रेशन
[![मशीन लर्निंग के लिए शुरुआती - Scikit-learn का उपयोग करके लिनियर और पॉलिनोमियल रिग्रेशन](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "मशीन लर्निंग के लिए शुरुआती - Scikit-learn का उपयोग करके लिनियर और पॉलिनोमियल रिग्रेशन")
[![शुरुआती के लिए मशीन लर्निंग - Scikit-learn का उपयोग करके लिनियर और पॉलिनोमियल रिग्रेशन](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "शुरुआती के लिए मशीन लर्निंग - Scikit-learn का उपयोग करके लिनियर और पॉलिनोमियल रिग्रेशन")
> 🎥 ऊपर दी गई छवि पर क्लिक करें और लिनियर और पॉलिनोमियल रिग्रेशन का संक्षिप्त वीडियो देखें।
> 🎥 ऊपर दी गई छवि पर क्लिक करें और लिनियर और पॉलिनोमियल रिग्रेशन का एक छोटा वीडियो देखें।
हमारे लिनियर रिग्रेशन मॉडल को प्रशिक्षित करने के लिए, हम **Scikit-learn** लाइब्रेरी का उपयोग करेंगे।
@ -181,31 +180,31 @@ 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`-टिंग के बाद सभी रिग्रेशन गुणांक होते हैं, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक गुणांक है, जो लगभग `-0.017` होना चाहिए। इसका मतलब है कि समय के साथ कीमतें थोड़ी गिरती दिखती हैं, लेकिन बहुत ज्यादा नहीं, लगभग 2 सेंट प्रति दिन। हम Y-एक्सिस के साथ रिग्रेशन के इंटरसेक्शन पॉइंट को `lin_reg.intercept_` का उपयोग करके भी एक्सेस कर सकते हैं - यह हमारे मामले में लगभग `21` होगा, जो साल की शुरुआत में कीमत को इंगित करता है।
`LinearRegression` ऑब्जेक्ट में `fit`-टिंग के बाद रिग्रेशन के सभी गुणांक होते हैं, जिन्हें `.coef_` प्रॉपर्टी का उपयोग करके एक्सेस किया जा सकता है। हमारे मामले में, केवल एक गुणांक है, जो लगभग `-0.017` होना चाहिए। इसका मतलब है कि समय के साथ कीमतें थोड़ी गिरती दिखती हैं, लेकिन ज्यादा नहीं, लगभग 2 सेंट प्रति दिन। हम रिग्रेशन के Y-अक्ष के साथ इंटरसेक्शन पॉइंट को `lin_reg.intercept_` का उपयोग करके भी एक्सेस कर सकते हैं - यह हमारे मामले में लगभग `21` होगा, जो साल की शुरुआत में कीमत को इंगित करता है।
यह देखने के लिए कि हमारा मॉडल कितना सटीक है, हम टेस्ट डेटा सेट पर कीमतों की भविष्यवाणी कर सकते हैं और फिर देख सकते हैं कि हमारी भविष्यवाणियां अपेक्षित मानों के कितनी करीब हैं। यह मीन स्क्वायर एरर (MSE) मेट्रिक्स का उपयोग करके किया जा सकता है, जो अपेक्षित और भविष्यवाणी किए गए मानों के बीच सभी वर्गीकृत अंतर का औसत है।
यह देखने के लिए कि हमारा मॉडल कितना सटीक है, हम टेस्ट डेटा सेट पर कीमतों की भविष्यवाणी कर सकते हैं, और फिर यह माप सकते हैं कि हमारी भविष्यवाणियां अपेक्षित मानों के कितनी करीब हैं। यह औसत वर्ग त्रुटि (MSE) मेट्रिक्स का उपयोग करके किया जा सकता है, जो अपेक्षित और भविष्यवाणी किए गए मान के बीच सभी वर्गीय अंतर का औसत है।
```python
pred = lin_reg.predict(X_test)
@ -228,19 +227,19 @@ plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
```
<img alt="रैखिक रिग्रेशन" src="images/linear-results.png" width="50%" />
<img alt="Linear regression" src="images/linear-results.png" width="50%" />
## बहुपद रिग्रेशन
रैखिक रिग्रेशन का एक और प्रकार बहुपद रिग्रेशन है। कभी-कभी चर के बीच रैखिक संबंध होता है - जैसे कि कद्दू का आकार बढ़ने पर उसकी कीमत बढ़ती है - लेकिन कभी-कभी इन संबंधों को एक समतल या सीधी रेखा के रूप में प्लॉट नहीं किया जा सकता।
रैखिक रिग्रेशन का एक अन्य प्रकार बहुपद रिग्रेशन है। कभी-कभी चर के बीच रैखिक संबंध होता है - जैसे कि कद्दू का आकार बढ़ने पर उसकी कीमत बढ़ती है - लेकिन कभी-कभी इन संबंधों को एक समतल या सीधी रेखा के रूप में प्लॉट नहीं किया जा सकता।
✅ यहां [कुछ और उदाहरण](https://online.stat.psu.edu/stat501/lesson/9/9.8) हैं जो बहुपद रिग्रेशन का उपयोग कर सकते हैं।
Date और Price के बीच संबंध पर फिर से नज़र डालें। क्या यह स्कैटरप्लॉट ऐसा लगता है कि इसे सीधी रेखा से विश्लेषित किया जाना चाहिए? क्या कीमतें बदल नहीं सकतीं? इस मामले में, आप बहुपद रिग्रेशन आज़मा सकते हैं।
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) शामिल है जो डेटा प्रोसेसिंग के विभिन्न चरणों को एक साथ जोड़ने में मदद करता है। एक **पाइपलाइन** **अनुमानकर्ताओं** की एक श्रृंखला है। हमारे मामले में, हम एक पाइपलाइन बनाएंगे जो पहले हमारे मॉडल में बहुपद विशेषताएँ जोड़ती है और फिर रिग्रेशन को प्रशिक्षित करती है:
@ -255,32 +254,32 @@ pipeline.fit(X_train,y_train)
`PolynomialFeatures(2)` का उपयोग करने का मतलब है कि हम इनपुट डेटा से सभी दूसरे-डिग्री बहुपद शामिल करेंगे। हमारे मामले में इसका मतलब केवल `DayOfYear`<sup>2</sup> होगा, लेकिन यदि दो इनपुट चर X और Y दिए गए हैं, तो यह X<sup>2</sup>, XY और Y<sup>2</sup> जोड़ देगा। यदि हम चाहें तो उच्च डिग्री बहुपद का उपयोग भी कर सकते हैं।
पाइपलाइन का उपयोग उसी तरह किया जा सकता है जैसे मूल `LinearRegression` ऑब्जेक्ट का, यानी हम पाइपलाइन को `fit` कर सकते हैं और फिर `predict` का उपयोग करके भविष्यवाणी परिणाम प्राप्त कर सकते हैं। यहां परीक्षण डेटा और अनुमानित वक्र दिखाने वाला ग्राफ है:
पाइपलाइन का उपयोग उसी तरह किया जा सकता है जैसे मूल `LinearRegression` ऑब्जेक्ट का उपयोग किया जाता है, यानी हम पाइपलाइन को `fit` कर सकते हैं और फिर `predict` का उपयोग करके भविष्यवाणी परिणाम प्राप्त कर सकते हैं। यहां परीक्षण डेटा और अनुमानित वक्र दिखाने वाला ग्राफ है:
<img alt="बहुपद रिग्रेशन" src="images/poly-results.png" width="50%" />
<img alt="Polynomial regression" src="images/poly-results.png" width="50%" />
बहुपद रिग्रेशन का उपयोग करके, हम थोड़ा कम MSE और थोड़ा अधिक निर्धारण प्राप्त कर सकते हैं, लेकिन यह महत्वपूर्ण नहीं है। हमें अन्य विशेषताओं को ध्यान में रखना होगा!
बहुपद रिग्रेशन का उपयोग करके, हम थोड़ा कम MSE और थोड़ा अधिक निर्धारण प्राप्त कर सकते हैं, लेकिन यह बहुत महत्वपूर्ण नहीं है। हमें अन्य विशेषताओं को ध्यान में रखना होगा!
> आप देख सकते हैं कि न्यूनतम कद्दू की कीमतें कहीं हैलोवीन के आसपास देखी जाती हैं। आप इसे कैसे समझाएंगे?
🎃 बधाई हो, आपने एक ऐसा मॉडल बनाया है जो पाई कद्दू की कीमत का अनुमान लगाने में मदद कर सकता है। आप शायद सभी प्रकार के कद्दू के लिए वही प्रक्रिया दोहरा सकते हैं, लेकिन यह थकाऊ होगा। अब चलिए सीखते हैं कि अपने मॉडल में कद्दू की विविधता को कैसे ध्यान में रखा जाए!
🎃 बधाई हो, आपने एक ऐसा मॉडल बनाया है जो पाई कद्दू की कीमत का अनुमान लगाने में मदद कर सकता है। आप शायद सभी प्रकार के कद्दू के लिए वही प्रक्रिया दोहरा सकते हैं, लेकिन यह थोड़ा थकाऊ होगा। अब चलिए सीखते हैं कि अपने मॉडल में कद्दू की विविधता को कैसे ध्यान में रखा जाए!
## श्रेणीबद्ध विशेषताएँ
आदर्श दुनिया में, हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू की किस्मों क कीमतों का अनुमान लगाना चाहते हैं। हालांकि, `Variety` कॉलम `Month` जैसे कॉलम से थोड़ा अलग है, क्योंकि इसमें गैर-संख्या मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध** कहा जाता है।
आदर्श दुनिया में, हम एक ही मॉडल का उपयोग करके विभिन्न कद्दू की किस्मों के लिए कीमतों का अनुमान लगाना चाहते हैं। हालांकि, `Variety` कॉलम `Month` जैसे कॉलम से थोड़ा अलग है, क्योंकि इसमें गैर-संख्या मान होते हैं। ऐसे कॉलम को **श्रेणीबद्ध** कहा जाता है।
[![श्रेणीबद्ध विशेषताओं के साथ रैखिक रिग्रेशन](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "श्रेणीबद्ध विशेषताओं के साथ रैखिक रिग्रेशन")
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 ऊपर दी गई छवि पर क्लिक करें श्रेणीबद्ध विशेषताओं का उपयोग करने का एक छोटा वीडियो देखने के लिए।
यहां आप देख सकते हैं कि किस्म के आधार पर औसत कीमत कैसे बदलती है:
<img alt="किस्म के आधार पर औसत कीमत" src="images/price-by-variety.png" width="50%" />
<img alt="Average price by variety" src="images/price-by-variety.png" width="50%" />
किस्म को ध्यान में रखने के लिए, हमें पहले इसे संख्यात्मक रूप में बदलना होगा, या **एन्कोड** करना होगा। इसे करने के कई तरीके हैं:
* सरल **संख्यात्मक एन्कोडिंग** विभिन्न किस्मों की एक तालिका बनाएगी और फिर किस्म के नाम को उस तालिका में एक इंडेक्स से बदल देगी। यह रैखिक रिग्रेशन के लिए सबसे अच्छा विचार नहीं है, क्योंकि रैखिक रिग्रेशन इंडेक्स के वास्तविक संख्यात्मक मान को लेता है और इसे परिणाम में जोड़ता है, गुणांक से गुणा करता है। हमारे मामले में, इंडेक्स नंबर और कीमत के बीच संबंध स्पष्ट रूप से गैर-रैखिक है, भले ही हम सुनिश्चित करें कि इंडेक्स किसी विशिष्ट तरीके से क्रमबद्ध हैं।
* **वन-हॉट एन्कोडिंग** `Variety` कॉलम को 4 अलग-अलग कॉलम से बदल देगा, प्रत्येक किस्म के लिए एक। प्रत्येक कॉलम में `1` होगा यदि संबंधित पंक्ति दी गई किस्म की है, और `0` अन्यथा। इसका मतलब है कि रैखिक रिग्रेशन में चार गुणांक होंगे, प्रत्येक कद्दू की किस्म के लिए एक, जो उस विशेष किस्म के लिए "शुरुआती कीमत" (या "अतिरिक्त कीमत") के लिए जिम्मेदार होगा।
* **वन-हॉट एन्कोडिंग** `Variety` कॉलम को 4 अलग-अलग कॉलम से बदल देगा, प्रत्येक किस्म के लिए एक। प्रत्येक कॉलम में `1` होगा यदि संबंधित पंक्ति दी गई किस्म की है, और अन्यथा `0`। इसका मतलब है कि रैखिक रिग्रेशन में चार गुणांक होंगे, प्रत्येक कद्दू की किस्म के लिए एक, जो उस विशेष किस्म के लिए "शुरुआती कीमत" (या "अतिरिक्त कीमत") के लिए जिम्मेदार होगा।
नीचे दिया गया कोड दिखाता है कि हम किस्म को वन-हॉट एन्कोड कैसे कर सकते हैं:
@ -306,7 +305,7 @@ 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,7 +319,7 @@ y = new_pumpkins['Price']
## सब कुछ एक साथ रखना
सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर दिए गए उदाहरण से संयुक्त (वन-हॉट एन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा का उपयोग बहुपद रिग्रेशन के साथ कर सकते हैं। आपकी सुविधा के लिए यहां पूरा कोड है:
सबसे अच्छा मॉडल बनाने के लिए, हम ऊपर दिए गए उदाहरण से संयुक्त (वन-हॉट एन्कोडेड श्रेणीबद्ध + संख्यात्मक) डेटा का उपयोग बहुपद रिग्रेशन के साथ कर सकते हैं। आपकी सुविधा के लिए यहां पूरा कोड दिया गया है:
```python
# set up training data
@ -348,7 +347,7 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
यह हमें लगभग 97% का सबसे अच्छा निर्धारण गुणांक और MSE=2.23 (~8% भविष्यवाणी त्रुटि) देना चाहिए।
यह हमें लगभग 97% का सर्वोत्तम निर्धारण गुणांक और MSE=2.23 (~8% भविष्यवाणी त्रुटि) देना चाहिए।
| मॉडल | MSE | निर्धारण |
|-------|-----|---------------|
@ -365,11 +364,11 @@ print('Model determination: ', score)
इस नोटबुक में कई अलग-अलग चर का परीक्षण करें और देखें कि सहसंबंध मॉडल की सटीकता से कैसे मेल खाता है।
## [पाठ के बाद क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
इस पाठ में हमने रैखिक रिग्रेशन के बारे में सीखा। रिग्रेशन के अन्य महत्वपूर्ण प्रकार भी हैं। Stepwise, Ridge, Lasso और Elasticnet तकनीकों के बारे में पढ़ें। अधिक जानने के लिए एक अच्छा कोर्स [स्टैनफोर्ड स्टैटिस्टिकल लर्निंग कोर्स](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) है।
इस पाठ में हमने रैखिक रिग्रेशन के बारे में सीखा। रिग्रेशन के अन्य महत्वपूर्ण प्रकार भी हैं। Stepwise, Ridge, Lasso और Elasticnet तकनीकों के बारे में पढ़ें। अधिक सीखने के लिए एक अच्छा कोर्स [स्टैनफोर्ड स्टैटिस्टिकल लर्निंग कोर्स](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) है।
## असाइनमेंट
@ -378,4 +377,4 @@ print('Model determination: ', score)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,23 +1,23 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "72b5bae0879baddf6aafc82bb07b8776",
"translation_date": "2025-09-03T22:30:12+00:00",
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T10:14:06+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "hi"
}
-->
# श्रेणियों की भविष्यवाणी के लिए लॉजिस्टिक रिग्रेशन
![लॉजिस्टिक बनाम लीनियर रिग्रेशन इन्फोग्राफिक](../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.hi.png)
![लॉजिस्टिक बनाम लीनियर रिग्रेशन इन्फोग्राफिक](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png)
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
## परिचय
रिग्रेशन पर इस अंतिम पाठ में, जो कि मशीन लर्निंग की एक बुनियादी _क्लासिक_ तकनीक है, हम लॉजिस्टिक रिग्रेशन पर ध्यान देंगे। आप इस तकनीक का उपयोग पैटर्न खोजने और बाइनरी श्रेणियों की भविष्यवाणी करने के लिए करेंगे। क्या यह कैंडी चॉकलेट है या नहीं? क्या यह बीमारी संक्रामक है या नहीं? क्या यह ग्राहक इस उत्पाद को चुनेगा या नहीं?
रिग्रेशन पर इस अंतिम पाठ में, जो कि एक बुनियादी _क्लासिक_ मशीन लर्निंग तकनीक है, हम लॉजिस्टिक रिग्रेशन पर नज़र डालेंगे। आप इस तकनीक का उपयोग पैटर्न खोजने और बाइनरी श्रेणियों की भविष्यवाणी करने के लिए करेंगे। क्या यह कैंडी चॉकलेट है या नहीं? क्या यह बीमारी संक्रामक है या नहीं? क्या यह ग्राहक इस उत्पाद को चुनेगा या नहीं?
इस पाठ में, आप सीखेंगे:
@ -30,19 +30,19 @@ CO_OP_TRANSLATOR_METADATA:
कद्दू डेटा के साथ काम करने के बाद, अब हम इसके साथ पर्याप्त रूप से परिचित हैं कि यह महसूस कर सकें कि इसमें एक बाइनरी श्रेणी है जिसके साथ हम काम कर सकते हैं: `Color`
आइए एक लॉजिस्टिक रिग्रेशन मॉडल बनाएं ताकि यह भविष्यवाणी की जा सके कि कुछ वेरिएबल्स को देखते हुए, _किस रंग का कद्दू होने की संभावना है_ (नारंगी 🎃 या सफेद 👻)।
आइए एक लॉजिस्टिक रिग्रेशन मॉडल बनाएं ताकि कुछ वेरिएबल्स के आधार पर _किसी दिए गए कद्दू का रंग क्या होगा_ (नारंगी 🎃 या सफेद 👻) की भविष्यवाणी की जा सके
> हम रिग्रेशन के बारे में एक पाठ में बाइनरी वर्गीकरण की बात क्यों कर रहे हैं? केवल भाषाई सुविधा के लिए, क्योंकि लॉजिस्टिक रिग्रेशन [वास्तव में एक वर्गीकरण विधि](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression) है, हालांकि यह एक लीनियर-आधारित है। डेटा को वर्गीकृत करने के अन्य तरीकों के बारे में अगले पाठ समूह में जानें।
> हम रिग्रेशन के बारे में पाठ समूह में बाइनरी वर्गीकरण की बात क्यों कर रहे हैं? केवल भाषाई सुविधा के लिए, क्योंकि लॉजिस्टिक रिग्रेशन [वास्तव में एक वर्गीकरण विधि](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression) है, हालांकि यह एक लीनियर-आधारित विधि है। डेटा को वर्गीकृत करने के अन्य तरीकों के बारे में अगले पाठ समूह में जानें।
## प्रश्न को परिभाषित करें
हमारे उद्देश्यों के लिए, हम इसे बाइनरी के रूप में व्यक्त करेंगे: 'सफेद' या 'सफेद नहीं'। हमारे डेटासेट में एक 'धारीदार' श्रेणी भी है लेकिन इसके कुछ ही उदाहरण हैं, इसलिए हम इसका उपयोग नहीं करेंगे। यह वैसे भी तब गायब हो जाती है जब हम डेटासेट से null मानों को हटा देते हैं।
हमारे उद्देश्यों के लिए, हम इसे बाइनरी के रूप में व्यक्त करेंगे: 'सफेद' या 'सफेद नहीं'। हमारे डेटासेट में एक 'धारीदार' श्रेणी भी है, लेकिन इसके कुछ ही उदाहरण हैं, इसलिए हम इसका उपयोग नहीं करेंगे। यह वैसे भी तब गायब हो जाती है जब हम डेटासेट से null मानों को हटा देते हैं।
> 🎃 मजेदार तथ्य, हम कभी-कभी सफेद कद्दू को 'भूत' कद्दू कहते हैं। इन्हें तराशना बहुत आसान नहीं होता, इसलिए ये नारंगी वाले जितने लोकप्रिय नहीं होते लेकिन ये दिखने में बहुत अच्छे लगते हैं! तो हम अपने प्रश्न को इस तरह भी पुनः स्वरूपित कर सकते हैं: 'भूत' या 'भूत नहीं'। 👻
> 🎃 मजेदार तथ्य, हम कभी-कभी सफेद कद्दू को 'भूत' कद्दू कहते हैं। इन्हें तराशना बहुत आसान नहीं होता, इसलिए ये नारंगी कद्दू जितने लोकप्रिय नहीं हैं, लेकिन ये देखने में बहुत अच्छे लगते हैं! तो हम अपने प्रश्न को इस तरह भी पुनः स्वरूपित कर सकते हैं: 'भूत' या 'भूत नहीं'। 👻
## लॉजिस्टिक रिग्रेशन के बारे में
लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशन से अलग है, जिसे आपने पहले सीखा था, कुछ महत्वपूर्ण तरीकों से
लॉजिस्टिक रिग्रेशन कुछ महत्वपूर्ण तरीकों से लीनियर रिग्रेशन से अलग है, जिसे आपने पहले सीखा था।
[![शुरुआती के लिए मशीन लर्निंग - लॉजिस्टिक रिग्रेशन को समझना](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "शुरुआती के लिए मशीन लर्निंग - लॉजिस्टिक रिग्रेशन को समझना")
@ -50,33 +50,33 @@ CO_OP_TRANSLATOR_METADATA:
### बाइनरी वर्गीकरण
लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशन के समान सुविधाएँ प्रदान नहीं करता। पूर्व बाइनरी श्रेणी ("सफेद या सफेद नहीं") के बारे में भविष्यवाणी प्रदान करता है जबकि बाद वाला निरंतर मानों की भविष्यवाणी करने में सक्षम है, उदाहरण के लिए कद्दू की उत्पत्ति और कटाई के समय को देखते हुए, _इसकी कीमत कितनी बढ़ेगी_
लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशन के समान सुविधाएँ प्रदान नहीं करता। पूर्व बाइनरी श्रेणी ("सफेद या सफेद नहीं") के बारे में भविष्यवाणी प्रदान करता है, जबकि बाद वाला निरंतर मानों की भविष्यवाणी करने में सक्षम है, उदाहरण के लिए कद्दू की उत्पत्ति और कटाई के समय को देखते हुए, _इसकी कीमत कितनी बढ़ेगी_
![कद्दू वर्गीकरण मॉडल](../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.hi.png)
> इन्फोग्राफिक [Dasani Madipalli](https://twitter.com/dasani_decoded) द्वारा
![कद्दू वर्गीकरण मॉडल](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png)
> इन्फोग्राफिक [दसानी मडिपल्ली](https://twitter.com/dasani_decoded) द्वारा
### अन्य वर्गीकरण
लॉजिस्टिक रिग्रेशन के अन्य प्रकार भी हैं, जिनमें मल्टीनोमियल और ऑर्डिनल शामिल हैं:
- **मल्टीनोमियल**, जिसमें एक से अधिक श्रेणियां होती हैं - "नारंगी, सफेद, और धारीदार"।
- **ऑर्डिनल**, जिसमें क्रमबद्ध श्रेणियां होती हैं, उपयोगी यदि हम अपने परिणामों को तार्किक रूप से क्रमबद्ध करना चाहते हैं, जैसे हमारे कद्दू जो आकारों की एक सीमित संख्या (mini, sm, med, lg, xl, xxl) द्वारा क्रमबद्ध होते हैं।
- **मल्टीनोमियल**, जिसमें एक से अधिक श्रेणियां होती हैं - "नारंगी, सफेद और धारीदार"।
- **ऑर्डिनल**, जिसमें क्रमबद्ध श्रेणियां होती हैं, उपयोगी यदि हम अपने परिणामों को तार्किक रूप से क्रमबद्ध करना चाहते हैं, जैसे हमारे कद्दू जो आकारों की सीमित संख्या (मिनी, स्मॉल, मीडियम, लार्ज, एक्सएल, एक्सएक्सएल) द्वारा क्रमबद्ध होते हैं।
![मल्टीनोमियल बनाम ऑर्डिनल रिग्रेशन](../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.hi.png)
![मल्टीनोमियल बनाम ऑर्डिनल रिग्रेशन](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png)
### वेरिएबल्स को सहसंबद्ध होने की आवश्यकता नहीं है
### वेरिएबल्स का सहसंबंध होना आवश्यक नहीं है
याद है कि लीनियर रिग्रेशन अधिक सहसंबद्ध वेरिएबल्स के साथ बेहतर काम करता था? लॉजिस्टिक रिग्रेशन इसके विपरीत है - वेरिएबल्स को संरेखित होने की आवश्यकता नहीं है। यह इस डेटा के लिए काम करता है जिसमें कुछ हद तक कमजोर सहसंबंध हैं।
याद रखें कि लीनियर रिग्रेशन अधिक सहसंबद्ध वेरिएबल्स के साथ बेहतर काम करता था? लॉजिस्टिक रिग्रेशन इसके विपरीत है - वेरिएबल्स का सहसंबद्ध होना आवश्यक नहीं है। यह इस डेटा के लिए काम करता है जिसमें सहसंबंध अपेक्षाकृत कमजोर हैं।
### आपको बहुत सारे साफ डेटा की आवश्यकता है
लॉजिस्टिक रिग्रेशन अधिक सटीक परिणाम देगा यदि आप अधिक डेटा का उपयोग करते हैं; हमारा छोटा डेटासेट इस कार्य के लिए आदर्श नहीं है, इसलिए इसे ध्यान में रखें।
लॉजिस्टिक रिग्रेशन अधिक डेटा का उपयोग करने पर अधिक सटीक परिणाम देगा; हमारा छोटा डेटासेट इस कार्य के लिए आदर्श नहीं है, इसलिए इसे ध्यान में रखें।
[![शुरुआती के लिए मशीन लर्निंग - लॉजिस्टिक रिग्रेशन के लिए डेटा विश्लेषण और तैयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "शुरुआती के लिए मशीन लर्निंग - लॉजिस्टिक रिग्रेशन के लिए डेटा विश्लेषण और तैयारी")
> 🎥 लीनियर रिग्रेशन के लिए डेटा तैयार करने का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर दी गई छवि पर क्लिक करें।
✅ उन प्रकार के डेटा के बारे में सोचें जो लॉजिस्टिक रिग्रेशन के लिए उपयुक्त होंगे
✅ उन प्रकार के डेटा के बारे में सोचें जो लॉजिस्टिक रिग्रेशन के लिए उपयुक्त हो सकते हैं
## अभ्यास - डेटा को व्यवस्थित करें
@ -100,11 +100,11 @@ CO_OP_TRANSLATOR_METADATA:
### विज़ुअलाइज़ेशन - श्रेणीबद्ध प्लॉट
अब तक आपने [स्टार्टर नोटबुक](./notebook.ipynb) को कद्दू डेटा के साथ फिर से लोड कर लिया है और इसे इस तरह से साफ किया है कि इसमें कुछ वेरिएबल्स, जिनमें `Color` शामिल है, का डेटासेट संरक्षित हो। आइए नोटबुक में डेटा फ्रेम को एक अलग लाइब्रेरी का उपयोग करके विज़ुअलाइज़ करें: [Seaborn](https://seaborn.pydata.org/index.html), जो पहले उपयोग किए गए Matplotlib पर आधारित है।
अब तक आपने [स्टार्टर नोटबुक](../../../../2-Regression/4-Logistic/notebook.ipynb) को कद्दू डेटा के साथ फिर से लोड कर लिया है और इसे इस तरह से साफ कर लिया है कि इसमें कुछ वेरिएबल्स, जिनमें `Color` शामिल है, का डेटासेट संरक्षित हो। आइए नोटबुक में डेटा फ्रेम को एक अलग लाइब्रेरी का उपयोग करके विज़ुअलाइज़ करें: [Seaborn](https://seaborn.pydata.org/index.html), जो पहले उपयोग किए गए Matplotlib पर आधारित है।
Seaborn आपके डेटा को विज़ुअलाइज़ करने के कुछ शानदार तरीके प्रदान करता है। उदाहरण के लिए, आप `Variety` और `Color` के लिए डेटा वितरण की तुलना एक श्रेणीबद्ध प्लॉट में कर सकते हैं।
1. कद्दू डेटा `pumpkins` का उपयोग करके और प्रत्येक कद्दू श्रेणी (नारंगी या सफेद) के लिए रंग मानचित्रण निर्दिष्ट करके `catplot` फ़ंक्शन का उपयोग करके ऐसा प्लॉट बनाएं:
1. `catplot` फ़ंक्शन का उपयोग करके, हमारे कद्दू डेटा `pumpkins` का उपयोग करके, और प्रत्येक कद्दू श्रेणी (नारंगी या सफेद) के लिए रंग मैपिंग निर्दिष्ट करके ऐसा प्लॉट बनाएं:
```python
import seaborn as sns
@ -120,7 +120,7 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
)
```
![विज़ुअल डेटा का एक ग्रिड](../../../../translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.hi.png)
![विज़ुअल डेटा का एक ग्रिड](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png)
डेटा का अवलोकन करके, आप देख सकते हैं कि `Color` डेटा `Variety` से कैसे संबंधित है।
@ -142,7 +142,7 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
```
2. श्रेणीबद्ध एन्कोडर: यह नाममात्र वेरिएबल्स के लिए उपयुक्त है, जो श्रेणीबद्ध वेरिएबल्स हैं जहां उनका डेटा तार्किक क्रम का पालन नहीं करता, जैसे हमारे डेटासेट में `Item Size` के अलावा सभी फीचर्स। यह एक वन-हॉट एन्कोडिंग है, जिसका अर्थ है कि प्रत्येक श्रेणी को एक बाइनरी कॉलम द्वारा दर्शाया जाता है: एन्कोडेड वेरिएबल 1 के बराबर है यदि कद्दू उस `Variety` से संबंधित है और अन्यथा 0।
2. श्रेणीबद्ध एन्कोडर: यह नाममात्र वेरिएबल्स के लिए उपयुक्त है, जो श्रेणीबद्ध वेरिएबल्स हैं जहां उनका डेटा तार्किक क्रम का पालन नहीं करता, जैसे हमारे डेटासेट में `Item Size` के अलावा अन्य सभी फीचर्स। यह एक वन-हॉट एन्कोडिंग है, जिसका अर्थ है कि प्रत्येक श्रेणी को एक बाइनरी कॉलम द्वारा दर्शाया जाता है: एन्कोडेड वेरिएबल 1 के बराबर है यदि कद्दू उस `Variety` से संबंधित है और अन्यथा 0।
```python
from sklearn.preprocessing import OneHotEncoder
@ -151,7 +151,7 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
categorical_encoder = OneHotEncoder(sparse_output=False)
```
इसके बाद, `ColumnTransformer` का उपयोग कई एन्कोडर को एक ही चरण में संयोजित करने और उन्हें उपयुक्त कॉलम पर लागू करने के लिए किया जाता है।
इसके बाद, `ColumnTransformer` का उपयोग कई एन्कोडर्स को एक ही चरण में संयोजित करने और उन्हें उपयुक्त कॉलम पर लागू करने के लिए किया जाता है।
```python
from sklearn.compose import ColumnTransformer
@ -165,7 +165,7 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
encoded_features = ct.fit_transform(pumpkins)
```
दूसरी ओर, लेबल को एन्कोड करने के लिए, हम scikit-learn `LabelEncoder` क्लास का उपयोग करते हैं, जो एक उपयोगिता क्लास है जो लेबल को सामान्य बनाने में मदद करता है ताकि वे केवल 0 और n_classes-1 (यहां, 0 और 1) के बीच मान रें।
दूसरी ओर, लेबल को एन्कोड करने के लिए, हम scikit-learn `LabelEncoder` क्लास का उपयोग करते हैं, जो एक उपयोगिता क्लास है जो लेबल्स को सामान्य बनाने में मदद करता है ताकि वे केवल 0 और n_classes-1 (यहां, 0 और 1) के बीच मानों को शामिल करें।
```python
from sklearn.preprocessing import LabelEncoder
@ -184,7 +184,9 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
### वेरिएबल्स के बीच संबंधों का विश्लेषण करें
अब जब हमने अपने डेटा को पूर्व-प्रसंस्कृत कर लिया है, तो हम फीचर्स और लेबल के बीच संबंधों का विश्लेषण कर सकते हैं ताकि यह समझ सकें कि मॉडल फीचर्स को देखते हुए लेबल की भविष्यवाणी कितनी अच्छी तरह कर पाएगा। इस प्रकार के विश्लेषण को करने का सबसे अच्छा तरीका डेटा को प्लॉट करना है। हम फिर से Seaborn के `catplot` फ़ंक्शन का उपयोग करेंगे, `Item Size`, `Variety` और `Color` के बीच संबंधों को एक श्रेणीबद्ध प्लॉट में विज़ुअलाइज़ करने के लिए। डेटा को बेहतर तरीके से प्लॉट करने के लिए हम एन्कोडेड `Item Size` कॉलम और अनएन्कोडेड `Variety` कॉलम का उपयोग करेंगे।
अब जब हमने अपने डेटा को पूर्व-प्रसंस्कृत कर लिया है, तो हम फीचर्स और लेबल के बीच संबंधों का विश्लेषण कर सकते हैं ताकि यह समझ सकें कि मॉडल फीचर्स को देखते हुए लेबल की भविष्यवाणी कितनी अच्छी तरह कर पाएगा।
इस प्रकार के विश्लेषण को करने का सबसे अच्छा तरीका डेटा को प्लॉट करना है। हम फिर से Seaborn `catplot` फ़ंक्शन का उपयोग करेंगे, `Item Size`, `Variety` और `Color` के बीच संबंधों को एक श्रेणीबद्ध प्लॉट में विज़ुअलाइज़ करने के लिए। डेटा को बेहतर तरीके से प्लॉट करने के लिए हम एन्कोडेड `Item Size` कॉलम और अनएन्कोडेड `Variety` कॉलम का उपयोग करेंगे।
```python
palette = {
@ -204,7 +206,7 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
g.set_titles(row_template="{row_name}")
```
![विज़ुअल डेटा का एक कैटप्लॉट](../../../../translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.hi.png)
![विज़ुअल डेटा का एक कैटप्लॉट](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png)
### स्वॉर्म प्लॉट का उपयोग करें
@ -222,25 +224,25 @@ Seaborn आपके डेटा को विज़ुअलाइज़ क
sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette)
```
![विज़ुअल डेटा का एक स्वॉर्म](../../../../translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.hi.png)
![विज़ुअल डेटा का एक स्वॉर्म](../../../../2-Regression/4-Logistic/images/swarm_2.png)
**ध्यान दें**: ऊपर दिया गया कोड एक चेतावनी उत्पन्न कर सकता है, क्योंकि Seaborn इतने सारे डेटा पॉइंट्स को स्वॉर्म प्लॉट में दर्शाने में विफल रहता है। एक संभावित समाधान मार्कर के आकार को कम करना है, 'size' पैरामीटर का उपयोग करके। हालांकि, ध्यान दें कि इससे प्लॉट की पठनीयता प्रभावित होती है।
**ध्यान दें**: ऊपर दिया गया कोड एक चेतावनी उत्पन्न कर सकता है, क्योंकि Seaborn इतने सारे डेटा पॉइंट्स को स्वॉर्म प्लॉट में दर्शाने में विफल रहता है। एक संभावित समाधान मार्कर का आकार घटाना है, 'size' पैरामीटर का उपयोग करके। हालांकि, ध्यान दें कि यह प्लॉट की पठनीयता को प्रभावित करता है।
> **🧮 गणित दिखाएं**
>
> लॉजिस्टिक रिग्रेशन 'मैक्सिमम लाइकलीहुड' की अवधारणा पर निर्भर करता है, जिसमें [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) का उपयोग होता है। एक 'सिग्मॉइड फंक्शन' प्लॉट पर 'S' आकार जैसा दिखता है। यह एक मान लेता है और इसे 0 और 1 के बीच कहीं मैप करता है। इसका र 'लॉजिस्टिक र' भी कहलाता है। इसका सूत्र इस प्रकार दिखता है:
> लॉजिस्टिक रिग्रेशन 'मैक्सिमम लाइकलीहुड' की अवधारणा पर आधारित है, जिसमें [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) का उपयोग किया जाता है। एक 'सिग्मॉइड फंक्शन' प्लॉट पर 'S' आकार जैसा दिखता है। यह एक मान लेता है और इसे 0 और 1 के बीच कहीं मैप करता है। इसका कर्व 'लॉजिस्टिक कर्व' भी कहलाता है। इसका सूत्र इस प्रकार दिखता है:
>
> ![लॉजिस्टिक फंक्शन](../../../../translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.hi.png)
> ![लॉजिस्टिक फंक्शन](../../../../2-Regression/4-Logistic/images/sigmoid.png)
>
> जहां सिग्मॉइड का मध्य बिंदु x के 0 बिंदु पर होता है, L र का अधिकतम मान है, और k र की तीव्रता है। यदि फंक्शन का परिणाम 0.5 से अधिक है, तो संबंधित लेबल को बाइनरी विकल्प के '1' वर्ग में दिया जाएगा। यदि नहीं, तो इसे '0' के रूप में वर्गीकृत किया जाएगा।
> जहां सिग्मॉइड का मध्य बिंदु x के 0 बिंदु पर होता है, L कर्व का अधिकतम मान है, और k कर्व की तीव्रता है। यदि फंक्शन का परिणाम 0.5 से अधिक है, तो संबंधित लेबल को बाइनरी विकल्प के '1' वर्ग में दिया जाएगा। यदि नहीं, तो इसे '0' के रूप में वर्गीकृत किया जाएगा।
## अपना मॉडल बनाएं
Scikit-learn में इन बाइनरी वर्गीकरणों को खोजने के लिए एक मॉडल बनाना आश्चर्यजनक रूप से सरल है।
Scikit-learn में इन बाइनरी वर्गीकरण को खोजने के लिए एक मॉडल बनाना आश्चर्यजनक रूप से सरल है।
[![शुरुआती के लिए मशीन लर्निंग - डेटा वर्गीकरण के लिए लॉजिस्टिक रिग्रेशन](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "शुरुआती के लिए मशीन लर्निंग - डेटा वर्गीकरण के लिए लॉजिस्टिक रिग्रेशन")
> 🎥 लीनियर रिग्रेशन मॉडल बनाने का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर दी गई छवि पर क्लिक करें।
> 🎥 एक लीनियर रिग्रेशन मॉडल बनाने का संक्षिप्त वीडियो अवलोकन देखने के लिए ऊपर दी गई छवि पर क्लिक करें।
1. उन वेरिएबल्स का चयन करें जिन्हें आप अपने वर्गीकरण मॉडल में उपयोग करना चाहते हैं और `train_test_split()` को कॉल करके प्रशिक्षण और परीक्षण सेट को विभाजित करें:
@ -254,7 +256,7 @@ Scikit-learn में इन बाइनरी वर्गीकरणों
```
2. अब आप अपने मॉडल को प्रशिक्षित कर सकते हैं, `fit()` को अपने प्रशिक्षण डेटा के साथ कॉल करके, और इसके परिणाम को प्रिंट कर सकते हैं:
2. अब आप अपने मॉडल को प्रशिक्षण दे सकते हैं, `fit()` को अपने प्रशिक्षण डेटा के साथ कॉल करके, और इसके परिणाम को प्रिंट कर सकते हैं:
```python
from sklearn.metrics import f1_score, classification_report
@ -290,27 +292,27 @@ Scikit-learn में इन बाइनरी वर्गीकरणों
F1-score: 0.7457627118644068
```
## भ्रम मैट्रिक्स के माध्यम से बेहतर समझ
## बेहतर समझ के लिए एक कन्फ्यूजन मैट्रिक्स
जबकि आप ऊपर दिए गए आइटम को प्रिंट करके [शर्तों](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) में स्कोरबोर्ड रिपोर्ट प्राप्त कर सकते हैं, आप अपने मॉडल को अधिक आसानी से समझ सकते हैं यदि आप [भ्रम मैट्रिक्स](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) का उपयोग करें ताकि यह समझ सकें कि मॉडल कैसा प्रदर्शन कर रहा है।
जबकि आप ऊपर दिए गए आइटम्स को प्रिंट करके [शर्तों](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) में स्कोरबोर्ड रिपोर्ट प्राप्त कर सकते हैं, आप अपने मॉडल को अधिक आसानी से समझ सकते हैं यदि आप एक [कन्फ्यूजन मैट्रिक्स](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) का उपयोग करें ताकि यह समझ सकें कि मॉडल कैसा प्रदर्शन कर रहा है।
> 🎓 एक '[भ्रम मैट्रिक्स](https://wikipedia.org/wiki/Confusion_matrix)' (या 'त्रुटि मैट्रिक्स') एक तालिका है जो आपके मॉडल के सही बनाम गलत सकारात्मक और नकारात्मक को व्यक्त करती है, इस प्रकार भविष्यवाणियों की सटीकता को मापती है।
> 🎓 एक '[कन्फ्यूजन मैट्रिक्स](https://wikipedia.org/wiki/Confusion_matrix)' (या 'एरर मैट्रिक्स') एक तालिका है जो आपके मॉडल के सही बनाम गलत पॉज़िटिव्स और नेगेटिव्स को व्यक्त करती है, इस प्रकार भविष्यवाणियों की सटीकता को मापती है।
1. भ्रम मैट्रिक्स का उपयोग करने के लिए, `confusion_matrix()` को कॉल करें:
1. कन्फ्यूजन मैट्रिक्स का उपयोग करने के लिए, `confusion_matrix()` को कॉल करें:
```python
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, predictions)
```
अपने मॉडल के भ्रम मैट्रिक्स पर एक नज़र डालें:
अपने मॉडल की कन्फ्यूजन मैट्रिक्स पर एक नज़र डालें:
```output
array([[162, 4],
[ 11, 22]])
```
Scikit-learn में, भ्रम मैट्रिक्स की पंक्तियाँ (axis 0) वास्तविक लेबल हैं और कॉलम (axis 1) भविष्यवाणी किए गए लेबल हैं।
Scikit-learn में, कन्फ्यूजन मैट्रिक्स की पंक्तियाँ (axis 0) वास्तविक लेबल्स हैं और कॉलम्स (axis 1) भविष्यवाणी किए गए लेबल्स हैं।
| | 0 | 1 |
| :---: | :---: | :---: |
@ -319,39 +321,39 @@ Scikit-learn में, भ्रम मैट्रिक्स की पं
यहाँ क्या हो रहा है? मान लें कि हमारा मॉडल कद्दू को दो बाइनरी श्रेणियों के बीच वर्गीकृत करने के लिए कहा गया है, श्रेणी 'सफेद' और श्रेणी 'सफेद नहीं'।
- यदि आपका मॉडल कद्दू को सफेद नहीं के रूप में भविष्यवाणी करता है और यह वास्तव में श्रेणी 'सफेद नहीं' से संबंधित है, तो हम इसे एक सही नकारात्मक कहते हैं, जिसे शीर्ष बाएँ संख्या द्वारा दिखाया गया है।
- यदि आपका मॉडल कद्दू को सफेद के रूप में भविष्यवाणी करता है और यह वास्तव में श्रेणी 'सफेद नहीं' से संबंधित है, तो हम इसे एक गलत नकारात्मक कहते हैं, जिसे नीचे
- यदि आपका मॉडल कद्दू को सफेद नहीं के रूप में भविष्यवाणी करता है और यह वास्तव में श्रेणी 'सफेद नहीं' से संबंधित है, तो हम इसे एक सही नेगेटिव कहते हैं, जिसे ऊपर बाईं संख्या द्वारा दिखाया गया है।
- यदि आपका मॉडल कद्द
कन्फ्यूजन मैट्रिक्स का प्रिसिजन और रिकॉल से क्या संबंध है? याद रखें, ऊपर प्रिंट किए गए क्लासिफिकेशन रिपोर्ट ने प्रिसिजन (0.85) और रिकॉल (0.67) दिखाया था।
प्रिसिजन = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
रिकॉल = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
✅ प्रश्न: कन्फ्यूजन मैट्रिक्स के अनुसार, मॉडल ने कैसा प्रदर्शन किया? उत्तर: बुरा नहीं; सही नेगेटिव्स की संख्या अच्छी है लेकिन कुछ गलत नेगेटिव्स भी हैं।
✅ प्रश्न: कन्फ्यूजन मैट्रिक्स के अनुसार, मॉडल ने कैसा प्रदर्शन किया? उत्तर: बुरा नहीं; काफी संख्या में ट्रू नेगेटिव्स हैं, लेकिन कुछ फॉल्स नेगेटिव्स भी हैं।
आइए कन्फ्यूजन मैट्रिक्स के TP/TN और FP/FN मैपिंग की मदद से पहले देखे गए शब्दों को फिर से समझते हैं:
आइए कन्फ्यूजन मैट्रिक्स के TP/TN और FP/FN मैपिंग की मदद से पहले देखे गए टर्म्स को फिर से समझते हैं:
🎓 प्रिसिजन: TP/(TP + FP) प्राप्त किए गए उदाहरणों में से प्रासंगिक उदाहरणों का अंश (जैसे, कौन से लेबल सही तरीके से लेबल किए गए थे)
🎓 प्रिसिजन: TP/(TP + FP) प्राप्त किए गए उदाहरणों में से प्रासंगिक उदाहरणों का अनुपात (जैसे कौन से लेबल सही तरीके से लेबल किए गए थे)
🎓 रिकॉल: TP/(TP + FN) प्रासंगिक उदाहरणों का अंश जो प्राप्त किए गए थे, चाहे वे सही तरीके से लेबल किए गए हों या नहीं
🎓 रिकॉल: TP/(TP + FN) प्रासंगिक उदाहरणों का वह अनुपात जो प्राप्त किया गया, चाहे वह सही तरीके से लेबल किया गया हो या नहीं
🎓 f1-score: (2 * प्रिसिजन * रिकॉल)/(प्रिसिजन + रिकॉल) प्रिसिजन और रिकॉल का भारित औसत, जिसमें सबसे अच्छा 1 और सबसे खराब 0 होता है
🎓 f1-स्कोर: (2 * प्रिसिजन * रिकॉल)/(प्रिसिजन + रिकॉल) प्रिसिजन और रिकॉल का भारित औसत, जिसमें सर्वश्रेष्ठ 1 और सबसे खराब 0 होता है
🎓 सपोर्ट: प्रत्येक लेबल के प्राप्त होने की संख्या
🎓 एक्यूरेसी: (TP + TN)/(TP + TN + FP + FN) किसी सैंपल के लिए सही तरीके से भविष्यवाणी किए गए लेबल्स का प्रतिशत
🎓 एक्यूरेसी: (TP + TN)/(TP + TN + FP + FN) किसी सैंपल के लिए सही तरीके से भविष्यवाणी किए गए लेबल का प्रतिशत
🎓 मैक्रो औसत: प्रत्येक लेबल के लिए बिना वजन वाले औसत मेट्रिक्स की गणना, लेबल असंतुलन को ध्यान में नहीं रखते हुए
🎓 मैक्रो औसत: प्रत्येक लेबल के लिए बिना वजन वाले औसत मेट्रिक्स की गणना, लेबल असंतुलन को ध्यान में न रखते हुए
🎓 वेटेड औसत: प्रत्येक लेबल के लिए औसत मेट्रिक्स की गणना, लेबल असंतुलन को ध्यान में रखते हुए और उन्हें उनके सपोर्ट (प्रत्येक लेबल के लिए सही उदाहरणों की संख्या) द्वारा वजन देकर
🎓 वेटेड औसत: प्रत्येक लेबल के लिए औसत मेट्रिक्स की गणना, लेबल असंतुलन को ध्यान में रखते हुए और उन्हें उनके सपोर्ट (प्रत्येक लेबल के लिए सही उदाहरणों की संख्या) द्वारा वेटिंग करके
✅ क्या आप सोच सकते हैं कि यदि आप अपने मॉडल में गलत नेगेटिव्स की संख्या कम करना चाहत हैं तो आपको कौन सा मेट्रिक देखना चाहिए?
✅ क्या आप सोच सकते हैं कि कौन सा मेट्रिक देखना चाहिए यदि आप चाहते हैं कि आपका मॉडल फॉल्स नेगेटिव्स की संख्या कम करे?
## इस मॉडल के ROC कर्व को विज़ुअलाइज़ करें
[![शुरुआती के लिए मशीन लर्निंग - ROC कर्व्स के साथ लॉजिस्टिक रिग्रेशन प्रदर्शन का विश्लेषण](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "शुरुआती के लिए मशीन लर्निंग - ROC कर्व्स के साथ लॉजिस्टिक रिग्रेशन प्रदर्शन का विश्लेषण")
> 🎥 ऊपर दी गई छवि पर क्लिक करें ROC कर्व्स का एक छोटा वीडियो अवलोकन देखने के लिए
> 🎥 ऊपर दी गई छवि पर क्लिक करें ROC कर्व्स का संक्षिप्त वीडियो अवलोकन देखने के लिए
आइए एक और विज़ुअलाइज़ेशन करें ताकि तथाकथित 'ROC' कर्व को देख सकें:
@ -373,9 +375,9 @@ plt.title('ROC Curve')
plt.show()
```
Matplotlib का उपयोग करके, मॉडल का [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) या ROC प्लॉट करें। ROC कर्व्स अक्सर किसी क्लासिफायर के आउटपुट को उसके सही बनाम गलत पॉजिटिव्स के संदर्भ में देखने के लिए उपयोग किए जाते हैं। "ROC कर्व्स आमतौर पर Y अक्ष पर सही पॉजिटिव रेट और X अक्ष पर गलत पॉजिटिव रेट दिखाते हैं।" इसलिए, कर्व की तीव्रता और मध्य रेखा और कर्व के बीच की जगह महत्वपूर्ण होती है: आप एक ऐसा कर्व चाहते हैं जो जल्दी ऊपर और रेखा के ऊपर जाए। हमारे मामले में, शुरुआत में कुछ गलत पॉजिटिव्स हैं, और फिर रेखा सही तरीके से ऊपर और आगे बढ़ती है:
Matplotlib का उपयोग करके, मॉडल का [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) या ROC प्लॉट करें। ROC कर्व्स अक्सर किसी क्लासिफायर के आउटपुट को उसके ट्रू बनाम फॉल्स पॉजिटिव्स के संदर्भ में देखने के लिए उपयोग किए जाते हैं। "ROC कर्व्स आमतौर पर Y अक्ष पर ट्रू पॉजिटिव रेट और X अक्ष पर फॉल्स पॉजिटिव रेट दिखाते हैं।" इसलिए, कर्व की तीव्रता और मिडपॉइंट लाइन और कर्व के बीच की जगह महत्वपूर्ण होती है: आप एक ऐसा कर्व चाहते हैं जो जल्दी ऊपर और लाइन के ऊपर जाए। हमारे मामले में, शुरुआत में कुछ फॉल्स पॉजिटिव्स हैं, और फिर लाइन सही तरीके से ऊपर और आगे बढ़ती है:
![ROC](../../../../translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.hi.png)
![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png)
अंत में, Scikit-learn के [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) का उपयोग करके वास्तविक 'Area Under the Curve' (AUC) की गणना करें:
@ -392,7 +394,7 @@ print(auc)
लॉजिस्टिक रिग्रेशन के बारे में और भी बहुत कुछ जानने को है! लेकिन सीखने का सबसे अच्छा तरीका है प्रयोग करना। ऐसा डेटासेट खोजें जो इस प्रकार के विश्लेषण के लिए उपयुक्त हो और इसके साथ एक मॉडल बनाएं। आपने क्या सीखा? सुझाव: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) पर दिलचस्प डेटासेट्स आज़माएं।
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
@ -405,4 +407,4 @@ print(auc)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,26 +1,26 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2680c691fbdb6367f350761a275e2508",
"translation_date": "2025-09-03T23:46:31+00:00",
"original_hash": "e0b75f73e4a90d45181dc5581fe2ef5c",
"translation_date": "2025-09-05T10:25:48+00:00",
"source_file": "3-Web-App/1-Web-App/README.md",
"language_code": "hi"
}
-->
# वेब ऐप बनाएं जो ML मॉडल का उपयोग करे
इस पाठ में, आप एक डेटा सेट पर ML मॉडल को प्रशिक्षित करेंगे जो अद्वितीय है: _पिछली सदी में UFO देखे जाने की घटनाएं_, जो NUFORC के डेटाबेस से ली गई हैं।
इस पाठ में, आप एक डेटा सेट पर ML मॉडल को प्रशिक्षित करेंगे जो अद्भुत है: _पिछली सदी में UFO देखे जाने की घटनाएं_, जो NUFORC के डेटाबेस से ली गई हैं।
आप सीखेंगे:
- प्रशिक्षित मॉडल को 'पिकल' कैसे करें
- उस मॉडल का उपयोग Flask ऐप में कैसे करें
हम नोटबुक्स का उपयोग जारी रखेंगे ताकि डेटा को साफ किया जा सके और मॉडल को प्रशिक्षित किया जा सके, लेकिन आप इस प्रक्रिया को एक कदम आगे ले जा सकते हैं और मॉडल को 'वास्तविक दुनिया' में उपयोग करने का पता लगा सकते हैं: एक वेब ऐप में।
हम नोटबुक्स का उपयोग जारी रखेंगे ताकि डेटा को साफ किया जा सके और मॉडल को प्रशिक्षित किया जा सके, लेकिन आप इस प्रक्रिया को एक कदम आगे ले जा सकते हैं और मॉडल को 'वाइल्ड' में उपयोग करने का अनुभव प्राप्त कर सकते हैं, यानी एक वेब ऐप में।
इसके लिए, आपको Flask का उपयोग करके एक वेब ऐप बनाना होगा।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/17/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## ऐप बनाना
@ -30,13 +30,13 @@ CO_OP_TRANSLATOR_METADATA:
आपको कई सवाल पूछने की आवश्यकता होगी:
- **क्या यह वेब ऐप है या मोबाइल ऐप?** यदि आप मोबाइल ऐप बना रहे हैं या IoT संदर्भ में मॉडल का उपयोग करने की आवश्यकता है, तो आप [TensorFlow Lite](https://www.tensorflow.org/lite/) का उपयोग कर सकते हैं और मॉडल को Android या iOS ऐप में उपयोग कर सकते हैं।
- **मॉडल कहां रहेगा?** क्लाउड में या स्थानीय रूप से?
- **क्या यह वेब ऐप है या मोबाइल ऐप?** यदि आप मोबाइल ऐप बना रहे हैं या मॉडल को IoT संदर्भ में उपयोग करने की आवश्यकता है, तो आप [TensorFlow Lite](https://www.tensorflow.org/lite/) का उपयोग कर सकते हैं और मॉडल को Android या iOS ऐप में उपयोग कर सकते हैं।
- **मॉडल कहां रहेगा?** क्लाउड में या लोकल?
- **ऑफ़लाइन समर्थन।** क्या ऐप को ऑफ़लाइन काम करना होगा?
- **मॉडल को प्रशिक्षित करने के लिए कौन सी तकनीक का उपयोग किया गया था?** चुनी गई तकनीक आपके द्वारा उपयोग किए जाने वाले टूलिंग को प्रभावित कर सकती है।
- **मॉडल को प्रशिक्षित करने के लिए कौन सी तकनीक का उपयोग किया गया था?** चुनी गई तकनीक आपके उपयोग किए जाने वाले टूलिंग को प्रभावित कर सकती है।
- **TensorFlow का उपयोग।** यदि आप TensorFlow का उपयोग करके मॉडल को प्रशिक्षित कर रहे हैं, तो उदाहरण के लिए, यह इकोसिस्टम [TensorFlow.js](https://www.tensorflow.org/js/) का उपयोग करके वेब ऐप में उपयोग के लिए TensorFlow मॉडल को कनवर्ट करने की क्षमता प्रदान करता है।
- **PyTorch का उपयोग।** यदि आप [PyTorch](https://pytorch.org/) जैसी लाइब्रेरी का उपयोग करके मॉडल बना रहे हैं, तो आपके पास इसे [ONNX](https://onnx.ai/) (Open Neural Network Exchange) फॉर्मेट में एक्सपोर्ट करने का विकल्प है ताकि इसे JavaScript वेब ऐप्स में उपयोग किया जा सके जो [Onnx Runtime](https://www.onnxruntime.ai/) का उपयोग कर सकते हैं। इस विकल्प को भविष्य के पाठ में Scikit-learn-प्रशिक्षित मॉडल के लिए खोजा जाएगा।
- **Lobe.ai या Azure Custom Vision का उपयोग।** यदि आप [Lobe.ai](https://lobe.ai/) या [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) जैसे ML SaaS (Software as a Service) सिस्टम का उपयोग करके मॉडल को प्रशिक्षित कर रहे हैं, तो इस प्रकार का सॉफ़्टवेयर कई प्लेटफार्मों के लिए मॉडल को एक्सपोर्ट करने के तरीके प्रदान करता है, जिसमें क्लाउड में आपके ऑनलाइन एप्लिकेशन द्वारा क्वेरी किए जाने के लिए एक bespoke API बनाना शामिल है।
- **PyTorch का उपयोग।** यदि आप [PyTorch](https://pytorch.org/) जैसी लाइब्रेरी का उपयोग करके मॉडल बना रहे हैं, तो आपके पास इसे [ONNX](https://onnx.ai/) (Open Neural Network Exchange) फॉर्मेट में एक्सपोर्ट करने का विकल्प है ताकि इसे JavaScript वेब ऐप्स में उपयोग किया जा सके जो [Onnx Runtime](https://www.onnxruntime.ai/) का उपयोग कर सकते हैं। इस विकल्प को भविष्य के पाठ में Scikit-learn-प्रशिक्षित मॉडल के लिए एक्सप्लोर किया जाएगा।
- **Lobe.ai या Azure Custom Vision का उपयोग।** यदि आप [Lobe.ai](https://lobe.ai/) या [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) जैसे ML SaaS (Software as a Service) सिस्टम का उपयोग करके मॉडल को प्रशिक्षित कर रहे हैं, तो इस प्रकार का सॉफ़्टवेयर कई प्लेटफार्मों के लिए मॉडल को एक्सपोर्ट करने के तरीके प्रदान करता है, जिसमें क्लाउड में आपके ऑनलाइन एप्लिकेशन द्वारा क्वेरी किए जाने वाले एक bespoke API का निर्माण शामिल है।
आपके पास एक पूरा Flask वेब ऐप बनाने का अवसर भी है जो वेब ब्राउज़र में ही मॉडल को प्रशिक्षित कर सकता है। इसे JavaScript संदर्भ में TensorFlow.js का उपयोग करके भी किया जा सकता है।
@ -46,20 +46,20 @@ CO_OP_TRANSLATOR_METADATA:
इस कार्य के लिए, आपको दो टूल्स की आवश्यकता होगी: Flask और Pickle, दोनों Python पर चलते हैं।
✅ [Flask](https://palletsprojects.com/p/flask/) क्या है? इसके निर्माताओं द्वारा 'माइक्रो-फ्रेमवर्क' के रूप में परिभाषित, Flask Python का उपयोग करके वेब फ्रेमवर्क की बुनियादी विशेषताएं प्रदान करता है और वेब पेज बनाने के लिए एक टेम्पलेटिंग इंजन। [इस Learn मॉड्यूल](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) को देखें ताकि Flask के साथ निर्माण का अभ्यास किया जा सके
✅ [Flask](https://palletsprojects.com/p/flask/) क्या है? इसके निर्माताओं द्वारा 'माइक्रो-फ्रेमवर्क' के रूप में परिभाषित, Flask Python का उपयोग करके वेब फ्रेमवर्क की बुनियादी विशेषताएं प्रदान करता है और वेब पेज बनाने के लिए एक टेम्पलेटिंग इंजन का उपयोग करता है। Flask के साथ निर्माण का अभ्यास करने के लिए [इस Learn module](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) को देखें।
✅ [Pickle](https://docs.python.org/3/library/pickle.html) क्या है? Pickle 🥒 एक Python मॉड्यूल है जो Python ऑब्जेक्ट संरचना को सीरियलाइज़ और डी-सीरियलाइज़ करता है। जब आप मॉडल को 'पिकल' करते हैं, तो आप सकी संरचना को वेब पर उपयोग के लिए सीरियलाइज़ या फ्लैटन करते हैं। सावधान रहें: पिकल स्वाभाविक रूप से सुरक्षित नहीं है, इसलिए यदि किसी फ़ाइल को 'अन-पिकल' करने के लिए कहा जाए तो सावधान रहें। एक पिकल्ड फ़ाइल का उपसर्ग `.pkl` होता है।
✅ [Pickle](https://docs.python.org/3/library/pickle.html) क्या है? Pickle 🥒 एक Python मॉड्यूल है जो Python ऑब्जेक्ट संरचना को सीरियलाइज़ और डी-सीरियलाइज़ करता है। जब आप किसी मॉडल को 'पिकल' करते हैं, तो आप सकी संरचना को वेब पर उपयोग के लिए सीरियलाइज़ या फ्लैटन करते हैं। सावधान रहें: पिकल स्वाभाविक रूप से सुरक्षित नहीं है, इसलिए यदि किसी फ़ाइल को 'अन-पिकल' करने के लिए कहा जाए तो सावधान रहें। एक पिकल्ड फ़ाइल का उपसर्ग `.pkl` होता है।
## अभ्यास - अपने डेटा को साफ करें
इस पाठ में आप 80,000 UFO देखे जाने की घटनाओं के डेटा का उपयोग करेंगे, जिसे [NUFORC](https://nuforc.org) (The National UFO Reporting Center) द्वारा एकत्र किया गया है। इस डेटा में UFO देखे जाने की कुछ दिलचस्प विवरण हैं, जैसे:
- **लंबा विवरण उदाहरण।** "एक आदमी रात में एक घास के मैदान पर चमकने वाली रोशनी की किरण से बाहर निकलता है और टेक्सास इंस्ट्रूमेंट्स पार्किंग लॉट की ओर दौड़ता है।"
- **छोटा विवरण उदाहरण।** "रोशनी ने हमारा पीछा किया।"
- **लंबा विवरण उदाहरण।** "एक आदमी रात में एक घास के मैदान पर चमकने वाली रोशनी की किरण से बाहर निकलता है और वह टेक्सास इंस्ट्रूमेंट्स पार्किंग लॉट की ओर दौड़ता है।"
- **छोटा विवरण उदाहरण।** "लाइट्स ने हमारा पीछा किया।"
[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) स्प्रेडशीट में `city`, `state` और `country` के कॉलम शामिल हैं जहां देखे जाने की घटना हुई, वस्तु का `shape` और उसका `latitude` और `longitude`
[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) स्प्रेडशीट में `city`, `state` और `country` जहां घटना हुई, ऑब्जेक्ट का `shape` और उसका `latitude` और `longitude` जैसे कॉलम शामिल हैं
इस पाठ में शामिल खाली [notebook](notebook.ipynb) में:
इस पाठ में शामिल खाली [notebook](../../../../3-Web-App/1-Web-App/notebook.ipynb) में:
1. पिछले पाठों में आपने जैसे `pandas`, `matplotlib`, और `numpy` को इम्पोर्ट किया था, वैसे ही करें और ufos स्प्रेडशीट को इम्पोर्ट करें। आप डेटा सेट का नमूना देख सकते हैं:
@ -79,7 +79,7 @@ CO_OP_TRANSLATOR_METADATA:
ufos.Country.unique()
```
1. अब, आप उन डेटा को कम कर सकते हैं जिनसे हमें निपटना है, किसी भी null मानों को हटाकर और केवल 1-60 सेकंड के बीच देखे जाने की घटनाओं को इम्पोर्ट करके:
1. अब, आप उन डेटा को कम कर सकते हैं जिनसे हमें निपटना है, किसी भी null मानों को हटाकर और केवल 1-60 सेकंड के बीच की घटनाओं को इम्पोर्ट करके:
```python
ufos.dropna(inplace=True)
@ -101,7 +101,7 @@ CO_OP_TRANSLATOR_METADATA:
ufos.head()
```
आपका डेटा इस तरह दिखना चाहिए:
आपका डेटा ऐसा दिखना चाहिए:
```output
Seconds Country Latitude Longitude
@ -145,11 +145,11 @@ CO_OP_TRANSLATOR_METADATA:
सटीकता बुरी नहीं है **(लगभग 95%)**, जो आश्चर्यजनक नहीं है, क्योंकि `Country` और `Latitude/Longitude` सहसंबद्ध हैं।
आपका बनाया गया मॉडल बहुत क्रांतिकारी नहीं है क्योंकि आप `Latitude` और `Longitude` से एक `Country` का अनुमान लगा सकते हैं, लेकिन यह कच्चे डेटा से प्रशिक्षण देने, उसे साफ करने, एक्सपोर्ट करने और फिर इस मॉडल का वेब ऐप में उपयोग करने का एक अच्छा अभ्यास है।
आपका बनाया गया मॉडल बहुत क्रांतिकारी नहीं है क्योंकि आप `Latitude` और `Longitude` से देश का अनुमान लगा सकते हैं, लेकिन यह कच्चे डेटा से प्रशिक्षण देने, उसे साफ करने, एक्सपोर्ट करने और फिर इस मॉडल का वेब ऐप में उपयोग करने का एक अच्छा अभ्यास है।
## अभ्यास - अपने मॉडल को 'पिकल' करें
अब, अपने मॉडल को _पिकल_ करने का समय है! आप इसे कुछ लाइनों के कोड में कर सकते हैं। एक बार जब यह _पिकल_ हो जाए, तो अपने पिकल्ड मॉडल को लोड करें और सेकंड, अक्षांश और देशांतर के लिए मानों वाले नमूना डेटा ऐरे के खिलाफ इसका परीक्षण करें,
अब, समय है अपने मॉडल को _पिकल_ करने का! आप इसे कुछ लाइनों के कोड में कर सकते हैं। एक बार जब यह _पिकल_ हो जाए, तो अपने पिकल्ड मॉडल को लोड करें और इसे सेकंड, अक्षांश और देशांतर के मानों वाले नमूना डेटा ऐरे के खिलाफ परीक्षण करें।
```python
import pickle
@ -166,9 +166,9 @@ print(model.predict([[50,44,-12]]))
अब आप एक Flask ऐप बना सकते हैं जो आपके मॉडल को कॉल करता है और समान परिणाम लौटाता है, लेकिन अधिक आकर्षक तरीके से।
1. _notebook.ipynb_ फ़ाइल के बगल में एक **web-app** नामक फ़ोल्डर बनाएं जहां आपकी _ufo-model.pkl_ फ़ाइल स्थित है।
1. **web-app** नामक एक फ़ोल्डर बनाएं, जो _notebook.ipynb_ फ़ाइल के बगल में हो, जहां आपका _ufo-model.pkl_ फ़ाइल स्थित है।
1. उस फ़ोल्डर में तीन और फ़ोल्डर बनाएं: **static**, जिसमें एक **css** फ़ोल्डर हो, और **templates**। अब आपके पास निम्नलिखित फाइलें और डायरेक्टरी होनी चाहिए:
1. उस फ़ोल्डर में तीन और फ़ोल्डर बनाएं: **static**, जिसमें **css** नामक एक फ़ोल्डर हो, और **templates**। अब आपके पास निम्नलिखित फाइलें और डायरेक्टरी होनी चाहिए:
```output
web-app/
@ -179,7 +179,7 @@ print(model.predict([[50,44,-12]]))
ufo-model.pkl
```
✅ समाप्त ऐप का दृश्य देखने के लिए समाधान फ़ोल्डर देखें
✅ समाधान फ़ोल्डर को अंतिम ऐप का दृश्य देखने के लिए देखें
1. _web-app_ फ़ोल्डर में बनाने वाली पहली फ़ाइल **requirements.txt** है। JavaScript ऐप में _package.json_ की तरह, यह फ़ाइल ऐप द्वारा आवश्यक डिपेंडेंसी को सूचीबद्ध करती है। **requirements.txt** में निम्नलिखित पंक्तियां जोड़ें:
@ -202,13 +202,13 @@ print(model.predict([[50,44,-12]]))
pip install -r requirements.txt
```
1. अब, आप ऐप को पूरा करने के लिए तीन और फाइलें बनाने के लिए तैयार हैं:
1. अब, आप ऐप को पूरा करने के लिए तीन और फाइलें बनाने के लिए तैयार हैं:
1. **app.py** को रूट में बनाएं।
2. _templates_ डायरेक्टरी में **index.html** बनाएं।
3. _static/css_ डायरेक्टरी में **styles.css** बनाएं।
2. **index.html** को _templates_ डायरेक्टरी में बनाएं।
3. **styles.css** को _static/css_ डायरेक्टरी में बनाएं।
1. _styles.css_ फ़ाइल में कुछ स्टाइल्स जोड़ें:
1. _styles.css_ फ़ाइल को कुछ स्टाइल्स के साथ बनाएं:
```css
body {
@ -277,9 +277,9 @@ print(model.predict([[50,44,-12]]))
</html>
```
इस फ़ाइल में टेम्पलेटिंग पर ध्यान दें। देखें कि ऐप द्वारा प्रदान किए जाने वाले वेरिएबल्स के चारों ओर 'मस्टाच' सिंटैक्स है, जैसे कि भविष्यवाणी टेक्स्ट: `{{}}`। इसमें `/predict` रूट पर भविष्यवाणी पोस्ट करने वाला एक फॉर्म भी है।
इस फ़ाइल में टेम्पलेटिंग को देखें। ध्यान दें कि ऐप द्वारा प्रदान किए जाने वाले वेरिएबल्स के चारों ओर 'मस्टाच' सिंटैक्स है, जैसे कि प्रेडिक्शन टेक्स्ट: `{{}}`। इसमें `/predict` रूट पर पोस्ट करने वाला एक फॉर्म भी है।
अंत में, आप Python फ़ाइल बनाने के लिए तैयार हैं जो मॉडल की खपत और भविष्यवाणियों के प्रदर्शन को संचालित करती है:
अंत में, आप उस Python फ़ाइल को बनाने के लिए तैयार हैं जो मॉडल की खपत और प्रेडिक्शन के प्रदर्शन को संचालित करती है:
1. `app.py` में जोड़ें:
@ -318,9 +318,9 @@ print(model.predict([[50,44,-12]]))
app.run(debug=True)
```
> 💡 टिप: जब आप Flask का उपयोग करके वेब ऐप चलाते समय [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) जोड़ते हैं, तो आपके एप्लिकेशन में किए गए किसी भी बदलाव तुरंत प्रतिबिंबित होंगे बिना सर्वर को पुनः आरंभ किए। सावधान रहें! इस मोड को प्रोडक्शन ऐप में सक्षम न करें।
> 💡 टिप: जब आप Flask का उपयोग करके वेब ऐप चलाते समय [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) जोड़ते हैं, तो आपके एप्लिकेशन में किए गए किसी भी बदलाव तुरंत प्रतिबिंबित होंगे, बिना सर्वर को पुनः आरंभ किए। सावधान रहें! इस मोड को प्रोडक्शन ऐप में सक्षम न करें।
यदि आप `python app.py` या `python3 app.py` चलाते हैं - आपका वेब सर्वर स्थानीय रूप से शुरू हो जाता है, और आप एक छोटा फॉर्म भर सकते हैं ताकि आपको यह उत्तर मिल सके कि UFO कहां देखे गए हैं!
यदि आप `python app.py` या `python3 app.py` चलाते हैं - आपका वेब सर्वर स्थानीय रूप से शुरू हो जाता है, और आप एक छोटा फॉर्म भर सकते हैं ताकि आपको UFO देखे जाने की घटनाओं के बारे में अपने सवाल का जवाब मिल सके!
ऐसा करने से पहले, `app.py` के भागों पर एक नज़र डालें:
@ -328,12 +328,12 @@ print(model.predict([[50,44,-12]]))
1. फिर, मॉडल इम्पोर्ट होता है।
1. फिर, होम रूट पर index.html रेंडर होता है।
`/predict` रूट पर, जब फॉर्म पोस्ट किया जाता है तो कई चीजें होती हैं:
`/predict` रूट पर, जब फॉर्म पोस्ट किया जाता है, तो कई चीजें होती हैं:
1. फॉर्म वेरिएबल्स को एकत्र किया जाता है और numpy ऐरे में परिवर्तित किया जाता है। फिर उन्हें मॉडल में भेजा जाता है और एक भविष्यवाणी लौटाई जाती है।
2. जिन देशों को हम प्रदर्शित करना चाहते हैं उन्हें उनके भविष्यवाणी देश कोड से पठनीय टेक्स्ट के रूप में पुनः रेंडर किया जाता है, और वह मान index.html में टेम्पलेट में रेंडर करने के लिए वापस भेजा जाता है।
1. फॉर्म वेरिएबल्स को इकट्ठा किया जाता है और numpy ऐरे में कनवर्ट किया जाता है। फिर उन्हें मॉडल में भेजा जाता है और एक प्रेडिक्शन लौटाया जाता है।
2. जिन देशों को हम प्रदर्शित करना चाहते हैं, उन्हें उनके प्रेडिक्टेड देश कोड से पठनीय टेक्स्ट के रूप में पुनः रेंडर किया जाता है, और वह मान index.html में टेम्पलेट में रेंडर करने के लिए वापस भेजा जाता है।
इस तरह से Flask और पिकल्ड मॉडल के साथ मॉडल का उपयोग करना अपेक्षाकृत सरल है। सबसे कठिन बात यह समझना है कि मॉडल को भविष्यवाणी प्राप्त करने के लिए किस आकार का डेटा भेजा जाना चाहिए। यह पूरी तरह से इस बात पर निर्भर करता है कि मॉडल को कैसे प्रशिक्षित किया गया था। इस मॉडल में भविष्यवाणी प्राप्त करने के लिए तीन डेटा पॉइंट्स को इनपुट करना होता है।
इस तरह Flask और पिकल्ड मॉडल के साथ मॉडल का उपयोग करना अपेक्षाकृत सरल है। सबसे कठिन बात यह समझना है कि मॉडल को प्रेडिक्शन प्राप्त करने के लिए किस प्रकार का डेटा भेजा जाना चाहिए। यह पूरी तरह से इस बात पर निर्भर करता है कि मॉडल को कैसे प्रशिक्षित किया गया था। इस मॉडल में प्रेडिक्शन प्राप्त करने के लिए तीन डेटा पॉइंट्स को इनपुट करना होता है।
एक पेशेवर सेटिंग में, आप देख सकते हैं कि मॉडल को प्रशिक्षित करने वाले लोगों और इसे वेब या मोबाइल ऐप में उपयोग करने वाले लोगों के बीच अच्छा संचार कितना आवश्यक है। हमारे मामले में, यह केवल एक व्यक्ति है, आप!
@ -341,13 +341,13 @@ print(model.predict([[50,44,-12]]))
## 🚀 चुनौती
नोटबुक में काम करने और मॉडल को Flask ऐप में इम्पोर्ट करने के बजाय, आप मॉडल को Flask ऐप के भीतर ही प्रशिक्षित कर सकते हैं! अपने नोटबुक में Python कोड को बदलने का प्रयास करें, शायद आपके डेटा को साफ करने के बाद, ताकि ऐप के भीतर `train` नामक रूट पर मॉडल को प्रशिक्षित किया जा सके। इस विधि को अपनाने के फायदे और नुकसान क्या हैं?
नोटबुक में काम करने और मॉडल को Flask ऐप में इम्पोर्ट करने के बजाय, आप मॉडल को Flask ऐप के भीतर ही प्रशिक्षित कर सकते हैं! अपने Python कोड को नोटबुक में कनवर्ट करने का प्रयास करें, शायद आपके डेटा को साफ करने के बाद, ताकि ऐप के भीतर `train` नामक रूट पर मॉडल को प्रशिक्षित किया जा सके। इस विधि को अपनाने के फायदे और नुकसान क्या हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
मशीन लर्निंग मॉडल को उपयोग करने के लिए वेब ऐप बनाने के कई तरीके हैं। उन तरीकों की सूची बनाएं जिनसे आप JavaScript या Python का उपयोग करके वेब ऐप बना सकते हैं। आर्किटेक्चर पर विचार करें: क्या मॉडल ऐप में रहना चाहिए या क्लाउड में? यदि बाद वाला, तो आप इसे कैसे एक्सेस करेंगे? एक लागू ML वेब समाधान के लिए एक आर्किटेक्चरल मॉडल बनाएं।
ML मॉडल को उपयोग करने के लिए वेब ऐप बनाने के कई तरीके हैं। उन तरीकों की सूची बनाएं जिनसे आप JavaScript या Python का उपयोग करके वेब ऐप बना सकते हैं। आर्किटेक्चर पर विचार करें: क्या मॉडल ऐप में रहना चाहिए या क्लाउड में? यदि बाद वाला, तो आप इसे कैसे एक्सेस करेंगे? एक लागू ML वेब समाधान के लिए एक आर्किटेक्चरल मॉडल बनाएं।
## असाइनमेंट
@ -356,4 +356,4 @@ print(model.predict([[50,44,-12]]))
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "76438ce4e5d48982d48f1b55c981caac",
"translation_date": "2025-09-04T00:03:22+00:00",
"original_hash": "aaf391d922bd6de5efba871d514c6d47",
"translation_date": "2025-09-05T10:28:19+00:00",
"source_file": "4-Classification/1-Introduction/README.md",
"language_code": "hi"
}
@ -11,11 +11,11 @@ CO_OP_TRANSLATOR_METADATA:
इन चार पाठों में, आप क्लासिक मशीन लर्निंग के एक महत्वपूर्ण पहलू - _वर्गीकरण_ - का अन्वेषण करेंगे। हम एशिया और भारत के सभी अद्भुत व्यंजनों के बारे में एक डेटासेट का उपयोग करके विभिन्न वर्गीकरण एल्गोरिदम का उपयोग करना सीखेंगे। उम्मीद है कि आप भूखे हैं!
![बस एक चुटकी!](../../../../translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.hi.png)
![बस एक चुटकी!](../../../../4-Classification/1-Introduction/images/pinch.png)
> इन पाठों में पैन-एशियाई व्यंजनों का जश्न मनाएं! छवि [Jen Looper](https://twitter.com/jenlooper) द्वारा
वर्गीकरण [सुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Supervised_learning) का एक रूप है, जो रिग्रेशन तकनीकों से काफी समानता रखता है। यदि मशीन लर्निंग का उद्देश्य डेटासेट का उपयोग करके चीजों के मान या नाम की भविष्यवाणी करना है, तो वर्गीकरण आम तौर पर दो समूहों में विभाजित होता है: _बाइनरी वर्गीकरण_ और _मल्टीक्लास वर्गीकरण_
वर्गीकरण [सुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Supervised_learning) का एक रूप है, जो रिग्रेशन तकनीकों के साथ बहुत समानता रखता है। यदि मशीन लर्निंग का उद्देश्य डेटासेट का उपयोग करके चीजों के मान या नाम की भविष्यवाणी करना है, तो वर्गीकरण आम तौर पर दो समूहों में विभाजित होता है: _बाइनरी वर्गीकरण_ और _मल्टीक्लास वर्गीकरण_
[![वर्गीकरण का परिचय](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "वर्गीकरण का परिचय")
@ -23,34 +23,34 @@ CO_OP_TRANSLATOR_METADATA:
याद रखें:
- **लिनियर रिग्रेशन** ने आपको वेरिएबल्स के बीच संबंधों की भविष्यवाणी करने और यह अनुमान लगाने में मदद की कि एक नया डेटा पॉइंट उस रेखा के संबंध में कहां गिरेगा। उदाहरण के लिए, आप _सितंबर बनाम दिसंबर में कद्दू की कीमत_ की भविष्यवाणी कर सकते थे
- **लिनियर रिग्रेशन** ने आपको वेरिएबल्स के बीच संबंधों की भविष्यवाणी करने और यह अनुमान लगाने में मदद की कि एक नया डेटा पॉइंट उस रेखा के संबंध में कहां गिरेगा। उदाहरण के लिए, आप भविष्यवाणी कर सकते हैं कि _सितंबर बनाम दिसंबर में कद्दू की कीमत क्या होगी_
- **लॉजिस्टिक रिग्रेशन** ने आपको "बाइनरी श्रेणियों" की खोज करने में मदद की: इस मूल्य बिंदु पर, _क्या यह कद्दू नारंगी है या नारंगी नहीं है_?
वर्गीकरण विभिन्न एल्गोरिदम का उपयोग करके यह निर्धारित करता है कि किसी डेटा पॉइंट का लेबल या वर्ग क्या हो सकता है। आइए इस व्यंजन डेटा के साथ काम करें और देखें कि क्या हम सामग्री के एक समूह को देखकर उसके मूल व्यंजन का पता लगा सकते हैं।
वर्गीकरण विभिन्न एल्गोरिदम का उपयोग करके यह निर्धारित करता है कि किसी डेटा पॉइंट का लेबल या वर्ग क्या हो सकता है। आइए इस व्यंजन डेटा के साथ काम करें और देखें कि क्या हम सामग्री के एक समूह को देखकर उसके मूल व्यंजन का निर्धारण कर सकते हैं।
## [्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)
## [ाठ-पूर्व क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में भी उपलब्ध है!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html)
### परिचय
वर्गीकरण मशीन लर्निंग शोधकर्ता और डेटा वैज्ञानिक की मूलभूत गतिविधियों में से एक है। बाइनरी मान ("क्या यह ईमेल स्पैम है या नहीं?") के सरल वर्गीकरण से लेकर कंप्यूटर विज़न का उपयोग करके जटिल छवि वर्गीकरण और विभाजन तक, डेटा को वर्गों में छांटना और उससे प्रश्न पूछना हमेशा उपयोगी होता है।
वर्गीकरण मशीन लर्निंग शोधकर्ता और डेटा वैज्ञानिक की मूलभूत गतिविधियों में से एक है। बाइनरी मान ("क्या यह ईमेल स्पैम है या नहीं?") के सरल वर्गीकरण से लेकर, कंप्यूटर विज़न का उपयोग करके जटिल छवि वर्गीकरण और खंडन तक, डेटा को वर्गों में छांटना और उससे प्रश्न पूछना हमेशा उपयोगी होता है।
यदि इसे वैज्ञानिक तरीके से कहा जाए, तो आपका वर्गीकरण विधि एक प्रेडिक्टिव मॉडल बनाता है, जो इनपुट वेरिएबल्स और आउटपुट वेरिएबल्स के बीच संबंध को मैप करने में सक्षम बनाता है।
वैज्ञानिक दृष्टिकोण से कहें तो, आपका वर्गीकरण तरीका एक प्रेडिक्टिव मॉडल बनाता है जो इनपुट वेरिएबल्स और आउटपुट वेरिएबल्स के बीच संबंध को मैप करने में सक्षम बनाता है।
![बाइनरी बनाम मल्टीक्लास वर्गीकरण](../../../../translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.hi.png)
![बाइनरी बनाम मल्टीक्लास वर्गीकरण](../../../../4-Classification/1-Introduction/images/binary-multiclass.png)
> बाइनरी बनाम मल्टीक्लास समस्याएं, जिन्हें वर्गीकरण एल्गोरिदम संभाल सकते हैं। इन्फोग्राफिक [Jen Looper](https://twitter.com/jenlooper) द्वारा
> बाइनरी बनाम मल्टीक्लास समस्याएं जिन्हें वर्गीकरण एल्गोरिदम संभाल सकते हैं। इन्फोग्राफिक [Jen Looper](https://twitter.com/jenlooper) द्वारा
हमारे डेटा को साफ करने, उसे विज़ुअलाइज़ करने और हमारे एमएल कार्यों के लिए तैयार करने की प्रक्रिया शुरू करने से पहले, आइए जानें कि मशीन लर्निंग का उपयोग करके डेटा को वर्गीकृत करने के विभिन्न तरीके क्या हैं।
हमारे डेटा को साफ करने, उसका विज़ुअलाइज़ेशन करने और हमारे एमएल कार्यों के लिए तैयार करने की प्रक्रिया शुरू करने से पहले, आइए जानें कि मशीन लर्निंग का उपयोग करके डेटा को वर्गीकृत करने के विभिन्न तरीके क्या हैं।
[सांख्यिकी](https://wikipedia.org/wiki/Statistical_classification) से व्युत्पन्न, क्लासिक मशीन लर्निंग का उपयोग करके वर्गीकरण विशेषताओं का उपयोग करता है, जैसे `smoker`, `weight`, और `age`, यह निर्धारित करने के लिए कि _किसी बीमारी के विकसित होने की संभावना कितनी है_। एक सुपरवाइज्ड लर्निंग तकनीक के रूप में, जो आपने पहले रिग्रेशन अभ्यासों में किया था, आपका डेटा लेबल किया गया होता है, और एमएल एल्गोरिदम इन लेबल्स का उपयोग डेटा सेट की कक्षाओं (या 'विशेषताओं') को वर्गीकृत और भविष्यवाणी करने और उन्हें एक समूह या परिणाम में असाइन करने के लिए करते हैं।
[सांख्यिकी](https://wikipedia.org/wiki/Statistical_classification) से व्युत्पन्न, क्लासिक मशीन लर्निंग का उपयोग करके वर्गीकरण विशेषताओं का उपयोग करता है, जैसे `smoker`, `weight`, और `age`, यह निर्धारित करने के लिए कि _किसी बीमारी के विकसित होने की संभावना कितनी है_। एक सुपरवाइज्ड लर्निंग तकनीक के रूप में, जो आपने पहले रिग्रेशन अभ्यासों में की थी, आपका डेटा लेबल किया गया होता है और एमएल एल्गोरिदम उन लेबल्स का उपयोग डेटा सेट की कक्षाओं (या 'विशेषताओं') को वर्गीकृत और भविष्यवाणी करने और उन्हें एक समूह या परिणाम में असाइन करने के लिए करते हैं।
✅ एक पल लें और व्यंजनों के बारे में एक डेटासेट की कल्पना करें। एक मल्टीक्लास मॉडल क्या उत्तर दे सकता है? एक बाइनरी मॉडल क्या उत्तर दे सकता है? यदि आप यह निर्धारित करना चाहते हैं कि कोई विशेष व्यंजन मेथी का उपयोग करता है या नहीं, तो क्या होगा? यदि आपके पास स्टार ऐनीज़, आर्टिचोक, फूलगोभी, और हॉर्सरैडिश से भरा एक ग्रॉसरी बैग है, तो क्या आप एक विशिष्ट भारतीय व्यंजन बना सकते हैं?
[![पागल मिस्ट्री बास्केट्स](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "पागल मिस्ट्री बास्केट्स")
> 🎥 ऊपर दी गई छवि पर क्लिक करें। शो 'Chopped' का पूरा आधार 'मिस्ट्री बास्केट' है, जहां शेफ को यादृच्छिक सामग्री से कुछ व्यंजन बनाना होता है। निश्चित रूप से एक एमएल मॉडल मदद कर सकता था!
> 🎥 ऊपर दी गई छवि पर क्लिक करें। शो 'Chopped' का पूरा आधार 'मिस्ट्री बास्केट' है, जहां शेफ को यादृच्छिक सामग्री से कुछ व्यंजन बनाना होता है। निश्चित रूप से एक एमएल मॉडल ने मदद की होगी!
## हैलो 'क्लासिफायर'
@ -60,9 +60,9 @@ Scikit-learn विभिन्न प्रकार की समस्या
## अभ्यास - अपने डेटा को साफ और संतुलित करें
इस परियोजना को शुरू करने से पहले पहला कार्य यह है कि आप अपने डेटा को साफ और **संतुलित** करें ताकि बेहतर परिणाम प्राप्त हो सकें। इस फ़ोल्डर की रूट में स्थित खाली _notebook.ipynb_ फ़ाइल से शुर करें।
इस प्रोजेक्ट को शुरू करने से पहले पहला कार्य यह है कि आप अपने डेटा को साफ और **संतुलित** करें ताकि बेहतर परिणाम प्राप्त हो सकें। इस फ़ोल्डर की रूट में _notebook.ipynb_ फ़ाइल से शुरुआत करें।
पहली चीज़ जो आपको इंस्टॉल करनी है, वह है [imblearn](https://imbalanced-learn.org/stable/)। यह एक Scikit-learn पैकेज है, जो आपको डेटा को बेहतर संतुलित करने की अनुमति देगा (आप इस कार्य के बारे में थोड़ी देर में और जानेंगे)।
पहली चीज़ जो आपको इंस्टॉल करनी है वह है [imblearn](https://imbalanced-learn.org/stable/)। यह एक Scikit-learn पैकेज है जो आपको डेटा को बेहतर संतुलित करने की अनुमति देगा (आप इस कार्य के बारे में थोड़ी देर में और जानेंगे)।
1. `imblearn` को इंस्टॉल करने के लिए, `pip install` चलाएं, इस प्रकार:
@ -108,7 +108,7 @@ Scikit-learn विभिन्न प्रकार की समस्या
| 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
```
1. इस डेटा के बारे में जानकारी प्राप्त करने के लिए `info()` कॉल करें:
1. इस डेटा के बारे में जानकारी प्राप्त करें `info()` को कॉल करके:
```python
df.info()
@ -126,19 +126,19 @@ Scikit-learn विभिन्न प्रकार की समस्या
## अभ्यास - व्यंजनों के बारे में जानना
अब काम अधिक दिलचस्प होने लगता है। आइए व्यंजनों के अनुसार डेटा के वितरण की खोज करें।
अब काम अधिक दिलचस्प होने लगता है। आइए व्यंजन के अनुसार डेटा के वितरण की खोज करें।
1. डेटा को बार के रूप में प्लॉट करें, `barh()` कॉल करके:
1. डेटा को बार के रूप में प्लॉट करें `barh()` को कॉल करके:
```python
df.cuisine.value_counts().plot.barh()
```
![व्यंजन डेटा वितरण](../../../../translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.hi.png)
![व्यंजन डेटा वितरण](../../../../4-Classification/1-Introduction/images/cuisine-dist.png)
व्यंजनों की संख्या सीमित है, लेकिन डेटा का वितरण असमान है। आप इसे ठीक कर सकते हैं! ऐसा करने से पहले, थोड़ा और अन्वेषण करें।
1. यह पता लगाएं कि प्रत्येक व्यंजन के लिए कितना डेटा उपलब्ध है और इसे प्रिंट करें:
1. पता करें कि प्रत्येक व्यंजन के लिए कितना डेटा उपलब्ध है और इसे प्रिंट करें:
```python
thai_df = df[(df.cuisine == "thai")]
@ -166,9 +166,9 @@ Scikit-learn विभिन्न प्रकार की समस्या
## सामग्री की खोज
अब आप डेटा में गहराई से जा सकते हैं और जान सकते हैं कि प्रत्येक व्यंजन के लिए विशिष्ट सामग्री क्या हैं। आपको बार-बार आने वाले डेटा को साफ करना चाहिए, जो व्यंजनों के बीच भ्रम पैदा करता है, तो आइए इस समस्या के बारे में जानें।
अब आप डेटा में गहराई से जा सकते हैं और जान सकते हैं कि प्रत्येक व्यंजन के लिए विशिष्ट सामग्री क्या हैं। आपको बार-बार आने वाले डेटा को साफ करना चाहिए जो व्यंजनों के बीच भ्रम पैदा करता है, तो आइए इस समस्या के बारे में जानें।
1. एक फ़ंक्शन `create_ingredient()` Python में बनाएं, जो एक सामग्री डेटा फ्रेम बनाए। यह फ़ंक्शन एक अनावश्यक कॉलम को हटाकर शुरू करेगा और सामग्री को उनकी गिनती के अनुसार छांटेगा:
1. एक फ़ंक्शन `create_ingredient()` Python में बनाएं, जो एक सामग्री डेटा फ्रेम बनाए। यह फ़ंक्शन एक अनुपयोगी कॉलम को हटाकर और सामग्री को उनकी गिनती के अनुसार छांटकर शुरू करेगा:
```python
def create_ingredient_df(df):
@ -181,14 +181,14 @@ Scikit-learn विभिन्न प्रकार की समस्या
अब आप इस फ़ंक्शन का उपयोग करके प्रत्येक व्यंजन के लिए शीर्ष दस सबसे लोकप्रिय सामग्री का अंदाजा लगा सकते हैं।
1. `create_ingredient()` को कॉल करें और इसे `barh()` कॉल करके प्लॉट करें:
1. `create_ingredient()` को कॉल करें और इसे `barh()`ो कॉल करके प्लॉट करें:
```python
thai_ingredient_df = create_ingredient_df(thai_df)
thai_ingredient_df.head(10).plot.barh()
```
![थाई](../../../../translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.hi.png)
![थाई](../../../../4-Classification/1-Introduction/images/thai.png)
1. जापानी डेटा के लिए भी ऐसा ही करें:
@ -197,7 +197,7 @@ Scikit-learn विभिन्न प्रकार की समस्या
japanese_ingredient_df.head(10).plot.barh()
```
![जापानी](../../../../translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.hi.png)
![जापानी](../../../../4-Classification/1-Introduction/images/japanese.png)
1. अब चीनी सामग्री के लिए:
@ -206,7 +206,7 @@ Scikit-learn विभिन्न प्रकार की समस्या
chinese_ingredient_df.head(10).plot.barh()
```
![चीनी](../../../../translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.hi.png)
![चीनी](../../../../4-Classification/1-Introduction/images/chinese.png)
1. भारतीय सामग्री को प्लॉट करें:
@ -215,7 +215,7 @@ Scikit-learn विभिन्न प्रकार की समस्या
indian_ingredient_df.head(10).plot.barh()
```
![भारतीय](../../../../translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.hi.png)
![भारतीय](../../../../4-Classification/1-Introduction/images/indian.png)
1. अंत में, कोरियाई सामग्री को प्लॉट करें:
@ -224,9 +224,9 @@ Scikit-learn विभिन्न प्रकार की समस्या
korean_ingredient_df.head(10).plot.barh()
```
![कोरियाई](../../../../translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.hi.png)
![कोरियाई](../../../../4-Classification/1-Introduction/images/korean.png)
1. अब, उन सबसे सामान्य सामग्री को हटा दें, जो विभिन्न व्यंजनों के बीच भ्रम पैदा करती हैं, `drop()` कॉल करके:
1. अब, सबसे सामान्य सामग्री को हटा दें जो विभिन्न व्यंजनों के बीच भ्रम पैदा करती हैं, `drop()`ो कॉल करके:
हर कोई चावल, लहसुन और अदरक पसंद करता है!
@ -240,14 +240,14 @@ Scikit-learn विभिन्न प्रकार की समस्या
अब जब आपने डेटा को साफ कर लिया है, तो [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "सिंथेटिक माइनॉरिटी ओवर-सैंपलिंग टेक्नीक" - का उपयोग करके इसे संतुलित करें।
1. `fit_resample()` को कॉल करें, यह रणनीति इंटरपोलेशन द्वारा नए नमूने उत्पन्न करती है।
1. `fit_resample()` को कॉल करें, यह रणनीति इंटरपोलेशन द्वारा नए सैंपल उत्पन्न करती है।
```python
oversample = SMOTE()
transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)
```
अपने डेटा को संतुलित करके, आपके पास इसे वर्गीकृत करते समय बेहतर परिणाम होंगे। बाइनरी वर्गीकरण के बारे में सोचें। यदि आपके अधिकांश डेटा एक वर्ग के हैं, तो एक एमएल मॉडल उस वर्ग की अधिक बार भविष्यवाणी करेगा, केवल इसलिए कि उसके लिए अधिक डेटा है। डेटा को संतुलित करना किसी भी असंतुलित डेटा को लेता है और इस असंतुलन को दूर करने में मदद करता है।
अपने डेटा को संतुलित करके, आपके पास इसे वर्गीकृत करते समय बेहतर परिणाम होंगे। एक बाइनरी वर्गीकरण के बारे में सोचें। यदि आपके अधिकांश डेटा एक वर्ग के हैं, तो एक एमएल मॉडल उस वर्ग की अधिक बार भविष्यवाणी करेगा, केवल इसलिए कि उसके लिए अधिक डेटा है। डेटा को संतुलित करना किसी भी असंतुलित डेटा को लेता है और इस असंतुलन को दूर करने में मदद करता है।
1. अब आप सामग्री के प्रति लेबल की संख्या की जांच कर सकते हैं:
@ -275,7 +275,7 @@ Scikit-learn विभिन्न प्रकार की समस्या
डेटा साफ, संतुलित और बहुत स्वादिष्ट है!
1. अंतिम चरण यह है कि आपके संतुलित डेटा, जिसमें लेबल और विशेषताएं शामिल हैं, को एक नए डेटा फ्रेम में सहेजें, जिसे एक फ़ाइल में निर्यात किया जा सके:
1. अंतिम चरण यह है कि आपके संतुलित डेटा, जिसमें लेबल और विशेषताएं शामिल हैं, को एक नए डेटा फ्रेम में सहेजें जिसे एक फ़ाइल में निर्यात किया जा सके:
```python
transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')
@ -295,9 +295,9 @@ Scikit-learn विभिन्न प्रकार की समस्या
## 🚀चुनौती
इस पाठ्यक्रम में कई दिलचस्प डेटासेट शामिल हैं। `data` फ़ोल्डर्स को खंगालें और देखें कि क्या उनमें से कोई डेटासेट बाइनरी या मल्टी-क्लास वर्गीकरण के लिए उपयुक्त ह? आप इस डेटासेट से कौन से प्रश्न पूछेंगे?
इस पाठ्यक्रम में कई दिलचस्प डेटासेट शामिल हैं। `data` फ़ोल्डर्स को खंगालें और देखें कि क्या उनमें से कोई ऐसा डेटासेट है जो बाइनरी या मल्टी-क्लास वर्गीकरण के लिए उपयुक्त ह? आप इस डेटासेट से कौन से प्रश्न पूछेंगे?
## [ोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)
## [ाठ-उत्तर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
@ -310,4 +310,4 @@ SMOTE के API का अन्वेषण करें। यह किन
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,24 +1,24 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9579f42e3ff5114c58379cc9e186a828",
"translation_date": "2025-09-03T23:53:08+00:00",
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T10:26:26+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "hi"
}
-->
# व्यंजन वर्गीकरणकर्ता 1
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटा सेट का उपयोग करेंगे, जिसमें व्यंजनों से संबंधित संतुलित और साफ डेटा भरा हुआ है।
इस पाठ में, आप पिछले पाठ से सहेजे गए डेटा सेट का उपयोग करेंगे, जिसमें संतुलित और साफ डेटा है, जो विभिन्न व्यंजनों के बारे में है।
आप इस डेटा सेट का उपयोग विभिन्न वर्गीकरणकर्ताओं के साथ करेंगे ताकि _सामग्री के एक समूह के आधार पर किसी दिए गए राष्ट्रीय व्यंजन की भविष्यवाणी की जा सके_। ऐसा करते समय, आप यह भी जानेंगे कि वर्गीकरण कार्यों के लिए एल्गोरिदम का उपयोग कैसे किया जा सकता है।
आप इस डेटा सेट का उपयोग विभिन्न वर्गीकरणकर्ताओं के साथ करेंगे ताकि _सामग्री के समूह के आधार पर किसी राष्ट्रीय व्यंजन की भविष्यवाणी की जा सके_। ऐसा करते समय, आप यह जानेंगे कि वर्गीकरण कार्यों के लिए एल्गोरिदम का उपयोग कैसे किया जा सकता है।
## [पाठ-पूर्व प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/21/)
## [पाठ-पूर्व क्विज़](https://ff-quizzes.netlify.app/en/ml/)
# तैयारी
यह मानते हुए कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, सुनिश्चित करें कि इन चार पाठों के लिए रूट `/data` फ़ोल्डर में एक _cleaned_cuisines.csv_ फ़ाइल मौजूद है।
मान लें कि आपने [पाठ 1](../1-Introduction/README.md) पूरा कर लिया है, सुनिश्चित करें कि _cleaned_cuisines.csv_ फ़ाइल इन चार पाठों के लिए रूट `/data` फ़ोल्डर में मौजूद है।
## अभ्यास - एक राष्ट्रीय व्यंजन की भविष्यवाणी करें
## अभ्यास - राष्ट्रीय व्यंजन की भविष्यवाणी करें
1. इस पाठ के _notebook.ipynb_ फ़ोल्डर में काम करते हुए, उस फ़ाइल को Pandas लाइब्रेरी के साथ आयात करें:
@ -39,7 +39,7 @@ CO_OP_TRANSLATOR_METADATA:
| 4 | 4 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1. अब, और अधिक लाइब्रेरी आयात करें:
1. अब, कुछ और लाइब्रेरी आयात करें:
```python
from sklearn.linear_model import LogisticRegression
@ -67,14 +67,14 @@ CO_OP_TRANSLATOR_METADATA:
Name: cuisine, dtype: object
```
1. `Unnamed: 0` कॉलम और `cuisine` कॉलम को हटा दें, `drop()` का उपयोग करते हुए। बाकी डेटा को ट्रेनिंग फीचर्स के रूप में सहेजें:
1. उस `Unnamed: 0` कॉलम और `cuisine` कॉलम को हटा दें, `drop()` का उपयोग करके। बाकी डेटा को ट्रेनिंग फीचर्स के रूप में सहेजें:
```python
cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
cuisines_feature_df.head()
```
आपके फीचर्स इस प्रकार दिखेंगे:
आपके फीचर्स इस प्रकार दिख हैं:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -88,9 +88,9 @@ CO_OP_TRANSLATOR_METADATA:
## अपने वर्गीकरणकर्ता का चयन करना
अब जब आपका डेटा साफ और प्रशिक्षण के लिए तैयार है, तो आपको यह तय करना होगा कि इस कार्य के लिए कौन सा एल्गोरिदम उपयोग करना है।
अब जब आपका डेटा साफ और प्रशिक्षण के लिए तैयार है, तो आपको यह तय करना होगा कि इस का के लिए कौन सा एल्गोरिदम उपयोग करना है।
Scikit-learn वर्गीकरण को Supervised Learning के अंतर्गत वर्गीकृत करता है, और इस श्रेणी में आपको वर्गीकरण के कई तरीके मिलेंगे। [विविधता](https://scikit-learn.org/stable/supervised_learning.html) पहली नज़र में काफी भ्रमित कर सकती है। निम्नलिखित विधियों में सभी वर्गीकरण तकनीकें शामिल हैं:
Scikit-learn वर्गीकरण को सुपरवाइज्ड लर्निंग के तहत वर्गीकृत करता है, और इस श्रेणी में आपको वर्गीकरण के कई तरीके मिलेंगे। [विविधता](https://scikit-learn.org/stable/supervised_learning.html) पहली नज़र में काफी भ्रमित करने वाली लग सकती है। निम्नलिखित विधियां सभी वर्गीकरण तकनीकों को शामिल करती हैं:
- रैखिक मॉडल
- सपोर्ट वेक्टर मशीन
@ -103,56 +103,56 @@ Scikit-learn वर्गीकरण को Supervised Learning के अं
> आप [न्यूरल नेटवर्क का उपयोग करके डेटा को वर्गीकृत](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 और QuadraticDiscriminationAnalysis क तुलना की जाती है, और परिणामों को विज़ुअलाइज़ किया जाता है:
![वर्गीकरणकर्ताओं की तुलना](../../../../translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.hi.png)
> Scikit-learn के दस्तावेज़ों पर उत्पन्न प्लॉट
![वर्गीकरणकर्ताओं की तुलना](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> Scikit-learn के दस्तावेज़ों पर उत्पन्न प्लॉट्स
> AutoML इस समस्या को क्लाउड में इन तुलनाओं को चलाकर और आपके डेटा के लिए सबसे अच्छा एल्गोरिदम चुनने की अनुमति देकर आसानी से हल करता है। इसे [यहां आज़माएं](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML इस समस्या को आसानी से हल करता है, इन तुलनाओं को क्लाउड में चलाकर, जिससे आप अपने डेटा के लिए सबसे अच्छा एल्गोरिदम चुन सकते हैं। इसे [यहां आज़माएं](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### एक बेहतर दृष्टिकोण
बेतरतीब ढंग से अनुमान लगाने से बेहतर तरीका यह है कि इस डाउनलोड करने योग्य [ML चीट शीट](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) के विचारों का पालन करें। यहां, हम पाते हैं कि हमारे मल्टीक्लास समस्या के लिए, हमारे पास कुछ विकल्प हैं:
बेतरतीब ढंग से अनुमान लगाने से बेहतर तरीका यह है कि इस डाउनलोड करने योग्य [ML चीट शीट](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott) के विचारों का पालन करें। यहां, हम पाते हैं कि हमारे मल्टीक्लास समस्या के लिए हमारे पास कुछ विकल्प हैं:
![मल्टीक्लास समस्याओं के लिए चीटशीट](../../../../translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.hi.png)
> Microsoft के एल्गोरिदम चीट शीट का एक खंड, मल्टीक्लास वर्गीकरण विकल्पों का विवरण
![मल्टीक्लास समस्याओं के लिए चीटशीट](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> Microsoft के एल्गोरिदम चीट शीट का एक भाग, जिसमें मल्टीक्लास वर्गीकरण विकल्पों का विवरण है
✅ इस चीट शीट को डाउनलोड करें, इसे प्रिंट करें, और इसे अपनी दीवार पर लगाएं!
✅ इस चीट शीट को डाउनलोड करें, प्रिंट करें, और इसे अपनी दीवार पर टांग दें!
### तर्क
आइए देखें कि क्या हम अपनी बाधाओं को देखते हुए विभिन्न दृष्टिकोणों के माध्यम से तर्क कर सकते हैं:
आइए देखें कि हम अपने पास मौजूद बाधाओं को ध्यान में रखते हुए विभिन्न दृष्टिकोणों के माध्यम से तर्क कर सकते हैं:
- **न्यूरल नेटवर्क बहुत भारी हैं** हमारे साफ लेकिन न्यूनतम डेटा सेट को देखते हुए, और यह तथ्य कि हम नोटबुक के माध्यम से स्थानीय रूप से प्रशिक्षण चला रहे हैं, न्यूरल नेटवर्क इस कार्य के लिए बहुत भारी हैं।
- **कोई दो-वर्ग वर्गीकरणकर्ता नहीं।** हम दो-वर्ग वर्गीकरणकर्ता का उपयोग नहीं करते हैं, इसलिए यह विकल्प बाहर हो जाता है।
- **निर्णय वृक्ष या लॉजिस्टिक रिग्रेशन काम कर सकते हैं।** एक निर्णय वृक्ष काम कर सकता है, या मल्टीक्लास डेटा के लिए लॉजिस्टिक रिग्रेशन।
- **मल्टीक्लास बूस्टेड निर्णय वृक्ष एक अलग समस्या हल करते हैं** मल्टीक्लास बूस्टेड निर्णय वृक्ष गैर-पैरामीट्रिक कार्यों के लिए सबसे उपयुक्त हैं, जैसे रैंकिंग बनाने के लिए डिज़ाइन किए गए कार्य, इसलिए यह हमारे लिए उपयोगी नहीं है।
- **न्यूरल नेटवर्क बहुत भारी हैं** हमारे साफ लेकिन न्यूनतम डेटा सेट को देखते हुए, और तथ्य यह है कि हम प्रशिक्षण को स्थानीय रूप से नोटबुक्स के माध्यम से चला रहे हैं, न्यूरल नेटवर्क इस कार्य के लिए बहुत भारी हैं।
- **कोई दो-क्लास वर्गीकरणकर्ता नहीं**। हम दो-क्लास वर्गीकरणकर्ता का उपयोग नहीं करते हैं, इसलिए यह विकल्प बाहर हो जाता है।
- **निर्णय वृक्ष या लॉजिस्टिक रिग्रेशन काम कर सकते हैं**। निर्णय वृक्ष काम कर सकता है, या मल्टीक्लास डेटा के लिए लॉजिस्टिक रिग्रेशन।
- **मल्टीक्लास बूस्टेड निर्णय वृक्ष अलग समस्या हल करते हैं** मल्टीक्लास बूस्टेड निर्णय वृक्ष गैर-पैरामीट्रिक कार्यों के लिए सबसे उपयुक्त हैं, जैसे रैंकिंग बनाने के लिए डिज़ाइन किए गए कार्य, इसलिए यह हमारे लिए उपयोगी नहीं है।
### 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` मान एक निश्चित व्यवहार लागू करता है। सॉल्वर का मान यह निर्धारित करता है कि किस एल्गोरिदम का उपयोग करना है। सभी सॉल्वर को सभी `multi_class` मानों के साथ जोड़ा नहीं जा सकता।
मूल रूप से दो महत्वपूर्ण पैरामीटर हैं - `multi_class` और `solver` - जिन्हें हमें निर्दिष्ट करना होगा, जब हम Scikit-learn से लॉजिस्टिक रिग्रेशन करने के लिए कहते हैं। `multi_class` मान एक निश्चित व्यवहार लागू करता है। solver का मान यह निर्धारित करता है कि कौन सा एल्गोरिदम उपयोग करना है। सभी solver को सभी `multi_class` मानों के साथ जोड़ा नहीं जा सकता।
दस्तावेज़ों के अनुसार, मल्टीक्लास मामले में, प्रशिक्षण एल्गोरिदम:
- **वन-वर्सेस-रेस्ट (OvR) योजना का उपयोग करता है**, यदि `multi_class` विकल्प `ovr` पर सेट है।
- **क्रॉस-एंट्रॉपी लॉस का उपयोग करता है**, यदि `multi_class` विकल्प `multinomial` पर सेट है। (वर्तमान में `multinomial` विकल्प केवल lbfgs, sag, saga और newton-cg सॉल्वर द्वारा समर्थित है।)
- **one-vs-rest (OvR) योजना का उपयोग करता है**, यदि `multi_class` विकल्प `ovr` पर सेट है।
- **क्रॉस-एंट्रॉपी लॉस का उपयोग करता है**, यदि `multi_class` विकल्प `multinomial` पर सेट है। (वर्तमान में `multinomial` विकल्प केवल lbfgs, sag, saga और newton-cg solver द्वारा समर्थित है।)
> 🎓 यहां 'योजना' 'ovr' (वन-वर्सेस-रेस्ट) या 'मल्टीनोमियल' हो सकती है। चूंकि लॉजिस्टिक रिग्रेशन वास्तव में बाइनरी वर्गीकरण का समर्थन करने के लिए डिज़ाइन किया गया है, ये योजनाएं इसे मल्टीक्लास वर्गीकरण कार्यों को बेहतर ढंग से संभालने की अनुमति देती हैं। [स्रोत](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/)
> 🎓 'सॉल्वर' को "अनुकूलन समस्या में उपयोग किए जाने वाले एल्गोरिदम" के रूप में परिभाषित किया गया है। [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression)
> 🎓 'solver' को "अनुकूलन समस्या में उपयोग करने के लिए एल्गोरिदम" के रूप में परिभाषित किया गया है। [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn इस तालिका की पेशकश करता है ताकि यह समझाया जा सके कि सॉल्वर विभिन्न प्रकार की डेटा संरचनाओं द्वारा प्रस्तुत विभिन्न चुनौतियों को कैसे संभालते हैं:
Scikit-learn इस तालिका की पेशकश करता है ताकि यह समझाया जा सके कि solver विभिन्न प्रकार की डेटा संरचनाओं द्वारा प्रस्तुत विभिन्न चुनौतियों को कैसे संभालते हैं:
![सॉल्वर](../../../../translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.hi.png)
![solvers](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
## अभ्यास - डेटा विभाजित करें
## अभ्यास - डेटा को विभाजित करें
हम अपने पहले प्रशिक्षण परीक्षण के लिए लॉजिस्टिक रिग्रेशन पर ध्यान केंद्रित कर सकते हैं क्योंकि आपने हाल ही में पिछले पाठ में इसके बारे में सीखा था।
अपने डेटा को `train_test_split()` को कॉल करके प्रशिक्षण और परीक्षण समूहों में विभाजित करें:
हम अपने पहले प्रशिक्षण परीक्षण के लिए लॉजिस्टिक रिग्रेशन पर ध्यान केंद्रित कर सकते हैं क्योंकि आपने हाल ही में पिछले पाठ में इसके बारे में सीखा था।
अपने डेटा को प्रशिक्षण और परीक्षण समूहों में विभाजित करें, `train_test_split()` को कॉल करके:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -160,9 +160,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## अभ्यास - लॉजिस्टिक रिग्रेशन लागू करें
चूंकि आप मल्टीक्लास मामले का उपयोग कर रहे हैं, आपको यह चुनना होगा कि कौन स_योजना_ का उपयोग करना है और कौन सा _सॉल्वर_ सेट करना है। मल्टीक्लास सेटिंग और **liblinear** सॉल्वर के साथ LogisticRegression का उपयोग करके प्रशिक्षण लें।
चूंकि आप मल्टीक्लास मामले का उपयोग कर रहे हैं, आपको यह चुनना होगा कि कौन स_scheme_ उपयोग करना है और कौन सा _solver_ सेट करना है। मल्टीक्लास सेटिंग और **liblinear** solver के साथ LogisticRegression का उपयोग करें।
1. एक लॉजिस्टिक रिग्रेशन बनाएं, जिसमें multi_class को `ovr` और सॉल्वर को `liblinear` पर सेट करें:
1. एक लॉजिस्टिक रिग्रेशन बनाएं जिसमें multi_class `ovr` पर सेट हो और solver `liblinear` पर सेट हो:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
@ -172,8 +172,8 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
print ("Accuracy is {}".format(accuracy))
```
✅ एक अलग सॉल्वर आज़माएं, जैसे `lbfgs`, जिसे अक्सर डिफ़ॉल्ट रूप से सेट किया जाता है।
ध्यान दें, जब आवश्यक हो तो अपने डेटा को समतल करने के लिए Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) फ़ंक्शन का उपयोग करें।
✅ एक अलग solver जैसे `lbfgs` आज़माएं, जिसे अक्सर डिफ़ॉल्ट रूप में सेट किया जाता है।
> ध्यान दें, जब आवश्यक हो, तो अपने डेटा को समतल करने के लिए Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) फ़ंक्शन का उपयोग करें।
सटीकता **80%** से अधिक है!
1. आप इस मॉडल को एक डेटा की पंक्ति (#50) का परीक्षण करके देख सकते हैं:
@ -190,9 +190,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
cuisine: indian
```
✅ एक अलग पंक्ति संख्या आज़माएं और परिणाम जांचें
✅ एक अलग पंक्ति संख्या आज़माएं और परिणाम जांचें
1. गहराई में जाकर, आप इस भविष्यवाणी की सटीकता की जांच कर सकते हैं:
1. गहराई में जाएं, आप इस भविष्यवाणी की सटीकता की जांच कर सकते हैं:
```python
test= X_test.iloc[50].values.reshape(-1, 1).T
@ -204,7 +204,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
topPrediction.head()
```
परिणाम प्रिंट होता है - भारतीय व्यंजन इसका सबसे अच्छा अनुमान है, और संभावना भी अच्छी है:
परिणाम प्रिंट होता है - भारतीय व्यंजन इसका सबसे अच्छा अनुमान है, अच्छी संभावना के साथ:
| | 0 |
| -------: | -------: |
@ -214,9 +214,9 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
| korean | 0.017277 |
| thai | 0.007634 |
✅ क्या आप समझा सकते हैं कि मॉडल को क्यों पूरा यकीन है कि यह एक भारतीय व्यंजन है?
✅ क्या आप समझा सकते हैं कि मॉडल को क्यों पूरा यकीन है कि यह भारतीय व्यंजन है?
1. और अधिक जानकारी प्राप्त करने के लिए, एक वर्गीकरण रिपोर्ट प्रिंट करें, जैसा आपने रिग्रेशन पाठों में किया था:
1. अधिक विवरण प्राप्त करें, जैसा आपने रिग्रेशन पाठों में किया था, एक वर्गीकरण रिपोर्ट प्रिंट करके:
```python
y_pred = model.predict(X_test)
@ -236,13 +236,13 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## 🚀चुनौती
इस पाठ में, आपने अपने साफ किए गए डेटा का उपयोग करके एक मशीन लर्निंग मॉडल बनाया, जो सामग्री की एक श्रृंखला के आधार पर एक राष्ट्रीय व्यंजन की भविष्यवाणी कर सकता है। स्किकिट-लर्न द्वारा डेटा वर्गीकृत करने के लिए प्रदान किए गए कई विकल्पों को पढ़ने के लिए कुछ समय निकालें। 'सॉल्वर' की अवधारणा में गहराई से जाएं ताकि यह समझ सकें कि पर्दे के पीछे क्या होता है।
इस पाठ में, आपने अपने साफ किए गए डेटा का उपयोग करके एक मशीन लर्निंग मॉडल बनाया जो सामग्री की एक श्रृंखला के आधार पर राष्ट्रीय व्यंजन की भविष्यवाणी कर सकता है। Scikit-learn द्वारा डेटा वर्गीकृत करने के लिए प्रदान किए गए कई विकल्पों को पढ़ने के लिए कुछ समय निकालें। 'solver' की अवधारणा में गहराई से जाएं ताकि समझ सकें कि पर्दे के पीछे क्या होता है।
## [पाठ के बाद की क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/22/)
## [पाठ के बाद क्विज़](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)
@ -250,4 +250,4 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "808a71076f76ae8f5458862a8edd9215",
"translation_date": "2025-09-03T23:59:27+00:00",
"original_hash": "49047911108adc49d605cddfb455749c",
"translation_date": "2025-09-05T10:27:55+00:00",
"source_file": "4-Classification/3-Classifiers-2/README.md",
"language_code": "hi"
}
@ -11,26 +11,26 @@ CO_OP_TRANSLATOR_METADATA:
इस दूसरे वर्गीकरण पाठ में, आप संख्यात्मक डेटा को वर्गीकृत करने के और तरीके जानेंगे। आप यह भी समझेंगे कि एक वर्गीकरणकर्ता को दूसरे पर चुनने के क्या परिणाम हो सकते हैं।
## [पाठ-पूर्व प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)
## [पाठ-पूर्व प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
### पूर्वापेक्षा
हम मानते हैं कि आपने पिछले पाठ पूरे कर लिए हैं और आपके पास इस 4-पाठ फ़ोल्डर की रूट में `data` फ़ोल्डर में _cleaned_cuisines.csv_ नामक एक साफ़ किया हुआ डेटासेट है।
हम मानते हैं कि आपने पिछले पाठ पूरे कर लिए हैं और आपके पास `data` फ़ोल्डर में _cleaned_cuisines.csv_ नामक एक साफ़ किया हुआ डेटासेट है, जो इस 4-पाठ फ़ोल्डर की रूट में है।
### तैयारी
हमने आपके _notebook.ipynb_ फ़ाइल को साफ़ किए गए डेटासेट के साथ लोड कर दिया है और इसे X और y डेटा फ्रेम में विभाजित कर दिया है, जो मॉडल निर्माण प्रक्रिया के लिए तैयार हैं।
हमने आपके _notebook.ipynb_ फ़ाइल में साफ़ किया हुआ डेटासेट लोड कर दिया है और इसे X और y डेटा फ्रेम में विभाजित कर दिया है, जो मॉडल निर्माण प्रक्रिया के लिए तैयार हैं।
## एक वर्गीकरण मानचित्र
पिछले पाठ में, आपने डेटा को वर्गीकृत करने के विभिन्न विकल्पों के बारे में सीखा था, जिसमें Microsoft का चीट शीट शामिल था। Scikit-learn एक समान, लेकिन अधिक विस्तृत चीट शीट प्रदान करता है, जो आपके वर्गीकरणकर्ताओं (जिसे 'एस्टिमेटर्स' भी कहा जाता है) को और अधिक संकीर्ण करने में मदद कर सकता है:
![Scikit-learn से ML मानचित्र](../../../../translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.hi.png)
> सुझाव: [इस मानचित्र को ऑनलाइन देखें](https://scikit-learn.org/stable/tutorial/machine_learning_map/) और मार्ग पर क्लिक करके प्रलेखन पढ़ें।
![Scikit-learn से ML मानचित्र](../../../../4-Classification/3-Classifiers-2/images/map.png)
> टिप: [इस मानचित्र को ऑनलाइन देखें](https://scikit-learn.org/stable/tutorial/machine_learning_map/) और मार्ग पर क्लिक करके प्रलेखन पढ़ें।
### योजना
यह मानचित्र तब बहुत सहायक होता है जब आपके डेटा की स्पष्ट समझ हो, क्योंकि आप इसके मार्गों पर चलते हुए निर्णय ले सकते हैं:
यह मानचित्र तब बहुत सहायक होता है जब आपको अपने डेटा की स्पष्ट समझ हो, क्योंकि आप इसके मार्गों पर चलते हुए निर्णय ले सकते हैं:
- हमारे पास >50 नमूने हैं
- हम एक श्रेणी की भविष्यवाणी करना चाहते हैं
@ -67,7 +67,7 @@ CO_OP_TRANSLATOR_METADATA:
## Linear SVC वर्गीकरणकर्ता
सपोर्ट-वेक्टर क्लस्टरिंग (SVC) सपोर्ट-वेक्टर मशीनों के परिवार की एक विधि है (नीचे इसके बारे में और जानें)। इस विधि में, आप लेबल को क्लस्टर करने के लिए 'कर्नेल' चुन सकते हैं। 'C' पैरामीटर 'रेग्युलराइज़ेशन' को संदर्भित करता है, जो पैरामीटरों के प्रभाव को नियंत्रित करता है। कर्नेल [कई प्रकार के](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) हो सकते हैं; यहां हम इसे 'linear' पर सेट करते हैं ताकि हम Linear SVC का उपयोग कर सकें। Probability डिफ़ॉल्ट रूप से 'false' होती है; यहां हम इसे 'true' पर सेट करते हैं ताकि संभावना अनुमान प्राप्त कर सकें। हम डेटा को शफल करने के लिए रैंडम स्टेट को '0' पर सेट करते हैं।
सपोर्ट-वेक्टर क्लस्टरिंग (SVC) मशीन लर्निंग तकनीकों के सपोर्ट-वेक्टर मशीन परिवार का हिस्सा है (नीचे इनके बारे में और जानें)। इस विधि में, आप लेबल को क्लस्टर करने के लिए 'कर्नेल' चुन सकते हैं। 'C' पैरामीटर 'रेग्युलराइज़ेशन' को संदर्भित करता है, जो पैरामीटरों के प्रभाव को नियंत्रित करता है। कर्नेल [कई](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) में से एक हो सकता है; यहां हम इसे 'linear' पर सेट करते हैं ताकि हम Linear SVC का लाभ उठा सकें। Probability डिफ़ॉल्ट रूप से 'false' होती है; यहां हम इसे 'true' पर सेट करते हैं ताकि संभावना अनुमान प्राप्त कर सकें। हम डेटा को शफल करने के लिए रैंडम स्टेट को '0' पर सेट करते हैं।
### अभ्यास - Linear SVC लागू करें
@ -120,9 +120,9 @@ K-Neighbors "पड़ोसियों" परिवार का हिस्
### अभ्यास - K-Neighbors वर्गीकरणकर्ता लागू करें
पिछला वर्गीकरणकर्ता अच्छा था और डेटा के साथ ठीक काम किया, लेकिन शायद हम बेहतर सटीकता प्राप्त कर सकते हैं। K-Neighbors वर्गीकरणकर्ता आज़माएं।
पिछला वर्गीकरणकर्ता अच्छा था और डेटा के साथ अच्छी तरह से काम किया, लेकिन शायद हम बेहतर सटीकता प्राप्त कर सकते हैं। K-Neighbors वर्गीकरणकर्ता आज़माएं।
1. अपने क्लासिफायर ऐरे में एक लाइन जोड़ें (Linear SVC आइटम के बाद एक कॉमा जोड़ें):
1. अपने क्लासिफायर ऐरे में एक पंक्ति जोड़ें (Linear SVC आइटम के बाद एक कॉमा जोड़ें):
```python
'KNN classifier': KNeighborsClassifier(C),
@ -155,7 +155,7 @@ K-Neighbors "पड़ोसियों" परिवार का हिस्
आइए सपोर्ट वेक्टर क्लासिफायर के साथ थोड़ी बेहतर सटीकता प्राप्त करने का प्रयास करें।
1. K-Neighbors आइटम के बाद एक कॉमा जोड़ें, और फिर यह लाइन जोड़ें:
1. K-Neighbors आइटम के बाद एक कॉमा जोड़ें, और फिर यह पंक्ति जोड़ें:
```python
'SVC': SVC(),
@ -225,7 +225,7 @@ weighted avg 0.73 0.72 0.72 1199
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest), एक एवरेजिंग विधि, 'डिसीजन ट्री' का एक 'फॉरेस्ट' बनाता है, जिसमें यादृच्छिकता को शामिल किया जाता है ताकि ओवरफिटिंग से बचा जा सके। n_estimators पैरामीटर पेड़ों की संख्या पर सेट होता है।
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) एक डेटासेट पर एक क्लासिफायर फिट करता है और फिर उसी डेटासेट पर उस क्लासिफायर की प्रतियां फिट करता है। यह गलत वर्गीकृत वस्तुओं के वज़न पर ध्यान केंद्रित करता है और अगले क्लासिफायर के लिए फिट को समायोजित करता है।
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) एक डेटासेट पर एक क्लासिफायर फिट करता है और फिर उसी डेटासेट पर उस क्लासिफायर की प्रतियां फिट करता है। यह गलत वर्गीकृत वस्तुओं के वज़न पर ध्यान केंद्रित करता है और अगले क्लासिफायर के लिए फिट को सही करने के लिए समायोजित करता है।
---
@ -233,17 +233,17 @@ weighted avg 0.73 0.72 0.72 1199
इनमें से प्रत्येक तकनीक में कई पैरामीटर होते हैं जिन्हें आप समायोजित कर सकते हैं। प्रत्येक के डिफ़ॉल्ट पैरामीटर का अध्ययन करें और सोचें कि इन पैरामीटरों को समायोजित करने से मॉडल की गुणवत्ता पर क्या प्रभाव पड़ेगा।
## [पाठ-उत्तर प्रश्नोत्तरी](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)
## [पाठ-उत्तर प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
इन पाठों में बहुत सारा तकनीकी शब्दावली है, इसलिए [इस सूची](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) को पढ़ने के लिए कुछ समय निकालें!
इन पाठों में बहुत सारा तकनीकी शब्दावली है, इसलिए [इस सूची](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) को पढ़ने के लिए कुछ समय निकालें, जिसमें उपयोगी शब्दावली दी गई है!
## असाइनमेंट
[पैरामीटर खेल](assignment.md)
[पैरामीटर प्ले](assignment.md)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ad2cf19d7490247558d20a6a59650d13",
"translation_date": "2025-09-03T23:56:49+00:00",
"original_hash": "61bdec27ed2da8b098cd9065405d9bb0",
"translation_date": "2025-09-05T10:27:19+00:00",
"source_file": "4-Classification/4-Applied/README.md",
"language_code": "hi"
}
@ -11,40 +11,40 @@ CO_OP_TRANSLATOR_METADATA:
इस पाठ में, आप पिछले पाठों में सीखी गई तकनीकों का उपयोग करके एक वर्गीकरण मॉडल बनाएंगे और इस श्रृंखला में उपयोग किए गए स्वादिष्ट क्यूज़ीन डेटासेट के साथ काम करेंगे। इसके अलावा, आप एक छोटा वेब ऐप बनाएंगे जो सेव किए गए मॉडल का उपयोग करेगा, और Onnx के वेब रनटाइम का लाभ उठाएगा।
मशीन लर्निंग का एक सबसे उपयोगी व्यावहारिक उपयोग रिकमेंडेशन सिस्टम बनाना है, और आप आज स दिशा में पहला कदम उठा सकते हैं!
मशीन लर्निंग का एक सबसे उपयोगी व्यावहारिक उपयोग रिकमेंडेशन सिस्टम बनाना है, और आप आज स दिशा में पहला कदम उठा सकते हैं!
[![इस वेब ऐप को प्रस्तुत करते हुए](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML")
> 🎥 ऊपर दी गई छवि पर क्लिक करें: जेन लूपर वर्गीकृत क्यूज़ीन डेटा का उपयोग करके एक वेब ऐप बनाती हैं
> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: जेन लूपर वर्गीकृत क्यूज़ीन डेटा का उपयोग करके एक वेब ऐप बनाती हैं
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/25/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
इस पाठ में आप सीखेंगे:
- कैसे एक मॉडल बनाएं और उसे Onnx मॉडल के रूप में सेव करें
- कैसे Netron का उपयोग करके मॉडल का निरीक्षण करें
- कैसे अपने मॉडल को वेब ऐप में इन्फरेंस के लिए उपयोग करें
- कैसे अपने मॉडल को वेब ऐप में उपयोग करें
## अपना मॉडल बनाएं
एप्लाइड मशीन लर्निंग सिस्टम बनाना इन तकनीकों को आपके बिजनेस सिस्टम में उपयोग करने का एक महत्वपूर्ण हिस्सा है। आप अपने वेब एप्लिकेशन में मॉडल का उपयोग कर सकते हैं (और यदि आवश्यक हो तो ऑफलाइन संदर्भ में भी उपयोग कर सकते हैं) Onnx का उपयोग करके।
व्यावसायिक सिस्टम के लिए इन तकनीकों का लाभ उठाने के लिए एप्लाइड ML सिस्टम बनाना एक महत्वपूर्ण हिस्सा है। आप अपने वेब एप्लिकेशन में मॉडल का उपयोग कर सकते हैं (और यदि आवश्यक हो तो ऑफलाइन संदर्भ में भी उपयोग कर सकते हैं) Onnx का उपयोग करके।
[पिछले पाठ](../../3-Web-App/1-Web-App/README.md) में, आपने UFO sightings पर एक रिग्रेशन मॉडल बनाया था, उसे "पिकल्ड" किया था, और फ्लास्क ऐप में उपयोग किया था। जबकि यह आर्किटेक्चर जानने के लिए बहुत उपयोगी है, यह एक फुल-स्टैक पायथन ऐप है, और आपकी आवश्यकताओं में जावास्क्रिप्ट एप्लिकेशन का उपयोग शामिल हो सकता है।
एक [पिछले पाठ](../../3-Web-App/1-Web-App/README.md) में, आपने UFO sightings पर एक रिग्रेशन मॉडल बनाया था, उसे "पिकल्ड" किया था, और फ्लास्क ऐप में उपयोग किया था। जबकि यह आर्किटेक्चर जानने के लिए बहुत उपयोगी है, यह एक फुल-स्टैक पायथन ऐप है, और आपकी आवश्यकताओं में जावास्क्रिप्ट एप्लिकेशन का उपयोग शामिल हो सकता है।
इस पाठ में, आप इन्फरेंस के लिए एक बेसिक जावास्क्रिप्ट-आधारित सिस्टम बना सकते हैं। लेकिन पहले, आपको एक मॉडल को ट्रेन करना होगा और उसे Onnx के साथ उपयोग के लिए कनवर्ट करना होगा।
इस पाठ में, आप इन्फरेंस के लिए एक बुनियादी जावास्क्रिप्ट-आधारित सिस्टम बना सकते हैं। लेकिन पहले, आपको एक मॉडल को प्रशिक्षित करना होगा और उसे Onnx के साथ उपयोग के लिए कनवर्ट करना होगा।
## अभ्यास - वर्गीकरण मॉडल ट्रेन करें
## अभ्यास - वर्गीकरण मॉडल को प्रशिक्षित करें
सबसे पहले, उस साफ किए गए क्यूज़ीन डेटासेट का उपयोग करके एक वर्गीकरण मॉडल ट्रेन करें जिसे हमने उपयोग किया था।
सबसे पहले, उस साफ किए गए क्यूज़ीन डेटासेट का उपयोग करके एक वर्गीकरण मॉडल को प्रशिक्षित करें जिसे हमने उपयोग किया था।
1. उपयोगी लाइब्रेरीज़ को इपोर्ट करके शुरू करें:
1. उपयोगी लाइब्रेरीज़ को इम्पोर्ट करके शुरू करें:
```python
!pip install skl2onnx
import pandas as pd
```
आपको '[skl2onnx](https://onnx.ai/sklearn-onnx/)' की आवश्यकता होगी ताकि आप अपने Scikit-learn मॉडल को Onnx फॉर्मेट में कनवर्ट कर सकें।
आपको '[skl2onnx](https://onnx.ai/sklearn-onnx/)' की आवश्यकता होगी ताकि आप अपने Scikit-learn मॉडल को Onnx फॉर्मेट में कनवर्ट कर सकें।
1. फिर, अपने डेटा के साथ उसी तरह काम करें जैसे आपने पिछले पाठों में किया था, `read_csv()` का उपयोग करके एक CSV फ़ाइल पढ़ें:
@ -53,7 +53,7 @@ CO_OP_TRANSLATOR_METADATA:
data.head()
```
1. पहले दो अनावश्यक कॉलम हटाएं और शेष डेटा को 'X' के रूप में सेव करें:
1. पहले दो अनावश्यक कॉलम को हटा दें और शेष डेटा को 'X' के रूप में सेव करें:
```python
X = data.iloc[:,2:]
@ -68,11 +68,11 @@ CO_OP_TRANSLATOR_METADATA:
```
### ट्रेनिंग प्रक्रिया शुरू करें
### प्रशिक्षण प्रक्रिया शुरू करें
हम 'SVC' लाइब्रेरी का उपयोग करेंगे जिसमें अच्छी सटीकता है।
1. Scikit-learn से उपयुक्त लाइब्रेरीज़ इंपोर्ट करें:
1. Scikit-learn से उपयुक्त लाइब्रेरीज़ को इम्पोर्ट करें:
```python
from sklearn.model_selection import train_test_split
@ -81,7 +81,7 @@ CO_OP_TRANSLATOR_METADATA:
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report
```
1. ट्रेनिंग और टेस्ट सेट्स को अलग करें:
1. प्रशिक्षण और परीक्षण सेट को अलग करें:
```python
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
@ -122,11 +122,11 @@ CO_OP_TRANSLATOR_METADATA:
weighted avg 0.79 0.79 0.79 1199
```
### अपने मॉडल को Onnx में कनवर्ट करें
### अपने मॉडल को Onnx में कनवर्ट करें
सुनिश्चित करें कि कनवर्ज़न सही टेंसर नंबर के साथ किया गया है। इस डेटासेट में 380 सामग्री सूचीबद्ध हैं, इसलिए आपको `FloatTensorType` में उस नंबर को नोट करना होगा:
सुनिश्चित करें कि कनवर्ज़न सही टेंसर नंबर के साथ किया गया है। इस डेटासेट में 380 सामग्री सूचीबद्ध हैं, इसलिए आपको `FloatTensorType` में उस नंबर को नोट करना होगा:
1. 380 टेंसर नंबर का उपयोग करके कनवर्ट करें।
1. 380 टेंसर नंबर का उपयोग करके कनवर्ट करें।
```python
from skl2onnx import convert_sklearn
@ -136,7 +136,7 @@ CO_OP_TRANSLATOR_METADATA:
options = {id(model): {'nocl': True, 'zipmap': False}}
```
1. Onnx बनाएं और इसे **model.onnx** फ़ाइल के रूप में सेव करें:
1. onx बनाएं और इसे **model.onnx** फ़ाइल के रूप में सेव करें:
```python
onx = convert_sklearn(model, initial_types=initial_type, options=options)
@ -144,25 +144,25 @@ CO_OP_TRANSLATOR_METADATA:
f.write(onx.SerializeToString())
```
> ध्यान दें, आप अपने कनवर्ज़न स्क्रिप्ट में [विकल्प](https://onnx.ai/sklearn-onnx/parameterized.html) पास कर सकते हैं। इस मामले में, हमने 'nocl' को True और 'zipmap' को False सेट किया। चूंकि यह एक वर्गीकरण मॉडल है, आपके पास ZipMap को हटाने का विकल्प है जो डिक्शनरी की सूची बनाता है (आवश्यक नहीं)। `nocl` मॉडल में क्लास जानकारी शामिल होने को संदर्भित करता है। अपने मॉडल का आकार कम करने के लिए `nocl` को 'True' सेट करें।
> ध्यान दें, आप अपने कनवर्ज़न स्क्रिप्ट में [विकल्प](https://onnx.ai/sklearn-onnx/parameterized.html) पास कर सकते हैं। इस मामले में, हमने 'nocl' को True और 'zipmap' को False सेट किया। चूंकि यह एक वर्गीकरण मॉडल है, आपके पास ZipMap को हटाने का विकल्प है जो डिक्शनरी की सूची बनाता है (आवश्यक नहीं)। `nocl` का मतलब है कि मॉडल में क्लास जानकारी शामिल है। `nocl` को 'True' सेट करके अपने मॉडल का आकार कम करें।
पूरा नोटबुक चलाने से अब एक Onnx मॉडल बनेगा और इसे इस फ़ोल्डर में सेव किया जाएगा।
पूरे नोटबुक को चलाने से अब एक Onnx मॉडल बनेगा और इसे इस फ़ोल्डर में सेव किया जाएगा।
## अपने मॉडल को देखें
Onnx मॉडल Visual Studio Code में बहुत स्पष्ट नहीं होते हैं, लेकिन एक बहुत अच्छा मुफ्त सॉफ़्टवेयर है जिसे कई शोधकर्ता अपने मॉडल को विज़ुअलाइज़ करने के लिए उपयोग करते हैं ताकि यह सुनिश्चित किया जा सके कि यह सही तरीके से बना है। [Netron](https://github.com/lutzroeder/Netron) डाउनलोड करें और अपनी model.onnx फ़ाइल खोलें। आप अपने सरल मॉडल को विज़ुअलाइज़ कर सकते हैं, जिसमें इसके 380 इनपुट और वर्गीकर्ता सूचीबद्ध हैं:
Onnx मॉडल Visual Studio Code में बहुत स्पष्ट नहीं होते हैं, लेकिन एक बहुत अच्छा मुफ्त सॉफ़्टवेयर है जिसे कई शोधकर्ता अपने मॉडल को देखने के लिए उपयोग करते हैं ताकि यह सुनिश्चित किया जा सके कि यह सही तरीके से बना है। [Netron](https://github.com/lutzroeder/Netron) डाउनलोड करें और अपनी model.onnx फ़ाइल खोलें। आप अपने सरल मॉडल को विज़ुअलाइज़ कर सकते हैं, जिसमें इसके 380 इनपुट और वर्गीकर्ता सूचीबद्ध हैं:
![Netron विज़ुअल](../../../../translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.hi.png)
![Netron विज़ुअल](../../../../4-Classification/4-Applied/images/netron.png)
Netron आपके मॉडल को देखने के लिए एक उपयोगी टूल है।
अब आप इस शानदार मॉडल का उपयोग एक वेब ऐप में कर सकते हैं। चलिए एक ऐसा ऐप बनाते हैं जो आपके फ्रिज में देखे गए सामग्री के संयोजन का उपयोग करके यह तय करता है कि आपके मॉडल द्वारा निर्धारित क्यूज़ीन कौन सा हो सकता है।
अब आप इस शानदार मॉडल को एक वेब ऐप में उपयोग करने के लिए तैयार हैं। चलिए एक ऐसा ऐप बनाते हैं जो आपके फ्रिज में देखे गए सामग्री के संयोजन को निर्धारित करने में मदद करता है कि कौन सा क्यूज़ीन आपके मॉडल द्वारा सुझाया गया है।
## रिकमेंडर वेब एप्लिकेशन बनाएं
आप अपने मॉडल का उपय सीधे एक वेब ऐप में कर सकते हैं। यह आर्किटेक्चर आपको इसे लोकल और यहां तक कि ऑफलाइन भी चलाने की अनुमति देता है। उस फ़ोल्डर में एक `index.html` फ़ाइल बनाकर शुरू करें जहां आपने अपनी `model.onnx` फ़ाइल सेव की थी
आप अपने मॉडल को सीधे एक वेब ऐप में उपयोग कर सकते हैं। यह आर्किटेक्चर आपको इसे लोकल और यहां तक कि ऑफलाइन भी चलाने की अनुमति देता है। उस फ़ोल्डर में एक `index.html` फ़ाइल बनाकर शुरू करें जहां आपने अपनी `model.onnx` फ़ाइल सेव की है
1. इस फ़ाइल _index.html_ में, निम्न मार्कअप जोड़ें:
1. इस फ़ाइल _index.html_ में निम्न मार्कअप जोड़ें:
```html
<!DOCTYPE html>
@ -176,7 +176,7 @@ Netron आपके मॉडल को देखने के लिए एक
</html>
```
1. अब, `body` टैग के भीतर काम करते हुए, कुछ सामग्री को दर्शाने के लिए चेकबॉक्स की एक सूची दिखाने के लिए थोड़ा मार्कअप जोड़ें:
1. अब, `body` टैग के भीतर काम करते हुए, कुछ सामग्री को दिखाने के लिए चेकबॉक्स की एक सूची जोड़ें:
```html
<h1>Check your refrigerator. What can you create?</h1>
@ -223,9 +223,9 @@ Netron आपके मॉडल को देखने के लिए एक
ध्यान दें कि प्रत्येक चेकबॉक्स को एक वैल्यू दी गई है। यह उस इंडेक्स को दर्शाता है जहां सामग्री डेटासेट के अनुसार पाई जाती है। उदाहरण के लिए, Apple इस अल्फाबेटिक सूची में पांचवें कॉलम पर है, इसलिए इसकी वैल्यू '4' है क्योंकि हम 0 से गिनती शुरू करते हैं। आप [ingredients spreadsheet](../../../../4-Classification/data/ingredient_indexes.csv) को देखकर किसी सामग्री का इंडेक्स पता कर सकते हैं।
अपने index.html फ़ाइल में काम जारी रखते हुए, एक स्क्रिप्ट ब्लॉक जोड़ें जहां मॉडल को अंतिम बंद `</div>` के बाद कॉल किया जाता है।
अपने काम को index.html फ़ाइल में जारी रखते हुए, एक स्क्रिप्ट ब्लॉक जोड़ें जहां मॉडल को अंतिम बंद `</div>` के बाद कॉल किया जाता है।
1. सबसे पहले, [Onnx Runtime](https://www.onnxruntime.ai/) को इपोर्ट करें:
1. सबसे पहले, [Onnx Runtime](https://www.onnxruntime.ai/) को इम्पोर्ट करें:
```html
<script src="https://cdn.jsdelivr.net/npm/onnxruntime-web@1.9.0/dist/ort.min.js"></script>
@ -287,33 +287,33 @@ Netron आपके मॉडल को देखने के लिए एक
इस कोड में, कई चीजें हो रही हैं:
1. आपने 380 संभावित वैल्यूज़ (1 या 0) का एक ऐरे बनाया जिसे सेट किया जाएगा और इन्फरेंस के लिए मॉडल को भेजा जाएगा, यह इस बात पर निर्भर करता है कि सामग्री चेकबॉक्स चेक किया गया है या नहीं।
2. आपने चेकबॉक्स का एक ऐरे बनाया और एक तरीका बनाया जिससे यह पता लगाया जा सके कि वे चेक किए गए हैं या नहीं, एक `init` फंक्शन में जिसे एप्लिकेशन शुरू होने पर कॉल किया जाता है। जब कोई चेकबॉक्स चेक किया जाता है, तो `ingredients` ऐरे को चुनी गई सामग्री को दर्शाने के लिए बदला जाता है।
3. आपने एक `testCheckboxes` फंक्शन बनाया जो जांचता है कि कोई चेकबॉक्स चेक किया गया है या नहीं।
4. आप `startInference` फंक्शन का उपयोग करते हैं जब बटन दबाया जाता है और, यदि कोई चेकबॉक्स चेक किया गया है, तो आप इन्फरेंस शुरू करते हैं।
1. आपने 380 संभावित वैल्यूज़ (1 या 0) का एक ऐरे बनाया जिसे इन्फरेंस के लिए मॉडल को भेजा जाएगा, यह इस बात पर निर्भर करता है कि सामग्री का चेकबॉक्स चेक किया गया है या नहीं।
2. आपने चेकबॉक्स का एक ऐरे बनाया और एक तरीका जिससे यह पता लगाया जा सके कि वे चेक किए गए हैं या नहीं, एक `init`ंक्शन में जिसे एप्लिकेशन शुरू होने पर कॉल किया जाता है। जब कोई चेकबॉक्स चेक किया जाता है, तो `ingredients` ऐरे को चुनी गई सामग्री को दर्शाने के लिए बदला जाता है।
3. आपने एक `testCheckboxes`ंक्शन बनाया जो जांचता है कि कोई चेकबॉक्स चेक किया गया है या नहीं।
4. आप `startInference`ंक्शन का उपयोग करते हैं जब बटन दबाया जाता है और, यदि कोई चेकबॉक्स चेक किया गया है, तो आप इन्फरेंस शुरू करते हैं।
5. इन्फरेंस प्रक्रिया में शामिल हैं:
1. मॉडल को असिंक्रोनस रूप से लोड करना
2. मॉडल को भेजने के लिए एक टेंसर संरचना बनाना
3. 'feeds' बनाना जो उस `float_input` इनपुट को दर्शाता है जिसे आपने अपने मॉडल को ट्रेन करते समय बनाया था (आप Netron का उपयोग करके उस नाम को सत्यापित कर सकते हैं)
3. 'feeds' बनाना जो उस `float_input` इनपुट को दर्शाता है जिसे आपने अपने मॉडल को प्रशिक्षित करते समय बनाया था (आप Netron का उपयोग करके उस नाम को सत्यापित कर सकते हैं)
4. इन 'feeds' को मॉडल में भेजना और प्रतिक्रिया की प्रतीक्षा करना
## अपने एप्लिकेशन का परीक्षण करें
Visual Studio Code में उस फ़ोल्डर में एक टर्मिनल सत्र खोलें जहां आपकी index.html फ़ाइल स्थित है। सुनिश्चित करें कि आपने [http-server](https://www.npmjs.com/package/http-server) को ग्लोबली इंस्टॉल किया है, और प्रॉम्प्ट पर `http-server` टाइप करें। एक लोकलहोस्ट खुलना चाहिए और आप अपने वेब ऐप को देख सकते हैं। विभिन्न सामग्री के आधार पर कौन सा क्यूज़ीन रिकमेंड किया गया है, यह जांचें:
Visual Studio Code में उस फ़ोल्डर में एक टर्मिनल सत्र खोलें जहां आपकी index.html फ़ाइल स्थित है। सुनिश्चित करें कि आपने [http-server](https://www.npmjs.com/package/http-server) को ग्लोबली इंस्टॉल किया है, और प्रॉम्प्ट पर `http-server` टाइप करें। एक लोकलहोस्ट खुलना चाहिए और आप अपने वेब ऐप को देख सकते हैं। विभिन्न सामग्री के आधार पर कौन सा क्यूज़ीन सुझाया गया है, यह जांचें:
![सामग्री वेब ऐप](../../../../translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.hi.png)
![सामग्री वेब ऐप](../../../../4-Classification/4-Applied/images/web-app.png)
बधाई हो, आपने कुछ फ़ील्ड्स के साथ एक 'रिकमेंडेशन' वेब ऐप बनाया है। इस सिस्टम को बनाने में समय लगाएं!
बधाई हो, आपने कुछ फ़ील्ड्स के साथ एक 'रिकमेंडेशन' वेब ऐप बनाया है। इस सिस्टम को बनाने में कुछ समय लगाएं!
## 🚀चुनौती
आपका वेब ऐप बहुत साधारण है, इसलिए इसे [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) डेटा से सामग्री और उनके इंडेक्स का उपयोग करके और विकसित करें। कौन से फ्लेवर संयोजन एक दिए गए राष्ट्रीय व्यंजन को बनाने के लिए काम करते हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/26/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
हालांकि इस पाठ ने खाद्य सामग्री के लिए एक रिकमेंडेशन सिस्टम बनाने की उपयोगिता को केवल छुआ है, मशीन लर्निंग एप्लिकेशन के इस क्षेत्र में उदाहरणों की भरमार है। पढ़ें कि ये सिस्टम कैसे बनाए जाते हैं:
हालांकि इस पाठ ने खाद्य सामग्री के लिए एक रिकमेंडेशन सिस्टम बनाने की उपयोगिता को केवल छुआ है, इस क्षेत्र में ML एप्लिकेशन के उदाहरण बहुत समृद्ध हैं। पढ़ें कि ये सिस्टम कैसे बनाए जाते हैं:
- https://www.sciencedirect.com/topics/computer-science/recommendation-engine
- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/
@ -321,9 +321,9 @@ Visual Studio Code में उस फ़ोल्डर में एक ट
## असाइनमेंट
[नया रिकमेंडर बनाएं](assignment.md)
[एक नया रिकमेंडर बनाएं](assignment.md)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,125 +1,125 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ab69b161efd7a41d325ee28b29415d7",
"translation_date": "2025-09-03T23:07:54+00:00",
"original_hash": "730225ea274c9174fe688b21d421539d",
"translation_date": "2025-09-05T10:19:12+00:00",
"source_file": "5-Clustering/1-Visualize/README.md",
"language_code": "hi"
}
-->
# क्लस्टरिंग का परिचय
क्लस्टरिंग [अनसुपरवाइज्ड लर्निंग](https://wikipedia.org/wiki/Unsupervised_learning) का एक प्रकार है, जो मानता है कि डेटा सेट लेबल रहित है या इसके इनपुट्स को पहले से परिभाषित आउटपुट्स के साथ नहीं जोड़ा गया है। यह विभिन्न एल्गोरिदम का उपयोग करके लेबल रहित डेटा को छांटता है और डेटा में पहचाने गए पैटर्न के अनुसार समूह प्रदान करता है।
क्लस्टरिंग [अनुपरिक्षित शिक्षण](https://wikipedia.org/wiki/Unsupervised_learning) का एक प्रकार है, जिसमें यह माना जाता है कि डेटा सेट लेबल रहित है या इसके इनपुट्स को पहले से परिभाषित आउटपुट्स के साथ नहीं जोड़ा गया है। यह विभिन्न एल्गोरिदम का उपयोग करके लेबल रहित डेटा को छांटता है और डेटा में पहचाने गए पैटर्न के अनुसार समूह प्रदान करता है।
[![PSquare द्वारा No One Like You](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "PSquare द्वारा No One Like You")
[![PSquare का "No One Like You"](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "PSquare का 'No One Like You'")
> 🎥 ऊपर दी गई छवि पर क्लिक करें और वीडियो देखें। जब आप क्लस्टरिंग के साथ मशीन लर्निंग का अध्ययन कर रहे हों, तो कुछ नाइजीरियाई डांस हॉल ट्रैक्स का आनंद लें - यह PSquare का 2014 का एक उच्च रेटेड गाना है।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
### परिचय
[क्लस्टरिंग](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) डेटा एक्सप्लोरेशन के लिए बहुत उपयोगी है। आइए देखें कि क्या यह नाइजीरियाई दर्शकों के संगीत उपभोग के तरीके में रुझान और पैटर्न खोजने में मदद कर सकता है।
[क्लस्टरिंग](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) डेटा एक्सप्लोरेशन के लिए बहुत उपयोगी है। आइए देखें कि क्या यह नाइजीरियाई दर्शकों के संगीत सुनने के तरीकों में रुझान और पैटर्न खोजने में मदद कर सकता है।
✅ एक मिनट लें और क्लस्टरिंग के उपयोगों के बारे में सोचें। असल जिंदगी में, क्लस्टरिंग तब होती है जब आपके पास कपड़ों का ढेर होता है और आपको अपने परिवार के सदस्यों के कपड़े छांटने होते हैं 🧦👕👖🩲। डेटा साइंस में, क्लस्टरिंग तब होती है जब उपयोगकर्ता की प्राथमिकताओं का विश्लेषण करने या किसी लेबल रहित डेटा सेट की विशेषताओं को निर्धारित करने की कोशिश की जाती है। क्लस्टरिंग, एक तरह से, अराजकता को समझने में मदद करती है, जैसे मोजे की दराज।
✅ एक मिनट लें और सोचें कि क्लस्टरिंग का उपयोग कहां किया जा सकता है। असल जिंदगी में, क्लस्टरिंग तब होती है जब आपके पास कपड़ों का ढेर होता है और आपको अपने परिवार के सदस्यों के कपड़े छांटने होते हैं 🧦👕👖🩲। डेटा साइंस में, क्लस्टरिंग तब होती है जब उपयोगकर्ता की पसंद का विश्लेषण करने या किसी लेबल रहित डेटा सेट की विशेषताओं को निर्धारित करने की कोशिश की जाती है। क्लस्टरिंग, एक तरह से, अव्यवस्था को समझने में मदद करती है, जैसे मोजे की दराज को व्यवस्थित करना
[![ML का परिचय](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "क्लस्टरिंग का परिचय")
[![मशीन लर्निंग का परिचय](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "क्लस्टरिंग का परिचय")
> 🎥 ऊपर दी गई छवि पर क्लिक करें और वीडियो देखें: MIT के John Guttag क्लस्टरिंग का परिचय देते हैं।
> 🎥 ऊपर दी गई छवि पर क्लिक करें और वीडियो देखें: MIT के जॉन गुटटैग क्लस्टरिंग का परिचय देते हैं।
पेशेवर सेटिंग में, क्लस्टरिंग का उपयोग बाजार विभाजन जैसे चीजों को निर्धारित करने के लिए किया जा सकता है, जैसे कि कौन सी आयु वर्ग कौन सी वस्तुएं खरीदती हैं। एक अन्य उपयोग अनियमितता का पता लगाना हो सकता है, जैसे कि क्रेडिट कार्ड लेनदेन के डेटा सेट से धोखाधड़ी का पता लगाना। या आप मेडिकल स्कैन के बैच में ट्यूमर का निर्धारण करने के लिए क्लस्टरिंग का उपयोग कर सकते हैं।
पेशेवर सेटिंग में, क्लस्टरिंग का उपयोग बाजार विभाजन, यह निर्धारित करने के लिए किया जा सकता है कि कौन सी आयु वर्ग कौन सी वस्तुएं खरीदती हैं। एक अन्य उपयोग धोखाधड़ी का पता लगाने के लिए हो सकता है, जैसे क्रेडिट कार्ड लेनदेन के डेटा सेट में। या आप इसे मेडिकल स्कैन के बैच में ट्यूमर का पता लगाने के लिए उपयोग कर सकते हैं।
✅ एक मिनट लें और सोचें कि आपने 'वास्तविक दुनिया' में, बैंकिंग, ई-कॉमर्स, या व्यवसाय सेटिंग में क्लस्टरिंग का सामना कैसे किया होगा।
✅ एक मिनट सोचें कि आपने 'वास्तविक दुनिया' में, बैंकिंग, ई-कॉमर्स, या व्यवसाय सेटिंग में क्लस्टरिंग का सामना कैसे किया होगा।
> 🎓 दिलचस्प बात यह है कि क्लस्टर विश्लेषण की शुरुआत 1930 के दशक में मानवशास्त्र और मनोविज्ञान के क्षेत्रों में हुई थी। क्या आप कल्पना कर सकते हैं कि इसका उपयोग कैसे किया गया होगा?
> 🎓 दिलचस्प बात यह है कि क्लस्टर विश्लेषण की उत्पत्ति 1930 के दशक में मानवविज्ञान और मनोविज्ञान के क्षेत्रों में हुई थी। क्या आप कल्पना कर सकते हैं कि इसका उपयोग कैसे किया गया होगा?
इसके अलावा, आप इसे खोज परिणामों को समूहित करने के लिए उपयोग कर सकते हैं - उदाहरण के लिए, खरीदारी लिंक, छवियां, या समीक्षाएं। क्लस्टरिंग तब उपयोगी होती है जब आपके पास एक बड़ा डेटा सेट होता है जिसे आप कम करना चाहते हैं और जिस पर आप अधिक गहन विश्लेषण करना चाहते हैं, इसलिए इस तकनीक का उपयोग अन्य मॉडलों के निर्माण से पहले डेटा के बारे में जानने के लिए किया जा सकता है।
इसके अलावा, आप इसे खोज परिणामों को समूहित करने के लिए उपयोग कर सकते हैं - जैसे शॉपिंग लिंक, छवियां, या समीक्षाएं। क्लस्टरिंग तब उपयोगी होती है जब आपके पास एक बड़ा डेटा सेट होता है जिसे आप कम करना चाहते हैं और जिस पर आप अधिक गहन विश्लेषण करना चाहते हैं, इसलिए इस तकनीक का उपयोग अन्य मॉडलों के निर्माण से पहले डेटा के बारे में जानने के लिए किया जा सकता है।
✅ एक बार जब आपका डेटा क्लस्टर्स में व्यवस्थित हो जाता है, तो आप इसे एक क्लस्टर आईडी असाइन करते हैं, और यह तकनीक डेटा सेट की गोपनीयता बनाए रखने में उपयोगी हो सकती है; आप इसके बजाय डेटा पॉइंट को इसके क्लस्टर आईडी द्वारा संदर्भित कर सकते हैं, बजाय इसके कि अधिक खुलासा करने वाले पहचान योग्य डेटा द्वारा। क्या आप अन्य कारणों के बारे में सोच सकते हैं कि आप क्लस्टर को पहचानने के लिए क्लस्टर आईडी का उपयोग क्यों करेंगे?
✅ एक बार जब आपका डेटा क्लस्टर्स में व्यवस्थित हो जाता है, तो आप इसे एक क्लस्टर आईडी असाइन करते हैं, और यह तकनीक डेटा सेट की गोपनीयता बनाए रखने में उपयोगी हो सकती है; आप क्लस्टर के अन्य तत्वों के बजाय डेटा पॉइंट को उसकी क्लस्टर आईडी से संदर्भित कर सकते हैं। क्या आप अन्य कारण सोच सकते हैं कि आप क्लस्टर को पहचानने के लिए अन्य तत्वों के बजाय क्लस्टर आईडी का उपयोग क्यों करेंगे?
क्लस्टरिंग तकनीकों की अपनी समझ को इस [लर्न मॉड्यूल](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) में गहरा करें।
क्लस्टरिंग तकनीकों की अपनी समझ को इस [लर्न मॉड्यूल](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) में गहराई से बढ़ाएं।
## क्लस्टरिंग के साथ शुरुआत
[Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html) क्लस्टरिंग करने के लिए कई विधियां प्रदान करता है। आप किस प्रकार का चयन करते हैं, यह आपके उपयोग के मामले पर निर्भर करेगा। दस्तावेज़ के अनुसार, प्रत्येक विधि के विभिन्न लाभ हैं। यहां Scikit-learn द्वारा समर्थित विधियों और उनके उपयुक्त उपयोग मामलों की एक सरल तालिका दी गई है:
| विधि का नाम | उपयोग का मामला |
| :--------------------------- | :-------------------------------------------------------------------- |
| K-Means | सामान्य उद्देश्य, इंडक्टिव |
| Affinity propagation | कई, असमान क्लस्टर्स, इंडक्टिव |
| Mean-shift | कई, असमान क्लस्टर्स, इंडक्टिव |
| Spectral clustering | कुछ, समान क्लस्टर्स, ट्रांसडक्टिव |
| Ward hierarchical clustering | कई, बाधित क्लस्टर्स, ट्रांसडक्टिव |
| Agglomerative clustering | कई, बाधित, गैर-यूक्लिडियन दूरी, ट्रांसडक्टिव |
| DBSCAN | गैर-फ्लैट ज्यामिति, असमान क्लस्टर्स, ट्रांसडक्टिव |
[Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html) क्लस्टरिंग करने के लिए कई विधियां प्रदान करता है। आप किस प्रकार का चयन करते हैं, यह आपके उपयोग के मामले पर निर्भर करेगा। दस्तावेज़ीकरण के अनुसार, प्रत्येक विधि के विभिन्न लाभ हैं। यहां Scikit-learn द्वारा समर्थित विधियों और उनके उपयुक्त उपयोग मामलों की एक सरल तालिका दी गई है:
| विधि का नाम | उपयोग का मामला |
| :--------------------------- | :------------------------------------------------------------------ |
| K-Means | सामान्य उद्देश्य, इंडक्टिव |
| Affinity propagation | कई, असमान क्लस्टर्स, इंडक्टिव |
| Mean-shift | कई, असमान क्लस्टर्स, इंडक्टिव |
| Spectral clustering | कुछ, समान क्लस्टर्स, ट्रांसडक्टिव |
| Ward hierarchical clustering | कई, बाधित क्लस्टर्स, ट्रांसडक्टिव |
| Agglomerative clustering | कई, बाधित, गैर-यूक्लिडियन दूरी, ट्रांसडक्टिव |
| DBSCAN | गैर-फ्लैट ज्यामिति, असमान क्लस्टर्स, ट्रांसडक्टिव |
| OPTICS | गैर-फ्लैट ज्यामिति, असमान क्लस्टर्स, परिवर्तनीय घनत्व, ट्रांसडक्टिव |
| Gaussian mixtures | फ्लैट ज्यामिति, इंडक्टिव |
| BIRCH | बड़े डेटा सेट के साथ आउटलायर्स, इंडक्टिव |
| Gaussian mixtures | फ्लैट ज्यामिति, इंडक्टिव |
| BIRCH | बड़े डेटा सेट के साथ आउटलायर्स, इंडक्टिव |
> 🎓 हम क्लस्टर्स कैसे बनाते हैं, इसका बहुत कुछ इस बात से लेना-देना है कि हम डेटा पॉइंट्स को समूहों में कैसे इकट्ठा करते हैं। आइए कुछ शब्दावली को समझें:
> 🎓 हम क्लस्टर्स कैसे बनाते हैं, यह इस बात पर निर्भर करता है कि हम डेटा पॉइंट्स को समूहों में कैसे इकट्ठा करते हैं। आइए कुछ शब्दावली को समझें:
>
> 🎓 ['ट्रांसडक्टिव' बनाम 'इंडक्टिव'](https://wikipedia.org/wiki/Transduction_(machine_learning))
>
> ट्रांसडक्टिव इनफेरेंस उन देखे गए प्रशिक्षण मामलों से प्राप्त होता है जो विशिष्ट परीक्षण मामलों को मैप करते हैं। इंडक्टिव इनफेरेंस उन प्रशिक्षण मामलों से प्राप्त होता है जो सामान्य नियमों को मैप करते हैं और केवल तभी परीक्षण मामलों पर लागू होते हैं।
> ट्रांसडक्टिव अनुमान उन प्रशिक्षण मामलों से निकाला जाता है जो विशिष्ट परीक्षण मामलों से मेल खाते हैं। इंडक्टिव अनुमान उन प्रशिक्षण मामलों से निकाला जाता है जो सामान्य नियमों को मैप करते हैं और फिर उन्हें परीक्षण मामलों पर लागू करते हैं।
>
> उदाहरण: कल्पना करें कि आपके पास एक डेटा सेट है जो केवल आंशिक रूप से लेबल किया गया है। कुछ चीजें 'रिकॉर्ड्स' हैं, कुछ 'सीडी' हैं, और कुछ खाली हैं। आपका काम खाली चीजों के लिए लेबल प्रदान करना है। यदि आप इंडक्टिव दृष्टिकोण चुनते हैं, तो आप 'रिकॉर्ड्स' और 'सीडी' की तलाश में एक मॉडल को प्रशिक्षित करेंगे और उन लेबल्स को अपने लेबल रहित डेटा पर लागू करेंगे। यह दृष्टिकोण उन चीजों को वर्गीकृत करने में कठिनाई करेगा जो वास्तव में 'कैसेट्स' हैं। दूसरी ओर, ट्रांसडक्टिव दृष्टिकोण इस अज्ञात डेटा को अधिक प्रभावी ढंग से संभालता है क्योंकि यह समान वस्तुओं को एक साथ समूहित करने और फिर समूह को एक लेबल लागू करने का काम करता है। इस मामले में, क्लस्टर्स 'गोल संगीत चीजें' और 'चौकोर संगीत चीजें' को दर्शा सकते हैं।
> उदाहरण: कल्पना करें कि आपके पास एक डेटा सेट है जो केवल आंशिक रूप से लेबल किया गया है। कुछ चीजें 'रिकॉर्ड्स' हैं, कुछ 'सीडी' हैं, और कुछ खाली हैं। आपका काम खाली चीजों के लिए लेबल प्रदान करना है। यदि आप इंडक्टिव दृष्टिकोण चुनते हैं, तो आप 'रिकॉर्ड्स' और 'सीडी' की तलाश में एक मॉडल को प्रशिक्षित करेंगे और उन लेबल्स को अपने लेबल रहित डेटा पर लागू करेंगे। यह दृष्टिकोण उन चीजों को वर्गीकृत करने में कठिनाई करेगा जो वास्तव में 'कैसेट्स' हैं। दूसरी ओर, ट्रांसडक्टिव दृष्टिकोण इस अज्ञात डेटा को अधिक प्रभावी ढंग से संभालता है क्योंकि यह समान वस्तुओं को एक साथ समूहित करने और फिर एक समूह को लेबल प्रदान करने का काम करता है। इस मामले में, क्लस्टर्स 'गोल संगीत चीजें' और 'चौकोर संगीत चीजें' को प्रतिबिंबित कर सकते हैं।
>
> 🎓 ['गैर-फ्लैट' बनाम 'फ्लैट' ज्यामिति](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
>
> गणितीय शब्दावली से लिया गया, गैर-फ्लैट बनाम फ्लैट ज्यामिति डेटा पॉइंट्स के बीच की दूरी को 'फ्लैट' ([यूक्लिडियन](https://wikipedia.org/wiki/Euclidean_geometry)) या 'गैर-फ्लैट' (गैर-यूक्लिडियन) ज्यामितीय तरीकों से मापने को संदर्भित करता है।
> गणितीय शब्दावली से लिया गया, गैर-फ्लैट बनाम फ्लैट ज्यामिति डेटा बिंदुओं के बीच की दूरी को मापने के तरीके को संदर्भित करता है, जो या तो 'फ्लैट' ([यूक्लिडियन](https://wikipedia.org/wiki/Euclidean_geometry)) या 'गैर-फ्लैट' (गैर-यूक्लिडियन) ज्यामितीय विधियों द्वारा होता है।
>
>'फ्लैट' इस संदर्भ में यूक्लिडियन ज्यामिति (जिसके कुछ हिस्से 'प्लेन' ज्यामिति के रूप में पढ़ाए जाते हैं) को संदर्भित करता है, और गैर-फ्लैट गैर-यूक्लिडियन ज्यामिति को संदर्भित करता है। मशीन लर्निंग के साथ ज्यामिति का क्या संबंध है? खैर, गणित में जड़ें होने वाले दो क्षेत्रों के रूप में, पॉइंट्स के बीच की दूरी को मापने का एक सामान्य तरीका होना चाहिए, और इसे डेटा की प्रकृति के आधार पर 'फ्लैट' या 'गैर-फ्लैट' तरीके से किया जा सकता है। [यूक्लिडियन दूरी](https://wikipedia.org/wiki/Euclidean_distance) को दो पॉइंट्स के बीच एक रेखा खंड की लंबाई के रूप में मापा जाता है। [गैर-यूक्लिडियन दूरी](https://wikipedia.org/wiki/Non-Euclidean_geometry) को एक वक्र के साथ मापा जाता है। यदि आपका डेटा, विज़ुअलाइज़ किया गया, ऐसा लगता है कि यह एक प्लेन पर मौजूद नहीं है, तो आपको इसे संभालने के लिए एक विशेष एल्गोरिदम का उपयोग करने की आवश्यकता हो सकती है।
>'फ्लैट' इस संदर्भ में यूक्लिडियन ज्यामिति को संदर्भित करता है (जिसके कुछ हिस्सों को 'प्लेन' ज्यामिति के रूप में पढ़ाया जाता है), और गैर-फ्लैट गैर-यूक्लिडियन ज्यामिति को संदर्भित करता है। मशीन लर्निंग के साथ ज्यामिति का क्या संबंध है? खैर, चूंकि ये दोनों क्षेत्र गणित में निहित हैं, बिंदुओं के बीच की दूरी को मापने का एक सामान्य तरीका होना चाहिए, और यह डेटा की प्रकृति के आधार पर 'फ्लैट' या 'गैर-फ्लैट' तरीके से किया जा सकता है। [यूक्लिडियन दूरी](https://wikipedia.org/wiki/Euclidean_distance) को दो बिंदुओं के बीच की रेखा खंड की लंबाई के रूप में मापा जाता है। [गैर-यूक्लिडियन दूरी](https://wikipedia.org/wiki/Non-Euclidean_geometry) को एक वक्र के साथ मापा जाता है। यदि आपका डेटा, विज़ुअलाइज़ किया गया, ऐसा लगता है कि यह एक समतल पर मौजूद नहीं है, तो आपको इसे संभालने के लिए एक विशेष एल्गोरिदम का उपयोग करने की आवश्यकता हो सकती है।
>
![फ्लैट बनाम गैर-फ्लैट ज्यामिति इन्फोग्राफिक](../../../../translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.hi.png)
> इन्फोग्राफिक [Dasani Madipalli](https://twitter.com/dasani_decoded) द्वारा
![फ्लैट बनाम गैर-फ्लैट ज्यामिति इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/flat-nonflat.png)
> इन्फोग्राफिक [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) द्वारा
>
> 🎓 ['दूरी'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
>
> क्लस्टर्स को उनकी दूरी मैट्रिक्स द्वारा परिभाषित किया जाता है, जैसे कि पॉइंट्स के बीच की दूरी। इस दूरी को कुछ तरीकों से मापा जा सकता है। यूक्लिडियन क्लस्टर्स पॉइंट वैल्यूज़ के औसत द्वारा परिभाषित होते हैं, और इनमें एक 'सेंट्रॉइड' या केंद्र बिंदु होता है। दूरी को उस सेंट्रॉइड से दूरी के रूप में मापा जाता है। गैर-यूक्लिडियन दूरी 'क्लस्ट्रॉइड्स' को संदर्भित करती है, जो अन्य पॉइंट्स के सबसे करीब बिंदु है। क्लस्ट्रॉइड्स को विभिन्न तरीकों से परिभाषित किया जा सकता है।
> क्लस्टर्स को उनकी दूरी मैट्रिक्स द्वारा परिभाषित किया जाता है, जैसे बिंदुओं के बीच की दूरी। इस दूरी को कुछ तरीकों से मापा जा सकता है। यूक्लिडियन क्लस्टर्स को बिंदु मानों के औसत द्वारा परिभाषित किया जाता है, और इसमें एक 'सेंट्रॉइड' या केंद्र बिंदु होता है। दूरी को उस सेंट्रॉइड से दूरी के रूप में मापा जाता है। गैर-यूक्लिडियन दूरी 'क्लस्ट्रॉइड्स' को संदर्भित करती है, जो अन्य बिंदुओं के सबसे करीब बिंदु होता है। क्लस्ट्रॉइड्स को विभिन्न तरीकों से परिभाषित किया जा सकता है।
>
> 🎓 ['बाधित'](https://wikipedia.org/wiki/Constrained_clustering)
>
> [बाधित क्लस्टरिंग](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) इस अनसुपरवाइज्ड विधि में 'सेमी-सुपरवाइज्ड' लर्निंग को पेश करती है। पॉइंट्स के बीच के संबंधों को 'cannot link' या 'must-link' के रूप में चिह्नित किया जाता है ताकि डेटा सेट पर कुछ नियम लागू किए जा सकें।
> [बाधित क्लस्टरिंग](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) इस अनुपरिक्षित विधि में 'अर्ध-परिक्षित' शिक्षण को पेश करती है। बिंदुओं के बीच संबंधों को 'लिंक नहीं कर सकते' या 'लिंक करना चाहिए' के रूप में चिह्नित किया जाता है ताकि डेटा सेट पर कुछ नियम लागू किए जा सकें।
>
>उदाहरण: यदि एक एल्गोरिदम को लेबल रहित या सेमी-लेबल्ड डेटा के बैच पर स्वतंत्र रूप से छोड़ दिया जाता है, तो यह जो क्लस्टर्स उत्पन्न करता है, वे खराब गुणवत्ता के हो सकते हैं। ऊपर दिए गए उदाहरण में, क्लस्टर्स 'गोल संगीत चीजें', 'चौकोर संगीत चीजें', 'त्रिकोणीय चीजें' और 'कुकीज़' को समूहित कर सकते हैं। यदि कुछ बाधाएं दी जाती हैं, या पालन करने के लिए नियम ("आइटम प्लास्टिक से बना होना चाहिए", "आइटम को संगीत उत्पन्न करने में सक्षम होना चाहिए") तो यह एल्गोरिदम को बेहतर विकल्प बनाने में मदद कर सकता है।
> उदाहरण: यदि किसी एल्गोरिदम को बिना लेबल वाले या अर्ध-लेबल वाले डेटा के बैच पर स्वतंत्र रूप से छोड़ दिया जाता है, तो यह जो क्लस्टर्स उत्पन्न करता है, वे खराब गुणवत्ता के हो सकते हैं। ऊपर दिए गए उदाहरण में, क्लस्टर्स 'गोल संगीत चीजें', 'चौकोर संगीत चीजें', 'त्रिकोणीय चीजें', और 'कुकीज़' को समूहित कर सकते हैं। यदि कुछ बाधाएं, या पालन करने के लिए नियम दिए गए हैं ("आइटम प्लास्टिक का होना चाहिए", "आइटम को संगीत उत्पन्न करने में सक्षम होना चाहिए") तो यह एल्गोरिदम को बेहतर विकल्प बनाने में मदद कर सकता है।
>
> 🎓 'घनत्व'
>
> डेटा जो 'शोरयुक्त' है, उसे 'घना' माना जाता है। इसके प्रत्येक क्लस्टर्स में पॉइंट्स के बीच की दूरी, जांच करने पर, अधिक या कम घनी, या 'भीड़भाड़' वाली साबित हो सकती है, और इस डेटा को उपयुक्त क्लस्टरिंग विधि के साथ विश्लेषण करने की आवश्यकता होती है। [यह लेख](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) दिखाता है कि शोरयुक्त डेटा सेट के असमान क्लस्टर घनत्व का पता लगाने के लिए K-Means क्लस्टरिंग बनाम HDBSCAN एल्गोरिदम का उपयोग कैसे किया जाता है।
> 'शोर' वाला डेटा 'घना' माना जाता है। इसके प्रत्येक क्लस्टर में बिंदुओं के बीच की दूरी, जांच करने पर, अधिक या कम घनी हो सकती है, या 'भीड़भाड़' वाली हो सकती है, और इस प्रकार इस डेटा का विश्लेषण उपयुक्त क्लस्टरिंग विधि के साथ करने की आवश्यकता होती है। [यह लेख](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) एक शोर वाले डेटा सेट के साथ असमान क्लस्टर घनत्व का पता लगाने के लिए K-Means क्लस्टरिंग बनाम HDBSCAN एल्गोरिदम का उपयोग करने के बीच का अंतर प्रदर्शित करता है।
## क्लस्टरिंग एल्गोरिदम
100 से अधिक क्लस्टरिंग एल्गोरिदम हैं, और उनका उपयोग डेटा की प्रकृति पर निर्भर करता है। आइए कुछ प्रमुख एल्गोरिदम पर चर्चा करें:
- **हायरार्किकल क्लस्टरिंग**। यदि किसी वस्तु को उसके निकटवर्ती वस्तु की निकटता के आधार पर वर्गीकृत किया जाता है, बजाय इसके कि वह दूर की वस्तु से हो, तो क्लस्टर्स उनके सदस्यों की दूरी के आधार पर बनते हैं। Scikit-learn का एग्लोमरेटिव क्लस्टरिंग हायरार्किकल है।
- **हायरार्किकल क्लस्टरिंग**। यदि किसी वस्तु को उसकी निकटता के आधार पर वर्गीकृत किया जाता है, तो क्लस्टर्स उनके सदस्यों की दूरी के आधार पर बनते हैं। Scikit-learn का एग्लोमरेटिव क्लस्टरिंग हायरार्किकल है।
![हायरार्किकल क्लस्टरिंग इन्फोग्राफिक](../../../../translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.hi.png)
> इन्फोग्राफिक [Dasani Madipalli](https://twitter.com/dasani_decoded) द्वारा
![हायरार्किकल क्लस्टरिंग इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/hierarchical.png)
> इन्फोग्राफिक [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) द्वारा
- **सेंट्रॉइड क्लस्टरिंग**। यह लोकप्रिय एल्गोरिदम 'k', या बनाने के लिए क्लस्टर्स की संख्या चुनने की आवश्यकता करता है, जिसके बाद एल्गोरिदम क्लस्टर के केंद्र बिंदु को निर्धारित करता है और उस बिंदु के चारों ओर डेटा इकट्ठा करता है। [K-means क्लस्टरिंग](https://wikipedia.org/wiki/K-means_clustering) सेंट्रॉइड क्लस्टरिंग का एक लोकप्रिय संस्करण है। केंद्र निकटतम औसत द्वारा निर्धारित किया जाता है, इसलिए इसका नाम। क्लस्टर से वर्ग दूरी को न्यूनतम किया जाता है।
- **सेंट्रॉइड क्लस्टरिंग**। यह लोकप्रिय एल्गोरिदम 'k', या बनाने के लिए क्लस्टर्स की संख्या, का चयन करने की आवश्यकता होती है, जिसके बाद एल्गोरिदम एक क्लस्टर के केंद्र बिंदु को निर्धारित करता है और उस बिंदु के चारों ओर डेटा एकत्र करता है। [K-means क्लस्टरिंग](https://wikipedia.org/wiki/K-means_clustering) सेंट्रॉइड क्लस्टरिंग का एक लोकप्रिय संस्करण है। केंद्र को निकटतम औसत द्वारा निर्धारित किया जाता है, इसलिए इसका नाम। क्लस्टर से वर्ग दूरी को न्यूनतम किया जाता है।
![सेंट्रॉइड क्लस्टरिंग इन्फोग्राफिक](../../../../translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.hi.png)
> इन्फोग्राफिक [Dasani Madipalli](https://twitter.com/dasani_decoded) द्वारा
![सेंट्रॉइड क्लस्टरिंग इन्फोग्राफिक](../../../../5-Clustering/1-Visualize/images/centroid.png)
> इन्फोग्राफिक [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) द्वारा
- **डिस्ट्रिब्यूशन-आधारित क्लस्टरिंग**। सांख्यिकीय मॉडलिंग पर आधारित, डिस्ट्रिब्यूशन-आधारित क्लस्टरिंग का केंद्र यह निर्धारित करना है कि डेटा पॉइंट के क्लस्टर में होने की संभावना कितनी है, और इसे उसी के अनुसार असाइन करना। Gaussian मिश्रण विधियां इस प्रकार से संबंधित हैं।
- **डिस्ट्रिब्यूशन-आधारित क्लस्टरिंग**। सांख्यिकीय मॉडलिंग पर आधारित, डिस्ट्रिब्यूशन-आधारित क्लस्टरिंग इस बात पर केंद्रित है कि डेटा बिंदु के किसी क्लस्टर से संबंधित होने की संभावना क्या है, और इसे तदनुसार असाइन करता है। गॉसियन मिश्रण विधियां इस प्रकार की हैं।
- **डेंसिटी-आधारित क्लस्टरिंग**। डेटा पॉइंट्स को उनके घनत्व, या उनके एक-दूसरे के चारों ओर समूह बनाने के आधार पर क्लस्टर्स में असाइन किया जाता है। समूह से दूर डेटा पॉइंट्स को आउटलायर्स या शोर माना जाता है। DBSCAN, Mean-shift और OPTICS इस प्रकार की क्लस्टरिंग से संबंधित हैं।
- **डेंसिटी-आधारित क्लस्टरिंग**। डेटा बिंदुओं को उनके घनत्व, या उनके एक-दूसरे के चारों ओर समूहित होने के आधार पर क्लस्टर्स में असाइन किया जाता है। समूह से दूर डेटा बिंदुओं को आउटलेयर या शोर माना जाता है। DBSCAN, मीन-शिफ्ट और OPTICS इस प्रकार की क्लस्टरिंग में आते हैं।
- **ग्रिड-आधारित क्लस्टरिंग**। बहु-आयामी डेटा सेट के लिए, एक ग्रिड बनाया जाता है और डेटा को ग्रिड की कोशिकाओं के बीच विभाजित किया जाता है, जिससे क्लस्टर्स बनते हैं।
## अभ्यास - अपने डेटा को क्लस्टर करें
क्लस्टरिंग एक तकनीक के रूप में उचित विज़ुअलाइज़ेशन से बहुत सहायता प्राप्त करती है, तो आइए अपने संगीत डेटा को विज़ुअलाइज़ करके शुरुआत करें। यह अभ्यास हमें यह तय करने में मदद करेगा कि इस डेटा की प्रकृति के लिए क्लस्टरिंग की कौन सी विधि सबसे प्रभावी रूप से उपयोग की जाए।
क्लस्टरिंग एक तकनीक के रूप में उचित विज़ुअलाइज़ेशन से बहुत लाभान्वित होती है, तो आइए अपने संगीत डेटा को विज़ुअलाइज़ करके शुरुआत करें। यह अभ्यास हमें यह तय करने में मदद करेगा कि इस डेटा की प्रकृति के लिए क्लस्टरिंग की कौन सी विधि सबसे प्रभावी रूप से उपयोग की जानी चाहिए।
1. इस फ़ोल्डर में [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) फ़ाइल खोलें।
1. डेटा विज़ुअलाइज़ेशन के लिए `Seaborn` पैकेज आयात करें।
1. अच्छे डेटा विज़ुअलाइज़ेशन के लिए `Seaborn` पैकेज आयात करें।
```python
!pip install seaborn
```
1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) से गान का डेटा जोड़ें। गानों के बारे में कुछ डेटा के साथ एक डेटा फ्रेम लोड करें। लाइब्रेरीज़ आयात करके और डेटा को डंप करके इस डेटा का पता लगाने के लिए तैयार हो जाएं:
1. [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv) से गानों का डेटा जोड़ें। गानों के बारे में कुछ डेटा के साथ एक डेटा फ्रेम लोड करें। लाइब्रेरीज़ आयात करके और डेटा को डंप करके इस डेटा का अन्वेषण करने के लिए तैयार हो जाएं:
```python
import matplotlib.pyplot as plt
@ -131,10 +131,10 @@ CO_OP_TRANSLATOR_METADATA:
डेटा की पहली कुछ पंक्तियों की जांच करें:
| | नाम | एल्बम | कलाकार | कलाकार का शीर्ष शैली | रिलीज़ तिथि | लंबाई | लोकप्रियता | नृत्य क्षमता | ध्वनिकता | ऊर्जा | वाद्य क्षमता | जीवंतता | तेज़ी | भाषण क्षमता | टेम्पो | समय हस्ताक्षर |
| --- | ------------------------ | ---------------------------- | ------------------- | -------------------- | ------------ | ------ | ---------- | ------------ | -------- | ------ | -------------- | -------- | ------ | ----------- | ------- | -------------- |
| 0 | Sparky | Mandy & The Jungle | Cruel Santino | वैकल्पिक r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 |
| 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | अफ्रोपॉप | 2020 | 89488 | 30 | 0.71 | 0.0822 |
| | नाम | एल्बम | कलाकार | कलाकार का शीर्ष शैली | रिलीज़ तिथि | लंबाई | लोकप्रियता | नृत्य क्षमता | ध्वनिकता | ऊर्जा | वाद्य यंत्रता | जीवंतता | ध्वनि तीव्रता | भाषण क्षमता | टेम्पो | समय हस्ताक्षर |
| --- | ------------------------ | ---------------------------- | ------------------- | -------------------- | ------------ | ------ | ---------- | ------------ | -------- | ------ | -------------- | -------- | ------------ | ----------- | ------- | -------------- |
| 0 | Sparky | Mandy & The Jungle | Cruel Santino | वैकल्पिक आर&बी | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0.11 | -6.699 | 0.0829 | 133.015 | 5 |
| 1 | shuga rush | EVERYTHING YOU HEARD IS TRUE | Odunsi (The Engine) | अफ्रोपॉप | 2020 | 89488 | 30 | 0.71 | 0.0822 | 0.683 | 0
| 2 | LITT! | LITT! | AYLØ | इंडी आरएंडबी | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 |
| 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | नाइजीरियन पॉप | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 |
| 4 | wanted you | rare. | Odunsi (The Engine) | अफ्रोपॉप | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 |
@ -179,7 +179,7 @@ CO_OP_TRANSLATOR_METADATA:
df.isnull().sum()
```
सब ठीक लग रहा है:
सब ठीक है:
```output
name 0
@ -207,22 +207,22 @@ CO_OP_TRANSLATOR_METADATA:
df.describe()
```
| | रिलीज़ डेट | लंबाई | लोकप्रियता | डांसएबिलिटी | एकॉस्टिकनेस | ऊर्जा | इंस्ट्रूमेंटलनेस | लाइवनेस | लाउडनेस | स्पीचनेस | टेम्पो | टाइम सिग्नेचर |
| ----- | ----------- | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- |
| count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 |
| mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 |
| std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 |
| min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 |
| 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 |
| 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 |
| 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 |
| max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 |
| | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
| ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- |
| count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 |
| mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 |
| std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 |
| min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 |
| 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 |
| 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 |
| 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 |
| max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 |
> 🤔 यदि हम क्लस्टरिंग के साथ काम कर रहे हैं, जो एक अनसुपरवाइज्ड विधि है और लेबल वाले डेटा की आवश्यकता नहीं होती, तो हम इस डेटा को लेबल्स के साथ क्यों दिखा रहे हैं? डेटा एक्सप्लोरेशन चरण में, यह उपयोगी हो सकता है, लेकिन क्लस्टरिंग एल्गोरिदम के काम करने के लिए यह आवश्यक नहीं है। आप कॉलम हेडर्स को हटा सकते हैं और डेटा को कॉलम नंबर द्वारा संदर्भित कर सकते हैं।
> 🤔 यदि हम क्लस्टरिंग के साथ काम कर रहे हैं, जो एक अनसुपरवाइज्ड विधि है और लेबल वाले डेटा की आवश्यकता नहीं होती, तो हम इस डेटा को लेबल्स के साथ क्यों दिखा रहे हैं? डेटा एक्सप्लोरेशन चरण में, यह उपयोगी होता है, लेकिन क्लस्टरिंग एल्गोरिदम के काम करने के लिए यह आवश्यक नहीं है। आप कॉलम हेडर्स को हटा सकते हैं और डेटा को कॉलम नंबर द्वारा संदर्भित कर सकते हैं।
डेटा के सामान्य मानों को देखें। ध्यान दें कि लोकप्रियता '0' हो सकती है, जो उन गानों को दिखाती है जिनका कोई रैंकिंग नहीं है। चलिए इसे जल्द ही हटा देते हैं।
1. बारप्लॉट का उपयोग करके सबसे लोकप्रिय जेनर्स का पता लगाएं:
1. बारप्लॉट का उपयोग करके सबसे लोकप्रिय शैलियों का पता लगाएं:
```python
import seaborn as sns
@ -234,11 +234,11 @@ CO_OP_TRANSLATOR_METADATA:
plt.title('Top genres',color = 'blue')
```
![सबसे लोकप्रिय](../../../../translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.hi.png)
![सबसे लोकप्रिय](../../../../5-Clustering/1-Visualize/images/popular.png)
✅ यदि आप अधिक शीर्ष मान देखना चाहते हैं, तो शीर्ष `[:5]` को बड़े मान में बदलें, या इसे हटाकर सभी देखें।
ध्यान दें, जब शीर्ष जेनर को 'Missing' के रूप में वर्णित किया जाता है, तो इसका मतलब है कि Spotify ने इसे वर्गीकृत नहीं किया, तो चलिए इसे हटा देते हैं।
ध्यान दें, जब शीर्ष शैली को 'Missing' के रूप में वर्णित किया जाता है, तो इसका मतलब है कि Spotify ने इसे वर्गीकृत नहीं किया है, तो चलिए इसे हटा देते हैं।
1. गायब डेटा को फ़िल्टर करके हटा दें
@ -251,11 +251,11 @@ CO_OP_TRANSLATOR_METADATA:
plt.title('Top genres',color = 'blue')
```
अब जेनर्स को फिर से जांचें:
अब शैलियों को फिर से जांचें:
![सभी जेनर्स](../../../../translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.hi.png)
![सभी शैलियां](../../../../5-Clustering/1-Visualize/images/all-genres.png)
1. अब तक, शीर्ष तीन जेनर्स इस डेटा सेट पर हावी हैं। चलिए `afro dancehall`, `afropop`, और `nigerian pop` पर ध्यान केंद्रित करते हैं, और अतिरिक्त रूप से डेटा सेट को फ़िल्टर करते हैं ताकि 0 लोकप्रियता वाले किसी भी डेटा को हटा दें (जिसका मतलब है कि इसे डेटा सेट में लोकप्रियता के साथ वर्गीकृत नहीं किया गया और हमारे उद्देश्यों के लिए इसे शोर माना जा सकता है):
1. अब तक, शीर्ष तीन शैलियां इस डेटा सेट पर हावी हैं। चलिए `afro dancehall`, `afropop`, और `nigerian pop` पर ध्यान केंद्रित करते हैं, और अतिरिक्त रूप से डेटा सेट को फ़िल्टर करते हैं ताकि 0 लोकप्रियता वाले किसी भी मान को हटा दें (जिसका मतलब है कि इसे डेटा सेट में लोकप्रियता के साथ वर्गीकृत नहीं किया गया और हमारे उद्देश्यों के लिए इसे शोर माना जा सकता है):
```python
df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
@ -275,21 +275,21 @@ CO_OP_TRANSLATOR_METADATA:
sns.heatmap(corrmat, vmax=.8, square=True)
```
![सहसंबंध](../../../../translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.hi.png)
![सहसंबंध](../../../../5-Clustering/1-Visualize/images/correlation.png)
केवल मजबूत सहसंबंध `energy` और `loudness` के बीच है, जो बहुत आश्चर्यजनक नहीं है, क्योंकि तेज़ संगीत आमतौर पर काफी ऊर्जावान होता है। अन्यथा, सहसंबंध अपेक्षाकृत कमजोर हैं। यह देखना दिलचस्प होगा कि क्लस्टरिंग एल्गोरिदम इस डेटा से क्या बना सकता है।
> 🎓 ध्यान दें कि सहसंबंध कारणता को इंगित नहीं करता है! हमारे पास सहसंबंध का प्रमाण है लेकिन कारणता का कोई प्रमाण नहीं है। एक [मजेदार वेबसाइट](https://tylervigen.com/spurious-correlations) में कुछ विज़ुअल्स है जो इस बिंदु को उजागर करत हैं।
> 🎓 ध्यान दें कि सहसंबंध का मतलब कारण नहीं होता! हमारे पास सहसंबंध का प्रमाण है लेकिन कारण का कोई प्रमाण नहीं है। एक [मजेदार वेबसाइट](https://tylervigen.com/spurious-correlations) कुछ विज़ुअल्स दिखाती है जो इस बिंदु को उजागर करत हैं।
क्या इस डेटा सेट में गाने की लोकप्रियता और डांसएबिलिटी के आसपास कोई अभिसरण है? एक FacetGrid दिखाता है कि कुछ केंद्रित वृत्त हैं जो लाइन अप करते हैं, चाहे जेनर कुछ भी हो। क्या यह हो सकता है कि नाइजीरियन स्वाद इस जेनर के लिए डांसएबिलिटी के एक निश्चित स्तर पर अभिसरण करता है?
क्या इस डेटा सेट में गाने की लोकप्रियता और नृत्य क्षमता के आसपास कोई अभिसरण है? एक FacetGrid दिखाता है कि कुछ केंद्रित वृत्त हैं जो शैली की परवाह किए बिना लाइन अप करते हैं। क्या यह हो सकता है कि नाइजीरियन स्वाद इस शैली के लिए एक निश्चित स्तर की नृत्य क्षमता पर अभिसरण करता है?
✅ विभिन्न डेटा पॉइंट्स (energy, loudness, speechiness) और अधिक या अलग संगीत जेनर्स आज़माएं। आप क्या खोज सकते हैं? डेटा पॉइंट्स के सामान्य प्रसार को देखने के लिए `df.describe()` टेबल पर एक नज़र डालें
✅ विभिन्न डेटा पॉइंट्स (energy, loudness, speechiness) और अधिक या अलग-अलग संगीत शैलियों को आज़माएं। आप क्या खोज सकते हैं? `df.describe()` तालिका को देखें ताकि डेटा पॉइंट्स के सामान्य प्रसार को देखा जा सके
### अभ्यास - डेटा वितरण
क्या इन तीन जेनर्स में उनकी लोकप्रियता के आधार पर डांसएबिलिटी की धारणा में महत्वपूर्ण अंतर है?
क्या इन तीन शैलियों में उनकी लोकप्रियता के आधार पर नृत्य क्षमता की धारणा में महत्वपूर्ण अंतर है?
1. हमारे शीर्ष तीन जेनर्स के डेटा वितरण की जांच करें, लोकप्रियता और डांसएबिलिटी के लिए दिए गए x और y अक्षों के साथ।
1. हमारी शीर्ष तीन शैलियों के डेटा वितरण की जांच करें, लोकप्रियता और नृत्य क्षमता के लिए दिए गए x और y अक्षों के साथ।
```python
sns.set_theme(style="ticks")
@ -301,13 +301,13 @@ CO_OP_TRANSLATOR_METADATA:
)
```
आप एक सामान्य अभिसरण बिंदु के आसपास केंद्रित वृत्तों की खोज कर सकते हैं, जो बिंदुओं के वितरण को दिखाता है।
आप एक सामान्य अभिसरण बिंदु के चारों ओर केंद्रित वृत्तों की खोज कर सकते हैं, जो बिंदुओं के वितरण को दिखाता है।
> 🎓 ध्यान दें कि इस उदाहरण में एक KDE (Kernel Density Estimate) ग्राफ का उपयोग किया गया है जो डेटा को एक सतत संभावना घनत्व वक्र का उपयोग करके प्रस्तुत करता है। यह हमें कई वितरणों के साथ काम करते समय डेटा की व्याख्या करने की अनुमति देता है।
सामान्य तौर पर, तीन जेनर्स उनकी लोकप्रियता और डांसएबिलिटी के संदर्भ में ढीले ढंग से संरेखित होते हैं। इस ढीले-संरेखित डेटा में क्लस्टर्स निर्धारित करना एक चुनौती होगी:
सामान्य तौर पर, तीन शैलियां लोकप्रियता और नृत्य क्षमता के मामले में ढीले ढंग से संरेखित होती हैं। इस ढीले ढंग से संरेखित डेटा में क्लस्टर निर्धारित करना एक चुनौती होगी:
![वितरण](../../../../translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.hi.png)
![वितरण](../../../../5-Clustering/1-Visualize/images/distribution.png)
1. एक स्कैटर प्लॉट बनाएं:
@ -317,11 +317,11 @@ CO_OP_TRANSLATOR_METADATA:
.add_legend()
```
समान अक्षों के स्कैटरप्लॉट में अभिसरण का समान पैटर्न दिखता है।
समान अक्षों का एक स्कैटरप्लॉट अभिसरण का एक समान पैटर्न दिखाता है
![Facetgrid](../../../../translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.hi.png)
![Facetgrid](../../../../5-Clustering/1-Visualize/images/facetgrid.png)
क्लस्टरिंग के लिए, आप डेटा के क्लस्टर्स दिखाने के लिए स्कैटरप्लॉट्स का उपयोग कर सकते हैं, इसलिए इस प्रकार की विज़ुअलाइज़ेशन में महारत हासिल करना बहुत उपयोगी है। अगले पाठ में, हम इस फ़िल्टर किए गए डेटा को लेंगे और k-means क्लस्टरिंग का उपयोग करके इस डेटा में समूहों की खोज करेंगे जो दिलचस्प तरीकों से ओवरलैप करते हैं।
क्लस्टरिंग के लिए, आप डेटा के क्लस्टर दिखाने के लिए स्कैटरप्लॉट का उपयोग कर सकते हैं, इसलिए इस प्रकार की विज़ुअलाइज़ेशन में महारत हासिल करना बहुत उपयोगी है। अगले पाठ में, हम इस फ़िल्टर किए गए डेटा को लेंगे और k-means क्लस्टरिंग का उपयोग करके इस डेटा में समूहों की खोज करेंगे जो दिलचस्प तरीकों से ओवरलैप करते हैं।
---
@ -329,7 +329,7 @@ CO_OP_TRANSLATOR_METADATA:
अगले पाठ की तैयारी में, उन विभिन्न क्लस्टरिंग एल्गोरिदम के बारे में एक चार्ट बनाएं जिन्हें आप उत्पादन वातावरण में खोज सकते हैं और उपयोग कर सकते हैं। क्लस्टरिंग किस प्रकार की समस्याओं को हल करने की कोशिश कर रही है?
## [पाठ के बाद क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन

@ -1,17 +1,17 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "085d571097d201810720df4cd379f8c2",
"translation_date": "2025-09-03T23:12:11+00:00",
"original_hash": "7cdd17338d9bbd7e2171c2cd462eb081",
"translation_date": "2025-09-05T10:20:37+00:00",
"source_file": "5-Clustering/2-K-Means/README.md",
"language_code": "hi"
}
-->
# K-Means क्लस्टरिंग
## [Pre-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
इस पाठ में, आप Scikit-learn और पहले आयात किए गए नाइजीरियाई संगीत डेटा सेट का उपयोग करके क्लस्टर बनाना सीखेंगे। हम क्लस्टरिंग के लिए K-Means की मूल बातें कवर करेंगे। ध्यान रखें कि, जैसा कि आपने पिछले पाठ में सीखा था, क्लस्टर के साथ काम करने के कई तरीके हैं और आपके डेटा के आधार पर उपयोग की जाने वाली विधि अलग हो सकती है। हम K-Means का प्रयास करेंगे क्योंकि यह सबसे सामान्य क्लस्टरिंग तकनीक है। चलिए शुरू करते हैं!
इस पाठ में, आप Scikit-learn और पहले आयात किए गए नाइजीरियाई संगीत डेटा सेट का उपयोग करके क्लस्टर बनाना सीखेंगे। हम क्लस्टरिंग के लिए K-Means की मूल बातें कवर करेंगे। ध्यान रखें कि, जैसा कि आपने पिछले पाठ में सीखा था, क्लस्टर के साथ काम करने के कई तरीके हैं और आप जो विधि उपयोग करते हैं वह आपके डेटा पर निर्भर करती है। हम K-Means आज़माएंगे क्योंकि यह सबसे सामान्य क्लस्टरिंग तकनीक है। चलिए शुरू करते हैं!
आप जिन शब्दों के बारे में जानेंगे:
@ -22,22 +22,22 @@ CO_OP_TRANSLATOR_METADATA:
## परिचय
[K-Means Clustering](https://wikipedia.org/wiki/K-means_clustering) सिग्नल प्रोसेसिंग के क्षेत्र से निकली एक विधि है। इसका उपयोग डेटा के समूहों को 'k' क्लस्टर में विभाजित और व्यवस्थित करने के लिए किया जाता है। प्रत्येक अवलोकन एक दिए गए डेटा पॉइंट को उसके निकटतम 'मीन' या क्लस्टर के केंद्र बिंदु के सबसे करीब समूहित करने का काम करता है।
[K-Means Clustering](https://wikipedia.org/wiki/K-means_clustering) सिग्नल प्रोसेसिंग के क्षेत्र से निकली एक विधि है। इसका उपयोग डेटा के समूहों को 'k' क्लस्टर में विभाजित और वर्गीकृत करने के लिए किया जाता है। प्रत्येक ऑब्ज़र्वेशन एक दिए गए डेटा पॉइंट को उसके निकटतम 'मीन' या क्लस्टर के केंद्र बिंदु के सबसे करीब समूहित करने का काम करता है।
क्लस्टर को [Voronoi diagrams](https://wikipedia.org/wiki/Voronoi_diagram) के रूप में देखा जा सकता है, जिसमें एक बिंदु (या 'बीज') और उसका संबंधित क्षेत्र शामिल होता है।
क्लस्टर को [Voronoi diagrams](https://wikipedia.org/wiki/Voronoi_diagram) के रूप में देखा जा सकता है, जिसमें एक बिंदु (या 'सीड') और उसका संबंधित क्षेत्र शामिल होता है।
![voronoi diagram](../../../../translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.hi.png)
![voronoi diagram](../../../../5-Clustering/2-K-Means/images/voronoi.png)
> [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
K-Means क्लस्टरिंग प्रक्रिया [तीन चरणों में निष्पादित होती है](https://scikit-learn.org/stable/modules/clustering.html#k-means):
1. एल्गोरिदम डेटा सेट से k-संख्या के केंद्र बिंदु चुनता है। इसके बाद यह लूप करता है:
1. एल्गोरिदम डेटा सेट से k संख्या के केंद्र बिंदु चुनता है। इसके बाद यह लूप करता है:
1. यह प्रत्येक सैंपल को निकटतम सेंट्रॉइड को असाइन करता है।
2. यह पिछले सेंट्रॉइड्स को असाइन किए गए सभी सैंपल्स के औसत मान को लेकर नए सेंट्रॉइड बनाता है।
3. फिर, यह नए और पुराने सेंट्रॉइड्स के बीच का अंतर गणना करता है और तब तक दोहराता है जब तक सेंट्रॉइड्स स्थिर न हो जाएं।
3. फिर यह नए और पुराने सेंट्रॉइड्स के बीच का अंतर गणना करता है और तब तक दोहराता है जब तक सेंट्रॉइड्स स्थिर न हो जाएं।
K-Means का उपयोग करने की एक कमी यह है कि आपको 'k', यानी सेंट्रॉइड्स की संख्या स्थापित करनी होगी। सौभाग्य से, 'एल्बो मेथड' 'k' के लिए एक अच्छा प्रारंभिक मान अनुमान लगाने में मदद करता है। आप इसे अभी आजमाएंगे।
K-Means का उपयोग करने की एक कमी यह है कि आपको 'k', यानी सेंट्रॉइड्स की संख्या स्थापित करनी होगी। सौभाग्य से, 'एल्बो मेथड' 'k' के लिए एक अच्छा प्रारंभिक मान अनुमान लगाने में मदद करता है। आप इसे अभी आजमाएंगे।
## पूर्वापेक्षा
@ -91,11 +91,11 @@ K-Means का उपयोग करने की एक कमी यह ह
यह डेटा थोड़ा शोरयुक्त है: प्रत्येक कॉलम को बॉक्सप्लॉट के रूप में देखकर, आप आउटलायर्स देख सकते हैं।
![outliers](../../../../translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.hi.png)
![outliers](../../../../5-Clustering/2-K-Means/images/boxplots.png)
आप डेटा सेट के माध्यम से जा सकते हैं और इन आउटलायर्स को हटा सकते हैं, लेकिन इससे डेटा काफी न्यूनतम हो जाएगा।
1. फिलहाल, तय करें कि आप अपने क्लस्टरिंग अभ्यास के लिए किन कॉलम्स का उपयोग करेंगे। समान रेंज वाले कॉलम चुनें और `artist_top_genre` कॉलम को संख्यात्मक डेटा के रूप में एन्कोड करें:
1. फिलहाल, तय करें कि आप क्लस्टरिंग अभ्यास के लिए कौन से कॉलम का उपयोग करेंगे। समान रेंज वाले कॉलम चुनें और `artist_top_genre` कॉलम को संख्यात्मक डेटा के रूप में एन्कोड करें:
```python
from sklearn.preprocessing import LabelEncoder
@ -110,7 +110,7 @@ K-Means का उपयोग करने की एक कमी यह ह
y = le.transform(y)
```
1. अब आपको यह तय करना होगा कि कितने क्लस्टर को लक्षित करना है। आप जानते हैं कि डेटा सेट से हमने 3 गाने की शैलियों को निकाला है, तो चलिए 3 का प्रयास करते हैं:
1. अब आपको तय करना होगा कि कितने क्लस्टर को लक्षित करना है। आप जानते हैं कि डेटा सेट से हमने 3 गाने की शैलियों को निकाला है, तो चलिए 3 आज़माते हैं:
```python
from sklearn.cluster import KMeans
@ -127,9 +127,9 @@ K-Means का उपयोग करने की एक कमी यह ह
y_cluster_kmeans
```
आप एक रे देखते हैं जिसमें डेटा फ्रेम की प्रत्येक पंक्ति के लिए अनुमानित क्लस्टर (0, 1, या 2) प्रिंट किए गए हैं।
आप एक प्रिंटेड एरे देखते हैं जिसमें डेटा फ्रेम की प्रत्येक पंक्ति के लिए अनुमानित क्लस्टर (0, 1, या 2) होते हैं।
1. इस रे का उपयोग करके 'सिल्हूट स्कोर' की गणना करें:
1. इस रे का उपयोग करके 'सिल्हूट स्कोर' की गणना करें:
```python
from sklearn import metrics
@ -139,9 +139,9 @@ K-Means का उपयोग करने की एक कमी यह ह
## सिल्हूट स्कोर
1 के करीब सिल्हूट स्कोर देखें। यह स्कोर -1 से 1 तक भिन्न होता है, और यदि स्कोर 1 है, तो क्लस्टर घना और अन्य क्लस्टर से अच्छी तरह से अलग होता है। 0 के पास का मान ओवरलैपिंग क्लस्टर का प्रतिनिधित्व करता है, जिसमें सैंपल पड़ोसी क्लस्टर के निर्णय सीमा के बहुत करीब होते हैं। [(स्रोत)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam)
सिल्हूट स्कोर को 1 के करीब देखें। यह स्कोर -1 से 1 तक भिन्न होता है, और यदि स्कोर 1 है, तो क्लस्टर घना और अन्य क्लस्टर से अच्छी तरह से अलग होता है। 0 के करीब का मान ओवरलैपिंग क्लस्टर को दर्शाता है, जिसमें सैंपल पड़ोसी क्लस्टर के निर्णय सीमा के बहुत करीब होते हैं। [(स्रोत)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam)
हमारा स्कोर **.53** है, जो बीच में है। यह संकेत देता है कि हमारा डेटा इस प्रकार की क्लस्टरिंग के लिए विशेष रूप से उपयुक्त नहीं है, लेकिन चलिए आगे बढ़ते हैं।
हमारा स्कोर **.53** है, जो बीच में है। यह इंगित करता है कि हमारा डेटा इस प्रकार की क्लस्टरिंग के लिए विशेष रूप से उपयुक्त नहीं है, लेकिन चलिए आगे बढ़ते हैं।
### अभ्यास - मॉडल बनाएं
@ -162,13 +162,13 @@ K-Means का उपयोग करने की एक कमी यह ह
> 🎓 रेंज: ये क्लस्टरिंग प्रक्रिया के पुनरावृत्तियां हैं।
> 🎓 random_state: "सेंट्रॉइड प्रारंभिककरण के लिए यादृच्छिक संख्या पीढ़ी निर्धारित करता है।" [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)
> 🎓 random_state: "सेंट्रॉइड प्रारंभिककरण के लिए रैंडम नंबर जनरेशन निर्धारित करता है।" [स्रोत](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)
> 🎓 WCSS: "within-cluster sums of squares" एक क्लस्टर के भीतर सभी बिंदुओं की औसत दूरी को क्लस्टर सेंट्रॉइड से मापता है। [स्रोत](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce)
> 🎓 WCSS: "within-cluster sums of squares" मापता है कि क्लस्टर के भीतर सभी बिंदुओं की औसत दूरी क्लस्टर सेंट्रॉइड से कितनी है। [स्रोत](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce)
> 🎓 इनर्शिया: K-Means एल्गोरिदम सेंट्रॉइड्स को चुनने का प्रयास करता है ताकि 'इनर्शिया' को म किया जा सके, "जो मापता है कि क्लस्टर कितने आंतरिक रूप से सुसंगत हैं।" [स्रोत](https://scikit-learn.org/stable/modules/clustering.html)। मान प्रत्येक पुनरावृत्ति पर wcss चर में जोड़ा जाता है।
> 🎓 इनर्शिया: K-Means एल्गोरिदम सेंट्रॉइड्स को चुनने का प्रयास करता है ताकि 'इनर्शिया' को न्यूनतम किया जा सके, "जो मापता है कि क्लस्टर कितने आंतरिक रूप से सुसंगत हैं।" [स्रोत](https://scikit-learn.org/stable/modules/clustering.html)। इस मान को प्रत्येक पुनरावृत्ति पर wcss वेरिएबल में जोड़ा जाता है।
> 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means) में आप 'k-means++' अनुकूलन का उपयोग कर सकते हैं, जो "सेंट्रॉइड्स को (आमतौर पर) एक-दूसरे से दूर प्रारंभिक करता है, जिससे यादृच्छिक प्रारंभिककरण की तुलना में बेहतर परिणाम प्राप्त होते हैं।"
> 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means) में आप 'k-means++' ऑप्टिमाइज़ेशन का उपयोग कर सकते हैं, जो "सेंट्रॉइड्स को (आमतौर पर) एक-दूसरे से दूर प्रारंभिक करता है, जिससे रैंडम प्रारंभिककरण की तुलना में बेहतर परिणाम प्राप्त होते हैं।"
### एल्बो मेथड
@ -185,13 +185,13 @@ K-Means का उपयोग करने की एक कमी यह ह
plt.show()
```
पिछले चरण में बनाए गए `wcss` चर का उपयोग करके एक चार्ट बनाएं जो 'एल्बो' में मोड़ दिखाता है, जो क्लस्टर की इष्टतम संख्या को इंगित करता है। शायद यह **वास्तव में** 3 है!
पिछले चरण में बनाए गए `wcss` वेरिएबल का उपयोग करके एक चार्ट बनाएं जो दिखाए कि 'एल्बो' में मोड़ कहां है, जो क्लस्टर की इष्टतम संख्या को इंगित करता है। शायद यह **वास्तव में** 3 है!
![elbow method](../../../../translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.hi.png)
![elbow method](../../../../5-Clustering/2-K-Means/images/elbow.png)
## अभ्यास - क्लस्टर प्रदर्शित करें
1. प्रक्रिया को फिर से आजमाएं, इस बार तीन क्लस्टर सेट करें, और क्लस्टर को एक स्कैटरप्लॉट के रूप में प्रदर्शित करें:
1. प्रक्रिया को फिर से आजमाएं, इस बार तीन क्लस्टर सेट करें, और क्लस्टर को एक स्कैटरप्लॉट के रूप में प्रदर्शित करें:
```python
from sklearn.cluster import KMeans
@ -218,22 +218,22 @@ K-Means का उपयोग करने की एक कमी यह ह
इस मॉडल की सटीकता बहुत अच्छी नहीं है, और क्लस्टर के आकार से आपको इसका कारण पता चलता है।
![clusters](../../../../translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.hi.png)
![clusters](../../../../5-Clustering/2-K-Means/images/clusters.png)
यह डेटा बहुत असंतुलित है, बहुत कम सहसंबद्ध है और कॉलम मानों के बीच बहुत अधिक भिन्नता है, जिससे क्लस्टर अच्छी तरह से नहीं बन पाते। वास्तव में, जो क्लस्टर बनते हैं वे शायद ऊपर परिभाषित तीन शैली श्रेणियों द्वारा भारी रूप से प्रभावित या विकृत होते हैं। यह एक सीखने की प्रक्रिया थी!
यह डेटा बहुत असंतुलित है, बहुत कम सहसंबद्ध है और कॉलम मानों के बीच बहुत अधिक वेरिएंस है, जिससे क्लस्टर अच्छी तरह से नहीं बन पाते। वास्तव में, जो क्लस्टर बनते हैं वे शायद ऊपर परिभाषित तीन शैली श्रेणियों द्वारा भारी रूप से प्रभावित या विकृत होते हैं। यह एक सीखने की प्रक्रिया थी!
Scikit-learn के दस्तावेज़ में, आप देख सकते हैं कि इस तरह के मॉडल, जिसमें क्लस्टर बहुत अच्छी तरह से परिभाषित नहीं हैं, में 'वेरिएंस' की समस्या है:
Scikit-learn के दस्तावेज़ में, आप देख सकते हैं कि इस तरह के मॉडल, जिसमें क्लस्टर बहुत अच्छी तरह से परिभाषित नहीं हैं, में 'वेरिएंस' की समस्या होती है:
![problem models](../../../../translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.hi.png)
![problem models](../../../../5-Clustering/2-K-Means/images/problems.png)
> Scikit-learn से इन्फोग्राफिक
## वेरिएंस
वेरिएंस को "मीन से वर्गीय अंतर का औसत" के रूप में परिभाषित किया गया है [(स्रोत)](https://www.mathsisfun.com/data/standard-deviation.html)। इस क्लस्टरिंग समस्या के संदर्भ में, इसका मतलब है कि हमारे डेटा सेट की संख्याएं मीन से थोड़ा अधिक भटकने की प्रवृत्ति रखती हैं।
✅ यह एक अच्छा समय है यह सोचने का कि आप इस समस्या को ठीक करने के लिए क्या कर सकते हैं। डेटा को थोड़ा और ट्वीक करें? अलग-अलग कॉलम का उपयोग करें? अलग एल्गोरिदम का उपयोग करें? संकेत: अपने डेटा को [स्केल करें](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ताकि इसे सामान्यीकृत किया जा सके और अन्य कॉलम का परीक्षण करें
✅ यह एक अच्छा समय है यह सोचने का कि आप इस समस्या को ठीक करने के लिए क्या कर सकते हैं। डेटा को थोड़ा और ट्वीक करें? अलग-अलग कॉलम का उपयोग करें? अलग एल्गोरिदम का उपयोग करें? संकेत: अपने डेटा को [स्केल करें](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) ताकि इसे सामान्यीकृत किया जा सके और अन्य कॉलम का परीक्षण किया जा सके
> इस '[वेरिएंस कैलकुलेटर](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' को आजमाएं ताकि इस अवधारणा को थोड़ा और समझा जा सके।
> इस '[वेरिएंस कैलकुलेटर](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' को आजमाएं ताकि इस अवधारणा को थोड़ा और समझा जा सके।
---
@ -241,19 +241,19 @@ K-Means का उपयोग करने की एक कमी यह ह
इस नोटबुक के साथ कुछ समय बिताएं और पैरामीटर को ट्वीक करें। क्या आप डेटा को अधिक साफ करके (जैसे आउटलायर्स को हटाकर) मॉडल की सटीकता सुधार सकते हैं? आप वेट्स का उपयोग करके कुछ डेटा सैंपल्स को अधिक वेट दे सकते हैं। बेहतर क्लस्टर बनाने के लिए आप और क्या कर सकते हैं?
संकेत: अपने डेटा को स्केल करने का प्रयास करें। नोटबुक में टिप्पणी की गई कोड है जो मानक स्केलिंग जोड़ता है ताकि डेटा कॉलम रेंज के संदर्भ में एक-दूसरे के अधिक करीब दिखें। आप पाएंगे कि जबकि सिल्हूट स्कोर नीचे चला जाता है, एल्बो ग्राफ में 'किंक' चिकना हो जाता है। ऐसा इसलिए है क्योंकि डेटा को बिना स्केल किए छोड़ने से कम वेरिएंस वाले डेटा को अधिक वेट मिलता है। इस समस्या पर थोड़ा और पढ़ें [यहां](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226)।
संकेत: अपने डेटा को स्केल करने का प्रयास करें। नोटबुक में टिप्पणी की गई कोड है जो मानक स्केलिंग जोड़ता है ताकि डेटा कॉलम रेंज के मामले में एक-दूसरे से अधिक समान दिखें। आप पाएंगे कि जबकि सिल्हूट स्कोर नीचे चला जाता है, एल्बो ग्राफ में 'किंक' स्मूथ हो जाता है। ऐसा इसलिए है क्योंकि डेटा को अनस्केल छोड़ने से कम वेरिएंस वाले डेटा को अधिक वेट मिलता है। इस समस्या पर थोड़ा और पढ़ें [यहां](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226)।
## [Post-lecture quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
एक K-Means सिम्युलेटर [जैसे इस](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) को देखें। आप इस टूल का उपयोग करके सैंपल डेटा पॉइंट्स को विज़ुअलाइज़ कर सकते हैं और इसके सेंट्रॉइड्स निर्धारित कर सकते हैं। आप डेटा की रैंडमनेस, क्लस्टर की संख्या और सेंट्रॉइड्स की संख्या को संपादित कर सकते हैं। क्या इससे आपको यह समझने में मदद मिलती है कि डेटा को कैसे समूहित किया जा सकता है?
एक K-Means सिम्युलेटर [जैसे यह](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) देखें। आप इस टूल का उपयोग करके सैंपल डेटा पॉइंट्स को विज़ुअलाइज़ कर सकते हैं और इसके सेंट्रॉइड्स निर्धारित कर सकते हैं। आप डेटा की रैंडमनेस, क्लस्टर की संख्या और सेंट्रॉइड्स की संख्या को संपादित कर सकते हैं। क्या इससे आपको यह समझने में मदद मिलती है कि डेटा को कैसे समूहित किया जा सकता है?
साथ ही, [Stanford द्वारा K-Means पर इस हैंडआउट](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) को देखें।
साथ ही, [Stanford से K-Means पर इस हैंडआउट](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) को देखें।
## असाइनमेंट
[अलग-अलग क्लस्टरिंग विधियों का प्रयास करें](assignment.md)
[अलग-अलग क्लस्टरिंग विधियों को आज़माएं](assignment.md)
---

@ -1,59 +1,59 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "89e923cf3e8bdff9662536e8bf9516e6",
"translation_date": "2025-09-04T00:48:17+00:00",
"original_hash": "1c2ec40cf55c98a028a359c27ef7e45a",
"translation_date": "2025-09-05T10:34:16+00:00",
"source_file": "6-NLP/1-Introduction-to-NLP/README.md",
"language_code": "hi"
}
-->
# प्राकृतिक भाषा प्रसंस्करण का परिचय
यह पाठ *प्राकृतिक भाषा प्रसंस्करण* (NLP), जो *कंप्यूटेशनल लिंग्विस्टिक्स* का एक उपक्षेत्र है, के इतिहास और महत्वपूर्ण अवधारणाओं को कवर करता है।
यह पाठ *प्राकृतिक भाषा प्रसंस्करण*, जो *कंप्यूटेशनल भाषाविज्ञान* का एक उपक्षेत्र है, के संक्षिप्त इतिहास और महत्वपूर्ण अवधारणाओं को कवर करता है।
## [ाठ से पहले का क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/31/)
## [्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## परिचय
NLP, जैसा कि इसे आमतौर पर जाना जाता है, मशीन लर्निंग के सबसे प्रसिद्ध क्षेत्रों में से एक है, जिसे उत्पादन सॉफ़्टवेयर में लागू और उपयोग किया गया है।
एनएलपी, जैसा कि इसे आमतौर पर जाना जाता है, मशीन लर्निंग के सबसे प्रसिद्ध क्षेत्रों में से एक है, जिसे उत्पादन सॉफ़्टवेयर में लागू और उपयोग किया गया है।
✅ क्या आप किसी ऐसे सॉफ़्टवेयर के बारे में सोच सकते हैं जिसे आप हर दिन उपयोग करते हैं और जिसमें शायद कुछ NLP शामिल है? आपके वर्ड प्रोसेसिंग प्रोग्राम्स या मोबाइल ऐप्स के बारे में क्या जो आप नियमित रूप से उपयोग करते हैं?
✅ क्या आप किसी ऐसे सॉफ़्टवेयर के बारे में सोच सकते हैं जिसे आप हर दिन उपयोग करते हैं और जिसमें शायद कुछ एनएलपी शामिल है? आपके वर्ड प्रोसेसिंग प्रोग्राम्स या मोबाइल ऐप्स के बारे में क्या, जिन्हें आप नियमित रूप से उपयोग करते हैं?
आप निम्नलिखित के बारे में जानेंगे:
- **भाषाओं का विचार**। भाषाओं का विकास कैसे हुआ और अध्ययन के मुख्य क्षेत्र क्या रहे हैं।
- **परिभाषा और अवधारणाएँ**। आप यह भी सीखेंगे कि कंप्यूटर टेक्स्ट को कैसे प्रोसेस करते हैं, जिसमें पार्सिंग, व्याकरण, और संज्ञा और क्रिया की पहचान शामिल है। इस पाठ में कुछ कोडिंग कार्य हैं, और कई महत्वपूर्ण अवधारणाएँ पेश की गई हैं जिन्हें आप अगले पाठों में कोड करना सीखेंगे।
- **भाषाओं का विचार**। भाषाओं का विकास कैसे हुआ और अध्ययन के प्रमुख क्षेत्र क्या रहे हैं।
- **परिभाषा और अवधारणाएँ**। आप यह भी सीखेंगे कि कंप्यूटर टेक्स्ट को कैसे प्रोसेस करते हैं, जिसमें पार्सिंग, व्याकरण, और संज्ञा और क्रियाओं की पहचान शामिल है। इस पाठ में कुछ कोडिंग कार्य हैं, और कई महत्वपूर्ण अवधारणाएँ पेश की गई हैं जिन्हें आप अगले पाठों में कोड करना सीखेंगे।
## कंप्यूटेशनल लिंग्विस्टिक्स
## कंप्यूटेशनल भाषाविज्ञान
कंप्यूटेशनल लिंग्विस्टिक्स दशकों से अनुसंधान और विकास का एक क्षेत्र है जो यह अध्ययन करता है कि कंप्यूटर भाषाओं के साथ कैसे काम कर सकते हैं, और यहां तक कि उन्हें समझ सकते हैं, अनुवाद कर सकते हैं, और संवाद कर सकते हैं। प्राकृतिक भाषा प्रसंस्करण (NLP) एक संबंधित क्षेत्र है जो इस पर केंद्रित है कि कंप्यूटर 'प्राकृतिक', या मानव, भाषाओं को कैसे प्रोसेस कर कत है
कंप्यूटेशनल भाषाविज्ञान कई दशकों से शोध और विकास का एक क्षेत्र है जो अध्ययन करता है कि कंप्यूटर भाषाओं के साथ कैसे काम कर सकते हैं, उन्हें समझ सकते हैं, अनुवाद कर सकते हैं, और संवाद कर सकते हैं। प्राकृतिक भाषा प्रसंस्करण (एनएलपी) एक संबंधित क्षेत्र है जो 'प्राकृतिक', या मानव, भाषाओं को प्रोसेस करने पर केंद्रित है।
### उदाहरण - फोन डिक्टेशन
यदि आपने कभी टाइप करने के बजाय अपने फोन पर कुछ बोला है या किसी वर्चुअल असिस्टेंट से कोई सवाल पूछा है, तो आपकी आवाज़ को टेक्स्ट में बदला गया और फिर उस भाषा से *पार्स* किया गया जिसे आपने बोला। फिर पहचाने गए कीवर्ड्स को एक ऐसे प्रारूप में प्रोसेस किया गया जिसे फोन या असिस्टेंट समझ सके और उस पर कार्रवाई कर सके।
यदि आपने कभी टाइप करने के बजाय अपने फोन पर बोलकर कुछ कहा है या किसी वर्चुअल असिस्टेंट से कोई सवाल पूछा है, तो आपकी आवाज़ को टेक्स्ट रूप में बदल दिया गया और फिर उस भाषा से *पार्स* किया गया जिसे आपने बोला। पहचाने गए कीवर्ड्स को फिर उस प्रारूप में प्रोसेस किया गया जिसे फोन या असिस्टेंट समझ सके और उस पर कार्रवाई कर सके।
![समझ](../../../../translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.hi.png)
> असली भाषाई समझना कठिन है! छवि: [जेन लूपर](https://twitter.com/jenlooper)
![समझ](../../../../6-NLP/1-Introduction-to-NLP/images/comprehension.png)
> असली भाषाविज्ञान समझना कठिन है! छवि: [Jen Looper](https://twitter.com/jenlooper)
### यह तकनीक कैसे संभव हुई?
यह इसलिए संभव हुआ क्योंकि किसी ने इसे करने के लिए एक कंप्यूटर प्रोग्राम लिखा। कुछ दशक पहले, कुछ विज्ञान कथा लेखकों ने भविष्यवाणी की थी कि लोग ज्यादातर अपने कंप्यूटर से बात करेंगे, और कंप्यूटर हमेशा ठीक वही समझेंगे जो वे कहना चाहते हैं। दुर्भाग्य से, यह समस्या जितनी कल्पना की गई थी उससे कहीं अधिक कठिन निकली, और जबकि आज यह समस्या बेहतर समझी जाती है, वाक्य के अर्थ को समझने में 'संपूर्ण' प्राकृतिक भाषा प्रसंस्करण प्राप्त करने में महत्वपूर्ण चुनौतियाँ हैं। यह विशेष रूप से तब कठिन हो जाता है जब हास्य को समझने या वाक्य में व्यंग्य जैसी भावनाओं का पता लगाने की बात आती है।
यह संभव हुआ क्योंकि किसी ने इसे करने के लिए एक कंप्यूटर प्रोग्राम लिखा। कुछ दशक पहले, कुछ विज्ञान कथा लेखकों ने भविष्यवाणी की थी कि लोग ज्यादातर अपने कंप्यूटर से बात करेंगे, और कंप्यूटर हमेशा ठीक वही समझेंगे जो वे कहना चाहते हैं। दुर्भाग्यवश, यह समस्या उतनी आसान नहीं थी जितनी कई लोगों ने सोची थी, और जबकि आज यह समस्या बेहतर समझी जाती है, 'परफेक्ट' प्राकृतिक भाषा प्रसंस्करण प्राप्त करने में महत्वपूर्ण चुनौतियाँ हैं, खासकर जब वाक्य के अर्थ को समझने की बात आती है। यह समस्या विशेष रूप से कठिन हो जाती है जब हास्य को समझने या वाक्य में व्यंग्य जैसी भावनाओं का पता लगाने की बात आती है।
इस बिंदु पर, आप स्कूल की कक्षाओं को याद कर सकते हैं जहाँ शिक्षक ने वाक्य में व्याकरण के भागों को कवर किया था। कुछ देशों में, छात्रों को व्याकरण और भाषाविज्ञान एक समर्पित विषय के रूप में पढ़ाया जाता है, लेकिन कई देशों में, ये विषय भाषा सीखने का हिस्सा होते हैं: या तो प्राथमिक विद्यालय में आपकी पहली भाषा (पढ़ना और लिखना सीखना) और शायद माध्यमिक या उच्च विद्यालय में दूसरी भाषा। चिंता न करें यदि आप संज्ञा और क्रिया या क्रिया विशेषण और विशेषण के बीच अंतर करने में विशेषज्ञ नहीं हैं!
इस समय, आपको स्कूल की कक्षाओं की याद आ सकती है जहाँ शिक्षक ने वाक्य में व्याकरण के भागों को कवर किया था। कुछ देशों में, छात्रों को व्याकरण और भाषाविज्ञान एक समर्पित विषय के रूप में पढ़ाया जाता है, लेकिन कई देशों में, ये विषय भाषा सीखने का हिस्सा होते हैं: या तो प्राथमिक स्कूल में आपकी पहली भाषा (पढ़ना और लिखना सीखना) और शायद माध्यमिक या हाई स्कूल में दूसरी भाषा। चिंता न करें यदि आप संज्ञा और क्रिया या क्रिया विशेषण और विशेषण के बीच अंतर करने में विशेषज्ञ नहीं हैं!
यदि आप *साधारण वर्तमान* और *वर्तमान प्रगतिशील* के बीच अंतर के साथ संघर्ष करते हैं, तो आप अकेले नहीं हैं। यह कई लोगों के लिए एक चुनौतीपूर्ण चीज है, यहां तक कि किसी भाषा के मूल वक्ताओं के लिए भी। अच्छी खबर यह है कि कंप्यूटर औपचारिक नियमों को लागू करने में वास्तव में अच्छे हैं, और आप कोड लिखना सीखेंगे जो एक वाक्य को *पार्स* कर सकता है जैसे कि एक इंसान। बड़ी चुनौती जिसे आप बाद में जांचेंगे वह है वाक्य के *अर्थ* और *भावना* को समझना।
यदि आप *सिंपल प्रेजेंट* और *प्रेजेंट प्रोग्रेसिव* के बीच अंतर करने में संघर्ष करते हैं, तो आप अकेले नहीं हैं। यह कई लोगों के लिए चुनौतीपूर्ण है, यहां तक कि किसी भाषा के मूल वक्ताओं के लिए भी। अच्छी खबर यह है कि कंप्यूटर औपचारिक नियमों को लागू करने में वास्तव में अच्छे हैं, और आप कोड लिखना सीखेंगे जो एक वाक्य को *पार्स* कर सकता है जैसे कि एक इंसान। बड़ी चुनौती जिसे आप बाद में जांचेंगे वह है वाक्य के *अर्थ* और *भावना* को समझना।
## पूर्वापेक्षाएँ
## आवश्यकताएँ
इस पाठ के लिए मुख्य पूर्वापेक्षा इस पाठ की भाषा को पढ़ने और समझने में सक्षम होना है। हल करने के लिए कोई गणितीय समस्याएँ या समीकरण नहीं है। जबकि मूल लेखक ने यह पाठ अंग्रेजी में लिखा था, इसे अन्य भाषाओं में भी अनुवादित किया गया है, इसलिए आप एक अनुवाद पढ़ रहे हो सकते हैं। ऐसे उदाहरण हैं जहाँ विभिन्न भाषाओं का उपयोग किया गया है (विभिन्न भाषाओं के व्याकरण नियमों की तुलना करने के लिए)। ये *अनुवादित नहीं* हैं, लेकिन व्याख्यात्मक पाठ है, इसलिए अर्थ स्पष्ट होना चाहिए।
इस पाठ के लिए मुख्य आवश्यकता इस पाठ की भाषा को पढ़ने और समझने में सक्षम होना है। कोई गणितीय समस्याएँ या समीकरण हल करने की आवश्यकता नहीं है। जबकि मूल लेखक ने यह पाठ अंग्रेजी में लिखा है, इसे अन्य भाषाओं में भी अनुवादित किया गया है, इसलिए आप एक अनुवाद पढ़ सकते हैं। ऐसे उदाहरण हैं जहाँ विभिन्न भाषाओं का उपयोग किया गया है (विभिन्न भाषाओं के व्याकरण नियमों की तुलना करने के लिए)। ये *अनुवादित नहीं* हैं, लेकिन व्याख्यात्मक पाठ अनुवादित है, इसलिए अर्थ स्पष्ट होना चाहिए।
कोडिंग कार्यों के लिए, आप Python का उपयोग करेंगे और उदाहरण Python 3.8 का उपयोग कर रहे हैं।
इस खंड में, आपको आवश्यकता होगी और उपयोग करना होगा:
- **Python 3 समझ**। प्रोग्रामिंग भाषा की समझ Python 3 में, यह पाठ इनपुट, लूप्स, फाइल रीडिंग, और एरेज़ का उपयोग करता है।
- **विजुअल स्टूडियो कोड + एक्सटेंशन**। हम Visual Studio Code और इसके Python एक्सटेंशन का उपयोग करेंगे। आप अपनी पसंद के किसी भी Python IDE का उपयोग कर सकते हैं।
- **TextBlob**। [TextBlob](https://github.com/sloria/TextBlob) Python के लिए एक सरलीकृत टेक्स्ट प्रोसेसिंग लाइब्रेरी है। इसे अपने सिस्टम पर इंस्टॉल करने के लिए TextBlob साइट पर दिए गए निर्देशों का पालन करें (नीचे दिखाए गए अनुसार कॉर्पस भी इंस्टॉल करें):
- **Python 3 समझ**Python 3 में प्रोग्रामिंग भाषा की समझ, यह पाठ इनपुट, लूप्स, फाइल रीडिंग, और ऐरे का उपयोग करता है।
- **Visual Studio Code + एक्सटेंशन**। हम Visual Studio Code और इसके Python एक्सटेंशन का उपयोग करेंगे। आप अपनी पसंद के Python IDE का भी उपयोग कर सकते हैं।
- **TextBlob**। [TextBlob](https://github.com/sloria/TextBlob) Python के लिए एक सरलीकृत टेक्स्ट प्रोसेसिंग लाइब्रेरी है। इसे अपने सिस्टम पर इंस्टॉल करने के लिए TextBlob साइट पर दिए गए निर्देशों का पालन करें (कॉर्पोरा को भी इंस्टॉल करें, जैसा कि नीचे दिखाया गया है):
```bash
pip install -U textblob
@ -64,51 +64,51 @@ NLP, जैसा कि इसे आमतौर पर जाना जात
## मशीनों से बात करना
कंप्यूटर को मानव भाषा समझाने की कोशिश का इतिहास दशकों पुराना है, और प्राकृतिक भाषा प्रसंस्करण पर विचार करने वाले शुरुआती वैज्ञानिकों में से एक *एलन ट्यूरिंग* थे।
कंप्यूटर को मानव भाषा समझने योग्य बनाने का इतिहास दशकों पुराना है, और प्राकृतिक भाषा प्रसंस्करण पर विचार करने वाले शुरुआती वैज्ञानिकों में से एक *एलन ट्यूरिंग* थे।
### 'ट्यूरिंग टेस्ट'
जब ट्यूरिंग 1950 के दशक में *कृत्रिम बुद्धिमत्ता* पर शोध कर रहे थे, तो उन्होंने सोचा कि क्या एक वार्तालाप परीक्षण दिया जा सकता है जिसमें एक इंसान और एक कंप्यूटर (टाइप किए गए संवाद के माध्यम से) शामिल हों, जहाँ वार्तालाप में इंसान यह सुनिश्चित न कर सके कि वे किसी अन्य इंसान से बात कर रहे हैं या कंप्यूटर से
जब ट्यूरिंग 1950 के दशक में *कृत्रिम बुद्धिमत्ता* पर शोध कर रहे थे, तो उन्होंने विचार किया कि क्या एक वार्तालाप परीक्षण दिया जा सकता है जिसमें एक मानव और कंप्यूटर (टाइप किए गए संवाद के माध्यम से) शामिल हों, जहाँ वार्तालाप में मानव यह सुनिश्चित न कर सके कि वे किसी अन्य मानव या कंप्यूटर से बात कर रहे हैं
यदि, एक निश्चित अवधि की बातचीत के बाद, इंसान यह निर्धारित नहीं कर सकता कि उत्तर कंप्यूटर से हैं या नहीं, तो क्या कंप्यूटर को *सोचने* वाला कहा जा सकता है?
यदि एक निश्चित अवधि की वार्तालाप के बाद, मानव यह निर्धारित नहीं कर सकता कि उत्तर कंप्यूटर से हैं या नहीं, तो क्या कंप्यूटर को *सोचने* वाला कहा जा सकता है?
### प्रेरणा - 'द इमिटेशन गेम'
इस विचार की प्रेरणा एक पार्टी गेम *द इमिटेशन गेम* से आई, जहाँ एक पूछताछकर्ता एक कमरे में अकेला होता है और यह निर्धारित करने का कार्य करता है कि दो अन्य लोग (दूसरे कमरे में) क्रमशः पुरुष और महिला कौन हैं। पूछताछकर्ता नोट्स भेज सकता है और ऐसे सवाल सोचने की कोशिश करता है जिनके लिखित उत्तर रहस्यमय व्यक्ति के लिंग को प्रकट कर हैं। बेशक, दूसरे कमरे में खिलाड़ी पूछताछकर्ता को गुमराह करने या भ्रमित करने के लिए सवालों के जवाब देने की कोशिश करते हैं, जबकि ईमानदारी से जवाब देने का दिखावा भी करते हैं।
इस विचार की प्रेरणा एक पार्टी गेम *द इमिटेशन गेम* से आई, जहाँ एक पूछताछकर्ता अकेले एक कमरे में होता है और उसे यह निर्धारित करना होता है कि दो लोगों (दूसरे कमरे में) में से कौन पुरुष और कौन महिला है। पूछताछकर्ता नोट्स भेज सकता है और उसे ऐसे सवाल सोचने होते हैं जहाँ लिखित उत्तर रहस्यमय व्यक्ति के लिंग को प्रकट करें। बेशक, दूसरे कमरे में खिलाड़ी पूछताछकर्ता को गुमराह करने या भ्रमित करने के लिए सवालों के जवाब देने की कोशिश करते हैं, जबकि ईमानदारी से जवाब देने का दिखावा करते हैं।
### एलिजा का विकास
### एलिजा का विकास
1960 के दशक में MIT के एक वैज्ञानिक *जोसेफ वीज़नबाम* ने [*एलिजा*](https://wikipedia.org/wiki/ELIZA) नामक एक कंप्यूटर 'थेरेपिस्ट' विकसित किया, जो मानव से सवाल पूछता था और उनके उत्तरों को समझने का आभास देता था। हालांकि, जबकि एलिजा एक वाक्य को पार्स कर सकता था और कुछ व्याकरणिक संरचनाओं और कीवर्ड्स की पहचान कर सकता था ताकि एक उचित उत्तर दे सके, इसे वाक्य को *समझने* वाला नहीं कहा जा सकता था। यदि एलिजा को "**I am** <u>sad</u>" प्रारूप का वाक्य प्रस्तुत किया गया, तो यह वाक्य को पुनः व्यवस्थित कर सकता था और शब्दों को प्रतिस्थापित कर सकता था ताकि उत्तर बने "How long have **you been** <u>sad</u>"
1960 के दशक में एमआईटी के वैज्ञानिक *जोसफ वीज़नबाम* ने [*एलिजा*](https://wikipedia.org/wiki/ELIZA) नामक एक कंप्यूटर 'थेरेपिस्ट' विकसित किया, जो मानव से सवाल पूछता था और उनके उत्तरों को समझने का आभास देता था। हालांकि, जबकि एलिजा एक वाक्य को पार्स कर सकता था और कुछ व्याकरणिक संरचनाओं और कीवर्ड्स की पहचान कर सकता था ताकि एक उचित उत्तर दे सके, इसे वाक्य को *समझने* वाला नहीं कहा जा सकता था। यदि एलिजा को "**I am** <u>sad</u>" जैसे वाक्य के साथ प्रस्तुत किया जाता, तो वह वाक्य के शब्दों को पुनः व्यवस्थित और प्रतिस्थापित कर सकता था ताकि उत्तर "How long have **you been** <u>sad</u>" बन सके।
इससे यह आभास हुआ कि एलिज़ा ने कथन को समझा और एक अनुवर्ती प्रश्न पूछा, जबकि वास्तव में, ह केवल काल को बदल रहा था और कुछ शब्द जोड़ रहा था। यदि एलिज़ा को कोई ऐसा कीवर्ड नहीं मिला जिसके लिए उसके पास उत्तर हो, तो यह एक यादृच्छिक उत्तर देता जो कई अलग-अलग कथनों पर लागू हो सकता था। उदाहरण के लिए, यदि उपयोगकर्ता ने लिखा "**You are** a <u>bicycle</u>", तो ह उत्तर दे सकता था "How long have **I been** a <u>bicycle</u>?", बजाय एक अधिक तर्कसंगत उत्तर के।
इससे ऐसा प्रतीत होता कि एलिजा ने कथन को समझा और एक अनुवर्ती प्रश्न पूछा, जबकि वास्तव में, ह केवल काल को बदल रहा था और कुछ शब्द जोड़ रहा था। यदि एलिजा किसी कीवर्ड की पहचान नहीं कर सकता था जिसके लिए उसके पास उत्तर था, तो वह इसके बजाय एक यादृच्छिक उत्तर देता जो कई अलग-अलग कथनों पर लागू हो सकता था। एलिजा को आसानी से मूर्ख बनाया जा सकता था, उदाहरण के लिए यदि उपयोगकर्ता लिखा "**You are** a <u>bicycle</u>", तो ह उत्तर दे सकता था "How long have **I been** a <u>bicycle</u>?", बजाय एक अधिक तर्कसंगत उत्तर के।
[![एलिज़ा से बातचीत](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "एलिज़ा से बातचीत")
[![एलिजा के साथ चैटिंग](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "एलिजा के साथ चैटिंग")
> 🎥 ऊपर की छवि पर क्लिक करें एलिज़ा प्रोग्राम के बारे में वीडियो देखने के लिए
> 🎥 ऊपर दी गई छवि पर क्लिक करें मूल एलिजा प्रोग्राम के बारे में वीडियो देखने के लिए
> नोट: आप [एलिजा](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) का मूल विवरण 1966 में प्रकाशित पढ़ सकते हैं यदि आपके पास ACM खाता है। वैकल्पिक रूप से, [विकिपीडिया](https://wikipedia.org/wiki/ELIZA) पर एलिज़ा के बारे में पढ़ें।
> नोट: आप 1966 में प्रकाशित [एलिजा](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) का मूल विवरण पढ़ सकते हैं यदि आपके पास एसीएम खाता है। वैकल्पिक रूप से, एलिजा के बारे में [विकिपीडिया](https://wikipedia.org/wiki/ELIZA) पर पढ़ें।
## अभ्यास - एक बुनियादी संवादात्मक बॉट कोड करना
## अभ्यास - एक बुनियादी संवादात्मक बॉट को कोड करना
एक संवादात्मक बॉट, जैसे एलिजा, एक प्रोग्राम है जो उपयोगकर्ता इनपुट प्राप्त करता है और समझने और बुद्धिमानी से प्रतिक्रिया देने का आभास देता है। एलिजा के विपरीत, हमारा बॉट कई नियमों के साथ एक बुद्धिमान बातचीत का आभास नहीं देगा। इसके बजाय, हमारे बॉट में केवल एक क्षमता होगी, बातचीत को जारी रखना, यादृच्छिक प्रतिक्रियाओं के साथ जो लगभग किसी भी सामान्य बातचीत में काम कर सकती हैं
एक संवादात्मक बॉट, जैसे एलिजा, एक प्रोग्राम है जो उपयोगकर्ता इनपुट प्राप्त करता है और समझने और बुद्धिमानी से प्रतिक्रिया देने का आभास देता है। एलिजा के विपरीत, हमारा बॉट कई नियमों के साथ बुद्धिमान वार्तालाप का आभास नहीं देगा। इसके बजाय, हमारे बॉट में केवल एक क्षमता होगी, सामान्य बातचीत में काम करने वाले यादृच्छिक उत्तरों के साथ बातचीत को जारी रखना
### योजना
संवादात्मक बॉट बनाने के लिए आपके चरण:
संवादात्मक बॉट बनाने के लिए आपके कदम:
1. उपयोगकर्ता को बॉट के साथ बातचीत करने के निर्देश प्रिंट करें
1. उपयोगकर्ता को बॉट के साथ कैसे बातचीत करनी है, इसके निर्देश प्रिंट करें
2. एक लूप शुरू करें
1. उपयोगकर्ता इनपुट स्वीकार करें
2. यदि उपयोगकर्ता ने बाहर निकलने के लिए कहा है, तो बाहर निकलें
3. उपयोगकर्ता इनपुट को प्रोसेस करें और प्रतिक्रिया निर्धारित करें (इस मामले में, प्रतिक्रिया संभावित सामान्य प्रतिक्रियाओं की सूची से एक यादृच्छिक चयन है)
3. उपयोगकर्ता इनपुट को प्रोसेस करें और प्रतिक्रिया निर्धारित करें (इस मामले में, प्रतिक्रिया संभावित सामान्य उत्तरों की सूची से यादृच्छिक रूप से चुनी जाती है)
4. प्रतिक्रिया प्रिंट करें
3. चरण 2 पर वापस जाए
3. चरण 2 पर वापस जाए
### बॉट बनाना
आइए अगला बॉट बनाते हैं। हम कुछ वाक्यांशों को परिभाषित करके शुरू करेंगे।
आइए अगले चरण में बॉट बनाएं। हम कुछ वाक्यांशों को परिभाषित करके शुरू करेंगे।
1. निम्नलिखित यादृच्छिक प्रतिक्रियाओं के साथ Python में इस बॉट को स्वयं बनाएं:
1. निम्नलिखित यादृच्छिक उत्तरों के साथ Python में इस बॉट को स्वयं बनाएं:
```python
random_responses = ["That is quite interesting, please tell me more.",
@ -119,7 +119,7 @@ NLP, जैसा कि इसे आमतौर पर जाना जात
"Did you catch the game last night?"]
```
यहा कुछ नमूना आउटपुट है जो आपको मार्गदर्शन करेगा (उपयोगकर्ता इनपुट `>` से शुरू होने वाली पंक्तियों पर है):
यहा कुछ नमूना आउटपुट है जो आपको मार्गदर्शन करेगा (उपयोगकर्ता इनपुट `>` से शुरू होने वाली पंक्तियों पर है):
```output
Hello, I am Marvin, the simple robot.
@ -142,23 +142,23 @@ NLP, जैसा कि इसे आमतौर पर जाना जात
It was nice talking to you, goodbye!
```
इस कार्य का एक संभावित समाधान [यहाँ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) है।
कार्य का एक संभावित समाधान [यहाँ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) है।
✅ रुकें और विचार करें
1. क्या आपको लगता है कि यादृच्छिक प्रतिक्रियाएँ किसी को यह सोचने में 'धोखा' दे सकती हैं कि बॉट वास्तव में उन्हें समझता है?
2. बॉट को अधिक प्रभावी बनाने के लिए किन विशेषताओं की आवश्यकता होगी?
3. यदि एक बॉट वास्तव में वाक्य के अर्थ को 'समझ' सकता है, तो क्या उसे बातचीत में पिछले वाक्यों के अर्थ को 'याद' रने की भी आवश्यकता होगी?
1. क्या आपको लगता है कि यादृच्छिक उत्तर किसी को यह सोचने में 'मूर्ख' बना सकते हैं कि बॉट वास्तव में उन्हें समझता है?
2. बॉट को अधिक प्रभावी बनाने के लिए उसे किन विशेषताओं की आवश्यकता होगी?
3. यदि बॉट वास्तव में वाक्य के अर्थ को 'समझ' सकता है, तो क्या उसे वार्तालाप में पिछले वाक्यों के अर्थ को 'याद' रने की आवश्यकता होगी?
---
## 🚀चुनौती
ऊपर दिए गए "रुकें और विचार करें" तत्वों में से एक को चुनें और या तो इसे कोड में लागू करने का प्रयास करें या कागज पर छद्म कोड का उपयोग करके एक समाधान लिखें।
ऊपर दिए गए "रुकें और विचार करें" तत्वों में से एक चुनें और या तो इसे कोड में लागू करने का प्रयास करें या कागज पर छद्म कोड का उपयोग करके समाधान लिखें।
अगले पाठ में, आप प्राकृतिक भाषा को पार्स करने और मशीन लर्निंग के कई अन्य दृष्टिकोणों के बारे में जानेंगे।
## [ाठ के बाद का क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/32/)
## [ोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
@ -166,12 +166,12 @@ NLP, जैसा कि इसे आमतौर पर जाना जात
### संदर्भ
1. शुबर्ट, लेनहार्ट, "कंप्यूटेशनल लिंग्विस्टिक्स", *द स्टैनफोर्ड एनसाइक्लोपीडिया ऑफ फिलॉसफी* (स्प्रिंग 2020 संस्करण), एडवर्ड एन. ज़ाल्टा (संपादक), URL = <https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/>.
2. प्रिंसटन यूनिवर्सिटी "वर्डनेट के बारे में।" [वर्डनेट](https://wordnet.princeton.edu/)। प्रिंसटन यूनिवर्सिटी। 2010।
1. शुबर्ट, लेनहार्ट, "कंप्यूटेशनल भाषाविज्ञान", *द स्टैनफोर्ड एनसाइक्लोपीडिया ऑफ फिलॉसफी* (स्प्रिंग 2020 संस्करण), एडवर्ड एन. ज़ाल्टा (संपादक), URL = <https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/>.
2. प्रिंसटन यूनिवर्सिटी "वर्डनेट के बारे में।" [WordNet](https://wordnet.princeton.edu/)। प्रिंसटन यूनिवर्सिटी। 2010।
## असाइनमेंट
[एक बॉट खोजें](assignment.md)
[बॉट खोजें](assignment.md)
---

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6534e145d52a3890590d27be75386e5d",
"translation_date": "2025-09-04T00:36:31+00:00",
"original_hash": "5f3cb462e3122e1afe7ab0050ccf2bd3",
"translation_date": "2025-09-05T10:31:35+00:00",
"source_file": "6-NLP/2-Tasks/README.md",
"language_code": "hi"
}
@ -11,45 +11,45 @@ CO_OP_TRANSLATOR_METADATA:
अधिकांश *प्राकृतिक भाषा प्रसंस्करण* कार्यों के लिए, जिस पाठ को संसाधित करना है, उसे तोड़ना, जांचना और परिणामों को नियमों और डेटा सेट्स के साथ संग्रहीत या क्रॉस-रेफरेंस करना आवश्यक होता है। ये कार्य प्रोग्रामर को पाठ में शब्दों और शब्दावली की _अर्थ_ या _इरादा_ या केवल _आवृत्ति_ को समझने में मदद करते हैं।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/33/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
आइए उन सामान्य तकनीकों की खोज करें जो पाठ को संसाधित करने में उपयोग की जाती हैं। मशीन लर्निंग के साथ मिलकर, ये तकनीकें आपको बड़े पैमाने पर पाठ को कुशलतापूर्वक विश्लेषण करने में मदद करती हैं। हालांकि, इन कार्यों पर एमएल लागू करने से पहले, आइए उन समस्याओं को समझें जिनका सामना एक एनएलपी विशेषज्ञ करता है।
आइए उन सामान्य तकनीकों की खोज करें जो पाठ को संसाधित करने में उपयोग की जाती हैं। मशीन लर्निंग के साथ मिलकर, ये तकनीकें आपको बड़े पैमाने पर पाठ को कुशलतापूर्वक विश्लेषण करने में मदद करती हैं। हालांकि, इन कार्यों पर मशीन लर्निंग लागू करने से पहले, आइए उन समस्याओं को समझें जिनका सामना एक NLP विशेषज्ञ करता है।
## एनएलपी के सामान्य कार्य
## NLP के सामान्य कार्य
पाठ का विश्लेषण करने के कई तरीके हैं जिन पर आप काम कर रहे हैं। ऐसे कार्य हैं जिन्हें आप कर सकते हैं और इन कार्यों के माध्यम से आप पाठ को समझने और निष्कर्ष निकालने में सक्षम होते हैं। आप आमतौर पर इन कार्यों को एक क्रम में करते हैं।
### टोकनाइजेशन
शायद पहली चीज जो अधिकांश एनएलपी एल्गोरिदम को करनी होती है, वह है पाठ को टोकन या शब्दों में विभाजित करना। हालांकि यह सरल लगता है, विराम चिह्न और विभिन्न भाषाओं के शब्द और वाक्य सीमाओं को ध्यान में रखना इसे जटिल बना सकता है। आपको सीमाओं को निर्धारित करने के लिए विभिन्न तरीकों का उपयोग करना पड़ सकता है।
शायद अधिकांश NLP एल्गोरिदम को सबसे पहले पाठ को टोकन या शब्दों में विभाजित करना होता है। हालांकि यह सरल लगता है, विराम चिह्न और विभिन्न भाषाओं के शब्द और वाक्य सीमाओं को ध्यान में रखना इसे चुनौतीपूर्ण बना सकता है। आपको सीमाओं को निर्धारित करने के लिए विभिन्न तरीकों का उपयोग करना पड़ सकता है।
![टोकनाइजेशन](../../../../translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.hi.png)
> **Pride and Prejudice** से एक वाक्य को टोकन में विभाजित करना। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
![टोकनाइजेशन](../../../../6-NLP/2-Tasks/images/tokenization.png)
> **Pride and Prejudice** से एक वाक्य को टोकनाज करना। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
### एम्बेडिंग्स
[वर्ड एम्बेडिंग्स](https://wikipedia.org/wiki/Word_embedding) आपके पाठ डेटा को संख्यात्मक रूप में बदलने का एक तरीका है। एम्बेडिंग्स इस तरह से की जाती हैं कि समान अर्थ वाले या एक साथ उपयोग किए गए शब्द एक साथ क्लस्टर करते हैं।
[शब्द एम्बेडिंग्स](https://wikipedia.org/wiki/Word_embedding) आपके पाठ डेटा को संख्यात्मक रूप में बदलने का एक तरीका है। एम्बेडिंग्स इस तरह से की जाती हैं कि समान अर्थ वाले या एक साथ उपयोग किए गए शब्द एक साथ क्लस्टर करते हैं।
![वर्ड एम्बेडिंग्स](../../../../translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.hi.png)
> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice** के एक वाक्य के लिए वर्ड एम्बेडिंग्स। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
![शब्द एम्बेडिंग्स](../../../../6-NLP/2-Tasks/images/embedding.png)
> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice** के एक वाक्य के लिए शब्द एम्बेडिंग्स। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
✅ [इस रोचक टूल](https://projector.tensorflow.org/) को आज़माएं और वर्ड एम्बेडिंग्स के साथ प्रयोग करें। किसी एक शब्द पर क्लिक करने से समान शब्दों के क्लस्टर दिखते हैं: 'toy' 'disney', 'lego', 'playstation', और 'console' के साथ क्लस्टर करता है।
✅ [इस दिलचस्प टूल](https://projector.tensorflow.org/) को आज़माएं और शब्द एम्बेडिंग्स के साथ प्रयोग करें। किसी एक शब्द पर क्लिक करने से समान शब्दों के क्लस्टर दिखते हैं: 'toy' 'disney', 'lego', 'playstation', और 'console' के साथ क्लस्टर करता है।
### पार्सिंग और पार्ट-ऑफ-स्पीच टैगिंग
हर शब्द जिसे टोकनाइज किया गया है, उसे पार्ट-ऑफ-स्पीच के रूप में टैग किया जा सकता है - जैसे संज्ञा, क्रिया, या विशेषण। वाक्य `the quick red fox jumped over the lazy brown dog` को इस प्रकार टैग किया जा सकता है: fox = संज्ञा, jumped = क्रिया।
हर शब्द जिसे टोकनाइज किया गया है, उसे पार्ट-ऑफ-स्पीच के रूप में टैग किया जा सकता है - जैसे संज्ञा, क्रिया, या विशेषण। वाक्य `the quick red fox jumped over the lazy brown dog` को POS टैग किया जा सकता है जैसे fox = संज्ञा, jumped = क्रिया।
![पार्सिंग](../../../../translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.hi.png)
![पार्सिंग](../../../../6-NLP/2-Tasks/images/parse.png)
> **Pride and Prejudice** से एक वाक्य को पार्स करना। [Jen Looper](https://twitter.com/jenlooper) द्वारा इन्फोग्राफिक
पार्सिंग यह पहचानने की प्रक्रिया है कि वाक्य में कौन से शब्द एक-दूसरे से संबंधित हैं - उदाहरण के लिए `the quick red fox jumped` एक विशेषण-संज्ञा-क्रिया अनुक्रम है जो `lazy brown dog` अनुक्रम से अलग है।
पार्सिंग यह पहचानने की प्रक्रिया है कि वाक्य में कौन से शब्द एक-दूसरे से संबंधित हैं - उदाहरण के लिए `the quick red fox jumped` एक विशेषण-संज्ञा-क्रिया अनुक्रम है जो `lazy brown dog` अनुक्रम से अलग है।
### शब्द और वाक्यांश आवृत्तियां
किसी बड़े पाठ का विश्लेषण करते समय एक उपयोगी प्रक्रिया यह है कि हर शब्द या रुचि के वाक्यांश का एक शब्दकोश बनाया जाए और यह कितनी बार प्रकट होता है। वाक्यांश `the quick red fox jumped over the lazy brown dog` में 'the' की आवृत्ति 2 है।
किसी बड़े पाठ का विश्लेषण करते समय एक उपयोगी प्रक्रिया यह है कि हर शब्द या रुचि के वाक्यांश का एक शब्दकोश बनाया जाए और यह कितनी बार दिखाई देता है। वाक्यांश `the quick red fox jumped over the lazy brown dog` में 'the' की आवृत्ति 2 है।
आइए एक उदाहरण पाठ देखें जहां हम शब्दों की आवृत्ति गिनते हैं। रुडयार्ड किपलिंग की कविता "The Winners" में निम्नलिखित पंक्ति है:
आइए एक उदाहरण पाठ देखें जहां हम शब्दों की आवृत्ति गिनते हैं। रुडयार्ड किपलिंग की कविता The Winners में निम्नलिखित छंद है:
```output
What the moral? Who rides may read.
@ -60,34 +60,34 @@ Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
```
जैसा कि वाक्यांश आवृत्तियां केस सेंसिटिव या केस इंसेंसिटिव हो सकती हैं, वाक्यांश `a friend` की आवृत्ति 2 है और `the` की आवृत्ति 6 है, और `travels` की आवृत्ति 2 है।
जैसा कि वाक्यांश आवृत्तियां केस सेंसिटिव या केस इंसेंसिटिव हो सकती हैं, वाक्यांश `a friend` की आवृत्ति 2 है और `the` की आवृत्ति 6 है, और `travels` की 2 है।
### एन-ग्राम्स
पाठ को एक निश्चित लंबाई के शब्द अनुक्रमों में विभाजित किया जा सकता है, जैसे एक शब्द (यूनिग्राम), दो शब्द (बाइग्राम्स), तीन शब्द (ट्राइग्राम्स) या किसी भी संख्या के शब्द (एन-ग्राम्स)।
पाठ को एक निश्चित लंबाई के शब्द अनुक्रमों में विभाजित किया जा सकता है, एक शब्द (यूनिग्राम), दो शब्द (बाइग्राम), तीन शब्द (ट्राइग्राम) या किसी भी संख्या के शब्द (एन-ग्राम्स)।
उदाहरण के लिए `the quick red fox jumped over the lazy brown dog` के लिए एन-ग्राम स्कोर 2 निम्नलिखित एन-ग्राम्स उत्पन्न करता है:
उदाहरण के लिए `the quick red fox jumped over the lazy brown dog` के साथ एन-ग्राम स्कोर 2 निम्नलिखित एन-ग्राम्स उत्पन्न करता है:
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
इसे वाक्य पर एक स्लाइडिंग बॉक्स के रूप में देखना आसान हो सकता है। यहां यह 3 शब्दों के एन-ग्राम्स के लिए है, प्रत्येक वाक्य में एन-ग्राम को बोल्ड किया गया है:
इसे वाक्य पर एक स्लाइडिंग बॉक्स के रूप में देखना आसान हो सकता है। यहां यह 3 शब्दों के एन-ग्राम्स के लिए है, प्रत्येक वाक्य में एन-ग्राम बोल्ड है:
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
![एन-ग्राम्स स्लाइडिंग विंडो](../../../../6-NLP/2-Tasks/images/n-grams.gif)
@ -95,43 +95,43 @@ He travels the fastest who travels alone.
### संज्ञा वाक्यांश निष्कर्षण
अधिकांश वाक्यों में एक संज्ञा होती है जो वाक्य का विषय या वस्तु होती है। अंग्रेजी में, इसे अक्सर 'a', 'an', या 'the' के साथ पहचाना जा सकता है। वाक्य के अर्थ को समझने का प्रयास करते समय 'संज्ञा वाक्यांश निकालना' एनएलपी में एक सामान्य कार्य है।
अधिकांश वाक्यों में एक संज्ञा होती है जो वाक्य का विषय या वस्तु होती है। अंग्रेजी में, इसे अक्सर 'a', 'an', या 'the' के पहले होने के रूप में पहचाना जा सकता है। वाक्य का अर्थ समझने का प्रयास करते समय 'संज्ञा वाक्यांश निकालना' NLP में एक सामान्य कार्य है।
✅ वाक्य "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." में संज्ञा वाक्यांशों की पहचान करें।
✅ वाक्य "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." में क्या आप संज्ञा वाक्यांशों की पहचान कर सकते हैं?
वाक्य `the quick red fox jumped over the lazy brown dog` में 2 संज्ञा वाक्यांश हैं: **quick red fox** और **lazy brown dog**
### भावना विश्लेषण
किसी वाक्य या पाठ का विश्लेषण किया जा सकता है कि वह कितना *सकारात्मक* या *नकारात्मक* है। भावना को *पोलैरिटी* और *ऑब्जेक्टिविटी/सब्जेक्टिविटी* में मापा जाता है। पोलैरिटी -1.0 से 1.0 (नकारात्मक से सकारात्मक) और 0.0 से 1.0 (सबसे ऑब्जेक्टिव से सबसे सब्जेक्टिव) तक मापी जाती है।
किसी वाक्य या पाठ का विश्लेषण किया जा सकता है कि वह कितना *सकारात्मक* या *नकारात्मक* है। भावना को *ध्रुवता* और *वस्तुनिष्ठता/विषयात्मकता* में मापा जाता है। ध्रुवता -1.0 से 1.0 (नकारात्मक से सकारात्मक) और 0.0 से 1.0 (सबसे वस्तुनिष्ठ से सबसे विषयात्मक) तक मापी जाती है।
✅ बाद में आप सीखेंगे कि मशीन लर्निंग का उपयोग करके भावना निर्धारित करने के विभिन्न तरीके हैं, लेकिन एक तरीका यह है कि मानव विशेषज्ञ द्वारा सकारात्मक या नकारात्मक के रूप में वर्गीकृत शब्दों और वाक्यांशों की एक सूची हो और उस मॉडल को पाठ पर लागू करें ताकि पोलैरिटी स्कोर की गणना की जा सके। क्या आप देख सकते हैं कि यह कुछ परिस्थितियों में कैसे काम करेगा और अन्य में कम प्रभावी होगा?
✅ बाद में आप सीखेंगे कि मशीन लर्निंग का उपयोग करके भावना निर्धारित करने के विभिन्न तरीके हैं, लेकिन एक तरीका यह है कि मानव विशेषज्ञ द्वारा सकारात्मक या नकारात्मक के रूप में वर्गीकृत शब्दों और वाक्यांशों की एक सूची हो और उस मॉडल को पाठ पर लागू करें ताकि ध्रुवता स्कोर की गणना की जा सके। क्या आप देख सकते हैं कि यह कुछ परिस्थितियों में कैसे काम करेगा और अन्य में कम प्रभावी होगा?
### इन्फ्लेक्शन
इन्फ्लेक्शन आपको किसी शब्द को लेकर उसका एकवचन या बहुवचन प्राप्त करने में सक्षम बनाता है।
इन्फ्लेक्शन आपको एक शब्द लेने और उस शब्द का एकवचन या बहुवचन प्राप्त करने में सक्षम बनाता है।
### लेमाटाइजेशन
एक *लेम्मा* शब्दों के एक सेट के लिए मूल या मुख्य शब्द है, उदाहरण के लिए *flew*, *flies*, *flying* का लेम्मा क्रिया *fly* है।
एनएलपी शोधकर्ता के लिए उपयोगी डेटाबेस भी उपलब्ध हैं, विशेष रूप से:
NLP शोधकर्ता के लिए उपयोगी डेटाबेस भी उपलब्ध हैं, विशेष रूप से:
### वर्डनेट
[वर्डनेट](https://wordnet.princeton.edu/) शब्दों, पर्यायवाची, विलोम और कई अन्य विवरणों का एक डेटाबेस है जो विभिन्न भाषाओं में हर शब्द के लिए उपलब्ध है। यह अनुवाद, स्पेल चेकर्स, या किसी भी प्रकार के भाषा उपकरण बनाने का प्रयास करते समय बेहद उपयोगी है।
[WordNet](https://wordnet.princeton.edu/) शब्दों, पर्यायवाची, विलोम और कई अन्य विवरणों का एक डेटाबेस है जो कई अलग-अलग भाषाओं में हर शब्द के लिए उपलब्ध है। यह अनुवाद, वर्तनी जांचकर्ता, या किसी भी प्रकार के भाषा उपकरण बनाने का प्रयास करते समय अविश्वसनीय रूप से उपयोगी है।
## एनएलपी लाइब्रेरीज़
## NLP लाइब्रेरीज़
सौभाग्य से, आपको इन तकनीकों को स्वयं बनाने की आवश्यकता नहीं है, क्योंकि उत्कृष्ट पायथन लाइब्रेरीज़ उपलब्ध हैं जो प्राकृतिक भाषा प्रसंस्करण या मशीन लर्निंग में विशेषज्ञता न रखने वाले डेवलपर्स के लिए इसे अधिक सुलभ बनाती हैं। अगले पाठों में इनमें से अधिक उदाहरण शामिल हैं, लेकिन यहां आप कुछ उपयोगी उदाहरण सीखेंगे जो आपको अगले कार्य में मदद करेंगे।
सौभाग्य से, आपको इन तकनीकों को स्वयं बनाने की आवश्यकता नहीं है, क्योंकि उत्कृष्ट Python लाइब्रेरीज़ उपलब्ध हैं जो प्राकृतिक भाषा प्रसंस्करण या मशीन लर्निंग में विशेषज्ञता न रखने वाले डेवलपर्स के लिए इसे अधिक सुलभ बनाती हैं। अगले पाठों में इनमें से अधिक उदाहरण शामिल हैं, लेकिन यहां आप अगले कार्य में मदद करने के लिए कुछ उपयोगी उदाहरण सीखेंगे।
### अभ्यास - `TextBlob` लाइब्रेरी का उपयोग करना
आइए एक लाइब्रेरी का उपयोग करें जिसे TextBlob कहा जाता है क्योंकि इसमें इन प्रकार के कार्यों को हल करने के लिए उपयोगी एपीआई हैं। TextBlob "[NLTK](https://nltk.org) और [pattern](https://github.com/clips/pattern) के विशाल कंधों पर खड़ा है, और दोनों के साथ अच्छी तरह से काम करता है।" इसमें अपने एपीआई में काफी मात्रा में एमएल एम्बेडेड है।
आइए एक लाइब्रेरी का उपयोग करें जिसे TextBlob कहा जाता है क्योंकि इसमें इन प्रकार के कार्यों को हल करने के लिए उपयोगी APIs हैं। TextBlob "[NLTK](https://nltk.org) और [pattern](https://github.com/clips/pattern) के विशाल कंधों पर खड़ा है, और दोनों के साथ अच्छी तरह से काम करता है।" इसमें अपने API में काफी मात्रा में मशीन लर्निंग शामिल है।
> नोट: TextBlob के लिए एक उपयोगी [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) गाइड उपलब्ध है जिसे अनुभवी पायथन डेवलपर्स के लिए अनुशंसित किया जाता है।
> नोट: TextBlob के लिए एक उपयोगी [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) गाइड उपलब्ध है जिसे अनुभवी Python डेवलपर्स के लिए अनुशंसित किया गया है।
जब *संज्ञा वाक्यांशों* की पहचान करने का प्रयास किया जाता है, तो TextBlob कई विकल्प प्रदान करता है जो संज्ञा वाक्यांशों को खोजने के लिए एक्सट्रैक्टर्स का उपयोग करता है
जब *संज्ञा वाक्यांशों* की पहचान करने का प्रयास किया जाता है, तो TextBlob कई विकल्प प्रदान करता है जो संज्ञा वाक्यांशों को खोजने के लिए एक्सट्रैक्टर्स का उपयोग करते हैं
1. `ConllExtractor` पर एक नज़र डालें।
@ -147,24 +147,24 @@ He travels the fastest who travels alone.
np = user_input_blob.noun_phrases
```
> यहां क्या हो रहा है? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "एक संज्ञा वाक्यांश एक्सट्रैक्टर है जो ConLL-2000 प्रशिक्षण कॉर्पस के साथ प्रशिक्षित चंक पार्सिंग का उपयोग करता है।" ConLL-2000 2000 में आयोजित Computational Natural Language Learning सम्मेलन को संदर्भित करता है। प्रत्येक वर्ष सम्मेलन ने एक कठिन एनएलपी समस्या को हल करने के लिए एक कार्यशाला आयोजित की, और 2000 में यह संज्ञा चंकिंग थी। एक मॉडल को Wall Street Journal पर प्रशिक्षित किया गया था, जिसमें "सेक्शन 15-18 को प्रशिक्षण डेटा (211727 टोकन) और सेक्शन 20 को परीक्षण डेटा (47377 टोकन)" के रूप में उपयोग किया गया था। आप उपयोग की गई प्रक्रियाओं को [यहां](https://www.clips.uantwerpen.be/conll2000/chunking/) और [परिणाम](https://ifarm.nl/erikt/research/np-chunking.html) देख सकते हैं।
> यहां क्या हो रहा है? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "एक संज्ञा वाक्यांश एक्सट्रैक्टर है जो ConLL-2000 प्रशिक्षण कॉर्पस के साथ प्रशिक्षित चंक पार्सिंग का उपयोग करता है।" ConLL-2000 2000 में Computational Natural Language Learning पर सम्मेलन को संदर्भित करता है। प्रत्येक वर्ष सम्मेलन ने एक कठिन NLP समस्या को हल करने के लिए एक कार्यशाला आयोजित की, और 2000 में यह संज्ञा चंकिंग थी। एक मॉडल को Wall Street Journal पर प्रशिक्षित किया गया था, "सेक्शन 15-18 को प्रशिक्षण डेटा (211727 टोकन) और सेक्शन 20 को परीक्षण डेटा (47377 टोकन) के रूप में उपयोग किया गया।" आप उपयोग की गई प्रक्रियाओं को [यहां](https://www.clips.uantwerpen.be/conll2000/chunking/) और [परिणाम](https://ifarm.nl/erikt/research/np-chunking.html) देख सकते हैं।
### चुनौती - अपने बॉट को एनएलपी के साथ बेहतर बनाना
### चुनौती - अपने बॉट को NLP के साथ बेहतर बनाना
पिछले पाठ में आपने एक बहुत ही सरल Q&A बॉट बनाया। अब, आप मार्विन को थोड़ा अधिक सहानुभूतिपूर्ण बनाएंगे, उपयोगकर्ता के इनपुट का विश्लेषण करके उसकी भावना का मिलान करने के लिए प्रतिक्रिया देंगे। आपको एक `noun_phrase` की पहचान भी करनी होगी और उस विषय पर अधिक इनपुट मांगना होगा।
पिछले पाठ में आपने एक बहुत ही सरल Q&A बॉट बनाया। अब, आप मार्विन को थोड़ा अधिक सहानुभूतिपूर्ण बनाएंगे, उपयोगकर्ता इनपुट का विश्लेषण करके और उस भावना से मेल खाने के लिए प्रतिक्रिया प्रिंट करके। आपको एक `noun_phrase` की पहचान भी करनी होगी और उसके बारे में अधिक इनपुट पूछना होगा।
अपने बॉट को बेहतर संवादात्मक बनाने के लिए आपके कदम:
अपने बॉट को बेहतर संवादात्मक बनाने के लिए आपके चरण:
1. उपयोगकर्ता को बॉट के साथ कैसे बातचीत करनी है, इसके निर्देश प्रिंट करें
2. लूप शुरू करें
1. उपयोगकर्ता इनपुट स्वीकार करें
2. यदि उपयोगकर्ता ने बाहर निकलने के लिए कहा है, तो बाहर निकलें
3. उपयोगकर्ता इनपुट को संसाधित करें और उपयुक्त भावना प्रतिक्रिया निर्धारित करें
4. यदि भावना में एक संज्ञा वाक्यांश का पता चलता है, तो इसे बहुवचन बनाएं और उस विषय पर अधिक इनपुट मांगें
5. प्रतिक्रिया प्रिंट करें
3. चरण 2 पर वापस लूप करें
1. उपयोगकर्ता को बॉट के साथ कैसे इंटरैक्ट करें, इसके निर्देश प्रिंट करें
2. लूप शुरू करें
1. उपयोगकर्ता इनपुट स्वीकार करें
2. यदि उपयोगकर्ता ने बाहर निकलने के लिए कहा है, तो बाहर निकलें
3. उपयोगकर्ता इनपुट को संसाधित करें और उपयुक्त भावना प्रतिक्रिया निर्धारित करें
4. यदि भावना में एक संज्ञा वाक्यांश का पता चलता है, तो इसे बहुवचन बनाएं और उस विषय पर अधिक इनपुट पूछें
5. प्रतिक्रिया प्रिंट करें
3. चरण 2 पर वापस लूप करें
यहां TextBlob का उपयोग करके भावना निर्धारित करने के लिए कोड स्निपेट है। ध्यान दें कि केवल चार *ग्रेडिएंट्स* की भावना प्रतिक्रिया है (आप चाहें तो अधिक जोड़ सकते हैं):
यहां TextBlob का उपयोग करके भावना निर्धारित करने के लिए कोड स्निपेट है। ध्यान दें कि केवल चार *ग्रेडिएंट्स* हैं भावना प्रतिक्रिया के (आप चाहें तो अधिक जोड़ सकते हैं):
```python
if user_input_blob.polarity <= -0.5:
@ -200,9 +200,9 @@ It was nice talking to you, goodbye!
✅ ज्ञान जांच
1. क्या आपको लगता है कि सहानुभूतिपूर्ण प्रतिक्रियाएं किसी को यह सोचने में 'धोखा' दे सकती हैं कि बॉट वास्तव में उन्हें समझता है?
2. क्या संज्ञा वाक्यांश की पहचान करना बॉट को अधिक 'विश्वसनीय' बनाता है?
3. वाक्य से 'संज्ञा वाक्यांश' निकालना उपयोगी क्यों हो सकता है?
1. क्या आपको लगता है कि सहानुभूतिपूर्ण प्रतिक्रियाएं किसी को यह सोचने में 'धोखा' दे सकती हैं कि बॉट वास्तव में उन्हें समझता है?
2. क्या संज्ञा वाक्यांश की पहचान करना बॉट को अधिक 'विश्वसनीय' बनाता है?
3. वाक्य से 'संज्ञा वाक्यांश' निकालना उपयोगी क्यों हो सकता है?
---
@ -212,11 +212,11 @@ It was nice talking to you, goodbye!
पिछले ज्ञान जांच में एक कार्य लें और इसे लागू करने का प्रयास करें। बॉट को किसी मित्र पर परीक्षण करें। क्या यह उन्हें धोखा दे सकता है? क्या आप अपने बॉट को अधिक 'विश्वसनीय' बना सकते हैं?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/34/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
अगले कुछ पाठों में आप भावना विश्लेषण के बारे में अधिक जानेंगे। इस रोचक तकनीक पर [KDNuggets](https://www.kdnuggets.com/tag/nlp) जैसे लेखों में शोध करें
अगले कुछ पाठों में आप भावना विश्लेषण के बारे में अधिक जानेंगे। इस दिलचस्प तकनीक पर शोध करें जैसे [KDNuggets](https://www.kdnuggets.com/tag/nlp) पर लेख
## असाइनमेंट
@ -225,4 +225,4 @@ It was nice talking to you, goodbye!
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,36 +1,36 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6396d5d8617572cd2ac1de74fb0deb22",
"translation_date": "2025-09-04T00:53:03+00:00",
"original_hash": "be03c8182982b87ced155e4e9d1438e8",
"translation_date": "2025-09-05T10:34:53+00:00",
"source_file": "6-NLP/3-Translation-Sentiment/README.md",
"language_code": "hi"
}
-->
# मशीन लर्निंग के साथ अनुवाद और भावना विश्लेषण
पिछले पाठों में आपने `TextBlob` का उपयोग करके एक बुनियादी बॉट बनाना सीखा, जो एक लाइब्रेरी है जो मशीन लर्निंग का उपयोग करके संज्ञा वाक्यांश निकालने जैसे बुनियादी प्राकृतिक भाषा प्रसंस्करण (NLP) कार्य करती है। कंप्यूटेशनल भाषाविज्ञान में एक और महत्वपूर्ण चुनौती है एक भाषा से दूसरी भाषा में वाक्य का सटीक _अनुवाद_
पिछले पाठों में आपने `TextBlob` का उपयोग करके एक बुनियादी बॉट बनाना सीखा, जो एक लाइब्रेरी है जो पीछे से मशीन लर्निंग का उपयोग करके संज्ञा वाक्यांश निकालने जैसे बुनियादी प्राकृतिक भाषा प्रसंस्करण (NLP) कार्य करती है। कंप्यूटेशनल भाषाविज्ञान में एक और महत्वपूर्ण चुनौती है एक भाषा से दूसरी भाषा में वाक्य का सटीक _अनुवाद_
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/35/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
अनुवाद एक बहुत कठिन समस्या है, क्योंकि दुनिया में हजारों भाषाएं हैं और प्रत्येक की व्याकरणिक संरचना अलग हो सकती है। एक तरीका यह है कि एक भाषा, जैसे अंग्रेजी, के औपचारिक व्याकरण नियमों को एक गैर-भाषा-निर्भर संरचना में परिवर्तित किया जाए, और फिर इसे दूसरी भाषा में बदल दिया जाए। इस दृष्टिकोण में निम्नलिखित चरण शामिल होते हैं:
अनुवाद एक बहुत कठिन समस्या है, क्योंकि दुनिया में हजारों भाषाएँ हैं और प्रत्येक की व्याकरणिक नियम बहुत अलग हो सकते हैं। एक दृष्टिकोण यह है कि एक भाषा, जैसे अंग्रेजी, के औपचारिक व्याकरण नियमों को एक गैर-भाषा-निर्भर संरचना में परिवर्तित किया जाए, और फिर इसे दूसरी भाषा में वापस परिवर्तित करके अनुवाद किया जाए। इस दृष्टिकोण में निम्नलिखित चरण शामिल होते हैं:
1. **पहचान**। इनपुट भाषा के शब्दों को संज्ञा, क्रिया आदि में टैग करें।
2. **अनुवाद बनाएं**। लक्ष्य भाषा प्रारूप में प्रत्येक शब्द का सीधा अनुवाद तैयार करें।
2. **अनुवाद बनाना**। लक्ष्य भाषा प्रारूप में प्रत्येक शब्द का सीधा अनुवाद तैयार करें।
### उदाहरण वाक्य, अंग्रेजी से आयरिश
### उदाहरण वाक्य, अंग्रेजी से आयरिश
'अंग्रेजी' में, वाक्य _I feel happy_ तीन शब्दों में होता है:
'अंग्रेजी' में, वाक्य _I feel happy_ तीन शब्दों में होता है:
- **विषय** (I)
- **क्रिया** (feel)
- **विशेषण** (happy)
हालांकि, 'आयरिश' भाषा में, वही वाक्य बहुत अलग व्याकरणिक संरचना रखता है - भावनाओं जैसे "*happy*" या "*sad*" को *आप पर* होने के रूप में व्यक्त किया जाता है।
हालांकि, 'आयरिश' भाषा में, वही वाक्य का व्याकरणिक ढांचा बहुत अलग होता है - भावनाओं जैसे "*happy*" या "*sad*" को *आप पर* होने के रूप में व्यक्त किया जाता है।
अंग्रेजी वाक्य `I feel happy` का आयरिश में अनुवाद `Tá athas orm` होगा। एक *शाब्दिक* अनुवाद होगा `Happy is upon me`.
अंग्रेजी वाक्य `I feel happy` का आयरिश में अनुवाद `Tá athas orm` होगा। इसका *शाब्दिक* अनुवाद होगा `Happy is upon me`
एक आयरिश वक्ता जो अंग्रेजी में अनुवाद कर रहा है, वह कहेगा `I feel happy`, न कि `Happy is upon me`, क्योंकि वह वाक्य का अर्थ समझता है, भले ही शब्द और वाक्य संरचना अलग हों।
एक आयरिश वक्ता जो अंग्रेजी में अनुवाद कर रहा है, वह कहेगा `I feel happy`, न कि `Happy is upon me`, क्योंकि वह वाक्य का अर्थ समझता है, भले ही शब्द और वाक्य संरचना अलग हों।
आयरिश में वाक्य का औपचारिक क्रम है:
@ -40,31 +40,31 @@ CO_OP_TRANSLATOR_METADATA:
## अनुवाद
एक साधारण अनुवाद प्रोग्राम केवल शब्दों का अनुवाद कर सकता है, वाक्य संरचना को नजरअंदाज करते हुए।
एक साधारण अनुवाद प्रोग्राम केवल शब्दों का अनुवाद कर सकता है, वाक्य संरचना को नजरअंदाज करते हुए।
✅ यदि आपने वयस्क के रूप में दूसरी (या तीसरी या अधिक) भाषा सीखी है, तो आपने शायद अपनी मूल भाषा में सोचकर शुरुआत की होगी, एक अवधारणा को शब्द दर शब्द दूसरी भाषा में अपने दिमाग में अनुवाद किया होगा, और फिर अपनी अनुवादित बात को बोल दिया होगा। यही साधारण अनुवाद कंप्यूटर प्रोग्राम कर रहे हैं। इस चरण को पार करना और प्रवाह प्राप्त करना महत्वपूर्ण है!
✅ यदि आपने वयस्क के रूप में दूसरी (या तीसरी या अधिक) भाषा सीखी है, तो आपने शायद अपनी मूल भाषा में सोचकर शुरुआत की होगी, अपने दिमाग में एक अवधारणा को शब्द दर शब्द दूसरी भाषा में अनुवाद किया होगा, और फिर अपनी अनुवादित बात को बोल दिया होगा। यह वह है जो साधारण अनुवाद कंप्यूटर प्रोग्राम करे हैं। इस चरण को पार करना और प्रवाह प्राप्त करना महत्वपूर्ण है!
साधारण अनुवाद खराब (और कभी-कभी मज़ेदार) गलत अनुवादों की ओर ले जाता है: `I feel happy` का शाब्दिक अनुवाद आयरिश में `Mise bhraitheann athas` होता है। इसका मतलब (शाब्दिक रूप से) `me feel happy` है और यह एक वैध आयरिश वाक्य नहीं है। भले ही अंग्रेजी और आयरिश दो पड़ोसी द्वीपों पर बोली जाने वाली भाषाएं हैं, वे बहुत अलग भाषाएं हैं जिनकी व्याकरण संरचनाएं अलग हैं।
साधारण अनुवाद खराब (और कभी-कभी मज़ेदार) गलत अनुवादों की ओर ले जाता है: `I feel happy` का शाब्दिक अनुवाद आयरिश में `Mise bhraitheann athas` होता है। इसका मतलब (शाब्दिक रूप से) `me feel happy` है और यह एक वैध आयरिश वाक्य नहीं है। भले ही अंग्रेज़ी और आयरिश दो निकटवर्ती द्वीपों पर बोली जाने वाली भाषाएँ हैं, वे बहुत अलग भाषाएँ हैं जिनके व्याकरणिक ढांचे अलग हैं।
> आप आयरिश भाषाई परंपराओं के बारे में कुछ वीडियो देख सकते हैं जैसे [यह](https://www.youtube.com/watch?v=mRIaLSdRMMs)
### मशीन लर्निंग दृष्टिकोण
अब तक, आपने प्राकृतिक भाषा प्रसंस्करण के औपचारिक नियम दृष्टिकोण के बारे में सीखा है। एक और दृष्टिकोण यह है कि शब्दों के अर्थ को नजरअंदाज किया जाए, और _इसके बजाय मशीन लर्निंग का उपयोग करके पैटर्न का पता लगाया जाए_। यदि आपके पास बहुत सारे पाठ (एक *कॉर्पस*) या मूल और लक्ष्य भाषाओं में पाठ (*कॉर्पोरा*) हैं, तो यह अनुवाद में काम कर सकता है।
अब तक, आपने प्राकृतिक भाषा प्रसंस्करण के औपचारिक नियम दृष्टिकोण के बारे में सीखा है। एक और दृष्टिकोण यह है कि शब्दों के अर्थ को नजरअंदाज किया जाए, और _इसके बजाय मशीन लर्निंग का उपयोग करके पैटर्न का पता लगाया जाए_। यदि आपके पास बहुत सारे पाठ (एक *कॉर्पस*) या मूल और लक्ष्य भाषाओं में पाठ (*कॉर्पोरा*) हैं, तो यह अनुवाद में काम कर सकता है।
उदाहरण के लिए, *Pride and Prejudice* का मामला लें, जो 1813 में जेन ऑस्टेन द्वारा लिखित एक प्रसिद्ध अंग्रेजी उपन्यास है। यदि आप पुस्तक को अंग्रेजी में और *फ्रेंच* में पुस्तक के मानव अनुवाद को देखते हैं, तो आप एक में वाक्यांशों का पता लगा सकते हैं जो दूसरे में _मुहावरेदार_ रूप से अनुवादित हैं। आप इसे अभी करेंगे।
उदाहरण के लिए, *Pride and Prejudice* का मामला लें, जो 1813 में जेन ऑस्टेन द्वारा लिखित एक प्रसिद्ध अंग्रेजी उपन्यास है। यदि आप पुस्तक को अंग्रेजी में और *फ्रेंच* में पुस्तक के मानव अनुवाद को देखते हैं, तो आप एक में वाक्यांशों का पता लगा सकते हैं जो दूसरे में _मुहावरेदार_ रूप से अनुवादित हैं। आप इसे कुछ ही समय में करेंगे।
उदाहरण के लिए, जब एक अंग्रेजी वाक्यांश जैसे `I have no money` को फ्रेंच में शाब्दिक रूप से अनुवादित किया जाता है, तो यह `Je n'ai pas de monnaie` बन सकता है। "Monnaie" एक मुश्किल फ्रेंच 'false cognate' है, क्योंकि 'money' और 'monnaie' समानार्थी नहीं हैं। एक बेहतर अनुवाद जो एक मानव कर सकता है वह होगा `Je n'ai pas d'argent`, क्योंकि यह बेहतर तरीके से व्यक्त करता है कि आपके पास पैसे नहीं हैं (बल्कि 'loose change' जो 'monnaie' का अर्थ है)।
उदाहरण के लिए, जब अंग्रेज़ी वाक्यांश `I have no money` का शाब्दिक अनुवाद फ्रेंच में किया जाता है, तो यह `Je n'ai pas de monnaie` बन सकता है। "Monnaie" एक मुश्किल फ्रेंच 'false cognate' है, क्योंकि 'money' और 'monnaie' समानार्थी नहीं हैं। एक बेहतर अनुवाद जो एक मानव कर सकता है वह होगा `Je n'ai pas d'argent`, क्योंकि यह बेहतर तरीके से यह अर्थ व्यक्त करता है कि आपके पास पैसे नहीं हैं (कि 'loose change' जो 'monnaie' का अर्थ है)।
![monnaie](../../../../translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.hi.png)
![monnaie](../../../../6-NLP/3-Translation-Sentiment/images/monnaie.png)
> छवि [Jen Looper](https://twitter.com/jenlooper) द्वारा
यदि किसी ML मॉडल के पास पर्याप्त मानव अनुवाद हैं जिन पर मॉडल बनाया जा सकता है, तो यह पहले से विशेषज्ञ मानव वक्ताओं द्वारा अनुवादित पाठों में सामान्य पैटर्न की पहचान करके अनुवाद की सटीकता में सुधार कर सकता है।
यदि किसी ML मॉडल के पास पर्याप्त मानव अनुवाद हैं जिन पर मॉडल बनाया जा सकता है, तो यह उन पाठों में सामान्य पैटर्न की पहचान करके अनुवाद की सटीकता में सुधार कर सकता है जिन्हें पहले दोनों भाषाओं के विशेषज्ञ मानव वक्ताओं द्वारा अनुवादित किया गया है।
### अभ्यास - अनुवाद
आप वाक्य अनुवाद करने के लिए `TextBlob` का उपयोग कर सकते हैं। **Pride and Prejudice** की प्रसिद्ध पहली पंक्ति आज़माएं:
आप वाक्यों का अनुवाद करने के लिए `TextBlob` का उपयोग कर सकते हैं। **Pride and Prejudice** की प्रसिद्ध पहली पंक्ति आज़माएं:
```python
from textblob import TextBlob
@ -76,33 +76,33 @@ print(blob.translate(to="fr"))
```
`TextBlob` अनुवाद का अच्छा काम करता है: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
`TextBlob` अनुवाद का काफी अच्छा काम करता है: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
यह तर्क दिया जा सकता है कि TextBlob का अनुवाद वास्तव में 1932 में V. Leconte और Ch. Pressoir द्वारा पुस्तक के फ्रेंच अनुवाद की तुलना में कहीं अधिक सटीक है:
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
इस मामले में, ML द्वारा सूचित अनुवाद मानव अनुवादक से बेहतर काम करता है, जो 'स्पष्टता' के लिए अनावश्यक रूप से मूल लेखक के शब्दों में बदलाव कर रहा है।
इस मामले में, ML द्वारा सूचित अनुवाद मानव अनुवादक से बेहतर काम करता है, जो 'स्पष्टता' के लिए मूल लेखक के शब्दों में अनावश्यक रूप से शब्द जोड़ रहा है।
> यहा क्या हो रहा है? और TextBlob अनुवाद में इतना अच्छा क्यों है? खैर, पर्दे के पीछे, यह Google Translate का उपयोग कर रहा है, एक परिष्कृत AI जो लाखों वाक्यांशों को पार्स करके कार्य के लिए सबसे अच्छे स्ट्रिंग्स की भविष्यवाणी करने में सक्षम है। यहा कुछ भी मैनुअल नहीं हो रहा है और आपको `blob.translate` का उपयोग करने के लिए इंटरनेट कनेक्शन की आवश्यकता है।
> यहा क्या हो रहा है? और TextBlob अनुवाद में इतना अच्छा क्यों है? खैर, पर्दे के पीछे, यह Google Translate का उपयोग कर रहा है, एक परिष्कृत AI जो लाखों वाक्यांशों को पार्स करके कार्य के लिए सबसे अच्छे स्ट्रिंग्स की भविष्यवाणी करने में सक्षम है। यहा कुछ भी मैनुअल नहीं हो रहा है और आपको `blob.translate` का उपयोग करने के लिए इंटरनेट कनेक्शन की आवश्यकता है।
✅ कुछ और वाक्य आज़माएं। कौन बेहतर है, ML या मानव अनुवाद? किन मामलों में?
## भावना विश्लेषण
मशीन लर्निंग एक और क्षेत्र में बहुत अच्छा काम कर सकती है, वह है भावना विश्लेषण। भावना का एक गैर-ML दृष्टिकोण 'सकारात्मक' और 'नकारात्मक' शब्दों और वाक्यांशों की पहचान करना है। फिर, दिए गए नए पाठ के लिए, सकारात्मक, नकारात्मक और तटस्थ शब्दों के कुल मूल्य की गणना करें ताकि समग्र भावना की पहचान की जा सके।
मशीन लर्निंग बहुत अच्छी तरह से भावना विश्लेषण में भी काम कर सकती है। भावना का एक गैर-ML दृष्टिकोण यह है कि 'सकारात्मक' और 'नकारात्मक' शब्दों और वाक्यांशों की पहचान की जाए। फिर, दिए गए नए पाठ के लिए, सकारात्मक, नकारात्मक और तटस्थ शब्दों के कुल मान की गणना करें ताकि समग्र भावना की पहचान की जा सके।
यह दृष्टिकोण आसानी से धोखा दिया जा सकता है जैसा कि आपने Marvin कार्य में देखा होगा - वाक्य `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` एक व्यंग्यात्मक, नकारात्मक भावना वाला वाक्य है, लेकिन सरल एल्गोरिदम 'great', 'wonderful', 'glad' को सकारात्मक और 'waste', 'lost' और 'dark' को नकारात्मक के रूप में पहचानता है। विरोधाभासी शब्दों के कारण समग्र भावना प्रभावित होती है।
यह दृष्टिकोण आसानी से धोखा ा सकता है जैसा कि आपने Marvin कार्य में देखा होगा - वाक्य `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` एक व्यंग्यात्मक, नकारात्मक भावना वाला वाक्य है, लेकिन सरल एल्गोरिदम 'great', 'wonderful', 'glad' को सकारात्मक और 'waste', 'lost' और 'dark' को नकारात्मक के रूप में पहचानता है। समग्र भावना इन विरोधाभासी शब्दों से प्रभावित होती है।
✅ एक पल रुकें और सोचें कि हम मानव वक्ताओं के रूप में व्यंग्य कैसे व्यक्त करते हैं। स्वर का उतार-चढ़ाव इसमें बड़ी भूमिका निभाता है। वाक्यांश "Well, that film was awesome" को अलग-अलग तरीकों से कहने की कोशिश करें ताकि पता चले कि आपकी आवाज़ अर्थ कैसे व्यक्त करती है।
✅ एक पल रुकें और सोचें कि हम मानव वक्ताओं के रूप में व्यंग्य कैसे व्यक्त करते हैं। स्वर का उतार-चढ़ाव इसमें बड़ी भूमिका निभाता है। वाक्य "Well, that film was awesome" को अलग-अलग तरीकों से कहने की कोशिश करें ताकि पता चले कि आपकी आवाज़ अर्थ कैसे व्यक्त करती है।
### ML दृष्टिकोण
ML दृष्टिकोण होगा नकारात्मक और सकारात्मक पाठों को मैन्युअल रूप से इकट्ठा करना - ट्वीट्स, या मूवी समीक्षाएं, या कुछ भी जहां मानव ने एक स्कोर *और* एक लिखित राय दी हो। फिर NLP तकनीकों को राय और स्कोर पर लागू किया जा सकता है, ताकि पैटर्न उभरें (जैसे, सकारात्मक मूवी समीक्षाओं में 'Oscar worthy' वाक्यांश नकारात्मक मूवी समीक्षाओं की तुलना में अधिक होता है, या सकारात्मक रेस्तरां समीक्षाओं में 'gourmet' शब्द 'disgusting' की तुलना में अधिक होता है)।
ML दृष्टिकोण यह होगा कि नकारात्मक और सकारात्मक पाठों को मैन्युअल रूप से इकट्ठा किया जाए - ट्वीट्स, या मूवी समीक्षाएँ, या कुछ भी जहाँ मानव ने एक स्कोर *और* एक लिखित राय दी हो। फिर NLP तकनीकों को राय और स्कोर पर लागू किया जा सकता है, ताकि पैटर्न उभरें (जैसे, सकारात्मक मूवी समीक्षाओं में 'Oscar worthy' वाक्यांश नकारात्मक मूवी समीक्षाओं की तुलना में अधिक होता है, या सकारात्मक रेस्तरां समीक्षाएँ 'gourmet' शब्द का उपयोग 'disgusting' की तुलना में अधिक करती हैं)।
> ⚖️ **उदाहरण**: मान लें कि आप एक राजनेता के कार्यालय में काम करते हैं और कोई नया कानून बहस के लिए है, तो नागरिक कार्यालय को उस विशेष नए कानून के समर्थन में या उसके खिलाफ ईमेल लिख सकते हैं। मान लें कि आपको ईमेल पढ़ने और उन्हें 2 ढेरियों में छांटने का काम सौंपा गया है, *समर्थन में* और *विरोध में*। यदि बहुत सारे ईमेल हों, तो आप सभी को पढ़ने की कोशिश में अभिभूत हो सकते हैं। क्या यह अच्छा नहीं होगा कि एक बॉट सभी को पढ़ सके, उन्हें समझ सके और आपको बता सके कि प्रत्येक ईमेल किस ढेर में है?
> ⚖️ **उदाहरण**: यदि आप किसी राजनेता के कार्यालय में काम करते हैं और कोई नया कानून बहस के लिए है, तो नागरिक कार्यालय को उस विशेष नए कानून के समर्थन में या उसके खिलाफ ईमेल लिख सकते हैं। मान लें कि आपको ईमेल पढ़ने और उन्हें 2 ढेरों में छाँटने का काम सौंपा गया है, *समर्थन में* और *विरोध में*। यदि ईमेल की संख्या अधिक हो, तो आप सभी को पढ़ने के प्रयास में अभिभूत हो सकते हैं। क्या यह अच्छा नहीं होगा कि एक बॉट सभी को पढ़ सके, उन्हें समझ सके और आपको बता सके कि प्रत्येक ईमेल किस ढेर में है?
>
> इसे प्राप्त करने का एक तरीका मशीन लर्निंग का उपयोग करना है। आप मॉडल को *विरोध में* ईमेल और *समर्थन में* ईमेल के एक हिस्से के साथ प्रशिक्षित करेंगे। मॉडल वाक्यांशों और शब्दों को विरोध पक्ष और समर्थन पक्ष के साथ जोड़ने की प्रवृत्ति रखेगा, *लेकिन यह किसी भी सामग्री को नहीं समझेगा*, केवल यह कि कुछ शब्द और पैटर्न *विरोध में* या *समर्थन में* ईमेल में अधिक संभावना से दिखाई देते हैं। आप इसे कुछ ईमेल के साथ परीक्षण कर सकते हैं जिन्हें आपने मॉडल को प्रशिक्षित करने के लिए उपयोग नहीं किया था, और देख सकते हैं कि क्या यह आपके द्वारा किए गए निष्कर्ष पर पहुंचता है। फिर, एक बार जब आप मॉडल की सटीकता से संतुष्ट हो जां, तो आप भविष्य के ईमेल को पढ़े बिना ही प्रोसेस कर सकते हैं।
> इसे प्राप्त करने का एक तरीका मशीन लर्निंग का उपयोग करना है। आप मॉडल को *विरोध में* ईमेल और *समर्थन में* ईमेल के एक हिस्से के साथ प्रशिक्षित करेंगे। मॉडल वाक्यांशों और शब्दों को विरोध पक्ष और समर्थन पक्ष के साथ जोड़ने की प्रवृत्ति रखेगा, *लेकिन यह किसी भी सामग्री को नहीं समझेगा*, केवल यह कि कुछ शब्द और पैटर्न *विरोध में* या *समर्थन में* ईमेल में अधिक संभावना से दिखाई देते हैं। आप इसे कुछ ईमेल के साथ परीक्षण कर सकते हैं जिन्हें आपने मॉडल को प्रशिक्षित करने के लिए उपयोग नहीं किया था, और देख सकते हैं कि क्या यह आपके द्वारा किए गए निष्कर्ष पर ता है। फिर, एक बार जब आप मॉडल की सटीकता से संतुष्ट हो जाते हैं, तो आप भविष्य के ईमेल को पढ़े बिना ही प्रोसेस कर सकते हैं।
✅ क्या यह प्रक्रिया उन प्रक्रियाओं जैसी लगती है जिन्हें आपने पिछले पाठों में उपयोग किया है?
@ -110,7 +110,7 @@ ML दृष्टिकोण होगा नकारात्मक और
भावना को *पोलारिटी* के साथ -1 से 1 तक मापा जाता है, जिसका अर्थ है -1 सबसे नकारात्मक भावना है, और 1 सबसे सकारात्मक। भावना को 0 - 1 स्कोर के साथ वस्तुनिष्ठता (0) और व्यक्तिपरकता (1) के लिए भी मापा जाता है।
जेन ऑस्टेन की *Pride and Prejudice* पर एक बार फिर नज़र डालें। पाठ यहां उपलब्ध है [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) पर। नीचे दिया गया नमूना एक छोटा प्रोग्राम दिखाता है जो पुस्तक की पहली और अंतिम पंक्तियों की भावना का विश्लेषण करता है और इसकी भावना पोलारिटी और व्यक्तिपरकता/वस्तुनिष्ठता स्कोर प्रदर्शित करता है।
जेन ऑस्टेन की *Pride and Prejudice* पर फिर से नज़र डालें। पाठ यहा [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) पर उपलब्ध है। नीचे दिया गया नमूना एक छोटा प्रोग्राम दिखाता है जो पुस्तक की पहली और अंतिम पंक्तियों की भावना का विश्लेषण करता है और इसकी भावना पोलारिटी और व्यक्तिपरकता/वस्तुनिष्ठता स्कोर प्रदर्शित करता है।
आपको इस कार्य में `TextBlob` लाइब्रेरी (ऊपर वर्णित) का उपयोग करके `sentiment` निर्धारित करना चाहिए (आपको अपना खुद का भावना कैलकुलेटर लिखने की आवश्यकता नहीं है)।
@ -139,22 +139,22 @@ Darcy, as well as Elizabeth, really loved them; and they were
uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
```
## चुनौती - भावना पोलारिटी की जाच करें
## चुनौती - भावना पोलारिटी की जाच करें
आपका कार्य है कि *Pride and Prejudice* में यह निर्धारित करें कि क्या इसमें अधिक बिल्कुल सकारात्मक वाक्य हैं बनाम बिल्कुल नकारात्मक वाक्य। इस कार्य के लिए, आप मान सकते हैं कि पोलारिटी स्कोर 1 या -1 बिल्कुल सकारात्मक या नकारात्मक है।
आपका कार्य भावना पोलारिटी का उपयोग करके यह निर्धारित करना है कि *Pride and Prejudice* में बिल्कुल सकारात्मक वाक्य अधिक हैं या बिल्कुल नकारात्मक। इस कार्य के लिए, आप मान सकते हैं कि पोलारिटी स्कोर 1 या -1 बिल्कुल सकारात्मक या नकारात्मक है।
**चरण:**
1. [Pride and Prejudice की एक प्रति](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) को Project Gutenberg से .txt फ़ाइल के रूप में डाउनलोड करें। फ़ाइल की शुरुआत और अंत में मेटाडेटा हटा दें, केवल मूल पाठ छोड़ दें।
1. [Pride and Prejudice की एक प्रति](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) को Project Gutenberg से .txt फ़ाइल के रूप में डाउनलोड करें। फ़ाइल की शुरुआत और अंत में मेटाडेटा को हटा दें, केवल मूल पाठ छोड़ दें।
2. फ़ाइल को Python में खोलें और सामग्री को एक स्ट्रिंग के रूप में निकालें।
3. पुस्तक स्ट्रिंग का उपयोग करके एक TextBlob बनाएं।
4. पुस्तक में प्रत्येक वाक्य का एक लूप में विश्लेषण करें।
1. यदि पोलारिटी 1 या -1 है तो वाक्य को सकारात्मक या नकारात्मक संदेशों की एक सूची में संग्रहीत करें।
5. अंत में, सभी सकारात्मक वाक्य और नकारात्मक वाक्य (अलग-अलग) और प्रत्येक की संख्या प्रिंट करें।
यहा एक नमूना [समाधान](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) है।
यहा एक नमूना [समाधान](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) है।
✅ ज्ञान जा
✅ ज्ञान जा
1. भावना वाक्य में उपयोग किए गए शब्दों पर आधारित है, लेकिन क्या कोड *शब्दों को समझता है*?
2. क्या आपको लगता है कि भावना पोलारिटी सटीक है, या दूसरे शब्दों में, क्या आप स्कोर से *सहमत* हैं?
@ -167,7 +167,7 @@ Darcy, as well as Elizabeth, really loved them; and they were
* “This is delightful indeed!
* I am so happy!
* Your idea of the ponies is delightful.
2. अगले 3 वाक्यों को बिल्कुल सकारात्मक भावना के साथ स्कोर किया गया था, लेकिन करीब से पढ़ने पर, वे सकारात्मक वाक्य नहीं हैं। भावना विश्लेषण ने उन्हें सकारात्मक वाक्य क्यों माना?
2. अगले 3 वाक्यों को बिल्कुल सकारात्मक भावना के साथ स्कोर किया गया था, लेकिन करीब से पढ़ने पर, वे सकारात्मक वाक्य नहीं हैं। भावना विश्लेषण ने उन्हें सकारात्मक वाक्य क्यों समझा?
* Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
* If I could but see you as happy!
* Our distress, my dear Lizzy, is very great.
@ -177,7 +177,7 @@ Darcy, as well as Elizabeth, really loved them; and they were
- The pause was to Elizabeths feelings dreadful.
- It would be dreadful!
✅ जेन ऑस्टेन के किसी भी प्रशंसक को समझ में आएगा कि वह अक्सर अपनी पुस्तकों का उपयोग अंग्रेजी रीजेंसी समाज के अधिक हास्यास्पद पहलुओं की आलोचना करने के लिए करती हैं। *Pride and Prejudice* की मुख्य पात्र एलिजाबेथ बेनेट एक तेज सामाजिक पर्यवेक्षक हैं (जैसे लेखक) और उनकी भाषा अक्सर बहुत सूक्ष्म होती है। यहां तक कि मिस्टर डार्सी (कहानी में प्रेम रुचि) भी एलिजाबेथ की चंचल और चिढ़ाने वाली भाषा के उपयोग पर ध्यान देते हैं: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."
✅ जेन ऑस्टेन के किसी भी प्रशंसक को समझ में आएगा कि वह अक्सर अपनी पुस्तकों का उपयोग अंग्रेजी रीजेंसी समाज के अधिक हास्यास्पद पहलुओं की आलोचना करने के लिए करती हैं। *Pride and Prejudice* की मुख्य पात्र एलिजाबेथ बेनेट एक तेज सामाजिक पर्यवेक्षक हैं (जैसे कि लेखक) और उनकी भाषा अक्सर बहुत सूक्ष्म होती है। यहां तक कि मिस्टर डार्सी (कहानी का प्रेम पात्र) भी एलिज़ाबेथ की चंचल और चिढ़ाने वाली भाषा का उपयोग नोट करते हैं: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."
---
@ -185,16 +185,16 @@ Darcy, as well as Elizabeth, really loved them; and they were
क्या आप Marvin को और बेहतर बना सकते हैं उपयोगकर्ता इनपुट से अन्य विशेषताओं को निकालकर?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/36/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
पाठ से भावना निकालने के कई तरीके हैं। उन व्यावसायिक अनुप्रयोगों के बारे में सोचें जो इस तकनीक का उपयोग कर सकते हैं। यह कैसे गलत हो सकता है, इस पर विचार करें। उन उन्नत एंटरप्राइज़-रेडी सिस्टम के बारे में अधिक पढ़ें जो भावना का विश्लेषण करते हैं, जैसे [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott)। ऊपर दिए गए Pride and Prejudice के कुछ वाक्यों का परीक्षण करें और देखें कि क्या यह सूक्ष्मता का पता लगा सकता है।
## असाइनमेंट
## असाइनमेंट
[Poetic license](assignment.md)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,25 +1,25 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3c4738bb0836dd838c552ab9cab7e09d",
"translation_date": "2025-09-04T00:43:09+00:00",
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
"translation_date": "2025-09-05T10:32:20+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "hi"
}
-->
# होटल समीक्षाओं के साथ भावना विश्लेषण - डेटा को संसाधित करना
इस अनुभाग में, आप पिछले पाठों में सीखी गई तकनीकों का उपयोग करके एक बड़े डेटा सेट का अन्वेषणात्मक डेटा विश्लेषण करेंगे। जब आपको विभिन्न कॉलमों की उपयोगिता का अच्छा समझ आ जाएगा, तो आप सीखेंगे:
इस खंड में, आप पिछले पाठों में सीखी गई तकनीकों का उपयोग करके एक बड़े डेटा सेट का अन्वेषणात्मक डेटा विश्लेषण करेंगे। जब आपको विभिन्न कॉलमों की उपयोगिता का अच्छा समझ आ जाएगा, तो आप सीखेंगे:
- अनावश्यक कॉलमों को कैसे हटाएं
- मौजूदा कॉलमों के आधार पर नया डेटा कैसे गणना करें
- अंतिम चुनौती के लिए परिणामी डेटा सेट को कैसे सहेजें
- अंतिम चुनौती के लिए उपयोग के लिए परिणामी डेटा सेट को कैसे सहेजें
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/37/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
### परिचय
अब तक आपने सीखा है कि टेक्स्ट डेटा संख्यात्मक डेटा प्रकारों से काफी अलग होता है। यदि यह टेक्स्ट किसी इंसान द्वारा लिखा या बोला गया है, तो इसे पैटर्न और आवृत्तियों, भावना और अर्थ खोजने के लिए विश्लेषित किया जा सकता है। यह पाठ आपको एक वास्तविक डेटा सेट और एक वास्तविक चुनौती में ले जाता है: **[यूरोप में 515K होटल समीक्षाओं का डेटा](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, जिसमें [CC0: सार्वजनिक डोमेन लाइसेंस](https://creativecommons.org/publicdomain/zero/1.0/) शामिल है। इसे Booking.com से सार्वजनिक स्रोतों से स्क्रैप किया गया था। इस डेटा सेट के निर्माता Jiashen Liu हैं।
अब तक आपने सीखा है कि टेक्स्ट डेटा संख्यात्मक डेटा प्रकारों से काफी अलग होता है। यदि यह टेक्स्ट किसी मानव द्वारा लिखा या बोला गया है, तो इसे पैटर्न और आवृत्तियों, भावना और अर्थ खोजने के लिए विश्लेषित किया जा सकता है। यह पाठ आपको एक वास्तविक डेटा सेट और एक वास्तविक चुनौती में ले जाता है: **[यूरोप में 515K होटल समीक्षाओं का डेटा](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, जिसमें [CC0: सार्वजनिक डोमेन लाइसेंस](https://creativecommons.org/publicdomain/zero/1.0/) शामिल है। इसे Booking.com से सार्वजनिक स्रोतों से स्क्रैप किया गया था। इस डेटा सेट के निर्माता Jiashen Liu हैं।
### तैयारी
@ -28,17 +28,17 @@ CO_OP_TRANSLATOR_METADATA:
* Python 3 का उपयोग करके .ipynb नोटबुक चलाने की क्षमता
* pandas
* NLTK, [जिसे आपको स्थानीय रूप से इंस्टॉल करना चाहिए](https://www.nltk.org/install.html)
* डेटा सेट, जो Kaggle पर उपलब्ध है [यूरोप में 515K होटल समीक्षाओं का डेटा](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)। यह अनज़िप करने के बाद लगभग 230 MB है। इसे इन NLP पाठों से जुड़े रूट `/data` फ़ोल्डर में डाउनलोड करें।
* Kaggle पर उपलब्ध डेटा सेट [यूरोप में 515K होटल समीक्षाओं का डेटा](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)। यह अनज़िप करने के बाद लगभग 230 MB है। इसे इन NLP पाठों से जुड़े रूट `/data` फ़ोल्डर में डाउनलोड करें।
## अन्वेषणात्मक डेटा विश्लेषण
यह चुनौती मानती है कि आप भावना विश्लेषण और अतिथि समीक्षा स्कोर का उपयोग करके एक होटल अनुशंसा बॉट बना रहे हैं। जिस डेटा सेट का आप उपयोग करेंगे, उसमें 6 शहरों के 1493 विभिन्न होटलों की समीक्षाएं शामिल हैं।
यह चुनौती मानती है कि आप भावना विश्लेषण और अतिथि समीक्षाओं के स्कोर का उपयोग करके एक होटल अनुशंसा बॉट बना रहे हैं। जिस डेटा सेट का आप उपयोग करेंगे, उसमें 6 शहरों के 1493 विभिन्न होटलों की समीक्षाएं शामिल हैं।
Python, होटल समीक्षाओं के डेटा सेट, और NLTK के भावना विश्लेषण का उपयोग करके आप पता लगा सकते हैं:
* समीक्षाओं में सबसे अधिक बार उपयोग किए जाने वाले शब्द और वाक्यांश कौन से हैं?
* क्या होटल का आधिकारिक *टैग* समीक्षा स्कोर से मेल खाता है (जैसे, क्या *युवा बच्चों के साथ परिवार* के लिए किसी विशेष होटल की अधिक नकारात्मक समीक्षाएं हैं, बजाय *एकल यात्री* के, जो शायद संकेत देता है कि यह *एकल यात्रियों* के लिए बेहतर है)?
* क्या NLTK भावना स्कोर होटल समीक्षक के संख्यात्मक स्कोर से 'सहमत' हैं?
* समीक्षाओं में सबसे अधिक बार उपयोग किए जाने वाले शब्द और वाक्यांश क्या हैं?
* क्या होटल का आधिकारिक *टैग* समीक्षाओं के स्कोर से मेल खाता है (जैसे, क्या *Family with young children* के लिए किसी विशेष होटल की अधिक नकारात्मक समीक्षाएं हैं, जबकि *Solo traveller* के लिए नहीं, शायद यह संकेत देता है कि यह *Solo travellers* के लिए बेहतर है)?
* क्या NLTK के भावना स्कोर होटल समीक्षक के संख्यात्मक स्कोर से 'सहमत' हैं?
#### डेटा सेट
@ -48,7 +48,7 @@ Python, होटल समीक्षाओं के डेटा सेट,
*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng*
न्हें इस तरह से समूहित किया गया है जो जांचने में आसान हो सकता है:
यहां उन्हें इस तरह से समूहित किया गया है जो जांचने में आसान हो सकता है:
##### होटल कॉलम
* `Hotel_Name`, `Hotel_Address`, `lat` (अक्षांश), `lng` (देशांतर)
@ -58,20 +58,20 @@ Python, होटल समीक्षाओं के डेटा सेट,
**होटल मेटा-समीक्षा कॉलम**
* `Average_Score`
* डेटा सेट निर्माता के अनुसार, यह कॉलम होटल का *औसत स्कोर है, जो पिछले वर्ष की नवीनतम टिप्पणी के आधार पर गणना किया गया है*। यह स्कोर की गणना करने का असामान्य तरीका लगता है, लेकिन यह स्क्रैप किया गया डेटा है, इसलिए हम इसे फिलहाल मान सकते हैं।
* डेटा सेट निर्माता के अनुसार, यह कॉलम *होटल का औसत स्कोर है, जो पिछले वर्ष की नवीनतम टिप्पणी के आधार पर गणना किया गया है*। यह स्कोर की गणना करने का असामान्य तरीका लगता है, लेकिन यह स्क्रैप किया गया डेटा है, इसलिए हम इसे फिलहाल मान सकते हैं।
✅ इस डेटा के अन्य कॉलमों के आधार पर, क्या आप औसत स्कोर की गणना करने का कोई अन्य तरीका सोच सकते हैं?
✅ इस डेटा में अन्य कॉलमों के आधार पर, क्या आप औसत स्कोर की गणना करने का कोई अन्य तरीका सोच सकते हैं?
* `Total_Number_of_Reviews`
* इस होटल को प्राप्त समीक्षाओं की कुल संख्या - यह स्पष्ट नहीं है (कुछ कोड लिखे बिना) कि क्या यह डेटा सेट में समीक्षाओं को संदर्भित करता है।
* इस होटल को प्राप्त समीक्षाओं की कुल संख्या - यह स्पष्ट नहीं है (कोड लिखे बिना) कि यह डेटा सेट में समीक्षाओं को संदर्भित करता है।
* `Additional_Number_of_Scoring`
* इसका मतलब है कि समीक्षा स्कोर दिया गया था लेकिन समीक्षक द्वारा कोई सकारात्मक या नकारात्मक समीक्षा नहीं लिखी गई थी।
* इसका मतलब है कि एक समीक्षा स्कोर दिया गया था लेकिन समीक्षक द्वारा कोई सकारात्मक या नकारात्मक समीक्षा नहीं लिखी गई थी।
**समीक्षा कॉलम**
- `Reviewer_Score`
- यह एक संख्यात्मक मान है जिसमें अधिकतम 1 दशमलव स्थान है, और इसका मान 2.5 और 10 के बीच है
- यह स्पष्ट नहीं किया गया है कि 2.5 सबसे कम स्कोर क्यों है।
- यह एक संख्यात्मक मान है जिसमें अधिकतम 1 दशमलव स्थान है और न्यूनतम और अधिकतम मान 2.5 और 10 के बीच हैं
- यह स्पष्ट नहीं किया गया है कि 2.5 सबसे कम संभव स्कोर क्यों है।
- `Negative_Review`
- यदि समीक्षक ने कुछ नहीं लिखा, तो यह फ़ील्ड "**No Negative**" होगा।
- ध्यान दें कि समीक्षक नकारात्मक समीक्षा कॉलम में सकारात्मक समीक्षा लिख ​​सकता है (जैसे, "इस होटल के बारे में कुछ भी बुरा नहीं है")
@ -85,41 +85,41 @@ Python, होटल समीक्षाओं के डेटा सेट,
- `Review_Date` और `days_since_review`
- समीक्षा पर ताजगी या पुरानी होने का माप लागू किया जा सकता है (पुरानी समीक्षाएं नई समीक्षाओं जितनी सटीक नहीं हो सकती हैं क्योंकि होटल प्रबंधन बदल गया है, या नवीनीकरण किया गया है, या एक पूल जोड़ा गया है आदि।)
- `Tags`
- ये छोटे विवरणक हैं जिन्हें समीक्षक चुन सकता है ताकि वह जिस प्रकार का अतिथि था उसका वर्णन कर सके (जैसे, अकेला या परिवार), जिस प्रकार का कमरा था, रने की अवधि और समीक्षा कैसे प्रस्तुत की गई थी।
- दुर्भाग्यवश, इन टैग्स का उपयोग करना समस्याग्रस्त है, नीचे दिए गए अनुभाग में उनकी उपयोगिता पर चर्चा की गई है।
- ये छोटे विवरणकर्ता हैं जिन्हें समीक्षक चुन सकता है ताकि वे जिस प्रकार के अतिथि थे (जैसे, अकेले या परिवार), उनके पास किस प्रकार का कमरा था, ठहरने की अवधि और समीक्षा कैसे प्रस्तुत की गई थी, का वर्णन कर सकें
- दुर्भाग्यवश, इन टैग्स का उपयोग करना समस्याग्रस्त है, नीचे दिए गए खंड में उनकी उपयोगिता पर चर्चा की गई है।
**समीक्षक कॉलम**
- `Total_Number_of_Reviews_Reviewer_Has_Given`
- यह अनुशंसा मॉडल में एक कारक हो सकता है, उदाहरण के लिए, यदि आप यह निर्धारित कर सकते हैं कि अधिक समीक्षाएं देने वाले समीक्षक, जिनके पास सैकड़ों समीक्षाएं हैं, नकारात्मक होने की संभावना अधिक है बजाय सकारात्मक। हालांकि, किसी विशेष समीक्षा के समीक्षक को एक अद्वितीय कोड के साथ पहचाना नहीं गया है, और इसलिए इसे समीक्षाओं के सेट से जोड़ा नहीं जा सकता। 100 या अधिक समीक्षाओं वाले 30 समीक्षक हैं, लेकिन यह देखना मुश्किल है कि यह अनुशंसा मॉडल में कैसे मदद कर सकता है।
- यह अनुशंसा मॉडल में एक कारक हो सकता है, उदाहरण के लिए, यदि आप यह निर्धारित कर सकते हैं कि सैकड़ों समीक्षाओं वाले अधिक उत्पादक समीक्षक नकारात्मक होने की तुलना में सकारात्मक होने की अधिक संभावना रखते हैं। हालांकि, किसी विशेष समीक्षा के समीक्षक को एक अद्वितीय कोड के साथ पहचाना नहीं गया है, और इसलिए इसे समीक्षाओं के सेट से जोड़ा नहीं जा सकता। 100 या अधिक समीक्षाओं वाले 30 समीक्षक हैं, लेकिन यह देखना मुश्किल है कि यह अनुशंसा मॉडल में कैसे मदद कर सकता है।
- `Reviewer_Nationality`
- कुछ लोग सोच सकते हैं कि कुछ राष्ट्रीयताओं के पास सकारात्मक या नकारात्मक समीक्षा देने की अधिक संभावना है क्योंकि उनकी राष्ट्रीय प्रवृत्ति है। अपने मॉडलों में ऐसे उपाख्यानात्मक विचारों को शामिल करने में सावधानी बरतें। ये राष्ट्रीय (और कभी-कभी नस्लीय) रूढ़ियाँ हैं, और प्रत्येक समीक्षक एक व्यक्ति था जिसने अपने अनुभव के आधार पर समीक्षा लिखी। यह कई दृष्टिकोणों से फ़िल्टर किया गया हो सकता है जैसे उनके पिछले होटल प्रवास, यात्रा की दूरी, और उनका व्यक्तिगत स्वभाव। यह सोचना कि उनकी राष्ट्रीयता समीक्षा स्कोर का कारण थी, इसे सही ठहराना मुश्किल है।
- कुछ लोग सोच सकते हैं कि कुछ राष्ट्रीयताएं सकारात्मक या नकारात्मक समीक्षा देने की अधिक संभावना रखती है क्योंकि उनकी राष्ट्रीय प्रवृत्ति होती है। अपने मॉडलों में इस तरह के उपाख्यानात्मक विचारों को शामिल करने से सावधान रहें। ये राष्ट्रीय (और कभी-कभी नस्लीय) रूढ़ियाँ हैं, और प्रत्येक समीक्षक एक व्यक्ति था जिसने अपने अनुभव के आधार पर समीक्षा लिखी। इसे कई दृष्टिकोणों से फ़िल्टर किया जा सकता है जैसे उनके पिछले होटल ठहराव, यात्रा की दूरी, और उनका व्यक्तिगत स्वभाव। यह सोचना कि उनकी राष्ट्रीयता समीक्षा स्कोर का कारण थी, न्यायसंगत ठहराना कठिन है।
##### उदाहरण
| औसत स्कोर | कुल समीक्षाओं की संख्या | समीक्षक स्कोर | नकारात्मक <br />समीक्षा | सकारात्मक समीक्षा | टैग्स |
| Average Score | Total Number Reviews | Reviewer Score | Negative <br />Review | Positive Review | Tags |
| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
| 7.8 | 1945 | 2.5 | यह वर्तमान में एक होटल नहीं है बल्कि एक निर्माण स्थल है मुझे सुबह जल्दी और पूरे दिन अस्वीकार्य निर्माण शोर से आतंकित किया गया था जबकि एक लंबी यात्रा के बाद आराम कर रहा था और कमरे में काम कर रहा था लोग पूरे दिन काम कर रहे थे जैसे कि जैकहैमर के साथ आसन्न कमरों में मैंने कमरे बदलने के लिए कहा लेकिन कोई शांत कमरा उपलब्ध नहीं था चीजों को और खराब करने के लिए मुझे अधिक शुल्क लिया गया मैंने शाम को चेक आउट किया क्योंकि मुझे बहुत जल्दी उड़ान लेनी थी और एक उपयुक्त बिल प्राप्त किया एक दिन बाद होटल ने मेरी सहमति के बिना बुक की गई कीमत से अधिक शुल्क लिया यह एक भयानक जगह है खुद को यहां बुक करके दंडित न करें | कुछ भी नहीं भयानक जगह दूर रहें | व्यवसाय यात्रा युगल मानक डबल कमरा 2 रातें रुके |
| 7.8 | 1945 | 2.5 | यह वर्तमान में एक होटल नहीं है बल्कि एक निर्माण स्थल है मुझे सुबह जल्दी और पूरे दिन अस्वीकार्य निर्माण शोर से परेशान किया गया था, जबकि लंबी यात्रा के बाद आराम कर रहा था और कमरे में काम कर रहा था लोग पूरे दिन काम कर रहे थे, जैसे कि जैकहैमर के साथ मैंने कमरे बदलने के लिए कहा लेकिन कोई शांत कमरा उपलब्ध नहीं था। इसे और खराब करने के लिए, मुझे अधिक शुल्क लिया गया मैंने शाम को चेक आउट किया क्योंकि मुझे बहुत जल्दी उड़ान लेनी थी और मुझे उचित बिल मिला। एक दिन बाद, होटल ने मेरी सहमति के बिना बुक की गई कीमत से अधिक शुल्क लिया यह एक भयानक जगह है खुद को यहां बुक करके सजा न दें। | कुछ भी नहीं। भयानक जगह। दूर रहें। | व्यवसाय यात्रा। जोड़ा। मानक डबल कमरा। 2 रातें रुके। |
जैसा कि आप देख सकते हैं, इस अतिथि का इस होटल में ठहराव सुखद नहीं था। होटल का औसत स्कोर 7.8 और 1945 समीक्षाएं हैं, लेकिन इस समीक्षक ने इसे 2.5 दिया और अपनी नकारात्मक यात्रा के बारे में 115 शब्द लिखे। यदि उन्होंने सकारात्मक समीक्षा कॉलम में कुछ भी नहीं लिखा, तो आप अनुमान लगा सकते हैं कि कुछ भी सकारात्मक नहीं था, लेकिन उन्होंने 7 शब्दों की चेतावनी लिखी। यदि हम केवल शब्दों की गिनती करते हैं बजाय उनके अर्थ या शब्दों की भावना के, तो हमें समीक्षक के इरादे का विकृत दृष्टिकोण मिल सकता है। अजीब बात है, उनका स्कोर 2.5 भ्रमित करने वाला है, क्योंकि अगर वह होटल प्रवास इतना खराब था, तो उन्होंने इसे कोई अंक क्यों दिए? डेटा सेट को करीब से जांचने पर, आप देखेंगे कि सबसे कम संभव स्कोर 2.5 है, 0 नहीं। सबसे अधिक संभव स्कोर 10 है।
जैसा कि आप देख सकते हैं, इस अतिथि का इस होटल में सुखद अनुभव नहीं था। होटल का औसत स्कोर 7.8 और 1945 समीक्षाएं हैं, लेकिन इस समीक्षक ने इसे 2.5 दिया और 115 शब्द लिखे कि उनका अनुभव कितना नकारात्मक था। यदि उन्होंने सकारात्मक समीक्षा कॉलम में कुछ भी नहीं लिखा, तो आप अनुमान लगा सकते हैं कि कुछ भी सकारात्मक नहीं था, लेकिन उन्होंने 7 शब्दों की चेतावनी लिखी। यदि हम केवल शब्दों की गिनती करते हैं बजाय उनके अर्थ या शब्दों की भावना के, तो हमें समीक्षक के इरादे का विकृत दृष्टिकोण मिल सकता है। अजीब बात है, उनका स्कोर 2.5 भ्रमित करने वाला है, क्योंकि अगर वह होटल ठहराव इतना खराब था, तो उन्होंने इसे कोई अंक क्यों दिए? डेटा सेट की बारीकी से जांच करते हुए, आप देखेंगे कि सबसे कम संभव स्कोर 2.5 है, 0 नहीं। सबसे अधिक संभव स्कोर 10 है।
##### टैग्स
जैसा कि ऊपर उल्लेख किया गया है, पहली नज़र में, डेटा को वर्गीकृत करने के लिए `Tags` का उपयोग करने का विचार समझ में आता है। दुर्भाग्यवश, ये टैग्स मानकीकृत नहीं हैं, जिसका मतलब है कि एक होटल में विकल्प *सिंगल रूम*, *ट्विन रूम*, और *डबल रूम* हो सकते हैं, लेकिन अगले होटल में वे *डीलक्स सिंगल रूम*, *क्लासिक क्वीन रूम*, और *एक्जीक्यूटिव किंग रूम* हो सकते हैं। ये वही चीजें हो सकती हैं, लेकिन इतने सारे बदलाव हैं कि विकल्प बन जाता है:
जैसा कि ऊपर उल्लेख किया गया है, पहली नज़र में, डेटा को वर्गीकृत करने के लिए `Tags` का उपयोग करने का विचार समझ में आता है। दुर्भाग्यवश, ये टैग्स मानकीकृत नहीं हैं, जिसका मतलब है कि एक दिए गए होटल में विकल्प *Single room*, *Twin room*, और *Double room* हो सकते हैं, लेकिन अगले होटल में वे *Deluxe Single Room*, *Classic Queen Room*, और *Executive King Room* हो सकते हैं। ये वही चीजें हो सकती हैं, लेकिन इतने सारे बदलाव हैं कि विकल्प बन जाता है:
1. सभी शब्दों को एक मानक में बदलने का प्रयास करें, जो बहुत कठिन है, क्योंकि यह स्पष्ट नहीं है कि प्रत्येक मामले में रूपांतरण पथ क्या होगा (जैसे, *क्लासिक सिंगल रूम* को *सिंगल रूम* से मैप किया जा सकता है लेकिन *सुपीरियर क्वीन रूम विद कोर्टयार्ड गार्डन या सिटी व्यू* को मैप करना बहुत कठिन है)
1. सभी शब्दों को एक मानक में बदलने का प्रयास करें, जो बहुत कठिन है, क्योंकि यह स्पष्ट नहीं है कि प्रत्येक मामले में रूपांतरण पथ क्या होगा (जैसे, *Classic single room* को *Single room* में मैप किया जा सकता है लेकिन *Superior Queen Room with Courtyard Garden or City View* को मैप करना बहुत कठिन है)
1. हम एक NLP दृष्टिकोण ले सकते हैं और कुछ शब्दों जैसे *सोलो*, *बिजनेस ट्रैवलर*, या *युवा बच्चों के साथ परिवार* की आवृत्ति को माप सकते हैं क्योंकि वे प्रत्येक होटल पर लागू होते हैं, और इसे अनुशंसा में शामिल कर सकते हैं।
1. हम एक NLP दृष्टिकोण ले सकते हैं और कुछ शब्दों जैसे *Solo*, *Business Traveller*, या *Family with young kids* की आवृत्ति को माप सकते हैं क्योंकि वे प्रत्येक होटल पर लागू होते हैं, और इसे अनुशंसा में शामिल कर सकते हैं।
टैग्स आमतौर पर (लेकिन हमेशा नहीं) एकल फ़ील्ड होते हैं जिसमें 5 से 6 अल्पविराम से अलग किए गए मान होते हैं जो *यात्रा का प्रकार*, *अतिथि का प्रकार*, *कमरे का प्रकार*, *रातों की संख्या*, और *जिस डिवाइस पर समीक्षा प्रस्तुत की गई थी* से मेल खाते हैं। हालांकि, क्योंकि कुछ समीक्षक प्रत्येक फ़ील्ड को नहीं भरते (वे एक को खाली छोड़ सकते हैं), मान हमेशा एक ही क्रम में नहीं होते।
टैग्स आमतौर पर (लेकिन हमेशा नहीं) एकल फ़ील्ड होते हैं जिसमें 5 से 6 अल्पविराम से अलग किए गए मान होते हैं जो *यात्रा का प्रकार*, *अतिथि का प्रकार*, *कमरे का प्रकार*, *रातों की संख्या*, और *जिस डिवाइस पर समीक्षा प्रस्तुत की गई थी* के साथ मेल खाते हैं। हालांकि, क्योंकि कुछ समीक्षक प्रत्येक फ़ील्ड को नहीं भरते (वे एक को खाली छोड़ सकते हैं), मान हमेशा एक ही क्रम में नहीं होते।
उदाहरण के लिए, *समूह का प्रकार* लें। इस फ़ील्ड में `Tags` कॉलम में 1025 अद्वितीय संभावनाएं हैं, और दुर्भाग्यवश उनमें से केवल कुछ ही समूह को संदर्भित करती हैं (कुछ कमरे के प्रकार आदि हैं)। यदि आप केवल उन लोगों को फ़िल्टर करते हैं जो परिवार का उल्लेख करते हैं, तो परिणामों में कई *फैमिली रूम* प्रकार के परिणाम होते हैं। यदि आप *with* शब्द को शामिल करते हैं, यानी *फैमिली विद* मानों की गणना करते हैं, तो परिणाम बेहतर होते हैं, जिसमें 515,000 परिणामों में से 80,000 से अधिक में "युवा बच्चों के साथ परिवार" या "बड़े बच्चों के साथ परिवार" वाक्यांश शामिल होता है
उदाहरण के लिए, *Type of group* लें। इस फ़ील्ड में `Tags` कॉलम में 1025 अद्वितीय संभावनाएं हैं, और दुर्भाग्यवश उनमें से केवल कुछ ही समूह को संदर्भित करती हैं (कुछ कमरे के प्रकार आदि हैं)। यदि आप केवल उन लोगों को फ़िल्टर करते हैं जो परिवार का उल्लेख करते हैं, तो परिणामों में कई *Family room* प्रकार के परिणाम होते हैं। यदि आप शब्द *with* को शामिल करते हैं, यानी *Family with* मानों की गणना करते हैं, तो परिणाम बेहतर होते हैं, जिसमें "Family with young children" या "Family with older children" वाक्यांश वाले 515,000 परिणामों में से 80,000 से अधिक शामिल होते हैं
इसका मतलब है कि टैग्स कॉलम हमारे लिए पूरी तरह से बेकार नहीं है, लेकिन इसे उपयोगी बनाने में कुछ काम लगेगा।
##### औसत होटल स्कोर
डेटा सेट के साथ कुछ विचित्रताएं या विसंगतियां हैं जिन्हें मैं समझ नहीं पा रहा हूं, लेकिन यहां उन्हें चित्रित किया गया है ताकि आप उन्हें अपने मॉडल बनाते समय ध्यान में रखें। यदि आप इसे समझते हैं, तो कृपया चर्चा अनुभाग में हमें बताएं!
डेटा सेट में कुछ विचित्रताएं या विसंगतियां हैं जिन्हें मैं समझ नहीं पा रहा हूं, लेकिन यहां उन्हें चित्रित किया गया है ताकि आप अपने मॉडल बनाते समय उनसे अवगत रहें। यदि आप इसे समझते हैं, तो कृपया चर्चा अनुभाग में हमें बताएं!
डेटा सेट में औसत स्कोर और समीक्षाओं की संख्या से संबंधित निम्नलिखित कॉलम हैं:
@ -129,23 +129,22 @@ Python, होटल समीक्षाओं के डेटा सेट,
4. Total_Number_of_Reviews
5. Reviewer_Score
इस डेटा सेट में सबसे अधिक समीक्षाओं वाला एकल होटल *Britannia International Hotel Canary Wharf* है, जिसमें 515,000 में से 4789 समीक्षाएं हैं। लेकिन अगर हम इस होटल के लिए `Total_Number_of_Reviews` मान देखें, तो यह 9086 है। आप अनुमान लगा सकते हैं कि कई और स्कोर बिना समीक्षाओं के हैं, इसलिए शायद हमें `Additional_Number_of_Scoring` कॉलम मान जोड़ना चाहिए। वह मान 2682 है, और इसे 4789 में जोड़ने से हमें 7471 मिलता है, जो अभी भी `Total_Number_of_Reviews` से 1615 कम है।
इस डेटा सेट में सबसे अधिक समीक्षाओं वाला एकल होटल *Britannia International Hotel Canary Wharf* है, जिसमें 515,000 में से 4789 समीक्षाएं हैं। लेकिन अगर हम इस होटल के लिए `Total_Number_of_Reviews` मान को देखें, तो यह 9086 है। आप अनुमान लगा सकते हैं कि कई और स्कोर बिना समीक्षाओं के हैं, इसलिए शायद हमें `Additional_Number_of_Scoring` कॉलम मान जोड़ना चाहिए। वह मान 2682 है, और इसे 4789 में जोड़ने से हमें 7471 मिलता है, जो अभी भी `Total_Number_of_Reviews` से 1615 कम है।
यदि आप `Average_Score` कॉलम लेते हैं, तो आप अनुमान लगा सकते हैं कि यह डेटा सेट में समीक्षाओं का औसत है, लेकिन Kaggle का विवरण है "*होटल का औसत स्कोर, पिछले वर्ष की नवीनतम टिप्पणी के आधार पर गणना किया गया*।" यह बहुत उपयोगी नहीं लगता, लेकिन हम डेटा सेट में समीक्षा स्कोर के आधार पर अपना औसत गणना कर सकते हैं। उसी होटल को उदाहरण के रूप में लेते हुए, औसत होटल स्कोर 7.1 दिया गया है लेकिन गणना किया गया स्कोर (समीक्षक स्कोर का औसत *डेटा सेट में*) 6.8 है। यह करीब है, लेकिन समान मान नहीं है, और हम केवल अनुमान लगा सकते हैं कि `Additional_Number_of_Scoring` समीक्षाओं में दिए गए स्कोर ने औसत को 7.1 तक बढ़ा दिया। दुर्भाग्यवश, उस कथन का परीक्षण या प्रमाणित करने का कोई तरीका नहीं होने के कारण, `Average_Score`, `Additional_Number_of_Scoring` और `Total_Number_of_Reviews` का उपयोग करना या उन पर भरोसा करना मुश्किल है जब वे डेटा पर आधारित हैं या डेटा का संदर्भ देते हैं जो हमारे पास नहीं है।
यदि आप `Average_Score` कॉलम लेते हैं, तो आप अनुमान लगा सकते हैं कि यह डेटा सेट में समीक्षाओं का औसत है, लेकिन Kaggle का विवरण है "*होटल का औसत स्कोर, पिछले वर्ष की नवीनतम टिप्पणी के आधार पर गणना किया गया*।" यह बहुत उपयोगी नहीं लगता है, लेकिन हम डेटा सेट में समीक्षाओं के स्कोर के आधार पर अपना औसत गणना कर सकते हैं। उसी होटल को उदाहरण के रूप में लेते हुए, औसत होटल स्कोर 7.1 दिया गया है लेकिन गणना किया गया स्कोर (समीक्षक का औसत स्कोर *डेटा सेट में*) 6.8 है। यह करीब है, लेकिन समान मान नहीं है, और हम केवल अनुमान लगा सकते हैं कि `Additional_Number_of_Scoring` समीक्षाओं में दिए गए स्कोर ने औसत को 7.1 तक बढ़ा दिया। दुर्भाग्यवश, उस कथन का परीक्षण या प्रमाणित करने का कोई तरीका नहीं होने के कारण, `Average_Score`, `Additional_Number_of_Scoring` और `Total_Number_of_Reviews` का उपयोग करना या उन पर भरोसा करना कठिन है जब वे डेटा पर आधारित हैं या डेटा का संदर्भ देते हैं जो हमारे पास नहीं है।
चीजों को और जटिल बनाने के लिए, सबसे अधिक समीक्षाओं वाले दूसरे होटल का गणना किया गया औसत स्कोर 8.12 है और डेटा सेट का `Average_Score` 8.1 है। क्या यह सही स्कोर एक संयोग है या पहला होटल एक विसंगति है?
इस संभावना पर कि ये होटल एक अपवाद हो सकते हैं, और शायद अधिकांश मान सही हैं (लेकिन कुछ किसी कारण से सही नहीं हैं), हम अगले चरण में एक छोटा प्रोग्राम लिखेंगे ताकि डेटा सेट में मानों का पता लगाया जा सके और उनके सही उपयोग (या गैर-उपयोग) को निर्धारित किया जा सके।
चीजों को और जटिल करने के लिए, सबसे अधिक समीक्षाओं वाले दूसरे होटल का गणना किया गया औसत स्कोर 8.12 है और डेटा सेट `Average_Score` 8.1 है। क्या यह सही स्कोर एक संयोग है या पहला होटल एक विसंगति है?
इस संभावना पर कि ये होटल एक अपवाद हो सकते हैं, और शायद अधिकांश मान सही हैं (लेकिन कुछ किसी कारण से सही नहीं हैं), हम अगले भाग में डेटा सेट में मानों का अन्वेषण करने और मानों के सही उपयोग (या गैर-उपयोग) को निर्धारित करने के लिए एक छोटा प्रोग्राम लिखेंगे।
> 🚨 सावधानी का एक नोट
>
> जब आप इस डेटा सेट के साथ काम कर रहे हों, तो आप ऐसा कोड लिखेंगे जो टेक्स्ट से कुछ गणना करता है, बिना टेक्स्ट को खुद पढ़े या विश्लेषण किए। यही NLP का सार है, अर्थ या भावना को समझना बिना किसी मानव हस्तक्षेप के। हालांकि, यह संभव है कि आप कुछ नकारात्मक समीक्षाएं पढ़ें। मैं आपको ऐसा न करने की सलाह दूंगा, क्योंकि इसकी आवश्यकता नहीं है। उनमें से कुछ मूर्खतापूर्ण या अप्रासंगिक नकारात्मक होटल समीक्षाएं हो सकती हैं, जैसे "मौसम अच्छा नहीं था", जो होटल या किसी के नियंत्रण से बाहर है। लेकिन कुछ समीक्षाओं का एक अंधकारमय पक्ष भी होता है। कभी-कभी नकारात्मक समीक्षाएं नस्लवादी, लिंगभेदी, या उम्रभेदी होती हैं। यह दुर्भाग्यपूर्ण है लेकिन सार्वजनिक वेबसाइट से स्क्रैप किए गए डेटा सेट में अपेक्षित है। कुछ समीक्षक ऐसी समीक्षाएं छोड़ते हैं जो आपको अप्रिय, असहज, या परेशान कर सकती हैं। बेहतर होगा कि कोड भावना को मापे बजाय आप खुद उन्हें पढ़कर परेशान हों। हालांकि, ऐसे लोग अल्पसंख्यक हैं जो ऐसा लिखते हैं, लेकिन वे फिर भी मौजूद हैं।
> जब आप इस डेटा सेट के साथ काम कर रहे हों, तो आप ऐसा कोड लिखेंगे जो टेक्स्ट से कुछ गणना करता है बिना टेक्स्ट को खुद पढ़े या उसका विश्लेषण किए। यही NLP का सार है, अर्थ या भावना को समझना बिना किसी इंसान के इसे करने की आवश्यकता के। हालांकि, यह संभव है कि आप कुछ नकारात्मक समीक्षाएँ पढ़ लें। मैं आपसे आग्रह करूंगा कि ऐसा न करें, क्योंकि इसकी कोई आवश्यकता नहीं है। इनमें से कुछ समीक्षाएँ मूर्खतापूर्ण या अप्रासंगिक नकारात्मक होटल समीक्षाएँ हो सकती हैं, जैसे "मौसम अच्छा नहीं था", जो होटल या किसी के नियंत्रण से बाहर है। लेकिन कुछ समीक्षाओं का एक अंधकारमय पक्ष भी होता है। कभी-कभी नकारात्मक समीक्षाएँ नस्लवादी, लिंगभेदी, या उम्रभेदी होती हैं। यह दुर्भाग्यपूर्ण है लेकिन एक सार्वजनिक वेबसाइट से स्क्रैप किए गए डेटा सेट में अपेक्षित है। कुछ समीक्षक ऐसी समीक्षाएँ छोड़ते हैं जो आपको अप्रिय, असहज, या परेशान कर सकती हैं। बेहतर होगा कि कोड भावना को मापे बजाय आप खुद उन्हें पढ़कर परेशान हों। यह कहा जा सकता है कि ऐसे लोग अल्पसंख्यक हैं जो ऐसा लिखते हैं, लेकिन वे फिर भी मौजूद हैं।
## अभ्यास - डेटा अन्वेषण
### डेटा लोड करें
अब डेटा को दृश्य रूप से जांचने के लिए पर्याप्त है, अब आप कुछ कोड लिखेंगे और उत्तर प्राप्त करेंगे! इस सेक्शन में pandas लाइब्रेरी का उपयोग किया गया है। आपका पहला कार्य यह सुनिश्चित करना है कि आप CSV डेटा को लोड और पढ़ सकते हैं। pandas लाइब्रेरी में एक तेज़ CSV लोडर है, और परिणाम को पिछले पाठों की तरह एक डेटा फ्रेम में रखा जाता है। जिस CSV को हम लोड कर रहे हैं उसमें आधे मिलियन से अधिक पंक्तिया हैं, लेकिन केवल 17 कॉलम हैं। pandas आपको डेटा फ्रेम के साथ बातचीत करने के कई शक्तिशाली तरीके देता है, जिसमें हर पंक्ति पर ऑपरेशन करने की क्षमता भी शामिल है।
अब डेटा को विजुअली जांचने के लिए पर्याप्त है, अब आप कुछ कोड लिखेंगे और उत्तर प्राप्त करेंगे! इस सेक्शन में pandas लाइब्रेरी का उपयोग किया गया है। आपका पहला कार्य यह सुनिश्चित करना है कि आप CSV डेटा को लोड और पढ़ सकते हैं। pandas लाइब्रेरी में एक तेज़ CSV लोडर है, और परिणाम को एक डेटा फ्रेम में रखा जाता है, जैसा कि पिछले पाठों में देखा गया है। जिस CSV को हम लोड कर रहे हैं उसमें आधे मिलियन से अधिक पंक्तिया हैं, लेकिन केवल 17 कॉलम हैं। pandas आपको डेटा फ्रेम के साथ इंटरैक्ट करने के कई शक्तिशाली तरीके देता है, जिसमें हर पंक्ति पर ऑपरेशन करने की क्षमता भी शामिल है।
इस पाठ के आगे के हिस्से में कोड स्निपेट्स और कोड की कुछ व्याख्याएं और परिणामों के बारे में चर्चा होगी। अपने कोड के लिए शामिल _notebook.ipynb_ का उपयोग करें।
इस पाठ के आगे के हिस्से में कोड स्निपेट्स होंगे, कोड की व्याख्या होगी और परिणामों का अर्थ समझाने पर चर्चा होगी। अपने कोड के लिए शामिल _notebook.ipynb_ का उपयोग करें।
आइए उस डेटा फ़ाइल को लोड करने से शुरू करें जिसे आप उपयोग करेंगे:
@ -162,41 +161,41 @@ end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
```
अब जब डेटा लोड हो गया है, तो हम स पर कुछ ऑपरेशन कर सकते हैं। अगले भाग के लिए इस कोड को अपने प्रोग्राम के शीर्ष पर रखें।
अब जब डेटा लोड हो गया है, तो हम स पर कुछ ऑपरेशन कर सकते हैं। अगले भाग के लिए इस कोड को अपने प्रोग्राम के शीर्ष पर रखें।
## डेटा का अन्वेषण
## डेटा का अन्वेषण करें
इस मामले में, डेटा पहले से ही *साफ* है, इसका मतलब है कि यह काम करने के लिए तैयार है और इसमें अन्य भाषाओं के वर्ण नहीं हैं जो केवल अंग्रेजी वर्णों की अपेक्षा करने वाले एल्गोरिदम को बाधित कर सकते हैं।
इस मामले में, डेटा पहले से ही *साफ* है, इसका मतलब है कि यह काम करने के लिए तैयार है और इसमें अन्य भाषाओं के ऐसे अक्षर नहीं हैं जो केवल अंग्रेजी अक्षरों की अपेक्षा करने वाले एल्गोरिदम को भ्रमित कर सकते हैं।
✅ आपको ऐसे डेटा के साथ काम करना पड़ सकता है जिसे NLP तकनीकों को लागू करने से पहले प्रारंभिक प्रोसेसिंग की आवश्यकता हो, लेकिन इस बार ऐसा नहीं है। यदि आपको करना पड़े, तो आप गैर-अंग्रेजी वर्णों को कैसे संभालेंगे?
✅ आपको ऐसे डेटा के साथ काम करना पड़ सकता है जिसे NLP तकनीकों को लागू करने से पहले प्रारंभिक प्रोसेसिंग की आवश्यकता हो, लेकिन इस बार ऐसा नहीं है। यदि आपको करना पड़े, तो आप गैर-अंग्रेजी अक्षरों को कैसे संभालेंगे?
एक पल लें यह सुनिश्चित करने के लिए कि डेटा लोड होने के बाद, आप इसे कोड के साथ अन्वेषण कर सकते हैं। `Negative_Review` और `Positive_Review` कॉलम पर ध्यान केंद्रित करना बहुत आसान है। ये प्राकृतिक टेक्स्ट से भरे हुए हैं जिन्हें आपके NLP एल्गोरिदम द्वारा प्रोसेस किया जाना है। लेकिन रुको! NLP और भावना में कूदने से पहले, आपको नीचे दिए गए कोड का पालन करना चाहिए ताकि यह सुनिश्चित किया जा सके कि डेटा सेट में दिए गए मान आपके द्वारा pandas के साथ गणना किए गए मानों से मेल खाते हैं।
एक पल लें और सुनिश्चित करें कि डेटा लोड होने के बाद आप इसे कोड के साथ एक्सप्लोर कर सकते हैं। `Negative_Review` और `Positive_Review` कॉलम पर ध्यान केंद्रित करना बहुत आसान है। ये कॉलम आपके NLP एल्गोरिदम के लिए प्राकृतिक टेक्स्ट से भरे हुए हैं। लेकिन रुको! NLP और सेंटिमेंट में कूदने से पहले, आपको नीचे दिए गए कोड का पालन करना चाहिए ताकि यह सुनिश्चित किया जा सके कि डेटा सेट में दिए गए मान आपके द्वारा pandas के साथ गणना किए गए मानों से मेल खाते हैं।
## डेटा फ्रेम ऑपरेशन
इस पाठ में पहला कार्य यह जांचना है कि निम्नलिखित दावे सही हैं या नहीं, इसके लिए डेटा फ्रेम की जांच करने वाला कोड लिखें (बिना इसे बदले)।
> कई प्रोग्रामिंग कार्यों की तरह, इसे पूरा करने के कई तरीके हैं, लेकिन अच्छा सुझाव यह है कि इसे सबसे सरल, आसान तरीके से करें, खासकर यदि यह भविष्य में इस कोड को समझने में आसान होगा। डेटा फ्रेम के साथ, एक व्यापक API है जो अक्सर आपके इच्छित कार्य को कुशलतापूर्वक करने का तरीका प्रदान करेगा
> कई प्रोग्रामिंग कार्यों की तरह, इसे पूरा करने के कई तरीके हैं, लेकिन अच्छा सुझाव यह है कि इसे सबसे सरल और आसान तरीके से करें, खासकर यदि यह भविष्य में इस कोड को समझने में आसान होगा। डेटा फ्रेम के साथ, एक व्यापक API है जो अक्सर आपके काम को कुशलतापूर्वक करने का तरीका प्रदान करता है
निम्नलिखित प्रश्नों को कोडिंग कार्यों के रूप में मानें और समाधान को देखे बिना उनका उत्तर देने का प्रयास करें।
निम्नलिखित प्रश्नों को कोडिंग कार्यों के रूप में मानें और समाधान को देखे बिना उत्तर देने का प्रयास करें।
1. आपने अभी लोड किए गए डेटा फ्रेम का *आकार* प्रिंट करें (आकार पंक्तियों और कॉलम की संख्या है)
1. आपने अभी लोड किए गए डेटा फ्रेम का *आकार* प्रिंट करें (आकार पंक्तियों और कॉलम की संख्या है)
2. समीक्षक राष्ट्रीयताओं के लिए आवृत्ति गणना करें:
1. `Reviewer_Nationality` कॉलम के लिए कितने विशिष्ट मान हैं और वे क्या हैं?
1. `Reviewer_Nationality` कॉलम के लिए कितने अलग-अलग मान हैं और वे क्या हैं?
2. डेटा सेट में सबसे आम समीक्षक राष्ट्रीयता कौन सी है (देश और समीक्षाओं की संख्या प्रिंट करें)?
3. अगली शीर्ष 10 सबसे अधिक बार पाई जाने वाली राष्ट्रीयतां और उनकी आवृत्ति गणना क्या हैं?
3. शीर्ष 10 सबसे समीक्षक राष्ट्रीयताओं के लिए प्रत्येक के लिए सबसे अधिक समीक्षा किया गया होटल कौन सा था?
4. डेटा सेट में प्रति होटल कितनी समीक्षाए हैं (होटल की आवृत्ति गणना)?
3. अगली शीर्ष 10 सबसे अधिक बार पाई जाने वाली राष्ट्रीयतां और उनकी आवृत्ति गणना क्या हैं?
3. शीर्ष 10 समीक्षक राष्ट्रीयताओं में से प्रत्येक के लिए सबसे अधिक समीक्षा किया गया होटल कौन सा था?
4. डेटा सेट में प्रति होटल कितनी समीक्षाए हैं (होटल की आवृत्ति गणना)?
5. जबकि डेटा सेट में प्रत्येक होटल के लिए `Average_Score` कॉलम है, आप एक औसत स्कोर भी गणना कर सकते हैं (डेटा सेट में प्रत्येक होटल के लिए सभी समीक्षक स्कोर का औसत प्राप्त करना)। अपने डेटा फ्रेम में एक नया कॉलम जोड़ें जिसका कॉलम हेडर `Calc_Average_Score` हो जिसमें वह गणना किया गया औसत हो।
6. क्या किसी होटल का `Average_Score` और `Calc_Average_Score` (1 दशमलव स्थान तक गोल) समान है?
1. एक Python फ़ंक्शन लिखने का प्रयास करें जो एक Series (पंक्ति) को तर्क के रूप में लेता है और मानों की तुलना करता है, जब मान समान नहीं होते हैं तो एक संदेश प्रिंट करता है। फिर `.apply()` विधि का उपयोग करके प्रत्येक पंक्ति को फ़ंक्शन के साथ प्रोसेस करें।
7. कॉलम `Negative_Review` के "No Negative" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
8. कॉलम `Positive_Review` के "No Positive" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
9. कॉलम `Positive_Review` के "No Positive" **और** `Negative_Review` के "No Negative" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
1. एक Python फ़ंक्शन लिखने का प्रयास करें जो एक Series (पंक्ति) को तर्क के रूप में लेता है और मानों की तुलना करता है, जब मान समान नहीं होते हैं तो एक संदेश प्रिंट करता है। फिर `.apply()` विधि का उपयोग करके हर पंक्ति को फ़ंक्शन के साथ प्रोसेस करें।
7. `Negative_Review`ॉलम म "No Negative" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
8. `Positive_Review`ॉलम म "No Positive" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
9. `Positive_Review`ॉलम म "No Positive" **और** `Negative_Review`ॉलम म "No Negative" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
### कोड उत्तर
1. आपने अभी लोड किए गए डेटा फ्रेम का *आकार* प्रिंट करें (आकार पंक्तियों और कॉलम की संख्या है)
1. आपने अभी लोड किए गए डेटा फ्रेम का *आकार* प्रिंट करें (आकार पंक्तियों और कॉलम की संख्या है)
```python
print("The shape of the data (rows, cols) is " + str(df.shape))
@ -205,7 +204,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
2. समीक्षक राष्ट्रीयताओं के लिए आवृत्ति गणना करें:
1. `Reviewer_Nationality` कॉलम के लिए कितने विशिष्ट मान हैं और वे क्या हैं?
1. `Reviewer_Nationality` कॉलम के लिए कितने अलग-अलग मान हैं और वे क्या हैं?
2. डेटा सेट में सबसे आम समीक्षक राष्ट्रीयता कौन सी है (देश और समीक्षाओं की संख्या प्रिंट करें)?
```python
@ -230,7 +229,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Name: Reviewer_Nationality, Length: 227, dtype: int64
```
3. अगली शीर्ष 10 सबसे अधिक बार पाई जाने वाली राष्ट्रीयतां और उनकी आवृत्ति गणना क्या हैं?
3. अगली शीर्ष 10 सबसे अधिक बार पाई जाने वाली राष्ट्रीयतां और उनकी आवृत्ति गणना क्या हैं?
```python
print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
@ -253,7 +252,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
France 7296
```
3. शीर्ष 10 सबसे समीक्षक राष्ट्रीयताओं के लिए प्रत्येक के लिए सबसे अधिक समीक्षा किया गया होटल कौन सा था?
3. शीर्ष 10 समीक्षक राष्ट्रीयताओं में से प्रत्येक के लिए सबसे अधिक समीक्षा किया गया होटल कौन सा था?
```python
# What was the most frequently reviewed hotel for the top 10 nationalities
@ -277,7 +276,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
```
4. डेटा सेट में प्रति होटल कितनी समीक्षाए हैं (होटल की आवृत्ति गणना)?
4. डेटा सेट में प्रति होटल कितनी समीक्षाए हैं (होटल की आवृत्ति गणना)?
```python
# First create a new dataframe based on the old one, removing the uneeded columns
@ -324,7 +323,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
```
आप यह भी सोच सकते हैं कि `Average_Score` मान और गणना किए गए औसत स्कोर में कभी-कभी अंतर क्यों होता है। जैसा कि हम नहीं जान सकते कि कुछ मान क्यों मेल खाते हैं, लेकिन अन्य में अंतर है, इस मामले में यह सबसे सुरक्षित है कि हमारे पास मौजूद समीक्षा स्कोर का उपयोग करके औसत खुद गणना करें। हालांकि, अंतर आमतौर पर बहुत छोटा होता है, यहां वे होटल हैं जिनमें डेटा सेट औसत और गणना किए गए औसत के बीच सबसे बड़ा विचलन है:
आप यह भी सोच सकते हैं कि `Average_Score` मान और गणना किए गए औसत स्कोर में कभी-कभी अंतर क्यों होता है। जैसा कि हम नहीं जान सकते कि कुछ मान क्यों मेल खाते हैं, लेकिन अन्य में अंतर है, इस मामले में यह सबसे सुरक्षित है कि हम अपने पास मौजूद समीक्षा स्कोर का उपयोग करके औसत स्वयं गणना करें। हालांकि, अंतर आमतौर पर बहुत छोटा होता है, यहा डेटा सेट औसत और गणना किए गए औसत के बीच सबसे बड़ा विचलन वाले होटल है:
| Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name |
| :----------------------: | :-----------: | :----------------: | ------------------------------------------: |
@ -340,13 +339,13 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
| 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux |
| 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar |
केवल 1 होटल में स्कोर का अंतर 1 से अधिक है, इसका मतलब है कि हम शायद अंतर को अनदेखा कर सकते हैं और गणना किए गए औसत स्कोर का उपयोग कर सकते हैं।
केवल 1 होटल का स्कोर में 1 से अधिक का अंतर है, इसका मतलब है कि हम शायद अंतर को अनदेखा कर सकते हैं और गणना किए गए औसत स्कोर का उपयोग कर सकते हैं।
6. कॉलम `Negative_Review` के "No Negative" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
6. `Negative_Review`ॉलम म "No Negative" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
7. कॉलम `Positive_Review` के "No Positive" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
7. `Positive_Review`ॉलम म "No Positive" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
8. कॉलम `Positive_Review` के "No Positive" **और** `Negative_Review` के "No Negative" मान वाले कितने पंक्तियां हैं, इसकी गणना करें और प्रिंट करें।
8. `Positive_Review`ॉलम म "No Positive" **और** `Negative_Review`ॉलम म "No Negative" मान वाले कितने पंक्तियाँ हैं, इसकी गणना और प्रिंट करें।
```python
# with lambdas:
@ -370,7 +369,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
## एक और तरीका
लंब्डा क बिना आइटम गिनने का एक और तरीका, और पंक्तियों को गिनने के लिए sum का उपयोग करें:
लंब्डा का उपयोग किए बिना आइटम गिनने का एक और तरीका, और पंक्तियों को गिनने के लिए sum का उपयोग करें:
```python
# without lambdas (using a mixture of notations to show you can use both)
@ -393,20 +392,20 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Sum took 0.19 seconds
```
आपने देखा होगा कि `Negative_Review` और `Positive_Review` कॉलम के "No Negative" और "No Positive" मान वाले 127 पंक्तियां हैं। इसका मतलब है कि समीक्षक ने होटल को एक संख्यात्मक स्कोर दिया, लेकिन न तो सकारात्मक और न ही नकारात्मक समीक्षा लिखने से इनकार कर दिया। सौभाग्य से यह पंक्तियों की एक छोटी संख्या है (127 में से 515738, या 0.02%), इसलिए यह शायद हमारे मॉडल या परिणामों को किसी विशेष दिशा में प्रभावित नहीं करेगा, लेकिन आप उम्मीद नहीं कर सकते थे कि समीक्षाओं के डेटा सेट में ऐसी पंक्तिया हों जिनमें कोई समीक्षा न हो, इसलिए डेटा का अन्वेषण करना और ऐसी पंक्तियों की खोज करना महत्वपूर्ण है।
आपने देखा होगा कि `Negative_Review` और `Positive_Review` कॉलम में "No Negative" और "No Positive" मान वाले 127 पंक्तियाँ हैं। इसका मतलब है कि समीक्षक ने होटल को एक संख्यात्मक स्कोर दिया, लेकिन सकारात्मक या नकारात्मक समीक्षा लिखने से इनकार कर दिया। सौभाग्य से यह पंक्तियों की एक छोटी संख्या है (127 में से 515738, या 0.02%), इसलिए यह शायद हमारे मॉडल या परिणामों को किसी विशेष दिशा में प्रभावित नहीं करेगा, लेकिन आप उम्मीद नहीं कर सकते थे कि समीक्षाओं के डेटा सेट में ऐसी पंक्तिया हों जिनमें कोई समीक्षा न हो, इसलिए डेटा का अन्वेषण करना और ऐसी पंक्तियों की खोज करना महत्वपूर्ण है।
अब जब आपने डेटा सेट का अन्वेषण कर लिया है, अगले पाठ में आप डेटा को फ़िल्टर करेंगे और कुछ भावना विश्लेषण जोड़ेंगे।
अब जब आपने डेटा सेट का अन्वेषण कर लिया है, अगले पाठ में आप डेटा को फ़िल्टर करेंगे और कुछ सेंटिमेंट एनालिसिस जोड़ेंगे।
---
## 🚀चुनौती
यह पाठ दिखाता है, जैसा कि हमने पिछले पाठों में देखा, कि आपके डेटा और इसकी विशेषताओं को समझना कितना महत्वपूर्ण है इससे पहले कि आप उस पर ऑपरेशन करें। टेक्स्ट-आधारित डेटा, विशेष रूप से, सावधानीपूर्वक जांच की आवश्यकता है। विभिन्न टेक्स्ट-भारी डेटा सेटों को खोदें और देखें कि क्या आप ऐसे क्षेत्र खोज सकते हैं जो मॉडल में पूर्वाग्रह या विकृत भावना को पेश कर सकते हैं।
यह पाठ दिखाता है, जैसा कि हमने पिछले पाठों में देखा, कि आपके डेटा और इसकी विशेषताओं को समझना कितना महत्वपूर्ण है इससे पहले कि आप उस पर ऑपरेशन करें। टेक्स्ट-आधारित डेटा, विशेष रूप से, सावधानीपूर्वक जांच की आवश्यकता होती है। विभिन्न टेक्स्ट-भारी डेटा सेट्स को खंगालें और देखें कि क्या आप ऐसे क्षेत्र खोज सकते हैं जो मॉडल में पूर्वाग्रह या विकृत सेंटिमेंट ला सकते हैं।
## [पाठ के बाद क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/38/)
## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
[NLP पर यह लर्निंग पाथ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) लें ताकि उन उपकरणों की खोज की जा सके जिन्हें आप स्पीच और टेक्स्ट-भारी मॉडल बनाते समय आज़मा सकते हैं।
[NLP पर यह लर्निंग पाथ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) लें ताकि आप भाषण और टेक्स्ट-भारी मॉडल बनाते समय आज़माने के लिए टूल्स की खोज कर सकें।
## असाइनमेंट
@ -415,4 +414,4 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,20 +1,21 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a2aa4e9b91b9640db2c15363c4299d8b",
"translation_date": "2025-09-04T00:58:43+00:00",
"original_hash": "2c742993fe95d5bcbb2846eda3d442a1",
"translation_date": "2025-09-05T10:35:41+00:00",
"source_file": "6-NLP/5-Hotel-Reviews-2/README.md",
"language_code": "hi"
}
-->
# होटल समीक्षाओं के साथ भाव विश्लेषण
अब जब आपने डेटासेट को विस्तार से देखा है, तो यह समय है कि कॉलम्स को फ़िल्टर करें और फिर डेटासेट पर NLP तकनीकों का उपयोग करके होटलों के बारे में नई जानकारियाँ प्राप्त करें।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/39/)
अब जब आपने डेटासेट को विस्तार से देखा है, तो समय आ गया है कि कॉलम्स को फ़िल्टर करें और फिर डेटासेट पर NLP तकनीकों का उपयोग करके होटलों के बारे में नई जानकारी प्राप्त करें।
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
### फ़िल्टरिंग और भाव विश्लेषण संचालन
जैसा कि आपने शायद देखा होगा, डेटासेट में कुछ समस्याए हैं। कुछ कॉलम्स में बेकार जानकारी भरी हुई है, जबकि अन्य गलत लगते हैं। अगर वे सही भी हैं, तो यह स्पष्ट नहीं है कि उन्हें कैसे गणना की गई, और आपके अपने गणनाओं से उत्तर स्वतंत्र रूप से सत्यापित नहीं किए जा सकते।
जैसा कि आपने शायद देखा होगा, डेटासेट में कुछ समस्याए हैं। कुछ कॉलम्स में बेकार जानकारी भरी हुई है, जबकि अन्य गलत लगते हैं। यदि वे सही हैं, तो यह स्पष्ट नहीं है कि उन्हें कैसे गणना की गई थी, और आपके अपने गणनाओं द्वारा उत्तर स्वतंत्र रूप से सत्यापित नहीं किए जा सकते।
## अभ्यास: डेटा प्रोसेसिंग को थोड़ा और बेहतर बनाना
@ -22,18 +23,23 @@ CO_OP_TRANSLATOR_METADATA:
1. प्रारंभिक कॉलम प्रोसेसिंग
1. `lat` और `lng` को हटा दें
1. `lat` और `lng` को हटा दें
2. `Hotel_Address` के मानों को निम्नलिखित मानों से बदलें (यदि पता शहर और देश का नाम शामिल करता है, तो इसे केवल शहर और देश में बदल दें)।
डेटासेट में केवल ये शहर और देश हैं:
एम्स्टर्डम, नीदरलैंड्स
बार्सिलोना, स्पेन
लंदन, यूनाइटेड किंगडम
मिलान, इटली
पेरिस, फ्रांस
वियना, ऑस्ट्रिया
एम्स्टर्डम, नीदरलैंड्स
बार्सिलोना, स्पेन
लंदन, यूनाइटेड किंगडम
मिलान, इटली
पेरिस, फ्रांस
वियना, ऑस्ट्रिया
```python
def replace_address(row):
@ -67,19 +73,19 @@ CO_OP_TRANSLATOR_METADATA:
| एम्स्टर्डम, नीदरलैंड्स | 105 |
| बार्सिलोना, स्पेन | 211 |
| लंदन, यूनाइटेड किंगडम | 400 |
| मिलान, इटली | 162 |
| पेरिस, फ्रांस | 458 |
| मिलान, इटली | 162 |
| पेरिस, फ्रांस | 458 |
| वियना, ऑस्ट्रिया | 158 |
2. होटल मेटा-रिव्यू कॉलम्स को प्रोसेस करें
1. `Additional_Number_of_Scoring` को हटा दें
1. `Additional_Number_of_Scoring` को हटा दें
2. `Total_Number_of_Reviews` को उस होटल के लिए डेटासेट में वास्तव में मौजूद समीक्षाओं की कुल संख्या से बदलें
1. `Total_Number_of_Reviews` को उस होटल के लिए डेटासेट में वास्तव में मौजूद समीक्षाओं की कुल संख्या से बदलें
3. `Average_Score` को हमारे द्वारा गणना किए गए स्कोर से बदलें
1. `Average_Score` को हमारे द्वारा गणना किए गए स्कोर से बदलें
```python
```python
# Drop `Additional_Number_of_Scoring`
df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True)
# Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values
@ -89,39 +95,39 @@ CO_OP_TRANSLATOR_METADATA:
3. रिव्यू कॉलम्स को प्रोसेस करें
1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` और `days_since_review` को हटा दें।
2. `Reviewer_Score`, `Negative_Review`, और `Positive_Review` को जैसा है वैसा रखें।
3. `Tags` को अभी के लिए रखें।
1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` और `days_since_review` को हटा दें
- हम अगले सेक्शन में टैग्स पर कुछ अतिरिक्त फ़िल्टरिंग संचालन करेंगे और फिर टैग्स को हटा देंगे।
2. `Reviewer_Score`, `Negative_Review`, और `Positive_Review` को जैसा है वैसा रखें,
3. अभी के लिए `Tags` को रखें
4. समीक्षक कॉलम्स को प्रोसेस करें
- हम अगले सेक्शन में टैग्स पर कुछ अतिरिक्त फ़िल्टरिंग संचालन करेंगे और फिर टैग्स को हटा देंगे
1. `Total_Number_of_Reviews_Reviewer_Has_Given` को हटा दें।
4. रिव्यूअर कॉलम्स को प्रोसेस करें
2. `Reviewer_Nationality` को रखें।
1. `Total_Number_of_Reviews_Reviewer_Has_Given` को हटा दें
2. `Reviewer_Nationality` को रखें
### टैग कॉलम्स
`Tag` कॉलम समस्या पैदा करता है क्योंकि यह एक सूची (टेक्स्ट फॉर्म में) के रूप में कॉलम में संग्रहीत है। दुर्भाग्य से, इस कॉलम में उपखंडों की संख्या और क्रम हमेशा समान नहीं होता। 515,000 पंक्तियों और 1427 होटलों के साथ, यह मानव के लिए सही वाक्यांशों की पहचान करना कठिन है। यही वह जगह है जहाँ NLP उपयोगी है। आप टेक्स्ट को स्कैन कर सकते हैं, सबसे सामान्य वाक्यांशों को ढूंढ सकते हैं, और उनकी गिनती कर सकते हैं।
`Tag` कॉलम समस्या पैदा करता है क्योंकि यह एक सूची (टेक्स्ट रूप में) है जो कॉलम में संग्रहीत है। दुर्भाग्यवश, इस कॉलम में उप-खंडों की क्रम और संख्या हमेशा समान नहीं होती। 515,000 पंक्तियों और 1427 होटलों के साथ, यह मानव के लिए सही वाक्यांशों की पहचान करना कठिन है, क्योंकि प्रत्येक रिव्यूअर के पास चुनने के लिए थोड़ा अलग विकल्प होते हैं। यही वह जगह है जहां NLP उपयोगी साबित होता है। आप टेक्स्ट को स्कैन कर सकते हैं, सबसे सामान्य वाक्यांशों को ढूंढ सकते हैं, और उनकी गिनती कर सकते हैं।
दुर्भाग्य से, हम एकल शब्दों में रुचि नहीं रखते, बल्कि बहु-शब्द वाक्यांशों (जैसे *Business trip*) में रुचि रखते हैं। इतने बड़े डेटा (6762646 शब्द) पर एक बहु-शब्द आवृत्ति वितरण एल्गोरिदम चलाना असाधारण रूप से समय लेने वाला हो सकता है लेकिन डेटा को देखे बिना, यह आवश्यक खर्च लग सकता है। यही वह जगह है जहाँ खोजपूर्ण डेटा विश्लेषण उपयोगी होता है। उदाहरण के लिए, आपने टैग्स का एक नमूना देखा होगा जैसे `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`, आप यह पूछना शुरू कर सकते हैं कि क्या आपको प्रोसेसिंग को काफी हद तक कम करना संभव है। सौभाग्य से, यह संभव है - लेकिन पहले आपको रुचि के टैग्स का पता लगाने के लिए कुछ चरणों का पालन करना होगा
दुर्भाग्यवश, हम एकल शब्दों में नहीं बल्कि बहु-शब्द वाक्यांशों (जैसे *Business trip*) में रुचि रखते हैं। इतने बड़े डेटा (6762646 शब्द) पर बहु-शब्द आवृत्ति वितरण एल्गोरिदम चलाना असाधारण रूप से समय लेने वाला हो सकता है, लेकिन डेटा को देखे बिना, ऐसा लगता है कि यह आवश्यक खर्च है। यही वह जगह है जहां एक्सप्लोरेटरी डेटा एनालिसिस उपयोगी साबित होता है, क्योंकि आपने टैग्स का नमूना देखा है जैसे `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`, आप यह पूछना शुरू कर सकते हैं कि क्या आपके पास प्रोसेसिंग को काफी हद तक कम करने का विकल्प है। सौभाग्य से, ऐसा संभव है - लेकिन पहले आपको कुछ कदम उठाने होंगे ताकि रुचि के टैग्स का पता लगाया जा सके
### टैग्स को फ़िल्टर करना
याद रखें कि डेटासेट का उद्देश्य भाव और ऐसे कॉलम्स जोड़ना है जो आपको सबसे अच्छा होटल चुनने में मदद करें (अपने लिए या शायद किसी क्लाइंट के लिए जो आपसे होटल सिफरिश बॉट बनाने का काम करवा रहा हो)। आपको खुद से पूछना होगा कि क्या टैग्स अंतिम डेटासेट में उपयोगी हैं या नहीं। यहाँ एक व्याख्या है (यदि आपको अन्य कारणों से डेटासेट की आवश्यकता होती, तो अलग टैग्स चयन में रह सकते थे/निकल सकते थे):
याद रखें कि डेटासेट का उद्देश्य भाव जोड़ना और ऐसे कॉलम्स बनाना है जो आपको सबसे अच्छा होटल चुनने में मदद करें (अपने लिए या शायद किसी क्लाइंट के लिए जो आपसे होटल अनुशंसा बॉट बनाने का काम करवा रहा हो)। आपको खुद से पूछना होगा कि क्या टैग्स अंतिम डेटासेट में उपयोगी हैं या नहीं। यहां एक व्याख्या दी गई है (यदि आपको डेटासेट अन्य कारणों से चाहिए तो अलग टैग्स चयन में रह सकते हैं/निकल सकते हैं):
1. यात्रा का प्रकार प्रासंगिक है, और इसे रखना चाहिए
2. अतिथि समूह का प्रकार महत्वपूर्ण है, और इसे रखना चाहिए
3. अतिथि ने जिस प्रकार के कमरे, सुइट, या स्टूडियो में ठहराव किया, वह अप्रासंगिक है (सभी होटलों में मूल रूप से समान कमरे होते हैं)
4. जिस डिवाइस से समीक्षा सबमिट की गई, वह अप्रासंगिक है।
5. समीक्षक ने कितनी रातें ठहरीं, यह *प्रासंगिक हो सकता है यदि आप लंबे ठहराव को होटल को अधिक पसंद करने से जोड़ते हैं, लेकिन यह एक खिंचाव है और शायद अप्रासंगिक है
1. यात्रा का प्रकार प्रासंगिक है, और इसे रखना चाहिए
2. अतिथि समूह का प्रकार महत्वपूर्ण है, और इसे रखना चाहिए
3. जिस प्रकार के कमरे, सुइट, या स्टूडियो में अतिथि ठहरे थे वह अप्रासंगिक है (सभी होटलों में मूल रूप से समान कमरे होते हैं)
4. जिस डिवाइस पर रिव्यू सबमिट किया गया वह अप्रासंगिक है
5. रिव्यूअर कितने रातों तक रुका था *शायद* प्रासंगिक हो सकता है यदि आप लंबे समय तक ठहरने को होटल को अधिक पसंद करने से जोड़ते हैं, लेकिन यह एक खिंचाव है, और शायद अप्रासंगिक है
सारांश में, **2 प्रकार के टैग्स रखें और बाकी को हटा दें**
पहले, आप तब तक टैग्स की गिनती नहीं करना चाहते जब तक वे बेहतर प्रारूप में न हों, इसलिए इसका मतलब है वर्ग कोष्ठक और उद्धरण चिह्न हटाना। आप इसे कई तरीकों से कर सकते हैं, लेकिन आप सबसे तेज़ तरीका चाहते हैं क्योंकि यह बहुत सारे डेटा को प्रोसेस करने में समय ले सकता है। सौभाग्य से, पांडा में इन चरणों में से प्रत्येक को करने का एक आसान तरीका है।
पहले, आप टैग्स की गिनती तब तक नहीं करना चाहते जब तक वे बेहतर प्रारूप में न हों, इसलिए इसका मतलब है कि वर्ग कोष्ठक और उद्धरण हटाना। आप इसे कई तरीकों से कर सकते हैं, लेकिन आप सबसे तेज़ तरीका चाहते हैं क्योंकि बहुत सारे डेटा को प्रोसेस करने में लंबा समय लग सकता है। सौभाग्य से, पांडा में इन चरणों में से प्रत्येक को करने का एक आसान तरीका है।
```Python
# Remove opening and closing brackets
@ -130,11 +136,11 @@ df.Tags = df.Tags.str.strip("[']")
df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
```
प्रत्येक टैग कुछ इस तरह बन जाता है: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`
प्रत्येक टैग कुछ इस तरह बन जाता है: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`.
इसके बाद एक समस्या सामने आती है। कुछ समीक्षाओं या पंक्तियों में 5 कॉलम्स होते हैं, कुछ में 3, कुछ में 6। यह डेटासेट के निर्माण के तरीके का परिणाम है और इसे ठीक करना कठिन है। आप प्रत्येक वाक्यांश की आवृत्ति गिनना चाहते हैं, लेकिन वे प्रत्येक समीक्षा में अलग क्रम में हैं, इसलिए गिनती गलत हो सकती है, और किसी होटल को वह टैग नहीं मिल सकता जो उसे मिलना चाहिए था।
इसके बाद एक समस्या सामने आती है। कुछ रिव्यू, या पंक्तियों, में 5 कॉलम्स होते हैं, कुछ में 3, कुछ में 6। यह डेटासेट के निर्माण के तरीके का परिणाम है, और इसे ठीक करना कठिन है। आप प्रत्येक वाक्यांश की आवृत्ति गिनती प्राप्त करना चाहते हैं, लेकिन वे प्रत्येक रिव्यू में अलग क्रम में हैं, इसलिए गिनती गलत हो सकती है, और क होटल को वह टैग नहीं मिल सकता जो उसे मिलना चाहिए था।
इसके बजाय आप अलग क्रम का लाभ उठाएगे, क्योंकि प्रत्येक टैग बहु-शब्द है लेकिन एक अल्पविराम से भी अलग है! इसका सबसे सरल तरीका यह है कि 6 अस्थायी कॉलम्स बनाए और प्रत्येक टैग को उस कॉलम में डालें जो टैग के क्रम से मेल खाता हो। फिर आप 6 कॉलम्स को एक बड़े कॉलम में मर्ज कर सकते हैं और परिणामी कॉलम पर `value_counts()` विधि चला सकते हैं। इसे प्रिंट करने पर, आप देखेंगे कि 2428 अद्वितीय टैग्स थे। यहा एक छोटा नमूना है:
इसके बजाय आप अलग क्रम का लाभ उठाएगे, क्योंकि प्रत्येक टैग बहु-शब्द है लेकिन साथ ही एक अल्पविराम से अलग है! इसका सबसे सरल तरीका यह है कि 6 अस्थायी कॉलम्स बनाए और प्रत्येक टैग को उस कॉलम में डालें जो टैग के क्रम से मेल खाता हो। फिर आप 6 कॉलम्स को एक बड़े कॉलम में मर्ज कर सकते हैं और परिणामी कॉलम पर `value_counts()` विधि चला सकते हैं। इसे प्रिंट करने पर, आप देखेंगे कि 2428 अद्वितीय टैग्स थे। यहा एक छोटा नमूना है:
| Tag | Count |
| ------------------------------ | ------ |
@ -161,54 +167,54 @@ df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
| Superior Double or Twin Room | 13570 |
| 2 rooms | 12393 |
कुछ सामान्य टैग्स जैसे `Submitted from a mobile device` हमारे लिए उपयोगी नहीं हैं, इसलिए उन्हें वाक्यांश की घटना की गिनती करने से पहले हटाना एक स्मार्ट कदम हो सकता है, लेकिन यह इतना तेज़ ऑपरेशन है कि आप उन्हें छोड़ सकते हैं और अनदेखा कर सकते हैं।
कुछ सामान्य टैग्स जैसे `Submitted from a mobile device` हमारे लिए उपयोगी नहीं हैं, इसलिए उन्हें गिनती से पहले हटाना एक स्मार्ट कदम हो सकता है, लेकिन यह इतना तेज़ ऑपरेशन है कि आप उन्हें छोड़ सकते हैं और उन्हें अनदेखा कर सकते हैं।
### ठहराव की अवधि वाले टैग्स को हटाना
### ठहरने की अवधि वाले टैग्स को हटाना
इन टैग्स को हटाना पहला कदम है, यह विचार किए जाने वाले टैग्स की कुल संख्या को थोड़ा कम कर देता है। ध्यान दें कि आप उन्हें डेटासेट से नहीं हटाते, बस उन्हें समीक्षाओं के डेटासेट में गिनने/रखने के लिए विचार से हटा देते हैं।
इन टैग्स को हटाना पहला कदम है, यह विचार किए जाने वाले टैग्स की कुल संख्या को थोड़ा कम कर देता है। ध्यान दें कि आप उन्हें डेटासेट से नहीं हटाते, बस उन्हें रिव्यू डेटासेट में गिनने/रखने के लिए मानों से हटा देते हैं।
| ठहराव की अवधि | Count |
| --------------- | ------ |
| Stayed 1 night | 193645 |
| Stayed 2 nights | 133937 |
| Stayed 3 nights | 95821 |
| Stayed 4 nights | 47817 |
| Stayed 5 nights | 20845 |
| Stayed 6 nights | 9776 |
| Stayed 7 nights | 7399 |
| Stayed 8 nights | 2502 |
| Stayed 9 nights | 1293 |
| ... | ... |
| Length of stay | Count |
| ---------------- | ------ |
| Stayed 1 night | 193645 |
| Stayed 2 nights | 133937 |
| Stayed 3 nights | 95821 |
| Stayed 4 nights | 47817 |
| Stayed 5 nights | 20845 |
| Stayed 6 nights | 9776 |
| Stayed 7 nights | 7399 |
| Stayed 8 nights | 2502 |
| Stayed 9 nights | 1293 |
| ... | ... |
कमरे, सुइट्स, स्टूडियो, अपार्टमेंट्स आदि की एक बड़ी विविधता है। वे सभी लगभग एक ही चीज़ का मतलब रखते हैं और आपके लिए प्रासंगिक नहीं हैं, इसलिए उन्हें विचार से हटा दें।
कमरे, सुइट्स, स्टूडियो, अपार्टमेंट्स आदि की एक बड़ी विविधता है। वे सभी लगभग समान हैं और आपके लिए प्रासंगिक नहीं हैं, इसलिए उन्हें विचार से हटा दें।
| कमरे का प्रकार | Count |
| Type of room | Count |
| ----------------------------- | ----- |
| Double Room | 35207 |
| Standard Double Room | 32248 |
| Standard Double Room | 32248 |
| Superior Double Room | 31393 |
| Deluxe Double Room | 24823 |
| Deluxe Double Room | 24823 |
| Double or Twin Room | 22393 |
| Standard Double or Twin Room | 17483 |
| Standard Double or Twin Room | 17483 |
| Classic Double Room | 16989 |
| Superior Double or Twin Room | 13570 |
| Superior Double or Twin Room | 13570 |
अंत में, और यह प्रसन्नता की बात है (क्योंकि इसमें ज्यादा प्रोसेसिंग नहीं लगी), आपके पास निम्नलिखित *उपयोगी* टैग्स बचेंगे:
अंत में, और यह प्रसन्नता की बात है (क्योंकि इसमें ज्यादा प्रोसेसिंग नहीं लगी), आप निम्नलिखित *उपयोगी* टैग्स के साथ रह जाएंगे:
| Tag | Count |
| --------------------------------------------- | ------ |
| Leisure trip | 417778 |
| Couple | 252294 |
| Solo traveler | 108545 |
| Solo traveler | 108545 |
| Business trip | 82939 |
| Group (combined with Travellers with friends) | 67535 |
| Family with young children | 61015 |
| Family with older children | 26349 |
| With a pet | 1405 |
| Family with older children | 26349 |
| With a pet | 1405 |
आप यह तर्क दे सकते हैं कि `Travellers with friends` लगभग `Group` के समान है, और इसे ऊपर की तरह संयोजित करना उचित होगा। सही टैग्स की पहचान करने के लिए कोड [Tags नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) में है।
आप यह तर्क दे सकते हैं कि `Travellers with friends` लगभग `Group` के समान है, और इसे ऊपर जैसा दिखाया गया है, जोड़ना उचित होगा। सही टैग्स की पहचान करने के लिए कोड [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) में है।
अंतिम चरण में इन टैग्स के लिए नए कॉलम्स बनाएँ। फिर, प्रत्येक समीक्षा पंक्ति के लिए, यदि `Tag` कॉलम नए कॉलम्स में से किसी एक से मेल खाता है, तो 1 जोड़ें, अन्यथा 0 जोड़ें। अंतिम परिणाम यह होगा कि कितने समीक्षकों ने इस होटल को (सामूहिक रूप से) व्यवसाय बनाम अवकाश के लिए चुना, या पालतू जानवर लाने के लिए, और यह होटल की सिफारिश करते समय उपयोगी जानकारी ह
अंतिम कदम प्रत्येक टैग्स के लिए नए कॉलम्स बनाना है। फिर, प्रत्येक रिव्यू पंक्ति के लिए, यदि `Tag` कॉलम नए कॉलम्स में से किसी एक से मेल खाता है, तो 1 जोड़ें, यदि नहीं, तो 0 जोड़ें। अंतिम परिणाम यह होगा कि कितने रिव्यूअर्स ने इस होटल को चुना (कुल मिलाकर) व्यवसाय बनाम अवकाश के लिए, या पालतू जानवर लाने के लिए, और यह होटल की सिफारिश करते समय उपयोगी जानकारी होगी
```python
# Process the Tags into new columns
@ -226,9 +232,9 @@ df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0)
```
### अपनी फ़ाइल सहेजें
### अपनी फ़ाइल को सेव करें
अंत में, डेटासेट को अब एक नए नाम के साथ सहेजें।
अंत में, डेटासेट को अब जैसा है वैसा ही एक नए नाम के साथ सेव करें।
```python
df.drop(["Review_Total_Negative_Word_Counts", "Review_Total_Positive_Word_Counts", "days_since_review", "Total_Number_of_Reviews_Reviewer_Has_Given"], axis = 1, inplace=True)
@ -240,11 +246,11 @@ df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False)
## भाव विश्लेषण संचालन
इस अंतिम सेक्शन में, आप समीक्षा कॉलम्स पर भाव विश्लेषण लागू करेंगे और परिणामों को एक डेटासेट में सहेजेंगे।
इस अंतिम सेक्शन में, आप रिव्यू कॉलम्स पर भाव विश्लेषण लागू करेंगे और परिणामों को डेटासेट में सेव करेंगे।
## अभ्यास: फ़िल्टर किए गए डेटा को लोड और सहेजें
## अभ्यास: फ़िल्टर किए गए डेटा को लोड और सेव करें
ध्यान दें कि अब आप पिछले सेक्शन में सहेजे गए फ़िल्टर किए गए डेटासेट को लोड कर रहे हैं, **मूल** डेटासेट को नहीं।
ध्यान दें कि अब आप पिछले सेक्शन में सेव किए गए फ़िल्टर किए गए डेटासेट को लोड कर रहे हैं, **मूल** डेटासेट को नहीं।
```python
import time
@ -267,13 +273,13 @@ df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False)
### स्टॉप वर्ड्स हटाना
यदि आप नकारात्मक और सकारात्मक समीक्षा कॉलम्स पर भाव विश्लेषण चलाते हैं, तो इसमें काफी समय लग सकता है। एक शक्तिशाली टेस्ट लैपटॉप पर तेज़ CPU के साथ परीक्षण किया गया, तो इसमें 12-14 मिनट लगे, यह इस बात पर निर्भर करता है कि कौन सा भाव लाइब्रेरी उपयोग किया गया। यह (सापेक्ष रूप से) लंबा समय है, इसलिए यह जांचने लायक है कि इसे तेज़ किया जा सकता है या नहीं।
यदि आप नेगेटिव और पॉजिटिव रिव्यू कॉलम्स पर भाव विश्लेषण चलाते हैं, तो इसमें लंबा समय लग सकता है। एक शक्तिशाली टेस्ट लैपटॉप पर तेज़ CPU के साथ परीक्षण किया गया, इसमें 12 - 14 मिनट लगे, यह इस बात पर निर्भर करता है कि कौन सा भाव लाइब्रेरी उपयोग किया गया। यह (सापेक्ष रूप से) लंबा समय है, इसलिए यह जांचने लायक है कि इसे तेज़ किया जा सकता है या नहीं।
स्टॉप वर्ड्स, या सामान्य अंग्रेजी शब्द जो वाक्य के भाव को नहीं बदलते, को हटाना पहला कदम है। इन्हें हटाने से भाव विश्लेषण तेज़ होना चाहिए, लेकिन कम सटीक नहीं (क्योंकि स्टॉप वर्ड्स भाव को प्रभावित नहीं करते, लेकिन वे विश्लेषण को धीमा कर देते हैं)।
स्टॉप वर्ड्स, या सामान्य अंग्रेजी शब्द जो वाक्य के भाव को नहीं बदलते, को हटाना पहला कदम है। उन्हें हटाने से भाव विश्लेषण तेज़ चलना चाहिए, लेकिन कम सटीक नहीं होना चाहिए (क्योंकि स्टॉप वर्ड्स भाव को प्रभावित नहीं करते, लेकिन वे विश्लेषण को धीमा कर देते हैं)।
सबसे लंबी नकारात्मक समीक्षा 395 शब्दों की थी, लेकिन स्टॉप वर्ड्स हटाने के बाद यह 195 शब्दों की हो गई
सबसे लंबा नेगेटिव रिव्यू 395 शब्दों का था, लेकिन स्टॉप वर्ड्स हटाने के बाद, यह 195 शब्दों का हो गया
स्टॉप वर्ड्स हटाना भी एक तेज़ ऑपरेशन है। 515,000 पंक्तियों पर 2 समीक्षा कॉलम्स से स्टॉप वर्ड्स हटाने में टेस्ट डिवाइस पर 3.3 सेकंड लगे। यह आपके डिवाइस की CPU गति, RAM, SSD की उपस्थिति, और अन्य कारकों पर निर्भर करता है कि इसमें थोड़ा अधिक या कम समय लग सकता है। ऑपरेशन की सापेक्ष छोटी अवधि का मतलब है कि यदि यह भाव विश्लेषण समय में सुधार करता है, तो यह करने लायक है।
स्टॉप वर्ड्स हटाना भी एक तेज़ ऑपरेशन है, 2 रिव्यू कॉलम्स से 515,000 पंक्तियों पर स्टॉप वर्ड्स हटाने में टेस्ट डिवाइस पर 3.3 सेकंड लगे। आपके लिए यह समय थोड़ा अधिक या कम हो सकता है, यह आपके डिवाइस की CPU स्पीड, RAM, SSD होने या न होने, और कुछ अन्य कारकों पर निर्भर करता है। ऑपरेशन की सापेक्ष छोटी अवधि का मतलब है कि यदि यह भाव विश्लेषण समय को सुधारता है, तो इसे करना उचित है।
```python
from nltk.corpus import stopwords
@ -296,11 +302,11 @@ df.Positive_Review = df.Positive_Review.apply(remove_stopwords)
```
### भाव विश्लेषण करना
अब आपको नकारात्मक और सकारात्मक समीक्षा कॉलम के लिए भाव विश्लेषण की गणना करनी चाहिए और परिणाम को 2 नए कॉलम में संग्रहीत करना चाहिए। भाव का परीक्षण समीक्षक के स्कोर के साथ तुलना करना होगा जो उसी समीक्षा के लिए दिया गया है। उदाहरण के लिए, यदि भाव विश्लेषण यह मानता है कि नकारात्मक समीक्षा का भाव 1 (अत्यधिक सकारात्मक भाव) है और सकारात्मक समीक्षा का भाव भी 1 है, लेकिन समीक्षक ने होटल को सबसे कम स्कोर दिया है, तो या तो समीक्षा का टेक्स्ट स्कोर से मेल नहीं खाता है, या भाव विश्लेषक भाव को सही ढंग से पहचानने में असमर्थ हो सकता है। आपको उम्मीद करनी चाहिए कि कुछ भाव स्कोर पूरी तरह से गलत होंगे, और अक्सर इसका कारण समझाया जा सकता है, जैसे कि समीक्षा अत्यधिक व्यंग्यात्मक हो सकती है "बिल्कुल, मुझे बिना हीटिंग वाले कमरे में सोना बहुत पसंद आया" और भाव विश्लेषक इसे सकारात्मक भाव मानता है, जबकि एक इंसान इसे पढ़कर समझ जाएगा कि यह व्यंग्य है।
अब आपको नेगेटिव और पॉजिटिव रिव्यू कॉलम्स के लिए भाव विश्लेषण की गणना करनी चाहिए, और परिणामों को 2 नए कॉलम्स में स्टोर करना चाहिए। भाव का परीक्षण इसे उसी रिव्यू के लिए रिव्यूअर के स्कोर से तुलना करना होगा। उदाहरण के लिए, यदि भाव नेगेटिव रिव्यू को 1 (अत्यधिक सकारात्मक भाव) और पॉजिटिव रिव्यू को 1 मानता है, लेकिन रिव्यूअर ने होटल को सबसे कम स्कोर दिया, तो या तो रिव्यू टेक्स्ट स्कोर से मेल नहीं खाता, या भाव विश्लेषक भाव को सही ढंग से पहचान नहीं सका। आपको उम्मीद करनी चाहिए कि कुछ भाव स्कोर पूरी तरह से गलत होंगे, और अक्सर यह समझाने योग्य होगा, जैसे कि रिव्यू अत्यधिक व्यंग्यात्मक हो सकता है "बिल्कुल मुझे बिना हीटिंग वाले कमरे में सोना बहुत पसंद आया" और भाव विश्लेषक सोचता है कि यह सकारात्मक भाव है, हालांकि एक मानव इसे पढ़कर जान जाएगा कि यह व्यंग्य था।
NLTK विभिन्न भाव विश्लेषकों को सीखने के लिए प्रदान करता है, और आप उन्हें बदल सकते हैं और देख सकते हैं कि भाव अधिक या कम सटीक है। यहां VADER भाव विश्लेषण का उपयोग किया गया है।
> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014.
> हुट्टो, C.J. और गिल्बर्ट, E.E. (2014). VADER: सोशल मीडिया टेक्स्ट के भाव विश्लेषण के लिए एक सरल नियम-आधारित मॉडल। आठवीं अंतर्राष्ट्रीय सम्मेलन वेबलॉग्स और सोशल मीडिया (ICWSM-14)। एन आर्बर, MI, जून 2014।
```python
from nltk.sentiment.vader import SentimentIntensityAnalyzer
@ -319,7 +325,7 @@ def calc_sentiment(review):
return vader_sentiment.polarity_scores(review)["compound"]
```
बाद में जब आप अपने प्रोग्राम में भाव की गणना करने के लिए तैयार हों, तो आप इसे प्रत्येक समीक्षा पर इस प्रकार लागू कर सकते हैं:
बाद में, जब आप अपने प्रोग्राम में भाव की गणना करने के लिए तैयार हों, तो आप इसे प्रत्येक समीक्षा पर इस प्रकार लागू कर सकते हैं:
```python
# Add a negative sentiment and positive sentiment column
@ -331,7 +337,7 @@ end = time.time()
print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds")
```
यह मेरे कंप्यूटर पर लगभग 120 सेकंड लेता है, लेकिन यह प्रत्येक कंप्यूटर पर अलग-अलग हो सकता है। यदि आप परिणामों को प्रिंट करना चाहते हैं और देखना चाहते हैं कि भाव समीक्षा से मेल खाता है या नहीं:
यह मेरे कंप्यूटर पर लगभग 120 सेकंड लेता है, लेकिन यह प्रत्येक कंप्यूटर पर अलग-अलग हो सकता है। यदि आप परिणाम प्रिंट करना चाहते हैं और देखना चाहते हैं कि भाव समीक्षा से मेल खाता है या नहीं:
```python
df = df.sort_values(by=["Negative_Sentiment"], ascending=True)
@ -340,7 +346,7 @@ df = df.sort_values(by=["Positive_Sentiment"], ascending=True)
print(df[["Positive_Review", "Positive_Sentiment"]])
```
फाइल का उपयोग करने से पहले अंतिम काम यह है कि इसे सेव करें! आपको अपने नए कॉलम को पुनः व्यवस्थित करने पर भी विचार करना चाहिए ताकि वे काम करने में आसान हों (यह एक सौंदर्यात्मक बदलाव है)।
चुनौती में उपयोग करने से पहले फाइल के साथ आखिरी काम यह है कि इसे सेव करें! आपको अपने सभी नए कॉलम को पुनः व्यवस्थित करने पर भी विचार करना चाहिए ताकि उनके साथ काम करना आसान हो (मानव के लिए, यह एक सौंदर्यात्मक बदलाव है)।
```python
# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)
@ -350,28 +356,28 @@ print("Saving results to Hotel_Reviews_NLP.csv")
df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
```
आपको [विश्लेषण नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) के पूरे कोड को चलाना चाहिए (उसके बाद जब आपने [फिल्टरिंग नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) को चलाया ह ताकि Hotel_Reviews_Filtered.csv फाइल उत्पन्न हो सके)।
आपको [विश्लेषण नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) के पूरे कोड को चलाना चाहिए (उसके बाद जब आपने [फिल्टरिंग नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) को चलाया ह ताकि Hotel_Reviews_Filtered.csv फाइल उत्पन्न हो सके)।
समीक्षा करने के लिए, चरण हैं:
1. मूल डेटा सेट फाइल **Hotel_Reviews.csv** को पिछले पाठ में [एक्सप्लोरर नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) के साथ एक्सप्लोर किया गया है।
2. Hotel_Reviews.csv को [फिल्टरिंग नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) द्वारा फिल्टर किया गया है, जिससे **Hotel_Reviews_Filtered.csv** प्राप्त होता है।
3. Hotel_Reviews_Filtered.csv को [भाव विश्लेषण नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) द्वारा प्रोसेस किया गया है, जिससे **Hotel_Reviews_NLP.csv** प्राप्त होता है।
4. NLP चैलेंज में नीचे **Hotel_Reviews_NLP.csv** का उपयोग करें।
4. नीचे दिए गए NLP चुनौती में Hotel_Reviews_NLP.csv का उपयोग करें।
### निष्कर्ष
जब आपने शुरुआत की थी, आपके पास कॉलम और डेटा वाला एक डेटा सेट था लेकिन इसका सारा डेटा सत्यापित या उपयोग नहीं किया जा सकता था। आपने डेटा को एक्सप्लोर किया, जो आवश्यक नहीं था उसे फिल्टर किया, टैग्स को उपयोगी चीजों में बदला, अपने औसत की गणना की, कुछ भाव कॉलम जोड़े और उम्मीद है कि प्राकृतिक टेक्स्ट को प्रोसेस करने के बारे में कुछ दिलचस्प बातें सीखी होंगी।
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/40/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## चैलेंज
## चुनौती
अब जब आपने अपने डेटा सेट का भाव विश्लेषण कर लिया है, तो देखें कि क्या आप इस पाठ्यक्रम में सीखी गई रणनीतियों (शायद क्लस्टरिंग?) का उपयोग करके भाव के आसपास पैटर्न निर्धारित कर सकते हैं।
## समीक्षा और स्व-अध्ययन
[इस Learn मॉड्यूल](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) को लें ताकि आप अधिक सीख सकें और टेक्स्ट में भाव को एक्सप्लोर करने के लिए विभिन्न टूल्स का उपयोग कर सकें।
[इस Learn मॉड्यूल](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) को लें ताकि आप टेक्स्ट में भाव को एक्सप्लोर करने के लिए अधिक जान सकें और विभिन्न टूल्स का उपयोग कर सकें।
## असाइनमेंट
@ -380,4 +386,4 @@ df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,67 +1,67 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3150d40f36a77857316ecaed5f31e856",
"translation_date": "2025-09-03T22:50:04+00:00",
"original_hash": "662b509c39eee205687726636d0a8455",
"translation_date": "2025-09-05T10:18:02+00:00",
"source_file": "7-TimeSeries/1-Introduction/README.md",
"language_code": "hi"
}
-->
# समय श्रृंखला पूर्वानुमान का परिचय
![्केच नोट में समय श्रृंखला का सारांश](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.hi.png)
![मय श्रृंखला का स्केच नोट में सारांश](../../../../sketchnotes/ml-timeseries.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
इस पाठ और अगले पाठ में, आप समय श्रृंखला पूर्वानुमान के बारे में थोड़ा जानेंगे, जो मशीन लर्निंग वैज्ञानिकों के कौशल का एक दिलचस्प और मूल्यवान हिस्सा है। यह विषय अन्य विषयों की तुलना में थोड़ा कम जाना जाता है। समय श्रृंखला पूर्वानुमान एक प्रकार का 'क्रिस्टल बॉल' है: जैसे कि किसी चर (जैसे कीमत) के पिछले प्रदर्शन के आधार पर, आप इसके भविष्य के संभावित मूल्य का अनुमान लगा सकते हैं।
इस पाठ और अगले पाठ में, आप समय श्रृंखला पूर्वानुमान के बारे में जानेंगे, जो मशीन लर्निंग वैज्ञानिकों के कौशल का एक दिलचस्प और मूल्यवान हिस्सा है, लेकिन अन्य विषयों की तुलना में थोड़ा कम जाना जाता है। समय श्रृंखला पूर्वानुमान एक प्रकार का 'क्रिस्टल बॉल' है: किसी चर (जैसे कीमत) के पिछले प्रदर्शन के आधार पर, आप इसके भविष्य के संभावित मूल्य की भविष्यवाणी कर सकते हैं।
[![समय श्रृंखला पूर्वानुमान का परिचय](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "समय श्रृंखला पूर्वानुमान का परिचय")
> 🎥 ऊपर दी गई छवि पर क्लिक करें समय श्रृंखला पूर्वानुमान के बारे में वीडियो देखने के लिए
> 🎥 ऊपर दी गई छवि पर क्लिक करें समय श्रृंखला पूर्वानुमान पर वीडियो देखने के लिए
## [पाठ से पहले का क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/41/)
## [पाठ-पूर्व प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
यह एक उपयोगी और दिलचस्प क्षेत्र है, जिसका व्यवसाय में वास्तविक मूल्य है, क्योंकि इसका सीधा उपयोग मूल्य निर्धारण, इन्वेंटरी और आपूर्ति श्रृंखला समस्याओं में होता है। जबकि गहन शिक्षण तकनीकों का उपयोग भविष्य के प्रदर्शन को बेहतर ढंग से अनुमान लगाने के लिए किया जाने लगा है, समय श्रृंखला पूर्वानुमान अभी भी क्लासिक मशीन लर्निंग तकनीकों से काफी प्रभावित क्षेत्र है।
यह एक उपयोगी और दिलचस्प क्षेत्र है, जिसका व्यवसाय में वास्तविक मूल्य है, क्योंकि इसका सीधा उपयोग मूल्य निर्धारण, इन्वेंटरी और आपूर्ति श्रृंखला समस्याओं को हल करने में होता है। जबकि गहन शिक्षण (डीप लर्निंग) तकनीकों का उपयोग भविष्य के प्रदर्शन की बेहतर भविष्यवाणी करने के लिए किया जाने लगा है, समय श्रृंखला पूर्वानुमान अभी भी क्लासिक मशीन लर्निंग तकनीकों से काफी प्रभावित है।
> पेन स्टेट का उपयोगी समय श्रृंखला पाठ्यक्रम [यहां](https://online.stat.psu.edu/stat510/lesson/1) पाया जा सकता है
> पेन स्टेट का उपयोगी समय श्रृंखला पाठ्यक्रम [यहां](https://online.stat.psu.edu/stat510/lesson/1) पाया जा सकता है
## परिचय
मान लीजिए कि आप स्मार्ट पार्किंग मीटर का एक समूह बनाए रखते हैं, जो समय के साथ कितनी बार और कितने समय तक उपयोग किए जाते हैं, इसका डेटा प्रदान करते हैं।
मान लीजिए कि आप स्मार्ट पार्किंग मीटरों की एक श्रृंखला का प्रबंधन करते हैं, जो समय के साथ उनके उपयोग और अवधि के बारे में डेटा प्रदान करते हैं।
> क्या होगा यदि आप मीटर के पिछले प्रदर्शन के आधार पर, आपूर्ति और मांग के नियमों के अनुसार इसके भविष्य के मूल्य का अनुमान लगा सकें?
> क्या होगा यदि आप मीटर के पिछले प्रदर्शन के आधार पर, आपूर्ति और मांग के नियमों के अनुसार, इसके भविष्य के मूल्य की भविष्यवाणी कर सकते हैं?
सटीक रूप से यह अनुमान लगाना कि कब कार्रवाई करनी है ताकि आप अपने लक्ष्य को प्राप्त कर सकें, एक चुनौती है जिसे समय श्रृंखला पूर्वानुमान द्वारा हल किया जा सकता है। व्यस्त समय में पार्किंग स्थान खोजने की कोशिश कर रहे लोगों को अधिक शुल्क देना उन्हें खुश नहीं करेगा, लेकिन यह निश्चित रूप से सड़कों को साफ करने के लिए राजस्व उत्पन्न करने का एक तरीका होगा!
सटीक भविष्यवाणी करना कि कब कार्रवाई करनी है ताकि अपने लक्ष्य को प्राप्त किया जा सके, एक चुनौती है जिसे समय श्रृंखला पूर्वानुमान द्वारा हल किया जा सकता है। व्यस्त समय में पार्किंग स्थान खोजने वाले लोगों से अधिक शुल्क लेना उन्हें खुश नहीं करेगा, लेकिन यह सड़कों की सफाई के लिए राजस्व उत्पन्न करने का एक निश्चित तरीका होगा!
आइए समय श्रृंखला एल्गोरिदम के कुछ प्रकारों का पता लगाएं और डेटा को साफ और तैयार करने के लिए एक नोटबुक शुरू करें। जिस डेटा का आप विश्लेषण करेंगे, वह GEFCom2014 पूर्वानुमान प्रतियोगिता से लिया गया है। इसमें 2012 से 2014 के बीच 3 वर्षों के घंटेवार बिजली लोड और तापमान मान शामिल हैं। बिजली लोड और तापमान के ऐतिहासिक पैटर्न को देखते हुए, आप बिजली लोड के भविष्य के मानों का अनुमान लगा सकते हैं।
आइए समय श्रृंखला एल्गोरिदम के कुछ प्रकारों का अन्वेषण करें और डेटा को साफ़ और तैयार करने के लिए एक नोटबुक शुरू करें। जिस डेटा का आप विश्लेषण करेंगे, वह GEFCom2014 पूर्वानुमान प्रतियोगिता से लिया गया है। इसमें 2012 से 2014 के बीच 3 वर्षों के घंटेवार बिजली लोड और तापमान मान शामिल हैं। बिजली लोड और तापमान के ऐतिहासिक पैटर्न को देखते हुए, आप बिजली लोड के भविष्य के मानों की भविष्यवाणी कर सकते हैं।
इस उदाहरण में, आप केवल ऐतिहासिक लोड डेटा का उपयोग करके एक समय कदम आगे का पूर्वानुमान लगाना सीखेंगे। हालांकि, शुरू करने से पहले, यह समझना उपयोगी है कि पर्दे के पीछे क्या हो रहा है।
इस उदाहरण में, आप केवल ऐतिहासिक लोड डेटा का उपयोग करके एक समय कदम आगे की भविष्यवाणी करना सीखेंगे। हालांकि, शुरू करने से पहले, यह समझना उपयोगी है कि पर्दे के पीछे क्या हो रहा है।
## कुछ परिभाषाएँ
जब 'समय श्रृंखला' शब्द का सामना करते हैं, तो आपको इसे कई अलग-अलग संदर्भों में समझने की आवश्यकता होती है।
जब आप 'समय श्रृंखला' शब्द सुनते हैं, तो आपको इसे विभिन्न संदर्भों में समझने की आवश्यकता होती है।
🎓 **समय श्रृंखला**
गणित में, "समय श्रृंखला डेटा बिंदुओं की एक श्रृंखला है जो समय क्रम में अनुक्रमित (या सूचीबद्ध या ग्राफ़) होती है। सबसे सामान्य रूप से, समय श्रृंखला एक अनुक्रम है जो समय में समान रूप से अंतराल वाले बिंदुओं पर लिया जाता है।" समय श्रृंखला का एक उदाहरण [डॉव जोन्स इंडस्ट्रियल एवरेज](https://wikipedia.org/wiki/Time_series) का दैनिक समापन मूल्य है। समय श्रृंखला प्लॉट्स और सांख्यिकीय मॉडलिंग का उपयोग अक्सर सिग्नल प्रोसेसिंग, मौसम पूर्वानुमान, भूकंप भविष्यवाणी, और अन्य क्षेत्रों में किया जाता है जहां घटनाएं होती हैं और डेटा बिंदुओं को समय के साथ प्लॉट किया जा सकता है।
गणित में, "समय श्रृंखला डेटा बिंदुओं की एक श्रृंखला है जो समय क्रम में अनुक्रमित (या सूचीबद्ध या ग्राफ़) होती है। सबसे सामान्यतः, समय श्रृंखला एक अनुक्रम है जिसे समय में समान रूप से अंतराल वाले बिंदुओं पर लिया जाता है।" समय श्रृंखला का एक उदाहरण [डॉव जोन्स इंडस्ट्रियल एवरेज](https://wikipedia.org/wiki/Time_series) का दैनिक समापन मूल्य है। समय श्रृंखला प्लॉट और सांख्यिकीय मॉडलिंग का उपयोग अक्सर सिग्नल प्रोसेसिंग, मौसम पूर्वानुमान, भूकंप की भविष्यवाणी और अन्य क्षेत्रों में किया जाता है, जहां घटनाएं होती हैं और डेटा बिंदुओं को समय के साथ प्लॉट किया जा सकता है।
🎓 **समय श्रृंखला विश्लेषण**
समय श्रृंखला विश्लेषण, उपरोक्त समय श्रृंखला डेटा का विश्लेषण है। समय श्रृंखला डेटा अलग-अलग रूप ले सकता है, जिसमें 'विच्छेदित समय श्रृंखला' शामिल है, जो किसी समय श्रृंखला के विकास में पैटर्न का पता लगाती है, किसी बाधित घटना से पहले और बाद में। समय श्रृंखला के लिए आवश्यक विश्लेषण डेटा की प्रकृति पर निर्भर करता है। समय श्रृंखला डेटा स्वयं संख्याओं या वर्णों की श्रृंखला के रूप में हो सकता है।
समय श्रृंखला विश्लेषण, उपरोक्त उल्लिखित समय श्रृंखला डेटा का विश्लेषण है। समय श्रृंखला डेटा विभिन्न रूपों में हो सकता है, जिसमें 'विच्छेदित समय श्रृंखला' शामिल है, जो किसी घटना के पहले और बाद में समय श्रृंखला के विकास में पैटर्न का पता लगाती है। समय श्रृंखला के लिए आवश्यक विश्लेषण डेटा की प्रकृति पर निर्भर करता है। समय श्रृंखला डेटा स्वयं संख्याओं या वर्णों की श्रृंखला के रूप में हो सकता है।
इस प्रकार के डेटा का विश्लेषण करने के लिए विभिन्न विधियों का उपयोग किया जाता है, जिमें आवृत्ति-डोमेन और समय-डोमेन, रैखिक और गैर-रैखिक, और अन्य शामिल हैं। [यहां](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) इस प्रकार के डेटा का विश्लेषण करने के कई तरीकों के बारे में अधिक जानें।
इस प्रकार के डेटा का विश्लेषण करने के लिए विभिन्न विधियों का उपयोग किया जाता है, जिमें आवृत्ति-डोमेन और समय-डोमेन, रैखिक और गैर-रैखिक, और अन्य शामिल हैं। [यहां और जानें](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) कि इस प्रकार के डेटा का विश्लेषण करने के कितने तरीके हैं।
🎓 **समय श्रृंखला पूर्वानुमान**
समय श्रृंखला पूर्वानुमान एक मॉडल का उपयोग करके भविष्य के मानों का अनुमान लगाना है, जो पहले से एकत्र किए गए डेटा द्वारा प्रदर्शित पैटर्न पर आधारित होता है। जबकि समय श्रृंखला डेटा का पता लगाने के लिए प्रतिगमन मॉडल का उपयोग करना संभव है, समय सूचकांक को x चर के रूप में प्लॉट पर रखते हुए, ऐसे डेटा का सबसे अच्छा विश्लेषण विशेष प्रकार के मॉडलों का उपयोग करके किया जाता है।
समय श्रृंखला पूर्वानुमान एक मॉडल का उपयोग करके भविष्य के मानों की भविष्यवाणी करना है, जो पहले एकत्र किए गए डेटा द्वारा प्रदर्शित पैटर्न पर आधारित होता है। जबकि समय श्रृंखला डेटा का पता लगाने के लिए प्रतिगमन मॉडल का उपयोग करना संभव है, समय सूचकांक को प्लॉट पर x चर के रूप में रखते हुए, ऐसे डेटा का विश्लेषण विशेष प्रकार के मॉडलों का उपयोग करके सबसे अच्छा किया जाता है।
समय श्रृंखला डेटा एक क्रमबद्ध अवलोकनों की सूची है, जो रैखिक प्रतिगमन द्वारा विश्लेषण किए जाने वाले डेटा से अलग है। सबसे सामान्य मॉडल ARIMA है, जो "ऑटोरेग्रेसिव इंटीग्रेटेड मूविंग एवरेज" का संक्षिप्त रूप है।
समय श्रृंखला डेटा एक क्रमबद्ध अवलोकनों की सूची है, जो रैखिक प्रतिगमन द्वारा विश्लेषण किए जा सकने वाले डेटा से अलग है। सबसे सामान्य मॉडल ARIMA है, जो "ऑटोरेग्रेसिव इंटीग्रेटेड मूविंग एवरेज" का संक्षिप्त रूप है।
[ARIMA मॉडल](https://online.stat.psu.edu/stat510/lesson/1/1.1) "एक श्रृंखला के वर्तमान मान को पिछले मानों और पिछले पूर्वानुमान त्रुटियों से संबंधित करते हैं।" ये समय-डोमेन डेटा का विश्लेषण करने के लिए सबसे उपयुक्त हैं, जहां डेटा समय के साथ क्रमबद्ध होता है।
[ARIMA मॉडल](https://online.stat.psu.edu/stat510/lesson/1/1.1) "श्रृंखला के वर्तमान मूल्य को पिछले मानों और पिछले पूर्वानुमान त्रुटियों से संबंधित करते हैं।" ये समय-डोमेन डेटा का विश्लेषण करने के लिए सबसे उपयुक्त हैं, जहां डेटा समय के साथ क्रमबद्ध होता है।
> ARIMA मॉडलों के कई प्रकार हैं, जिनके बारे में आप [यहां](https://people.duke.edu/~rnau/411arim.htm) अधिक जान सकते हैं और अगले पाठ में आप इन्हें छूएंगे।
> ARIMA मॉडलों के कई प्रकार हैं, जिनके बारे में आप [यहां](https://people.duke.edu/~rnau/411arim.htm) जान सकते हैं और जिन पर आप अगले पाठ में चर्चा करेंगे।
अगले पाठ में, आप [Univariate Time Series](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) का उपयोग करके एक ARIMA मॉडल बनाएंगे, जो एक चर पर केंद्रित होता है जो समय के साथ अपना मान बदलता है। इस प्रकार के डेटा का एक उदाहरण [यह डेटा सेट](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) है, जो Mauna Loa वेधशाला में मासिक CO2 सांद्रता को रिकॉर्ड करता है:
अगले पाठ में, आप [एकवचनीय समय श्रृंखला](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) का उपयोग करके एक ARIMA मॉडल बनाएंगे, जो एक चर पर केंद्रित है जो समय के साथ अपना मान बदलता है। इस प्रकार के डेटा का एक उदाहरण [यह डेटासेट](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) है, जो मौना लोआ वेधशाला में मासिक CO2 सांद्रता को रिकॉर्ड करता है:
| CO2 | YearMonth | Year | Month |
| :----: | :-------: | :---: | :---: |
@ -78,47 +78,47 @@ CO_OP_TRANSLATOR_METADATA:
| 329.25 | 1975.88 | 1975 | 11 |
| 330.97 | 1975.96 | 1975 | 12 |
✅ इस डेटा सेट में वह चर पहचानें जो समय के साथ बदलता है।
✅ इस डेटासेट में उस चर की पहचान करें जो समय के साथ बदलता है।
## समय श्रृंखला डेटा की विशेषताओं पर विचार करें
## समय श्रृंखला डेटा की विशेषताओं पर विचार करना
जब आप समय श्रृंखला डेटा को देखते हैं, तो आप देख सकते हैं कि इसमें [कुछ विशेषताए](https://online.stat.psu.edu/stat510/lesson/1/1.1) होती हैं, जिन्हें बेहतर ढंग से समझने के लिए ध्यान में रखना और कम करना आवश्यक है। यदि आप समय श्रृंखला डेटा को संभावित रूप से एक 'सिग्नल' के रूप में मानते हैं जिसे आप विश्लेषण करना चाहते हैं, तो इन विशेषताओं को 'शोर' के रूप में सोचा जा सकता है। आपको अक्सर इन 'शोर' को कम करने के लिए कुछ सांख्यिकीय तकनीकों का उपयोग करके इन विशेषताओं को ऑफसेट करना होगा।
जब आप समय श्रृंखला डेटा को देखते हैं, तो आप देख सकते हैं कि इसमें [कुछ विशेषताए](https://online.stat.psu.edu/stat510/lesson/1/1.1) होती हैं, जिन्हें आपको बेहतर समझने के लिए ध्यान में रखना और कम करना होगा। यदि आप समय श्रृंखला डेटा को संभावित रूप से एक 'सिग्नल' के रूप में देखते हैं जिसे आप विश्लेषण करना चाहते हैं, तो इन विशेषताओं को 'शोर' के रूप में सोचा जा सकता है। आपको अक्सर इन 'शोर' को कम करने के लिए कुछ सांख्यिकीय तकनीकों का उपयोग करना होगा।
यहां कुछ अवधारणाएं दी गई हैं जिन्हें आपको समय श्रृंखला के साथ काम करने में सक्षम होने के लिए जानना चाहिए:
यहां कुछ अवधारणाएं दी गई हैं जिन्हें आपको समय श्रृंखला के साथ काम करने के लिए जानना चाहिए:
🎓 **रुझान**
🎓 **रुझान (Trends)**
रुझान समय के साथ मापने योग्य वृद्धि और कमी के रूप में परिभाषित किए जाते हैं। [अधिक पढ़ें](https://machinelearningmastery.com/time-series-trends-in-python)। समय श्रृंखला के संदर्भ में, यह इस बारे में है कि समय श्रृंखला से रुझानों का उपयोग कैसे करें और यदि आवश्यक हो तो उन्हें कैसे हटाएं।
रुझान समय के साथ मापने योग्य वृद्धि और कमी को परिभाषित करते हैं। [अधिक पढ़ें](https://machinelearningmastery.com/time-series-trends-in-python)। समय श्रृंखला के संदर्भ में, यह इस बारे में है कि रुझानों का उपयोग कैसे करें और, यदि आवश्यक हो, तो उन्हें समय श्रृंखला से कैसे हटाएं।
🎓 **[मौसमीता](https://machinelearningmastery.com/time-series-seasonality-with-python/)**
🎓 **[मौसमी प्रभाव (Seasonality)](https://machinelearningmastery.com/time-series-seasonality-with-python/)**
मौसमीता को आवधिक उतार-चढ़ाव के रूप में परिभाषित किया गया है, जैसे कि छुट्टियों के दौरान बिक्री पर प्रभाव। [देखें](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) कि कैसे विभिन्न प्रकार के प्लॉट डेटा में मौसमीता प्रदर्शित करते हैं।
मौसमी प्रभाव को आवधिक उतार-चढ़ाव के रूप में परिभाषित किया जाता है, जैसे कि छुट्टियों के दौरान बिक्री पर प्रभाव। [देखें](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) कि विभिन्न प्रकार के प्लॉट डेटा में मौसमी प्रभाव को कैसे प्रदर्शित करते हैं।
🎓 **आउटलायर्स**
🎓 **आउटलायर्स (Outliers)**
आउटलायर्स मानक डेटा विचरण से बहुत दूर होते हैं।
आउटलायर्स वे डेटा बिंदु हैं जो मानक डेटा भिन्नता से बहुत दूर होते हैं।
🎓 **दीर्घकालिक चक्र**
🎓 **दीर्घकालिक चक्र (Long-run cycle)**
मौसमीता से स्वतंत्र, डेटा एक दीर्घकालिक चक्र प्रदर्शित कर सकता है, जैसे कि एक आर्थिक मंदी जो एक वर्ष से अधिक समय तक चलती है।
मौसमी प्रभाव से स्वतंत्र, डेटा एक दीर्घकालिक चक्र प्रदर्शित कर सकता है, जैसे कि एक आर्थिक मंदी जो एक वर्ष से अधिक समय तक चलती है।
🎓 **स्थिर विचरण**
🎓 **स्थिर विचलन (Constant variance)**
समय के साथ, कुछ डेटा स्थिर उतार-चढ़ाव प्रदर्शित करते हैं, जैसे कि दिन और रात के दौरान ऊर्जा उपयोग।
समय के साथ, कुछ डेटा स्थिर उतार-चढ़ाव प्रदर्शित करते हैं, जैसे दिन और रात के दौरान ऊर्जा उपयोग।
🎓 **अचानक परिवर्तन**
🎓 **अचानक परिवर्तन (Abrupt changes)**
डेटा अचानक परिवर्तन प्रदर्शित कर सकता है जिसे आगे विश्लेषण की आवश्यकता हो सकती है। उदाहरण के लिए, COVID के कारण व्यवसायों का अचानक बंद होना डेटा में परिवर्तन का कारण बना।
डेटा अचानक परिवर्तन प्रदर्शित कर सकता है, जिसे आगे विश्लेषण की आवश्यकता हो सकती है। उदाहरण के लिए, COVID के कारण व्यवसायों का अचानक बंद होना डेटा में परिवर्तन का कारण बना।
✅ यहां एक [नमूना समय श्रृंखला प्लॉट](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) है जो कुछ वर्षों में दैनिक इन-गेम मुद्रा खर्च दिखाता है। क्या आप इस डेटा में ऊपर सूचीबद्ध किसी भी विशेषता की पहचान कर सकते हैं?
✅ यहां एक [उदाहरण समय श्रृंखला प्लॉट](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) है, जो कुछ वर्षों में दैनिक इन-गेम मुद्रा खर्च दिखाता है। क्या आप इस डेटा में ऊपर सूचीबद्ध किसी भी विशेषता की पहचान कर सकते हैं?
![इन-गेम मुद्रा खर्च](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.hi.png)
![इन-गेम मुद्रा खर्च](../../../../7-TimeSeries/1-Introduction/images/currency.png)
## अभ्यास - बिजली उपयोग डेटा के साथ शुरुआत करें
## अभ्यास - बिजली उपयोग डेटा के साथ शुरुआत करना
आइए एक समय श्रृंखला मॉडल बनाना शुरू करें ताकि पिछले उपयोग को देखते हुए भविष्य के बिजली उपयोग का अनुमान लगाया जा सके।
आइए एक समय श्रृंखला मॉडल बनाना शुरू करें, जो पिछले उपयोग को देखते हुए भविष्य के बिजली उपयोग की भविष्यवाणी कर सके।
> इस उदाहरण में डेटा GEFCom2014 पूर्वानुमान प्रतियोगिता से लिया गया है। इसमें 2012 से 2014 के बीच 3 वर्षों के घंटेवार बिजली लोड और तापमान मान शामिल हैं।
> इस उदाहरण में उपयोग किया गया डेटा GEFCom2014 पूर्वानुमान प्रतियोगिता से लिया गया है। इसमें 2012 से 2014 के बीच 3 वर्षों के घंटेवार बिजली लोड और तापमान मान शामिल हैं।
>
> Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli और Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016।
@ -131,9 +131,9 @@ CO_OP_TRANSLATOR_METADATA:
%matplotlib inline
```
ध्यान दें, आप शामिल `common` फ़ोल्डर से फाइलों का उपयोग कर रहे हैं जो आपके वातावरण को सेट करते हैं और डेटा डाउनलोड करने को संभालते हैं
ध्यान दें, आप शामिल `common` फ़ोल्डर से फाइलों का उपयोग कर रहे हैं, जो आपके वातावरण को सेट करता है और डेटा डाउनलोड को संभालता है
2. इसके बाद, `load_data()` और `head()`ो कॉल करके डेटा को एक डेटा फ्रेम के रूप में जांचें:
2. अगला, डेटा को एक डेटाफ्रेम के रूप में `load_data()` और `head()` कॉल करके जांचें:
```python
data_dir = './data'
@ -141,7 +141,7 @@ CO_OP_TRANSLATOR_METADATA:
energy.head()
```
आप देख सकते हैं कि दो कॉलम हैं जो तारीख और लोड का प्रतिनिधित्व करते हैं:
आप देख सकते हैं कि दो कॉलम हैं जो तिथि और लोड का प्रतिनिधित्व करते हैं:
| | load |
| :-----------------: | :----: |
@ -151,7 +151,7 @@ CO_OP_TRANSLATOR_METADATA:
| 2012-01-01 03:00:00 | 2402.0 |
| 2012-01-01 04:00:00 | 2403.0 |
3. अब, `plot()`ो कॉल करके डेटा को प्लॉट करें:
3. अब, `plot()` कॉल करके डेटा प्लॉट करें:
```python
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -160,9 +160,9 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![ऊर्जा प्लॉट](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.hi.png)
![ऊर्जा प्लॉट](../../../../7-TimeSeries/1-Introduction/images/energy-plot.png)
4. अब, जुलाई 2014 के पहले सप्ताह को `[from date]: [to date]` पैटर्न में `energy` के इनपुट के रूप में प्रदान करके प्लॉट करें:
4. अब, जुलाई 2014 के पहले सप्ताह को `[from date]: [to date]` पैटर्न में `energy` के रूप में इनपुट देकर प्लॉट करें:
```python
energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -171,9 +171,9 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![जुलाई](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.hi.png)
![जुलाई](../../../../7-TimeSeries/1-Introduction/images/july-2014.png)
एक सुंदर प्लॉट! इन प्लॉट्स को देखें और देखें कि क्या आप ऊपर सूचीबद्ध किसी भी विशेषता को निर्धारित कर सकते हैं। डेटा को विज़ुअलाइज़ करके हम क्या निष्कर्ष निकाल सकते हैं?
एक सुंदर प्लॉट! इन प्लॉट्स को देखें और देखें कि क्या आप ऊपर सूचीबद्ध किसी भी विशेषता की पहचान कर सकते हैं। डेटा को विज़ुअलाइज़ करके हम क्या निष्कर्ष निकाल सकते हैं?
अगले पाठ में, आप एक ARIMA मॉडल बनाएंगे ताकि कुछ पूर्वानुमान तैयार किए जा सकें।
@ -181,13 +181,13 @@ CO_OP_TRANSLATOR_METADATA:
## 🚀चुनौती
उन सभी उद्योगों और क्षेत्रों की एक सूची बनाएं जो समय श्रृंखला पूर्वानुमान से लाभान्वित हो सकते हैं। क्या आप इन तकनीकों के कला, अर्थमिति, पारिस्थितिकी, खुदरा, उद्योग, वित्त में उपयोग के बारे में सोच सकते हैं? और कहाँ?
उन सभी उद्योगों और क्षेत्रों की एक सूची बनाएं, जो समय श्रृंखला पूर्वानुमान से लाभान्वित हो सकते हैं। क्या आप इन तकनीकों के किसी अनुप्रयोग के बारे में सोच सकते हैं, जैसे कला, अर्थमिति, पारिस्थितिकी, खुदरा, उद्योग, वित्त? और कहां?
## [पाठ के बाद का क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/42/)
## [पाठ-पश्चात प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
हालांकि हम उन्हें यहां कवर नहीं करेंगे, लेकिन कभी-कभी समय श्रृंखला पूर्वानुमान के क्लासिक तरीकों को बढ़ाने के लिए न्यूरल नेटवर्क का उपयोग किया जाता है। उनके बारे में [इस लेख](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) में अधिक पढ़ें।
हालांकि हम यहां उन्हें कवर नहीं करेंगे, लेकिन कभी-कभी समय श्रृंखला पूर्वानुमान की क्लासिक विधियों को बढ़ाने के लिए न्यूरल नेटवर्क का उपयोग किया जाता है। उनके बारे में [इस लेख](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) में और पढ़ें।
## असाइनमेंट
@ -196,4 +196,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,21 +1,21 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2f400075e003e749fdb0d6b3b4787a99",
"translation_date": "2025-09-03T22:45:32+00:00",
"original_hash": "917dbf890db71a322f306050cb284749",
"translation_date": "2025-09-05T10:17:13+00:00",
"source_file": "7-TimeSeries/2-ARIMA/README.md",
"language_code": "hi"
}
-->
# ARIMA के साथ समय श्रृंखला पूर्वानुमान
पिछले पाठ में, आपने समय श्रृंखला पूर्वानुमान के बारे में थोड़ा सीखा और एक डेटा सेट लोड किया जो एक समय अवधि में विद्युत भार के उतार-चढ़ाव को दिखाता है।
पिछले पाठ में, आपने समय श्रृंखला पूर्वानुमान के बारे में थोड़ा सीखा और एक डेटा सेट लोड किया जो एक समय अवधि के दौरान विद्युत भार में उतार-चढ़ाव दिखाता है।
[![ARIMA का परिचय](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA का परिचय")
> 🎥 ऊपर दी गई छवि पर क्लिक करें: ARIMA मॉडल का संक्षिप्त परिचय। उदाहरण R में किया गया है, लेकिन अवधारणाएं सार्वभौमिक हैं।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/43/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## परिचय
@ -23,9 +23,9 @@ CO_OP_TRANSLATOR_METADATA:
## सामान्य अवधारणाएं
ARIMA के साथ काम करने के लिए, आपको कुछ अवधारणाओं को समझना होगा:
ARIMA के साथ काम करने के लिए, आपको कुछ अवधारणाओं के बारे में जानना होगा:
- 🎓 **स्थिरता**। सांख्यिकीय संदर्भ में, स्थिरता उस डेटा को संदर्भित करती है जिसका वितरण समय में स्थानांतरित होने पर नहीं बदलता। गैर-स्थिर डेटा, फिर, रुझानों के कारण उतार-चढ़ाव दिखाता है जिसे विश्लेषण करने के लिए बदलना आवश्यक है। उदाहरण के लिए, मौसमीता डेटा में उतार-चढ़ाव ला सकती है और इसे 'मौसमी-डिफरेंसिंग' प्रक्रिया द्वारा समाप्त किया जा सकता है।
- 🎓 **स्थिरता**। सांख्यिकीय संदर्भ में, स्थिरता उस डेटा को संदर्भित करती है जिसका वितरण समय में स्थानांतरित होने पर नहीं बदलता। गैर-स्थिर डेटा, फिर, रुझानों के कारण उतार-चढ़ाव दिखाता है जिसे विश्लेषण करने के लिए बदलना आवश्यक है। उदाहरण के लिए, मौसमीता डेटा में उतार-चढ़ाव ला सकती है और इसे 'मौसमी-डिफरेंसिंग' की प्रक्रिया द्वारा समाप्त किया जा सकता है।
- 🎓 **[डिफरेंसिंग](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**। सांख्यिकीय संदर्भ में, डिफरेंसिंग डेटा को स्थिर बनाने के लिए इसे बदलने की प्रक्रिया को संदर्भित करता है, जिससे इसके गैर-स्थिर रुझान को हटाया जाता है। "डिफरेंसिंग समय श्रृंखला के स्तर में बदलाव को हटाता है, रुझान और मौसमीता को समाप्त करता है और परिणामस्वरूप समय श्रृंखला के औसत को स्थिर करता है।" [Shixiong et al द्वारा पेपर](https://arxiv.org/abs/1904.07632)
@ -33,13 +33,13 @@ ARIMA के साथ काम करने के लिए, आपको क
ARIMA के भागों को बेहतर ढंग से समझने के लिए आइए इसे विस्तार से देखें कि यह हमें समय श्रृंखला को मॉडल करने और इसके खिलाफ पूर्वानुमान बनाने में कैसे मदद करता है।
- **AR - ऑटोरेग्रेसिव के लिए**। जैसा कि नाम से पता चलता है, ऑटोरेग्रेसिव मॉडल आपके डेटा में पिछले मानों को 'पीछे' देखने और उनके बारे में धारणाएं बनाने के लिए विश्लेषण करते हैं। इन पिछले मानों को 'लैग्स' कहा जाता है। एक उदाहरण ह डेटा होगा जो पेंसिल की मासिक बिक्री दिखाता है। प्रत्येक महीने की बिक्री कुल को डेटा सेट में एक 'विकसित चर' माना जाएगा। यह मॉडल इस प्रकार बनाया गया है कि "रुचि का विकसित चर अपने स्वयं के लैग्ड (यानी, पिछले) मानों पर पुन: स्थापित होता है।" [विकिपीडिया](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **AR - ऑटोरेग्रेसिव के लिए**। जैसा कि नाम से पता चलता है, ऑटोरेग्रेसिव मॉडल समय में 'पीछे' देखते हैं ताकि आपके डेटा में पिछले मानों का विश्लेषण किया जा सके और उनके बारे में धारणाएं बनाई जा सकें। इन पिछले मानों को 'लैग्स' कहा जाता है। एक उदाहरण होगा डेटा जो पेंसिल की मासिक बिक्री दिखाता है। प्रत्येक महीने की बिक्री कुल को डेटा सेट में एक 'विकसित चर' माना जाएगा। यह मॉडल इस प्रकार बनाया गया है कि "रुचि का विकसित चर अपने स्वयं के लैग्ड (यानी, पिछले) मानों पर पुन: स्थापित होता है।" [विकिपीडिया](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **I - इंटीग्रेटेड के लिए**। समान 'ARMA' मॉडल के विपरीत, ARIMA में 'I' इसके *[इंटीग्रेटेड](https://wikipedia.org/wiki/Order_of_integration)* पहलू को संदर्भित करता है। डेटा को 'इंटीग्रेटेड' किया जाता है जब गैर-स्थिरता को समाप्त करने के लिए डिफरेंसिंग चरण लागू किए जाते हैं
- **I - इंटीग्रेटेड के लिए**। समान 'ARMA' मॉडल के विपरीत, ARIMA में 'I' इसके *[इंटीग्रेटेड](https://wikipedia.org/wiki/Order_of_integration)* पहलू को संदर्भित करता है। गैर-स्थिरता को समाप्त करने के लिए डिफरेंसिंग चरण लागू होने पर डेटा 'इंटीग्रेटेड' होता है
- **MA - मूविंग एवरेज के लिए**। इस मॉडल का [मूविंग-एवरेज](https://wikipedia.org/wiki/Moving-average_model) पहलू उस आउटपुट वेरिएबल को संदर्भित करता है जो लैग्स के वर्तमान और पिछले मानों को देखकर निर्धारित किया जाता है।
- **MA - मूविंग एवरेज के लिए**। इस मॉडल का [मूविंग-एवरेज](https://wikipedia.org/wiki/Moving-average_model) पहलू आउटपुट वेरिएबल को संदर्भित करता है जो लैग्स के वर्तमान और पिछले मानों को देखकर निर्धारित किया जाता है।
निचला रेखा: ARIMA का उपयोग समय श्रृंखला डेटा के विशेष रूप को यथासंभव करीब से फिट करने के लिए किया जाता है।
सारांश: ARIMA का उपयोग समय श्रृंखला डेटा के विशेष रूप को यथासंभव करीब से फिट करने के लिए किया जाता है।
## अभ्यास - ARIMA मॉडल बनाएं
@ -79,7 +79,7 @@ ARIMA के भागों को बेहतर ढंग से समझ
energy.head(10)
```
1. जनवरी 2012 से दिसंबर 2014 तक उपलब्ध सभी ऊर्जा डेटा को प्लॉट करें। कोई आश्चर्य नहीं होना चाहिए क्योंकि हमने यह डेटा पिछले पाठ में देखा था:
1. जनवरी 2012 से दिसंबर 2014 तक उपलब्ध ऊर्जा डेटा को प्लॉट करें। इसमें कोई आश्चर्य नहीं होना चाहिए क्योंकि हमने यह डेटा पिछले पाठ में देखा था:
```python
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -92,7 +92,7 @@ ARIMA के भागों को बेहतर ढंग से समझ
### प्रशिक्षण और परीक्षण डेटा सेट बनाएं
अब आपका डेटा लोड हो गया है, इसलिए आप इसे ट्रेन और टेस्ट सेट में विभाजित कर सकते हैं। आप अपने मॉडल को ट्रेन सेट पर प्रशिक्षित करेंगे। हमेशा की तरह, मॉडल के प्रशिक्षण समाप्त होने के बाद, आप टेस्ट सेट का उपयोग करके इसकी सटीकता का मूल्यांकन करेंगे। आपको यह सुनिश्चित करना होगा कि टेस्ट सेट ट्रेनिंग सेट की तुलना में बाद की अवधि को कवर करता है ताकि यह सुनिश्चित हो सके कि मॉडल भविष्य की समय अवधि से जानकारी प्राप्त न करे।
अब आपका डेटा लोड हो गया है, इसलिए आप इसे ट्रेन और टेस्ट सेट में विभाजित कर सकते हैं। आप अपने मॉडल को ट्रेन सेट पर प्रशिक्षित करेंगे। हमेशा की तरह, मॉडल के प्रशिक्षण समाप्त होने के बाद, आप टेस्ट सेट का उपयोग करके इसकी सटीकता का मूल्यांकन करेंगे। आपको यह सुनिश्चित करना होगा कि टेस्ट सेट ट्रेनिंग सेट की तुलना में समय की बाद की अवधि को कवर करता है ताकि यह सुनिश्चित हो सके कि मॉडल भविष्य की समय अवधि से जानकारी प्राप्त न करे।
1. सितंबर 1 से अक्टूबर 31, 2014 तक की दो महीने की अवधि को ट्रेनिंग सेट में आवंटित करें। टेस्ट सेट में नवंबर 1 से दिसंबर 31, 2014 तक की दो महीने की अवधि शामिल होगी:
@ -114,17 +114,17 @@ ARIMA के भागों को बेहतर ढंग से समझ
plt.show()
```
![ट्रेनिंग और टेस्टिंग डेटा](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.hi.png)
![ट्रेनिंग और टेस्टिंग डेटा](../../../../7-TimeSeries/2-ARIMA/images/train-test.png)
इसलिए, डेटा को प्रशिक्षित करने के लिए अपेक्षाकृत छोटे समय विंडो का उपयोग पर्याप्त होना चाहिए।
> नोट: चूंकि हम ARIMA मॉडल को फिट करने के लिए उपयोग किए जाने वाले फ़ंक्शन इन-सैंपल मान्यता का उपयोग करते हैं, हम मान्यता डेटा को छोड़ देंगे।
> नोट: चूंकि हम ARIMA मॉडल को फिट करने के लिए उपयोग किए जाने वाले फ़ंक्शन में फिटिंग के दौरान इन-सैंपल मान्यता का उपयोग करते हैं, हम मान्यता डेटा को छोड़ देंगे।
### प्रशिक्षण के लिए डेटा तैयार करें
अब, आपको डेटा को फ़िल्टर और स्केल करके प्रशिक्षण के लिए तैयार करना होगा। अपने डेटा सेट को केवल आवश्यक समय अवधि और कॉलम को शामिल करने के लिए फ़िल्टर करें, और डेटा को 0,1 के अंतराल में प्रोजेक्ट करने के लिए स्केल करें।
अब, आपको डेटा को फ़िल्टर और स्केल करके प्रशिक्षण के लिए तैयार करना होगा। अपने डेटा सेट को केवल आवश्यक समय अवधि और कॉलम शामिल करने के लिए फ़िल्टर करें, और डेटा को 0,1 के अंतराल में प्रोजेक्ट करने के लिए स्केल करें।
1. मूल डेटा सेट को केवल उपरोक्त समय अवधि प्रति सेट और केवल आवश्यक कॉलम 'load' और तारीख को शामिल करने के लिए फ़िल्टर करें:
1. मूल डेटा सेट को केवल उपरोक्त समय अवधि प्रति सेट और केवल आवश्यक कॉलम 'लोड' और तारीख को शामिल करने के लिए फ़िल्टर करें:
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@ -157,11 +157,11 @@ ARIMA के भागों को बेहतर ढंग से समझ
plt.show()
```
![मूल](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.hi.png)
![मूल](../../../../7-TimeSeries/2-ARIMA/images/original.png)
> मूल डेटा
![स्केल किया गया](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.hi.png)
![स्केल किया गया](../../../../7-TimeSeries/2-ARIMA/images/scaled.png)
> स्केल किया गया डेटा
@ -180,17 +180,17 @@ ARIMA के भागों को बेहतर ढंग से समझ
1. मॉडल को परिभाषित करें `SARIMAX()` को कॉल करके और मॉडल पैरामीटर: p, d, और q पैरामीटर, और P, D, और Q पैरामीटर पास करें।
2. ट्रेनिंग डेटा के लिए मॉडल तैयार करें `fit()` फ़ंक्शन को कॉल करके।
3. भविष्यवाणी करें `forecast()` फ़ंक्शन को कॉल करके और पूर्वानुमान के लिए चरणों (होराइजन) की संख्या निर्दिष्ट करें।
3. भविष्यवाणी करें `forecast()` फ़ंक्शन को कॉल करके और पूर्वानुमान के लिए चरणों की संख्या (होराइजन) निर्दिष्ट करें।
> 🎓 ये सभी पैरामीटर किस लिए हैं? ARIMA मॉडल में 3 पैरामीटर होते हैं जो समय श्रृंखला के प्रमुख पहलुओं को मॉडल करने में मदद करते हैं: मौसमीता, रुझान, और शोर। ये पैरामीटर हैं:
`p`: मॉडल के ऑटोरेग्रेसिव पहलू से जुड़ा पैरामीटर, जो *पिछले* मानों को शामिल करता है।
`p`: मॉडल के ऑटो-रेग्रेसिव पहलू से जुड़ा पैरामीटर, जो *पिछले* मानों को शामिल करता है।
`d`: मॉडल के इंटीग्रेटेड भाग से जुड़ा पैरामीटर, जो समय श्रृंखला पर लागू *डिफरेंसिंग* (🎓 डिफरेंसिंग याद है 👆?) की मात्रा को प्रभावित करता है।
`q`: मॉडल के मूविंग-एवरेज भाग से जुड़ा पैरामीटर।
> नोट: यदि आपके डेटा में मौसमी पहलू है - जैसा कि इस डेटा में है - तो हम मौसमी ARIMA मॉडल (SARIMA) का उपयोग करते हैं। उस स्थिति में आपको एक अन्य सेट पैरामीटर का उपयोग करना होगा: `P`, `D`, और `Q` जो `p`, `d`, और `q` के समान संघों का वर्णन करते हैं, लेकिन मॉडल के मौसमी घटकों से संबंधित हैं।
> नोट: यदि आपके डेटा में मौसमी पहलू है - जैसा कि इस डेटा में है - तो हम मौसमी ARIMA मॉडल (SARIMA) का उपयोग करते हैं। इस मामले में आपको पैरामीटर का एक और सेट उपयोग करना होगा: `P`, `D`, और `Q` जो `p`, `d`, और `q` के समान संघों का वर्णन करते हैं, लेकिन मॉडल के मौसमी घटकों से संबंधित हैं।
1. अपने पसंदीदा होराइजन मान को सेट करें। चलिए 3 घंटे आज़माते हैं:
1. अपने पसंदीदा होराइजन मान सेट करें। चलिए 3 घंटे आज़माते हैं:
```python
# Specify the number of steps to forecast ahead
@ -198,7 +198,7 @@ ARIMA के भागों को बेहतर ढंग से समझ
print('Forecasting horizon:', HORIZON, 'hours')
```
ARIMA मॉडल के पैरामीटर के लिए सर्वोत्तम मानों का चयन करना चुनौतीपूर्ण हो सकता है क्योंकि यह कुछ हद तक व्यक्तिपरक और समय लेने वाला है। आप [`pyramid` लाइब्रेरी](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) से `auto_arima()` फ़ंक्शन का उपयोग करने पर विचार कर सकते हैं।
ARIMA मॉडल के पैरामीटर के लिए सर्वोत्तम मान चुनना चुनौतीपूर्ण हो सकता है क्योंकि यह कुछ हद तक व्यक्तिपरक और समय लेने वाला है। आप [`pyramid` लाइब्रेरी](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) से `auto_arima()` फ़ंक्शन का उपयोग करने पर विचार कर सकते हैं।
1. फिलहाल कुछ मैनुअल चयन आज़माएं ताकि एक अच्छा मॉडल मिल सके।
@ -218,15 +218,15 @@ ARIMA के भागों को बेहतर ढंग से समझ
### अपने मॉडल का मूल्यांकन करें
अपने मॉडल का मूल्यांकन करने के लिए, आप तथाकथित `walk forward` मान्यता कर सकते हैं। व्यवहार में, समय श्रृंखला मॉडल हर बार जब नया डेटा उपलब्ध होता है तो फिर से प्रशिक्षित किए जाते हैं। यह मॉडल को प्रत्येक समय चरण पर सबसे अच्छा पूर्वानुमान बनाने की अनुमति देता है।
अपने मॉडल का मूल्यांकन करने के लिए, आप तथाकथित `वॉक फॉरवर्ड` मान्यता कर सकते हैं। व्यवहार में, समय श्रृंखला मॉडल हर बार जब नया डेटा उपलब्ध होता है तो पुनः प्रशिक्षित किए जाते हैं। यह मॉडल को प्रत्येक समय चरण पर सबसे अच्छा पूर्वानुमान बनाने की अनुमति देता है।
इस तकनीक का उपयोग करते हुए समय श्रृंखला की शुरुआत में, ट्रेन डेटा सेट पर मॉडल को प्रशिक्षित करें। फिर अगले समय चरण पर एक पूर्वानुमान बनाएं। पूर्वानुमान ज्ञात मान के खिलाफ मूल्यांकन किया जाता है। फिर ट्रेनिंग सेट को ज्ञात मान को शामिल करने के लिए विस्तारित किया जाता है और प्रक्रिया को दोहराया जाता है।
> नोट: अधिक कुशल प्रशिक्षण के लिए आपको ट्रेनिंग सेट विंडो को स्थिर रखना चाहिए ताकि हर बार जब आप ट्रेनिंग सेट में एक नया अवलोकन जोड़ें, तो आप सेट की शुरुआत से अवलोकन को हटा दें।
यह प्रक्रिया मॉडल के व्यवहारिक प्रदर्शन का अधिक मजबूत अनुमान प्रदान करती है। हालांकि, इतने सारे मॉडल बनाने की गणना लागत के साथ आता है। यदि डेटा छोटा है या मॉडल सरल है तो यह स्वीकार्य है, लेकिन बड़े पैमाने पर समस्या हो सकती है।
यह प्रक्रिया मॉडल के व्यवहारिक प्रदर्शन का अधिक मजबूत अनुमान प्रदान करती है। हालांकि, इतने सारे मॉडल बनाने की गणना लागत आती है। यदि डेटा छोटा है या मॉडल सरल है तो यह स्वीकार्य है, लेकिन बड़े पैमाने पर समस्या हो सकती है।
Walk-forward मान्यता समय श्रृंखला मॉडल मूल्यांकन का स्वर्ण मानक है और इसे आपके अपने प्रोजेक्ट्स के लिए अनुशंसित किया जाता है।
वॉक-फॉरवर्ड मान्यता समय श्रृंखला मॉडल मूल्यांकन का स्वर्ण मानक है और इसे आपके अपने प्रोजेक्ट्स के लिए अनुशंसित किया जाता है।
1. पहले, प्रत्येक HORIZON चरण के लिए एक टेस्ट डेटा पॉइंट बनाएं।
@ -240,7 +240,7 @@ Walk-forward मान्यता समय श्रृंखला मॉड
test_shifted.head(5)
```
| | | load | load+1 | load+2 |
| | | लोड | लोड+1 | लोड+2 |
| ---------- | -------- | ---- | ------ | ------ |
| 2014-12-30 | 00:00:00 | 0.33 | 0.29 | 0.27 |
| 2014-12-30 | 01:00:00 | 0.29 | 0.27 | 0.27 |
@ -250,7 +250,7 @@ Walk-forward मान्यता समय श्रृंखला मॉड
डेटा को इसके होराइजन पॉइंट के अनुसार क्षैतिज रूप से स्थानांतरित किया जाता है।
1. इस स्लाइडिंग विंडो दृष्टिकोण का उपयोग करके अपने टेस्ट डेटा पर पूर्वानुमान बनाएं, जो टेस्ट डेटा की लंबाई के आकार में एक लूप में हो:
1. स्लाइडिंग विंडो दृष्टिकोण का उपयोग करके अपने टेस्ट डेटा पर पूर्वानुमान बनाएं, जो टेस्ट डेटा की लंबाई के आकार में एक लूप में हो:
```python
%%time
@ -305,7 +305,7 @@ Walk-forward मान्यता समय श्रृंखला मॉड
```
आउटपुट
| | | timestamp | h | prediction | actual |
| | | टाइमस्टैम्प | h | पूर्वानुमान | वास्तविक |
| --- | ---------- | --------- | --- | ---------- | -------- |
| 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 |
| 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 |
@ -318,12 +318,12 @@ Walk-forward मान्यता समय श्रृंखला मॉड
### मॉडल की सटीकता जांचें
अपने मॉडल की सटीकता की जांच करें सभी पूर्वानुमानों पर इसके औसत प्रतिशत त्रुटि (MAPE) का परीक्षण करके।
> **🧮 गणित दिखाएं**
> **🧮 गणना को समझें**
>
> ![MAPE](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.hi.png)
> ![MAPE](../../../../7-TimeSeries/2-ARIMA/images/mape.png)
>
> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) का उपयोग भविष्यवाणी की सटीकता को एक अनुपात के रूप में दिखाने के लिए किया जाता है, जिसे ऊपर दिए गए सूत्र द्वारा परिभाषित किया गया है। वास्तविक और अनुमानित के बीच का अंतर वास्तविक से विभाजित किया जाता है।
"इस गणना में प्राप्त मान का पूर्ण मान प्रत्येक भविष्यवाणी किए गए समय बिंदु के लिए जोड़ा जाता है और फिट किए गए बिंदुओं की संख्या n से विभाजित किया जाता है।" [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
> "इस गणना में लिए गए पूर्ण मान को समय के प्रत्येक पूर्वानुमानित बिंदु के लिए जोड़ा जाता है और फिट किए गए बिंदुओं की संख्या n से विभाजित किया जाता है।" [विकिपीडिया](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
1. कोड में समीकरण व्यक्त करें:
```python
@ -332,7 +332,7 @@ Walk-forward मान्यता समय श्रृंखला मॉड
print(eval_df.groupby('h')['APE'].mean())
```
1. एक चरण का MAPE गणना करें:
1. एक चरण का MAPE निकालें:
```python
print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%')
@ -350,7 +350,7 @@ Walk-forward मान्यता समय श्रृंखला मॉड
Multi-step forecast MAPE: 1.1460048657704118 %
```
एक अच्छा कम संख्या सबसे बेहतर है: ध्यान दें कि यदि किसी पूर्वानुमान का MAPE 10 है, तो इसका मतलब है कि यह 10% तक गलत है।
एक अच्छा कम संख्या बेहतर है: ध्यान दें कि यदि किसी पूर्वानुमान का MAPE 10 है, तो इसका मतलब है कि यह 10% तक गलत है।
1. लेकिन हमेशा की तरह, इस प्रकार की सटीकता माप को दृश्य रूप में देखना आसान होता है, तो चलिए इसे प्लॉट करते हैं:
@ -380,21 +380,21 @@ Walk-forward मान्यता समय श्रृंखला मॉड
plt.show()
```
![एक टाइम सीरीज़ मॉडल](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.hi.png)
![एक टाइम सीरीज़ मॉडल](../../../../7-TimeSeries/2-ARIMA/images/accuracy.png)
🏆 एक बहुत ही अच्छा प्लॉट, जो एक मॉडल को अच्छी सटीकता के साथ दिखाता है। बहुत बढ़िया!
🏆 एक बहुत ही अच्छा प्लॉट, जो एक अच्छे सटीकता वाले मॉडल को दिखाता है। बहुत बढ़िया!
---
## 🚀चुनौती
टाइम सीरीज़ मॉडल की सटीकता को जांचने के तरीकों में गहराई से जाएं। इस पाठ में हमने MAPE पर चर्चा की है, लेकिन क्या आप अन्य तरीकों का उपयोग कर सकते हैं? उनका शोध करें और उन्हें नोट करें। एक सहायक दस्तावेज़ [यहां](https://otexts.com/fpp2/accuracy.html) पाया जा सकता है।
टाइम सीरीज़ मॉडल की सटीकता की जांच करने के तरीकों में गहराई से जाएं। इस पाठ में हमने MAPE पर चर्चा की है, लेकिन क्या आप अन्य तरीकों का उपयोग कर सकते हैं? उनका शोध करें और उन्हें नोट करें। एक सहायक दस्तावेज़ [यहां](https://otexts.com/fpp2/accuracy.html) पाया जा सकता है।
## [पाठ के बाद क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/44/)
## [पाठ के बाद की क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
यह पाठ ARIMA के साथ टाइम सीरीज़ पूर्वानुमान के केवल मूलभूत पहलुओं को छूता है। [इस रिपॉजिटरी](https://microsoft.github.io/forecasting/) और इसके विभिन्न मॉडल प्रकारों में गहराई से जाएं और अन्य तरीकों को सीखें जिनसे टाइम सीरीज़ मॉडल बनाए जा सकते हैं।
यह पाठ ARIMA के साथ टाइम सीरीज़ पूर्वानुमान की केवल मूल बातें छूता है। [इस रिपॉजिटरी](https://microsoft.github.io/forecasting/) और इसके विभिन्न मॉडल प्रकारों में गहराई से जाकर अन्य तरीकों से टाइम सीरीज़ मॉडल बनाने के बारे में जानने के लिए समय निकालें।
## असाइनमेंट
@ -403,4 +403,4 @@ Walk-forward मान्यता समय श्रृंखला मॉड
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,41 +1,41 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f80e513b3279869e7661e3190cc83076",
"translation_date": "2025-09-03T22:54:21+00:00",
"original_hash": "482bccabe1df958496ea71a3667995cd",
"translation_date": "2025-09-05T10:18:39+00:00",
"source_file": "7-TimeSeries/3-SVR/README.md",
"language_code": "hi"
}
-->
# सपोर्ट वेक्टर रेग्रेसर के साथ टाइम सीरीज़ फोरकास्टिंग
पिछले पाठ में, आपने ARIMA मॉडल का उपयोग करके टाइम सीरीज़ प्रेडिक्शन करना सीखा। अब आप सपोर्ट वेक्टर रेग्रेसर मॉडल के बारे में जानेंगे, जो निरंतर डेटा की भविष्यवाणी करने के लिए उपयोग किया जाता है।
पिछले पाठ में, आपने ARIMA मॉडल का उपयोग करके टाइम सीरीज़ प्रेडिक्शन करना सीखा। अब आप सपोर्ट वेक्टर रेग्रेसर मॉडल पर ध्यान देंगे, जो एक रेग्रेशन मॉडल है और निरंतर डेटा की भविष्यवाणी करने के लिए उपयोग किया जाता है।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/51/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## परिचय
इस पाठ में, आप [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine) का उपयोग करके रेग्रेशन के लिए मॉडल बनाने का एक विशेष तरीका जानेंगे, जिसे **SVR: Support Vector Regressor** कहा जाता है।
इस पाठ में, आप [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine) का उपयोग करके रेग्रेशन के लिए मॉडल बनाने का एक विशेष तरीका जानेंगे, जिसे **SVR: Support Vector Regressor** कहा जाता है।
### टाइम सीरीज़ के संदर्भ में SVR [^1]
टाइम सीरीज़ प्रेडिक्शन में SVR के महत्व को समझने से पहले, आपको कुछ महत्वपूर्ण अवधारणाओं को जानना होगा:
टाइम सीरीज़ प्रेडिक्शन में SVR के महत्व को समझने से पहले, यहां कुछ महत्वपूर्ण अवधारणाएं हैं जिन्हें आपको जानना चाहिए:
- **रेग्रेशन:** सुपरवाइज़्ड लर्निंग तकनीक जो दिए गए इनपुट सेट से निरंतर मानों की भविष्यवाणी करती है। इसका उद्देश्य फीचर स्पेस में एक कर्व (या लाइन) फिट करना है जिसमें अधिकतम डेटा पॉइंट्स हों। [यहां क्लिक करें](https://en.wikipedia.org/wiki/Regression_analysis) अधिक जानकारी के लिए।
- **सपोर्ट वेक्टर मशीन (SVM):** एक प्रकार का सुपरवाइज़्ड मशीन लर्निंग मॉडल जो वर्गीकरण, रेग्रेशन और आउटलायर डिटेक्शन के लिए उपयोग किया जाता है। यह मॉडल फीचर स्पेस में एक हाइपरप्लेन होता है, जो वर्गीकरण के मामले में सीमा के रूप में कार्य करता है और रेग्रेशन के मामले में बेस्ट-फिट लाइन के रूप में। SVM में, आमतौर पर एक कर्नल फंक्शन का उपयोग किया जाता है ताकि डेटा को उच्च आयामों के स्पेस में ट्रांसफॉर्म किया जा सके, जिससे वे आसानी से अलग हो सकें। [यहां क्लिक करें](https://en.wikipedia.org/wiki/Support-vector_machine) SVMs पर अधिक जानकारी के लिए।
- **सपोर्ट वेक्टर रेग्रेसर (SVR):** SVM का एक प्रकार, जो बेस्ट फिट लाइन (जो SVM के मामले में एक हाइपरप्लेन है) खोजने के लिए उपयोग किया जाता है जिसमें अधिकतम डेटा पॉइंट्स हों।
- **रेग्रेशन:** यह एक सुपरवाइज़्ड लर्निंग तकनीक है जो दिए गए इनपुट से निरंतर मानों की भविष्यवाणी करती है। इसका उद्देश्य फीचर स्पेस में एक कर्व (या रेखा) फिट करना है, जिसमें अधिकतम डेटा पॉइंट्स हों। [यहां क्लिक करें](https://en.wikipedia.org/wiki/Regression_analysis) अधिक जानकारी के लिए।
- **सपोर्ट वेक्टर मशीन (SVM):** यह एक प्रकार का सुपरवाइज़्ड मशीन लर्निंग मॉडल है, िसका उपय वर्गीकरण, रेग्रेशन और आउटलायर डिटेक्शन के लिए किया जाता है। यह मॉडल फीचर स्पेस में एक हाइपरप्लेन होता है, जो वर्गीकरण के मामले में एक सीमा के रूप में कार्य करता है और रेग्रेशन के मामले में बेस्ट-फिट लाइन के रूप में। SVM में, आमतौर पर एक कर्नल फंक्शन का उपयोग किया जाता है, जो डेटा को उच्च आयाम वाले स्पेस में ट्रांसफॉर्म करता है ताकि वे आसानी से अलग किए जा सकें। [यहां क्लिक करें](https://en.wikipedia.org/wiki/Support-vector_machine) SVMs पर अधिक जानकारी के लिए।
- **सपोर्ट वेक्टर रेग्रेसर (SVR):** SVM का एक प्रकार, जो बेस्ट फिट लाइन (जो SVM के मामले में एक हाइपरप्लेन है) खोजने के लिए उपयोग किया जाता है, जिसमें अधिकतम डेटा पॉइंट्स हों।
### SVR क्यों? [^1]
पिछले पाठ में आपने ARIMA के बारे में सीखा, जो टाइम सीरीज़ डेटा की भविष्यवाणी के लिए एक बहुत ही सफल सांख्यिकीय रैखिक विधि है। हालांकि, कई मामलों में, टाइम सीरीज़ डेटा में *गैर-रेखीयता* होती है, जिसे रैखिक मॉडल द्वारा मैप नहीं किया जा सकता। ऐसे मामलों में, रेग्रेशन कार्यों के लिए डेटा में गैर-रेखीयता को ध्यान में रखने की SVM की क्षमता SVR को टाइम सीरीज़ फोरकास्टिंग में सफल बनाती है।
पिछले पाठ में आपने ARIMA के बारे में सीखा, जो टाइम सीरीज़ डेटा की भविष्यवाणी के लिए एक बहुत ही सफल सांख्यिकीय रैखिक विधि है। हालांकि, कई मामलों में, टाइम सीरीज़ डेटा में *गैर-रैखिकता* होती है, जिसे रैखिक मॉडल द्वारा मैप नहीं किया जा सकता। ऐसे मामलों में, रेग्रेशन कार्यों के लिए डेटा में गैर-रैखिकता को ध्यान में रखने की SVM की क्षमता SVR को टाइम सीरीज़ फोरकास्टिंग में सफल बनाती है।
## अभ्यास - SVR मॉडल बनाएं
डेटा तैयार करने के पहले कुछ चरण पिछले पाठ [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) के समान हैं।
डेटा तैयार करने के पहले कुछ चरण पिछले पाठ [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) के समान हैं।
इस पाठ में [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) फ़ोल्डर खोलें और [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) फ़ाइल खोजें।[^2]
इस पाठ में [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) फ़ोल्डर खोलें और [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) फ़ाइल ढूंढें।[^2]
1. नोटबुक चलाएं और आवश्यक लाइब्रेरी इंपोर्ट करें: [^2]
1. नोटबुक चलाएं और आवश्यक लाइब्रेरी आयात करें: [^2]
```python
import sys
@ -62,7 +62,7 @@ CO_OP_TRANSLATOR_METADATA:
energy = load_data('../../data')[['load']]
```
3. जनवरी 2012 से दिसंबर 2014 तक उपलब्ध ऊर्जा डेटा को प्लॉट करें: [^2]
3. जनवरी 2012 से दिसंबर 2014 तक उपलब्ध सभी ऊर्जा डेटा को प्लॉट करें: [^2]
```python
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -71,15 +71,15 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![पूर्ण डेटा](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.hi.png)
![पूर्ण डेटा](../../../../7-TimeSeries/3-SVR/images/full-data.png)
अब, चलिए अपना SVR मॉडल बनाते हैं।
### प्रशिक्षण और परीक्षण डेटा सेट बनाएं
अब आपका डेटा लोड हो गया है, तो आप इसे ट्रेन और टेस्ट सेट में विभाजित कर सकते हैं। फिर आप डेटा को टाइम-स्टेप आधारित डेटा सेट बनाने के लिए रीशेप करेंगे, जो SVR के लिए आवश्यक होगा। आप अपने मॉडल को ट्रेन सेट पर प्रशिक्षित करेंगे। मॉडल के प्रशिक्षण के बाद, आप इसकी सटीकता को ट्रेनिंग सेट, टेस्टिंग सेट और फिर पूरे डेटा सेट पर मूल्यांकन करेंगे ताकि समग्र प्रदर्शन देखा जा सके। आपको यह सुनिश्चित करना होगा कि टेस्ट सेट ट्रेनिंग सेट से बाद की अवधि को कवर करता है ताकि मॉडल भविष्य की समय अवधि से जानकारी प्राप्त न कर सके [^2] (जिसे *ओवरफिटिंग* कहा जाता है)।
अब आपका डेटा लोड हो गया है, इसलिए आप इसे ट्रेन और टेस्ट सेट में विभाजित कर सकते हैं। फिर आप डेटा को टाइम-स्टेप आधारित डेटा सेट बनाने के लिए पुनः ेंगे, जो SVR के लिए आवश्यक होगा। आप अपने मॉडल को ट्रेन सेट पर प्रशिक्षित करेंगे। मॉडल के प्रशिक्षण के बाद, आप इसके सटीकता का मूल्यांकन ट्रेनिंग सेट, टेस्टिंग सेट और फिर पूरे डेटा सेट पर करेंगे ताकि समग्र प्रदर्शन देखा जा सके। आपको यह सुनिश्चित करना होगा कि टेस्ट सेट ट्रेनिंग सेट से समय में बाद की अवधि को कवर करता है ताकि यह सुनिश्चित हो सके कि मॉडल भविष्य की समय अवधि से जानकारी प्राप्त न करे [^2] (जिसे *ओवरफिटिंग* कहा जाता है)।
1. 1 सितंबर से 31 अक्टूबर, 2014 तक की दो महीने की अवधि को ट्रेनिंग सेट के लिए आवंटित करें। टेस्ट सेट में 1 नवंबर से 31 दिसंबर, 2014 तक की दो महीने की अवधि शामिल होगी: [^2]
1. 1 सितंबर से 31 अक्टूबर, 2014 तक की दो महीने की अवधि को ट्रेनिंग सेट में आवंटित करें। टेस्ट सेट में 1 नवंबर से 31 दिसंबर, 2014 तक की दो महीने की अवधि शामिल होगी: [^2]
```python
train_start_dt = '2014-11-01 00:00:00'
@ -97,13 +97,13 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![ट्रेनिंग और टेस्टिंग डेटा](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.hi.png)
![ट्रेनिंग और टेस्टिंग डेटा](../../../../7-TimeSeries/3-SVR/images/train-test.png)
### प्रशिक्षण के लिए डेटा तैयार करें
अब, आपको डेटा को प्रशिक्षण के लिए तैयार करना होगा। इसके लिए आपको अपने डेटा को फ़िल्टर और स्केल करना होगा। अपने डेटा सेट को केवल आवश्यक समय अवधि और कॉलम ('load' और तारीख) तक सीमित करें, और स्केलिंग करें ताकि डेटा 0,1 के अंतराल में प्रोजेक्ट हो
अब, आपको अपने डेटा को प्रशिक्षण के लिए तैयार करने की आवश्यकता है, जिसमें डेटा को फ़िल्टर करना और स्केल करना शामिल है। अपने डेटा सेट को केवल आवश्यक समय अवधि और कॉलम तक सीमित करें, और डेटा को 0,1 के अंतराल में प्रोजेक्ट करने के लिए स्केल करें
1. मूल डेटा सेट को फ़िल्टर करें ताकि केवल उपरोक्त समय अवधि और आवश्यक कॉलम शामिल हों: [^2]
1. मूल डेटा सेट को केवल उपर्युक्त समय अवधि और केवल आवश्यक कॉलम 'लोड' और तारीख तक सीमित करें: [^2]
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@ -117,14 +117,14 @@ CO_OP_TRANSLATOR_METADATA:
Training data shape: (1416, 1)
Test data shape: (48, 1)
```
2. ट्रेनिंग डेटा को (0, 1) क रेंज में स्केल करें: [^2]
2. ट्रेनिंग डेटा को (0, 1) क रेंज में स्केल करें: [^2]
```python
scaler = MinMaxScaler()
train['load'] = scaler.fit_transform(train)
```
4. अब, टेस्टिंग डेटा को स्केल करें: [^2]
```python
@ -133,7 +133,7 @@ CO_OP_TRANSLATOR_METADATA:
### टाइम-स्टेप्स के साथ डेटा बनाएं [^1]
SVR के लिए, आप इनपुट डेटा को `[batch, timesteps]` के रूप में ट्रांसफॉर्म करते हैं। इसलिए, आप मौजूदा `train_data` और `test_data` को इस तरह रीशेप करते हैं कि एक नया आयाम हो जो टाइमस्टेप्स को संदर्भित करता हो
SVR के लिए, आप इनपुट डेटा को `[batch, timesteps]` के रूप में ट्रांसफॉर्म करते हैं। इसलिए, आप मौजूदा `train_data` और `test_data` को इस प्रकार पुनः आकार देंगे कि एक नया आयाम हो, जो टाइमस्टेप्स को संदर्भित करता है
```python
# Converting to numpy arrays
@ -147,7 +147,7 @@ test_data = test.values
timesteps=5
```
ट्रेनिंग डेटा को 2D टेंसर में बदलना:
नेस्टेड लिस्ट कॉम्प्रिहेंशन का उपयोग करके ट्रेनिंग डेटा को 2D टेंसर में बदलना:
```python
train_data_timesteps=np.array([[j for j in train_data[i:i+timesteps]] for i in range(0,len(train_data)-timesteps+1)])[:,:,0]
@ -186,13 +186,13 @@ print(x_test.shape, y_test.shape)
### SVR लागू करें [^1]
अब, SVR को लागू करने का समय है। इस कार्यान्वयन के बारे में अधिक पढ़ने के लिए, आप [इस दस्तावेज़](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) को देख सकते हैं। हमारे कार्यान्वयन के लिए, हम निम्नलिखित चरणों का पालन करते हैं:
अब, SVR को लागू करने का समय है। इस कार्यान्वयन के बारे में अधिक पढ़ने के लिए, आप [इस दस्तावेज़](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html) का संदर्भ ले सकते हैं। हमारे कार्यान्वयन के लिए, हम निम्नलिखित चरणों का पालन करते हैं:
1. `SVR()` को कॉल करके और मॉडल हाइपरपैरामीटर: kernel, gamma, c और epsilon पास करके मॉडल को परिभाषित करें।
2. `fit()` फ़ंक्शन को कॉल करके ट्रेनिंग डेटा के लिए मॉडल तैयार करें।
3. `predict()` फ़ंक्शन को कॉल करके भविष्यवाण करें।
1. `SVR()` को कॉल करके और मॉडल हाइपरपैरामीटर्स: kernel, gamma, c और epsilon पास करके मॉडल को परिभाषित करें।
2. `fit()` फ़ंक्शन को कॉल करके मॉडल को ट्रेनिंग डेटा के लिए तैयार करें।
3. `predict()` फ़ंक्शन को कॉल करके भविष्यवाणियां करें।
अब हम एक SVR मॉडल बनाते हैं। यहां हम [RBF कर्नल](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) का उपयोग करते हैं, और हाइपरपैरामीटर gamma, C और epsilon को क्रमशः 0.5, 10 और 0.05 सेट करते हैं।
अब हम एक SVR मॉडल बनाते हैं। यहां हम [RBF कर्नल](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) का उपयोग करते हैं, और हाइपरपैरामीटर्स gamma, C और epsilon को क्रमशः 0.5, 10 और 0.05 पर सेट करते हैं।
```python
model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)
@ -209,7 +209,7 @@ SVR(C=10, cache_size=200, coef0=0.0, degree=3, epsilon=0.05, gamma=0.5,
kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)
```
#### मॉडल प्रेडिक्शन करें [^1]
#### मॉडल की भविष्यवाणियां करें [^1]
```python
y_train_pred = model.predict(x_train).reshape(-1,1)
@ -226,7 +226,7 @@ print(y_train_pred.shape, y_test_pred.shape)
### अपने मॉडल का मूल्यांकन करें [^1]
मूल्यांकन के लिए, पहले हम डेटा को अपने मूल स्केल में वापस स्केल करेंगे। फिर, प्रदर्शन की जांच करने के लिए, हम मूल और भविष्यवाणी किए गए टाइम सीरीज़ प्लॉट को प्लॉट करेंगे, और MAPE परिणाम भी प्रिंट करेंगे।
मूल्यांकन के लिए, पहले हम डेटा को हमारे मूल स्केल में वापस स्केल करेंगे। फिर, प्रदर्शन की जांच करने के लिए, हम मूल और भविष्यवाणी किए गए टाइम सीरीज़ प्लॉट को प्लॉट करेंगे, और MAPE परिणाम भी प्रिंट करेंगे।
भविष्यवाणी और मूल आउटपुट को स्केल करें:
@ -248,7 +248,7 @@ print(len(y_train), len(y_test))
#### ट्रेनिंग और टेस्टिंग डेटा पर मॉडल प्रदर्शन की जांच करें [^1]
हम डेटा सेट से टाइमस्टैम्प्स निकालते हैं ताकि उन्हें हमारे प्लॉट के x-अक्ष में दिखाया जा सके। ध्यान दें कि हम पहले ```timesteps-1``` मानों का उपयोग पहले आउटपुट के लिए इनपुट के रूप में कर रहे हैं, इसलिए आउटपुट के टाइमस्टैम्प्स उसके बाद शुरू होंगे।
हम x-अक्ष पर दिखाने के लिए डेटा सेट से टाइमस्टैम्प निकालते हैं। ध्यान दें कि हम पहले ```timesteps-1``` मानों का उपयोग पहले आउटपुट के लिए इनपुट के रूप में कर रहे हैं, इसलिए आउटपुट के लिए टाइमस्टैम्प उसके बाद शुरू होंगे।
```python
train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]
@ -261,7 +261,7 @@ print(len(train_timestamps), len(test_timestamps))
1412 44
```
ट्रेनिंग डेटा के लिए भविष्यवाण प्लॉट करें:
ट्रेनिंग डेटा के लिए भविष्यवाणियों को प्लॉट करें:
```python
plt.figure(figsize=(25,6))
@ -273,7 +273,7 @@ plt.title("Training data prediction")
plt.show()
```
![ट्रेनिंग डेटा भविष्यवाणी](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.hi.png)
![ट्रेनिंग डेटा भविष्यवाणी](../../../../7-TimeSeries/3-SVR/images/train-data-predict.png)
ट्रेनिंग डेटा के लिए MAPE प्रिंट करें:
@ -285,7 +285,7 @@ print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')
MAPE for training data: 1.7195710200875551 %
```
टेस्टिंग डेटा के लिए भविष्यवाण प्लॉट करें:
टेस्टिंग डेटा के लिए भविष्यवाणियों को प्लॉट करें:
```python
plt.figure(figsize=(10,3))
@ -296,7 +296,7 @@ plt.xlabel('Timestamp')
plt.show()
```
![टेस्टिंग डेटा भविष्यवाणी](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.hi.png)
![टेस्टिंग डेटा भविष्यवाणी](../../../../7-TimeSeries/3-SVR/images/test-data-predict.png)
टेस्टिंग डेटा के लिए MAPE प्रिंट करें:
@ -308,7 +308,7 @@ print('MAPE for testing data: ', mape(y_test_pred, y_test)*100, '%')
MAPE for testing data: 1.2623790187854018 %
```
🏆 आपके पास टेस्टिंग डेटा पर बहुत अच्छा परिणाम है!
🏆 आपके पास टेस्टिंग डेटा सेट पर बहुत अच्छा परिणाम है!
### पूरे डेटा सेट पर मॉडल प्रदर्शन की जांच करें [^1]
@ -352,7 +352,7 @@ plt.xlabel('Timestamp')
plt.show()
```
![पूर्ण डेटा भविष्यवाणी](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.hi.png)
![पूर्ण डेटा भविष्यवाणी](../../../../7-TimeSeries/3-SVR/images/full-data-predict.png)
```python
print('MAPE: ', mape(Y_pred, Y)*100, '%')
@ -368,15 +368,15 @@ MAPE: 2.0572089029888656 %
## 🚀चुनौती
- मॉडल बनाते समय हाइपरपैरामीटर (gamma, C, epsilon) को बदलने की कोशिश करें और डेटा पर मूल्यांकन करें ताकि यह देखा जा सके कि कौन सा हाइपरपैरामीटर सेट टेस्टिंग डेटा पर सबसे अच्छे परिणाम देता है। इन हाइपरपैरामीटर के बारे में अधिक जानने के लिए, आप [यह दस्तावेज़](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) देख सकते हैं।
- मॉडल के लिए विभिन्न कर्नल फंक्शन का उपयोग करने की कोशिश करें और उनके प्रदर्शन का विश्लेषण करें। एक सहायक दस्तावेज़ [यहां](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) पाया जा सकता है।
- मॉडल के लिए भविष्यवाणी करने के लिए `timesteps` के विभिन्न मानों का उपयोग करने की कोशिश करें।
- मॉडल बनाते समय हाइपरपैरामीटर्स (gamma, C, epsilon) को बदलने का प्रयास करें और डेटा पर मूल्यांकन करें ताकि यह देखा जा सके कि कौन सा हाइपरपैरामीटर सेट टेस्टिंग डेटा पर सबसे अच्छे परिणाम देता है। इन हाइपरपैरामीटर्स के बारे में अधिक जानने के लिए, आप [यहां](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel) दस्तावेज़ देख सकते हैं।
- मॉडल के लिए विभिन्न कर्नेल फंक्शंस का उपयोग करने का प्रयास करें और उनके प्रदर्शन का विश्लेषण करें। एक सहायक दस्तावेज़ [यहां](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) पाया जा सकता है।
- मॉडल के लिए भविष्यवाणी करने के लिए `timesteps` के विभिन्न मानों का उपयोग करने का प्रयास करें।
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/52/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
यह पाठ टाइम सीरीज़ फोरकास्टिंग के लिए SVR के अनुप्रयोग को पेश करने के लिए था। SVR के बारे में अधिक पढ़ने के लिए, आप [इस ब्लॉग](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/) को देख सकते हैं। यह [scikit-learn पर दस्तावेज़](https://scikit-learn.org/stable/modules/svm.html) SVMs के बारे में अधिक व्यापक व्याख्या प्रदान करता है, [SVRs](https://scikit-learn.org/stable/modules/svm.html#regression) और अन्य कार्यान्वयन विवरण जैसे कि विभिन्न [कर्नल फंक्शन](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) जो उपयोग किए जा सकते हैं, और उनके पैरामीटर।
यह पाठ टाइम सीरीज़ फोरकास्टिंग के लिए SVR के अनुप्रयोग को पेश करने के लिए था। SVR के बारे में अधिक पढ़ने के लिए, आप [इस ब्लॉग](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/) का संदर्भ ले सकते हैं। [scikit-learn पर यह दस्तावेज़](https://scikit-learn.org/stable/modules/svm.html) SVMs के बारे में अधिक व्यापक व्याख्या प्रदान करता है, [SVRs](https://scikit-learn.org/stable/modules/svm.html#regression) और अन्य कार्यान्वयन विवरण जैसे कि विभिन्न [कर्नेल फंक्शंस](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) जो उपयोग किए जा सकते हैं, और उनके पैरामीटर्स
## असाइनमेंट
@ -384,8 +384,8 @@ MAPE: 2.0572089029888656 %
## क्रेडिट्स
[^1]: इस अनुभाग में पाठ, कोड और आउटपुट [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD) द्वारा योगदान दिया गया था।
[^2]: इस अनुभाग में पाठ, कोड और आउटपुट [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) से लिया गया था।
[^1]: इस खंड में पाठ, कोड और आउटपुट [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD) द्वारा योगदान किया गया था।
[^2]: इस खंड में पाठ, कोड और आउटपुट [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) से लिया गया था।
---

@ -1,18 +1,18 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ffe994d1cc881bdeb49226a064116e5",
"translation_date": "2025-09-04T00:22:20+00:00",
"original_hash": "911efd5e595089000cb3c16fce1beab8",
"translation_date": "2025-09-05T10:29:57+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "hi"
}
-->
# परिचय: रिइंफोर्समेंट लर्निंग और Q-लर्निंग
![मशीन लर्निंग में रिइंफोर्समेंट का सारांश एक स्केच नोट में](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.hi.png)
![मशीन लर्निंग में रिइंफोर्समेंट का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-reinforcement.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
रिइंफोर्समेंट लर्निंग तीन महत्वपूर्ण अवधारणाओं पर आधारित है: एजेंट, कुछ स्टेट्स, और प्रत्येक स्टेट के लिए एक्शन का सेट। किसी निर्दिष्ट स्टेट में एक्शन को निष्पादित करके, एजेंट को एक इनाम दिया जाता है। फिर से सुपर मारियो कंप्यूटर गेम की कल्पना करें। आप मारियो हैं, आप एक गेम लेवल में हैं, और एक चट्टान के किनारे पर खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम लेवल में, एक विशिष्ट स्थिति में ... यही आपका स्टेट है। दाईं ओर एक कदम बढ़ाना (एक्शन) आपको किनारे से नीचे गिरा देगा, और यह आपको कम अंक देगा। हालांकि, जंप बटन दबाने से आप एक पॉइंट स्कोर करेंगे और जीवित रहेंगे। यह एक सकारात्मक परिणाम है और आपको एक सकारात्मक अंक प्रदान करना चाहिए।
रिइंफोर्समेंट लर्निंग तीन महत्वपूर्ण अवधारणाओं पर आधारित है: एजेंट, कुछ स्टेट्स, और प्रत्येक स्टेट के लिए एक्शन का सेट। किसी निर्दिष्ट स्टेट में एक्शन को निष्पादित करके, एजेंट को एक इनाम दिया जाता है। फिर से सुपर मारियो गेम की कल्पना करें। आप मारियो हैं, आप एक गेम लेवल में हैं, और एक चट्टान के किनारे पर खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम लेवल में, एक विशिष्ट स्थिति में ... यही आपका स्टेट है। दाईं ओर एक कदम बढ़ाना (एक्शन) आपको किनारे से नीचे गिरा देगा, और यह आपको कम अंक देगा। हालांकि, जंप बटन दबाने से आप एक पॉइंट स्कोर करेंगे और जीवित रहेंगे। यह एक सकारात्मक परिणाम है और आपको एक सकारात्मक अंक प्रदान करना चाहिए।
रिइंफोर्समेंट लर्निंग और एक सिम्युलेटर (गेम) का उपयोग करके, आप गेम खेलने का तरीका सीख सकते हैं ताकि आप जीवित रह सकें और अधिकतम पॉइंट्स स्कोर कर सकें।
@ -20,19 +20,19 @@ CO_OP_TRANSLATOR_METADATA:
> 🎥 ऊपर दी गई छवि पर क्लिक करें और Dmitry से रिइंफोर्समेंट लर्निंग के बारे में सुनें
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/45/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## आवश्यकताएँ और सेटअप
इस पाठ में, हम Python में कुछ कोड के साथ प्रयोग करेंगे। आपको इस पाठ के Jupyter Notebook कोड को अपने कंप्यूटर पर या क्लाउड में कहीं भी चलाने में सक्षम होना चाहिए।
आप [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल सकते हैं और इस पाठ को पूरा करने के लिए इसका अनुसरण कर सकते हैं।
आप [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल सकते हैं और इस पाठ को बनाने के लिए इसका अनुसरण कर सकते हैं।
> **नोट:** यदि आप इस कोड को क्लाउड से खोल रहे हैं, तो आपको [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फ़ाइल भी प्राप्त करनी होगी, जिसका उपयोग नोटबुक कोड में किया गया है। इसे नोटबुक के समान डायरेक्टरी में जोड़ें।
> **नोट:** यदि आप इस कोड को क्लाउड से खोल रहे हैं, तो आपको [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फ़ाइल भी प्राप्त करनी होगी, जो नोटबुक कोड में उपयोग की जाती है। इसे नोटबुक के समान डायरेक्टरी में जोड़ें।
## परिचय
इस पाठ में, हम **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** की दुनिया का अन्वेषण करेंगे, जो एक रूसी संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) द्वारा लिखी गई एक संगीत परी कथा से प्रेरित है। हम **रिइंफोर्समेंट लर्निंग** का उपयोग करेंगे ताकि पीटर अपने वातावरण का पता लगा सके, स्वादिष्ट सेब इकट्ठा कर सके और भेड़िये से बच सके।
इस पाठ में, हम **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** की दुनिया का अन्वेषण करेंगे, जो एक रूसी संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) की एक संगीत परी कथा से प्रेरित है। हम **रिइंफोर्समेंट लर्निंग** का उपयोग करेंगे ताकि पीटर अपने वातावरण का पता लगा सके, स्वादिष्ट सेब इकट्ठा कर सके और भेड़िये से बच सके।
**रिइंफोर्समेंट लर्निंग** (RL) एक लर्निंग तकनीक है जो हमें कई प्रयोगों को चलाकर किसी **एजेंट** के **वातावरण** में इष्टतम व्यवहार सीखने की अनुमति देती है। इस वातावरण में एक एजेंट का कुछ **लक्ष्य** होना चाहिए, जिसे एक **इनाम फ़ंक्शन** द्वारा परिभाषित किया गया है।
@ -40,9 +40,9 @@ CO_OP_TRANSLATOR_METADATA:
सरलता के लिए, आइए पीटर की दुनिया को `width` x `height` आकार के एक वर्ग बोर्ड के रूप में मानें, जैसे:
![पीटर का वातावरण](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.hi.png)
![पीटर का वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png)
इस बोर्ड में प्रत्येक सेल निम्नलिखित में से हो सकता है:
इस बोर्ड में प्रत्येक सेल निम्नलिखित में से एक हो सकता है:
* **जमीन**, जिस पर पीटर और अन्य जीव चल सकते हैं।
* **पानी**, जिस पर आप स्पष्ट रूप से नहीं चल सकते।
@ -61,7 +61,7 @@ m.randomize(seed=13)
m.plot()
```
यह कोड ऊपर दिए गए वातावरण के समान एक चित्र प्रिंट करेगा।
यह कोड ऊपर दिए गए चित्र के समान वातावरण का चित्र प्रिंट करेगा।
## एक्शन और पॉलिसी
@ -69,7 +69,7 @@ m.plot()
इसलिए, किसी भी स्थिति में, वह निम्नलिखित एक्शन में से एक चुन सकता है: ऊपर, नीचे, बाएं और दाएं।
हम इन एक्शन को एक डिक्शनरी के रूप में परिभाषित करेंगे और उन्हें संबंधित समन्वय परिवर्तनों के जोड़े से मैप करेंगे। उदाहरण के लिए, दाईं ओर बढ़ना (`R`) `(1,0)` के जोड़े से मेल खाएगा। (कोड ब्लॉक 2):
हम इन एक्शन को एक डिक्शनरी के रूप में परिभाषित करेंगे, और उन्हें संबंधित समन्वय परिवर्तनों के जोड़े से मैप करेंगे। उदाहरण के लिए, दाईं ओर बढ़ना (`R`) एक जोड़ी `(1,0)` के अनुरूप होगा। (कोड ब्लॉक 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
@ -78,13 +78,13 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
इस परिदृश्य की रणनीति और लक्ष्य को संक्षेप में कहें:
- **रणनीति**, हमारे एजेंट (पीटर) की **पॉलिसी** द्वारा परिभाषित की जाती है। पॉलिसी एक फ़ंक्शन है जो किसी दिए गए स्टेट पर एक्शन लौटाता है। हमारे मामले में, समस्या का स्टेट बोर्ड द्वारा दर्शाया गया है, जिसमें खिलाड़ी की वर्तमान स्थिति शामिल है।
- **रणनीति**, हमारे एजेंट (पीटर) की, एक तथाकथित **पॉलिसी** द्वारा परिभाषित की जाती है। पॉलिसी एक फ़ंक्शन है जो किसी भी दिए गए स्टेट पर एक्शन लौटाता है। हमारे मामले में, समस्या का स्टेट बोर्ड द्वारा दर्शाया गया है, जिसमें खिलाड़ी की वर्तमान स्थिति शामिल है।
- **लक्ष्य**, रिइंफोर्समेंट लर्निंग का उद्देश्य अंततः एक अच्छी पॉलिसी सीखना है जो हमें समस्या को कुशलतापूर्वक हल करने की अनुमति देगा। हालांकि, एक आधार रेखा के रूप में, आइए सबसे सरल पॉलिसी पर विचार करें जिसे **रैंडम वॉक** कहा जाता है।
- **लक्ष्य**, रिइंफोर्समेंट लर्निंग का, अंततः एक अच्छी पॉलिसी सीखना है जो हमें समस्या को कुशलतापूर्वक हल करने की अनुमति देगा। हालांकि, एक आधार रेखा के रूप में, आइए सबसे सरल पॉलिसी पर विचार करें जिसे **रैंडम वॉक** कहा जाता है।
## रैंडम वॉक
आइए पहले रैंडम वॉक रणनीति को लागू करके अपनी समस्या को हल करें। रैंडम वॉक के साथ, हम अनुमत एक्शन में से अगले एक्शन को यादृच्छिक रूप से चुनेंगे, जब तक कि हम सेब तक न पहुँच जाएँ (कोड ब्लॉक 3)।
आइए पहले रैंडम वॉक रणनीति को लागू करके अपनी समस्या को हल करें। रैंडम वॉक के साथ, हम अनुमत एक्शन में से अगले एक्शन को यादृच्छिक रूप से चुनेंगे, जब तक कि हम सेब तक नहीं पहुंच जाते (कोड ब्लॉक 3)।
1. नीचे दिए गए कोड के साथ रैंडम वॉक लागू करें:
@ -115,9 +115,9 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
walk(m,random_policy)
```
`walk` को कॉल करने से संबंधित पथ की लंबाई लौटनी चाहिए, जो एक रन से दूसरे रन तक भिन्न हो सकती है।
`walk` को कॉल करने से संबंधित पथ की लंबाई लौटनी चाहिए, जो एक रन से दूसरे रन में भिन्न हो सकती है।
1. वॉक प्रयोग को कई बार (कहें, 100) चलाए, और परिणामी आँकड़े प्रिंट करें (कोड ब्लॉक 4):
1. वॉक प्रयोग को कई बार (कहें, 100) चलाए, और परिणामी आँकड़े प्रिंट करें (कोड ब्लॉक 4):
```python
def print_statistics(policy):
@ -134,7 +134,7 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
ध्यान दें कि पथ की औसत लंबाई लगभग 30-40 कदम है, जो काफी अधिक है, यह देखते हुए कि निकटतम सेब क औसत दूरी लगभग 5-6 कदम है।
ध्यान दें कि पथ की औसत लंबाई लगभग 30-40 कदम है, जो काफी अधिक है, यह देखते हुए कि निकटतम सेब क औसत दूरी लगभग 5-6 कदम है।
आप यह भी देख सकते हैं कि रैंडम वॉक के दौरान पीटर की गति कैसी दिखती है:
@ -144,7 +144,7 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
हमारी पॉलिसी को अधिक बुद्धिमान बनाने के लिए, हमें यह समझने की आवश्यकता है कि कौन से कदम दूसरों की तुलना में "बेहतर" हैं। ऐसा करने के लिए, हमें अपना लक्ष्य परिभाषित करना होगा।
लक्ष्य को एक **इनाम फ़ंक्शन** के रूप में परिभाषित किया जा सकता है, जो प्रत्येक स्टेट के लिए कुछ स्कोर मान लौटाएगा। संख्या जितनी अधिक होगी, इनाम फ़ंक्शन उतना ही बेहतर होगा। (कोड ब्लॉक 5)
लक्ष्य को एक **इनाम फ़ंक्शन** के संदर्भ में परिभाषित किया जा सकता है, जो प्रत्येक स्टेट के लिए कुछ स्कोर मान लौटाएगा। संख्या जितनी अधिक होगी, इनाम फ़ंक्शन उतना ही बेहतर होगा। (कोड ब्लॉक 5)
```python
move_reward = -0.1
@ -163,11 +163,11 @@ def reward(m,pos=None):
return move_reward
```
इनाम फ़ंक्शन के बारे में एक दिलचस्प बात यह है कि अधिकांश मामलों में, *हमें केवल खेल के अंत में एक महत्वपूर्ण इनाम दिया जाता है*। इसका मतलब है कि हमारा एल्गोरिदम "अच्छे" कदमों को याद रखना चाहिए जो अंत में सकारात्मक इनाम की ओर ले जाते हैं, और उनकी महत्वता बढ़ानी चाहिए। इसी तरह, सभी कदम जो खराब परिणामों की ओर ले जाते हैं, उन्हें हतोत्साहित किया जाना चाहिए।
इनाम फ़ंक्शन के बारे में एक दिलचस्प बात यह है कि अधिकांश मामलों में, *हमें केवल खेल के अंत में एक महत्वपूर्ण इनाम दिया जाता है*। इसका मतलब है कि हमारे एल्गोरिदम को "अच्छे" कदमों को याद रखना चाहिए जो अंत में सकारात्मक इनाम की ओर ले जाते हैं, और उनकी महत्वता बढ़ानी चाहिए। इसी तरह, सभी कदम जो खराब परिणामों की ओर ले जाते हैं, उन्हें हतोत्साहित किया जाना चाहिए।
## Q-लर्निंग
एक एल्गोरिदम जिसे हम यहां चर्चा करेंगे, उसे **Q-लर्निंग** कहा जाता है। इस एल्गोरिदम में, पॉलिसी को एक फ़ंक्शन (या डेटा संरचना) द्वारा परिभाषित किया जाता है जिसे **Q-टेबल** कहा जाता है। यह प्रत्येक स्टेट में एक्शन की "अच्छाई" को रिकॉर्ड करता है।
एक एल्गोरिदम जिसे हम यहां चर्चा करेंगे, उसे **Q-लर्निंग** कहा जाता है। इस एल्गोरिदम में, पॉलिसी को एक फ़ंक्शन (या डेटा संरचना) द्वारा परिभाषित किया जाता है जिसे **Q-टेबल** कहा जाता है। यह प्रत्येक स्टेट में दिए गए एक्शन की "अच्छाई" को रिकॉर्ड करता है।
इसे Q-टेबल कहा जाता है क्योंकि इसे अक्सर एक टेबल या बहु-आयामी ऐरे के रूप में प्रस्तुत करना सुविधाजनक होता है। चूंकि हमारे बोर्ड का आयाम `width` x `height` है, हम Q-टेबल को `width` x `height` x `len(actions)` आकार के साथ एक numpy ऐरे का उपयोग करके प्रस्तुत कर सकते हैं: (कोड ब्लॉक 6)
@ -177,11 +177,11 @@ Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
ध्यान दें कि हम Q-टेबल के सभी मानों को समान मान के साथ प्रारंभ करते हैं, हमारे मामले में - 0.25। यह "रैंडम वॉक" पॉलिसी के अनुरूप है, क्योंकि प्रत्येक स्टेट में सभी कदम समान रूप से अच्छे हैं। हम बोर्ड पर टेबल को विज़ुअलाइज़ करने के लिए Q-टेबल को `plot` फ़ंक्शन में पास कर सकते हैं: `m.plot(Q)`
![पीटर का वातावरण](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.hi.png)
![पीटर का वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png)
प्रत्येक सेल के केंद्र में एक "तीर" होता है जो गति की पसंदीदा दिशा को इंगित करता है। चूंकि सभी दिशाएँ समान हैं, एक बिंदु प्रदर्शित होता है।
अब हमें सिमुलेशन चलाने, अपने वातावरण का पता लगाने और Q-टेबल मानों के बेहतर वितरण को सीखने की आवश्यकता है, जो हमें सेब तक पहुचने का रास्ता बहुत तेज़ी से खोजने की अनुमति देगा।
अब हमें सिमुलेशन चलाने, अपने वातावरण का पता लगाने, और Q-टेबल मानों के बेहतर वितरण को सीखने की आवश्यकता है, जो हमें सेब तक पहुचने का रास्ता बहुत तेज़ी से खोजने की अनुमति देगा।
## Q-लर्निंग का सार: बेलमैन समीकरण
@ -189,9 +189,9 @@ Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
> याद रखें कि तत्काल परिणाम महत्वपूर्ण नहीं है, बल्कि अंतिम परिणाम है, जिसे हम सिमुलेशन के अंत में प्राप्त करेंगे।
इस विलंबित इनाम को ध्यान में रखने के लिए, हमें **[डायनामिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** के सिद्धांतों का उपयोग करने की आवश्यकता है, जो हमें अपनी समस्या क पुनरावर्ती रूप से सोचने की अनुमति देते हैं।
इस विलंबित इनाम को ध्यान में रखने के लिए, हमें **[डायनामिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** के सिद्धांतों का उपयोग करने की आवश्यकता है, जो हमें अपनी समस्या के बारे में पुनरावर्ती रूप से सोचने की अनुमति देते हैं।
मान लें कि हम अब स्टेट *s* पर हैं, और हम अगले स्टेट *s'* पर जाना चाहते हैं। ऐसा करने से, हमें तत्काल इनाम *r(s,a)* प्राप्त होगा, जिसे इनाम फ़ंक्शन द्वारा परिभाषित किया गया है, साथ ही कुछ भविष्य का इनाम भी। यदि हम मान लें कि हमारा Q-टेबल प्रत्येक एक्शन की "आकर्षकता" को सही ढंग से दर्शाता है, तो स्टेट *s'* पर हम एक्शन *a'* का चयन करेंगे जो *Q(s',a')* के अधिकतम मान से मेल खाता है। इस प्रकार, स्टेट *s* पर हमें मिलने वाला सबसे अच्छा संभावित भविष्य का इनाम `max`
मान लें कि हम अब स्टेट *s* पर हैं, और हम अगले स्टेट *s'* पर जाना चाहते हैं। ऐसा करने से, हमें तत्काल इनाम *r(s,a)* प्राप्त होगा, जिसे इनाम फ़ंक्शन द्वारा परिभाषित किया गया है, साथ ही कुछ भविष्य का इनाम भी। यदि हम मान लें कि हमारा Q-टेबल प्रत्येक एक्शन की "आकर्षकता" को सही ढंग से दर्शाता है, तो स्टेट *s'* पर हम एक्शन *a'* चुनेंगे जो *Q(s',a')* के अधिकतम मान के अनुरूप होगा। इस प्रकार, स्टेट *s* पर हमें मिलने वाला सबसे अच्छा संभावित भविष्य का इनाम `max`
## नीति की जांच करना
@ -207,17 +207,17 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> यदि आप ऊपर दिए गए कोड को कई बार आज़माते हैं, तो आप देख सकते हैं कि कभी-कभी यह "अटक" जाता है, और आपको इसे रोकने के लिए नोटबुक में STOP बटन दबाना पड़ता है। ऐसा इसलिए होता है क्योंकि कुछ स्थितियों में दो अवस्थाएँ एक-दूसरे की ओर "संकेत" करती हैं, जहाँ Q-Value इष्टतम होता है। इस स्थिति में एजेंट उन अवस्थाओं के बीच अनिश्चितकाल तक घूमता रहता है।
> यदि आप ऊपर दिए गए कोड को कई बार आज़माते हैं, तो आप देख सकते हैं कि कभी-कभी यह "अटक" जाता है, और आपको इसे रोकने के लिए नोटबुक में STOP बटन दबाना पड़ता है। ऐसा इसलिए होता है क्योंकि कुछ स्थितियों में दो अवस्थाएँ "एक-दूसरे की ओर इशारा करती हैं" इष्टतम Q-Value के संदर्भ में, जिससे एजेंट उन अवस्थाओं के बीच अनिश्चितकाल तक घूमता रहता है।
## 🚀चुनौती
> **कार्य 1:** `walk` फ़ंक्शन को संशोधित करें ताकि पथ की अधिकतम लंबाई को एक निश्चित संख्या (जैसे, 100) तक सीमित किया जा सके, और ऊपर दिया गया कोड समय-समय पर इस मान को लौटाए।
> **कार्य 2:** `walk` फ़ंक्शन को संशोधित करें ताकि यह उन स्थानों पर वापस न जाए जहाँ यह पहले ही जा चुका है। यह `walk` को लूपिंग से रोक देगा, लेकिन एजेंट अभी भी ऐसी जगह पर "फंस" सकता है जहाँ से वह बाहर नहीं निकल सकता।
> **कार्य 2:** `walk` फ़ंक्शन को संशोधित करें ताकि वह उन स्थानों पर वापस न जाए जहाँ वह पहले ही जा चुका है। यह `walk` को लूपिंग से रोक देगा, लेकिन एजेंट अभी भी ऐसी जगह पर "फंस" सकता है जहाँ से वह बाहर नहीं निकल सकता।
## नेविगेशन
एक बेहतर नेविगेशन नीति वह होगी जिसे हमने प्रशिक्षण के दौरान उपयोग किया था, जो शोषण और अन्वेषण को जोड़ती है। इस नीति में, हम प्रत्येक क्रिया को एक निश्चित संभावना के साथ चुनेंगे, जो Q-Table में मानों के अनुपात में होगी। यह रणनीति अभी भी एजेंट को पहले से खोजे गए स्थान पर वापस लौटने का कारण बन सकती है, लेकिन जैसा कि आप नीचे दिए गए कोड से देख सकते हैं, यह वांछित स्थान तक बहुत छोटे औसत पथ का परिणाम देती है (याद रखें कि `print_statistics` सिमुलेशन को 100 बार चलाता है): (कोड ब्लॉक 10)
एक बेहतर नेविगेशन नीति वह होगी जो हमने प्रशिक्षण के दौरान उपयोग की थी, जो शोषण और अन्वेषण को जोड़ती है। इस नीति में, हम प्रत्येक क्रिया को एक निश्चित संभावना के साथ चुनेंगे, जो Q-Table में मानों के अनुपात में होगी। यह रणनीति अभी भी एजेंट को पहले से खोजे गए स्थान पर वापस लौटने का कारण बन सकती है, लेकिन जैसा कि आप नीचे दिए गए कोड से देख सकते हैं, यह वांछित स्थान तक बहुत छोटे औसत पथ का परिणाम देती है (याद रखें कि `print_statistics` सिमुलेशन को 100 बार चलाता है): (कोड ब्लॉक 10)
```python
def qpolicy(m):
@ -229,23 +229,23 @@ def qpolicy(m):
print_statistics(qpolicy)
```
इस कोड को चलाने के बाद, आपको पहले की तुलना में औसत पथ लंबाई बहुत छोटी मिलनी चाहिए, जो 3-6 की सीमा में होगी।
इस कोड को चलाने के बाद, आपको पहले की तुलना में बहुत छोटा औसत पथ लंबाई प्राप्त करनी चाहिए, जो 3-6 की सीमा में होगी।
## सीखने की प्रक्रिया की जांच करना
## सीखने की प्रक्रिया की जांच
जैसा कि हमने उल्लेख किया है, सीखने की प्रक्रिया समस्या स्थान की संरचना के बारे में प्राप्त ज्ञान के अन्वेषण और उपयोग के बीच संतुलन है। हमने देखा है कि सीखने के परिणाम (एजेंट को लक्ष्य तक पहुँचने के लिए छोटा पथ खोजने की क्षमता) में सुधार हुआ है, लेकिन यह देखना भी दिलचस्प है कि सीखने की प्रक्रिया के दौरान औसत पथ लंबाई कैसे व्यवहार करती है:
## सीखने का सारांश
## सीखने को निम्नलिखित रूप में संक्षेपित किया जा सकता है:
- **औसत पथ लंबाई बढ़ती है**। शुरुआत में, औसत पथ लंबाई बढ़ती है। ऐसा संभवतः इसलिए होता है क्योंकि जब हमें पर्यावरण के बारे में कुछ भी पता नहीं होता, तो हम खराब अवस्थाओं, जैसे पानी या भेड़िया, में फंसने की संभावना रखते हैं। जैसे-जैसे हम अधिक सीखते हैं और इस ज्ञान का उपयोग करना शुरू करते हैं, हम पर्यावरण का अधिक समय तक अन्वेषण कर सकते हैं, लेकिन हमें अभी भी सेबों का स्थान अच्छी तरह से पता नहीं होता।
- **औसत पथ लंबाई बढ़ती है**। यहाँ हम देखते हैं कि शुरुआत में औसत पथ लंबाई बढ़ती है। ऐसा संभवतः इसलिए होता है क्योंकि जब हमें पर्यावरण के बारे में कुछ भी पता नहीं होता, तो हम खराब अवस्थाओं, पानी या भेड़िये में फंसने की संभावना रखते हैं। जैसे-जैसे हम अधिक सीखते हैं और इस ज्ञान का उपयोग करना शुरू करते हैं, हम पर्यावरण का अधिक समय तक अन्वेषण कर सकते हैं, लेकिन हमें अभी भी सेबों के स्थान का सही पता नहीं होता।
- **पथ लंबाई घटती है, जैसे-जैसे हम अधिक सीखते हैं**। जब हम पर्याप्त सीखते हैं, तो एजेंट के लिए लक्ष्य प्राप्त करना आसान हो जाता है, और पथ लंबाई घटने लगती है। हालांकि, हम अभी भी अन्वेषण के लिए खुले हैं, इसलिए हम अक्सर सबसे अच्छे पथ से दूर चले जाते हैं और नए विकल्पों का अन्वेषण करते हैं, जिससे पथ इष्टतम से लंबा हो जाता है।
- **पथ लंबाई घटती है, जैसे-जैसे हम अधिक सीखते हैं**। एक बार जब हम पर्याप्त सीख लेते हैं, तो एजेंट के लिए लक्ष्य प्राप्त करना आसान हो जाता है, और पथ लंबाई घटने लगती है। हालांकि, हम अभी भी अन्वेषण के लिए खुले हैं, इसलिए हम अक्सर सबसे अच्छे पथ से दूर चले जाते हैं और नए विकल्पों का अन्वेषण करते हैं, जिससे पथ आदर्श से लंबा हो जाता है।
- **लंबाई अचानक बढ़ जाती है**। इस ग्राफ पर हम यह भी देखते हैं कि किसी बिंदु पर लंबाई अचानक बढ़ जाती है। यह प्रक्रिया की अनिश्चित प्रकृति को इंगित करता है, और यह कि हम किसी बिंदु पर Q-Table गुणांक को नए मानों के साथ अधिलेखित करके "खराब" कर सकते हैं। इसे आदर्श रूप से सीखने की दर को कम करके म किया जाना चाहिए (उदाहरण के लिए, प्रशिक्षण के अंत में, हम केवल Q-Table मानों को छोटे मान से समायोजित करते हैं)।
- **लंबाई अचानक बढ़ जाती है**। जो हम इस ग्राफ पर भी देखते हैं वह यह है कि किसी बिंदु पर, लंबाई अचानक बढ़ जाती है। यह प्रक्रिया की अनिश्चित प्रकृति को इंगित करता है, और यह कि हम किसी बिंदु पर Q-Table गुणांक को नए मानों से अधिलेखित करके "खराब" कर सकते हैं। इसे आदर्श रूप से सीखने की दर को कम करके न्यूनतम किया जाना चाहिए (उदाहरण के लिए, प्रशिक्षण के अंत में, हम केवल Q-Table मानों को एक छोटे मान से समायोजित करते हैं)।
कुल मिलाकर, यह याद रखना महत्वपूर्ण है कि सीखने की प्रक्रिया की सफलता और गुणवत्ता काफी हद तक पैरामीटर पर निर्भर करती है, जैसे सीखने की दर, सीखने की दर में कमी, और छूट कारक। इन्हें अक्सर **हाइपरपैरामीटर** कहा जाता है, ताकि उन्हें **पैरामीटर** से अलग किया जा सके, जिन्हें हम प्रशिक्षण के दौरान अनुकूलित करते हैं (उदाहरण के लिए, Q-Table गुणांक)। सबसे अच्छे हाइपरपैरामीटर मानों को खोजने की प्रक्रिया को **हाइपरपैरामीटर अनुकूलन** कहा जाता है, और यह एक अलग विषय के योग्य है।
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## असाइनमेंट
[एक अधिक यथार्थवादी संसार](assignment.md)
@ -253,4 +253,4 @@ print_statistics(qpolicy)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,19 +1,19 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9660fbd80845c59c15715cb418cd6e23",
"translation_date": "2025-09-04T00:29:59+00:00",
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
"translation_date": "2025-09-05T10:30:41+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "hi"
}
-->
## आवश्यकताएँ
इस पाठ में, हम **OpenAI Gym** नामक एक लाइब्रेरी का उपयोग करेंगे जो विभिन्न **पर्यावरणों** को सिमुलेट करती है। आप इस पाठ का कोड स्थानीय रूप से (जैसे Visual Studio Code से) चला सकते हैं, इस स्थिति में सिमुलेशन एक नई विंडो में खुलेगा। ऑनलाइन कोड चलाते समय, आपको कोड में कुछ बदलाव करने की आवश्यकता हो सकती है, जैसा कि [यहां](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णित है।
इस पाठ में, हम **OpenAI Gym** नामक एक लाइब्रेरी का उपयोग करेंगे जो विभिन्न **पर्यावरणों** को सिमुलेट करती है। आप इस पाठ का कोड स्थानीय रूप से (जैसे Visual Studio Code से) चला सकते हैं, जिसमें सिमुलेशन एक नई विंडो में खुलेगा। ऑनलाइन कोड चलाते समय, आपको कोड में कुछ बदलाव करने की आवश्यकता हो सकती है, जैसा कि [यहां](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णित है।
## OpenAI Gym
पिछले पाठ में, खेल के नियम और स्थिति `Board` क्लास द्वारा दी गई थी जिसे हमने स्वयं परिभाषित किया था। यहां हम एक विशेष **सिमुलेशन पर्यावरण** का उपयोग करेंगे, जो बैलेंसिंग पोल के पीछे के भौतिकी को सिमुलेट करेगा। रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन पर्यावरणों में से एक [Gym](https://gym.openai.com/) है, जिसे [OpenAI](https://openai.com/) द्वारा बनाए रखा गया है। इस जिम का उपयोग करके हम विभिन्न **पर्यावरणों** को बना सकते हैं, जैसे कि कार्टपोल सिमुलेशन से लेकर एटारी गेम्स तक।
पिछले पाठ में, खेल के नियम और स्थिति `Board` क्लास द्वारा दी गई थी जिसे हमने स्वयं परिभाषित किया था। यहां हम एक विशेष **सिमुलेशन पर्यावरण** का उपयोग करेंगे, जो बैलेंसिंग पोल के पीछे के भौतिकी को सिमुलेट करेगा। रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन पर्यावरणों में से एक [Gym](https://gym.openai.com/) है, जिसे [OpenAI](https://openai.com/) द्वारा बनाए रखा गया है। इस जिम का उपयोग करके हम विभिन्न **पर्यावरणों** को बना सकते हैं, जैसे कि कार्टपोल सिमुलेशन से लेकर Atari गेम्स तक।
> **Note**: आप OpenAI Gym द्वारा उपलब्ध अन्य पर्यावरणों को [यहां](https://gym.openai.com/envs/#classic_control) देख सकते हैं।
@ -31,11 +31,11 @@ import random
## अभ्यास - कार्टपोल पर्यावरण को प्रारंभ करें
कार्टपोल बैलेंसिंग समस्या पर काम करने के लिए, हमें संबंधित पर्यावरण को प्रारंभ करना होगा। प्रत्येक पर्यावरण से जुड़े होते हैं:
कार्टपोल बैलेंसिंग समस्या पर काम करने के लिए, हमें संबंधित पर्यावरण को प्रारंभ करना होगा। प्रत्येक पर्यावरण निम्नलिखित से जुड़ा होता है:
- **Observation space**, जो उस जानकारी की संरचना को परिभाषित करता है जो हमें पर्यावरण से प्राप्त होती है। कार्टपोल समस्या के लिए, हमें पोल की स्थिति, वेग और कुछ अन्य मान प्राप्त होते हैं।
- **Observation space** जो उस जानकारी की संरचना को परिभाषित करता है जो हमें पर्यावरण से प्राप्त होती है। कार्टपोल समस्या के लिए, हमें पोल की स्थिति, वेग और कुछ अन्य मान प्राप्त होते हैं।
- **Action space**, जो संभावित क्रियाओं को परिभाषित करता है। हमारे मामले में, एक्शन स्पेस डिस्क्रीट है और इसमें दो क्रियाएं शामिल हैं - **बाएं** और **दाएं**। (कोड ब्लॉक 2)
- **Action space** जो संभावित क्रियाओं को परिभाषित करता है। हमारे मामले में, एक्शन स्पेस डिस्क्रीट है और इसमें दो क्रियाएं शामिल हैं - **बाएं** और **दाएं**। (कोड ब्लॉक 2)
1. प्रारंभ करने के लिए, निम्नलिखित कोड टाइप करें:
@ -46,7 +46,7 @@ import random
print(env.action_space.sample())
```
पर्यावरण कैसे काम करता है यह देखने के लिए, चलिए 100 चरणों के लिए एक छोटा सिमुलेशन चलाते हैं। प्रत्येक चरण में, हम एक क्रिया प्रदान करते हैं जिसे लिया जाना है - इस सिमुलेशन में हम बस `action_space` से एक क्रिया को रैंडमली चुनते हैं।
पर्यावरण कैसे काम करता है यह देखने के लिए, चलिए 100 चरणों के लिए एक छोटा सिमुलेशन चलाते हैं। प्रत्येक चरण में, हम एक क्रिया प्रदान करते हैं जिसे लिया जाना चाहिए - इस सिमुलेशन में हम बस `action_space` से एक क्रिया को रैंडमली चुनते हैं।
1. नीचे दिए गए कोड को चलाएं और देखें कि इसका क्या परिणाम होता है।
@ -61,11 +61,11 @@ import random
env.close()
```
आपको कुछ इस तरह का चित्र दिखाई देना चाहिए:
आपको कुछ इस तरह की छवि दिखाई देनी चाहिए:
![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif)
1. सिमुलेशन के दौरान, हमें निर्णय लेने के लिए ऑब्ज़र्वेशन प्राप्त करने की आवश्यकता होती है। वास्तव में, स्टेप फंक्शन वर्तमान ऑब्ज़र्वेशन, एक रिवॉर्ड फंक्शन, और एक डन फ्लैग लौटाता है जो यह संकेत देता है कि सिमुलेशन जारी रखना समझदारी है या नहीं: (कोड ब्लॉक 4)
1. सिमुलेशन के दौरान, हमें यह तय करने के लिए ऑब्ज़र्वेशन प्राप्त करने की आवश्यकता होती है कि कैसे कार्य करना है। वास्तव में, स्टेप फंक्शन वर्तमान ऑब्ज़र्वेशन, एक रिवॉर्ड फंक्शन, और एक डन फ्लैग लौटाता है जो यह संकेत देता है कि सिमुलेशन जारी रखना समझदारी है या नहीं: (कोड ब्लॉक 4)
```python
env.reset()
@ -78,7 +78,7 @@ import random
env.close()
```
आपको नोटबुक आउटपुट में कुछ इस तरह का परिणाम दिखाई देगा:
आपको नोटबुक आउटपुट में कुछ इस तरह दिखाई देगा:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@ -97,7 +97,7 @@ import random
- पोल का कोण
- पोल का रोटेशन दर
1. इन मानों के न्यूनतम और अधिकतम मान प्राप्त करें: (कोड ब्लॉक 5)
1. उन संख्याओं के न्यूनतम और अधिकतम मान प्राप्त करें: (कोड ब्लॉक 5)
```python
print(env.observation_space.low)
@ -110,24 +110,24 @@ import random
## स्थिति का डिस्क्रीटाइजेशन
Q-Learning में, हमें Q-Table बनानी होती है जो यह परिभाषित करती है कि प्रत्येक स्थिति में क्या करना है। ऐसा करने के लिए, स्थिति को **डिस्क्रीट** होना चाहिए, अधिक सटीक रूप से, इसमें सीमित संख्या में डिस्क्रीट मान होने चाहिए। इसलिए, हमें किसी तरह से अपने ऑब्ज़र्वेशन को **डिस्क्रीटाइज** करना होगा, उन्हें सीमित सेट की स्थितियों में मैप करना होगा।
Q-Learning में, हमें Q-Table बनानी होती है जो यह परिभाषित करती है कि प्रत्येक स्थिति में क्या करना है। ऐसा करने के लिए, हमें स्थिति को **डिस्क्रीट** बनाना होगा, अधिक सटीक रूप से, इसमें सीमित संख्या में डिस्क्रीट मान होने चाहिए। इसलिए, हमें किसी तरह से अपने ऑब्ज़र्वेशन को **डिस्क्रीटाइज** करना होगा, उन्हें सीमित सेट की स्थितियों में मैप करना होगा।
हम इसे करने के कुछ तरीके हैं:
- **बिन्स में विभाजित करें**। यदि हमें किसी मान का अंतराल पता है, तो हम इस अंतराल को कई **बिन्स** में विभाजित कर सकते हैं, और फिर उस मान को उस बिन नंबर से बदल सकते हैं जिसमें वह आता है। इसे numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) विधि का उपयोग करके किया जा सकता है। इस मामले में, हम स्थिति का आकार सटीक रूप से जान पाएंगे, क्योंकि यह डिजिटलाइजेशन के लिए चुने गए बिन्स की संख्या पर निर्भर करेगा।
- **बिन्स में विभाजित करें**। यदि हमें किसी मान का अंतराल पता है, तो हम इस अंतराल को कई **बिन्स** में विभाजित कर सकते हैं, और फिर उस मान को उस बिन नंबर से बदल सकते हैं जिसमें वह आता है। इसे numpy के [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) मेथड का उपयोग करके किया जा सकता है। इस मामले में, हम स्थिति का आकार सटीक रूप से जान पाएंगे, क्योंकि यह डिजिटलाइजेशन के लिए चुने गए बिन्स की संख्या पर निर्भर करेगा।
✅ हम मानों को किसी सीमित अंतराल (जैसे, -20 से 20 तक) में लाने के लिए लीनियर इंटरपोलेशन का उपयोग कर सकते हैं, और फिर उन्हें राउंडिंग करके पूर्णांक में बदल सकते हैं। इससे हमें स्थिति के आकार पर थोड़ा कम नियंत्रण मिलता है, खासकर यदि हमें इनपुट मानों की सटीक सीमाएं नहीं पता हों। उदाहरण के लिए, हमारे मामले में 4 में से 2 मानों की कोई ऊपरी/निचली सीमा नहीं है, जो अनंत संख्या में स्थितियों का परिणाम दे सकता है
✅ हम लीनियर इंटरपोलेशन का उपयोग करके मानों को किसी सीमित अंतराल (जैसे, -20 से 20 तक) में ला सकते हैं, और फिर उन्हें राउंडिंग करके पूर्णांक में बदल सकते हैं। इससे स्थिति के आकार पर थोड़ा कम नियंत्रण मिलता है, खासकर यदि हमें इनपुट मानों की सटीक सीमाएं नहीं पता हों। उदाहरण के लिए, हमारे मामले में 4 में से 2 मानों की कोई ऊपरी/निचली सीमा नहीं है, जिससे असीमित संख्या में स्थितियां हो सकती हैं
हमारे उदाहरण में, हम दूसरे दृष्टिकोण का उपयोग करेंगे। जैसा कि आप बाद में देख सकते हैं, अपरिभाषित ऊपरी/निचली सीमाओं के बावजूद, वे मान शायद ही कभी कुछ सीमित अंतरालों के बाहर मान लेते हैं, इसलिए उन स्थितियों के साथ चरम मान बहुत दुर्लभ होंगे।
1. यहां वह फंक्शन है जो हमारे मॉडल से ऑब्ज़र्वेशन लेगा और 4 पूर्णांक मानों के टपल का उत्पादन करेगा: (कोड ब्लॉक 6)
1. यहां वह फंक्शन है जो हमारे मॉडल से ऑब्ज़र्वेशन लेगा और 4 पूर्णांक मानों के टपल को उत्पन्न करेगा: (कोड ब्लॉक 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
1. चलिए बिन्स का उपयोग करके एक अन्य डिस्क्रीटाइजेशन विधि का भी पता लगाते हैं: (कोड ब्लॉक 7)
1. चलिए बिन्स का उपयोग करके डिस्क्रीटाइजेशन के दूसरे तरीके का भी पता लगाते हैं: (कोड ब्लॉक 7)
```python
def create_bins(i,num):
@ -145,7 +145,7 @@ Q-Learning में, हमें Q-Table बनानी होती है
1. अब एक छोटा सिमुलेशन चलाएं और उन डिस्क्रीट पर्यावरण मानों का निरीक्षण करें। `discretize` और `discretize_bins` दोनों को आज़माने के लिए स्वतंत्र महसूस करें और देखें कि क्या कोई अंतर है।
`discretize_bins` बिन नंबर लौटाता है, जो 0-आधारित होता है। इसलिए इनपुट वैरिएबल के मानों के आसपास 0 के लिए यह अंतराल के मध्य से नंबर (10) लौटाता है। `discretize` में, हमने आउटपुट मानों की रेंज की परवाह नहीं की, जिससे वे नकारात्मक हो सकते हैं, इसलिए स्थिति मान शिफ्ट नहीं होते हैं, और 0 का मतलब 0 होता है। (कोड ब्लॉक 8)
`discretize_bins` बिन नंबर लौटाता है, जो 0-आधारित होता है। इसलिए इनपुट वैरिएबल के मानों के आसपास 0 के लिए यह अंतराल के मध्य से संख्या (10) लौटाता है। `discretize` में, हमने आउटपुट मानों की रेंज की परवाह नहीं की, जिससे वे नकारात्मक हो सकते हैं, इसलिए स्थिति मान शिफ्ट नहीं होते हैं, और 0 का मतलब 0 होता है। (कोड ब्लॉक 8)
```python
env.reset()
@ -159,15 +159,15 @@ Q-Learning में, हमें Q-Table बनानी होती है
env.close()
```
✅ यदि आप देखना चाहते हैं कि पर्यावरण कैसे निष्पादित होता है, तो `env.render` से शुरू होने वाली लाइन को अनकमेंट करें। अन्यथा, आप इसे बैकग्राउंड में निष्पादित कर सकते हैं, जो तेज़ है। हम अपने Q-Learning प्रक्रिया के दौरान इस "अदृश्य" निष्पादन का उपयोग करेंगे।
✅ यदि आप देखना चाहते हैं कि पर्यावरण कैसे निष्पादित होता है, तो env.render से शुरू होने वाली लाइन को अनकमेंट करें। अन्यथा आप इसे बैकग्राउंड में निष्पादित कर सकते हैं, जो तेज़ है। हम अपने Q-Learning प्रक्रिया के दौरान इस "अदृश्य" निष्पादन का उपयोग करेंगे।
## Q-Table की संरचना
पिछले पाठ में, स्थिति 0 से 8 तक के दो संख्याओं की एक साधारण जोड़ी थी, और इसलिए Q-Table को numpy टेंसर द्वारा 8x8x2 के आकार के साथ प्रस्तुत करना सुविधाजनक था। यदि हम बिन्स डिस्क्रीटाइजेशन का उपयोग करते हैं, तो हमारे स्थिति वेक्टर का आकार भी ज्ञात है, इसलिए हम वही दृष्टिकोण अपना सकते हैं और स्थिति को 20x20x10x10x2 के आकार के एक ऐरे द्वारा प्रस्तुत कर सकते हैं (यहां 2 एक्शन स्पेस का आयाम है, और पहले आयाम ऑब्ज़र्वेशन स्पेस में उपयोग किए गए प्रत्येक पैरामीटर के लिए चुने गए बिन्स की संख्या से मेल खाते हैं)।
पिछले पाठ में, स्थिति 0 से 8 तक क संख्याओं की एक साधारण जोड़ी थी, और इसलिए Q-Table को numpy टेंसर द्वारा 8x8x2 के आकार के साथ प्रस्तुत करना सुविधाजनक था। यदि हम बिन्स डिस्क्रीटाइजेशन का उपयोग करते हैं, तो हमारे स्थिति वेक्टर का आकार भी ज्ञात है, इसलिए हम वही दृष्टिकोण अपना सकते हैं और स्थिति को 20x20x10x10x2 के आकार के ऐरे द्वारा प्रस्तुत कर सकते हैं (यहां 2 एक्शन स्पेस का आयाम है, और पहले आयाम ऑब्ज़र्वेशन स्पेस में प्रत्येक पैरामीटर के लिए उपयोग किए गए बिन्स की संख्या से संबंधित हैं)।
हालांकि, कभी-कभी ऑब्ज़र्वेशन स्पेस के सटीक आयाम ज्ञात नहीं होते। `discretize` फंक्शन के मामले में, हम कभी भी यह सुनिश्चित नहीं कर सकते कि हमारी स्थिति निश्चित सीमाओं के भीतर रहती है, क्योंकि कुछ मूल मान बाउंड नहीं हैं। इसलिए, हम थोड़ा अलग दृष्टिकोण अपनाएंगे और Q-Table को एक डिक्शनरी द्वारा प्रस्तुत करेंगे।
हालांकि, कभी-कभी ऑब्ज़र्वेशन स्पेस के सटीक आयाम ज्ञात नहीं होते। `discretize` फंक्शन के मामले में, हम कभी भी यह सुनिश्चित नहीं कर सकते कि हमारी स्थिति निश्चित सीमाओं के भीतर रहती है, क्योंकि कुछ मूल मान बाउंड नहीं होते। इसलिए, हम थोड़ा अलग दृष्टिकोण अपनाएंगे और Q-Table को एक डिक्शनरी द्वारा प्रस्तुत करेंगे।
1. *(state,action)* जोड़ी को डिक्शनरी की कुंजी के रूप में उपयोग करें, और मान Q-Table एंट्री मान से मेल खाएगा। (कोड ब्लॉक 9)
1. *(state,action)* जोड़ी को डिक्शनरी की कुंजी के रूप में उपयोग करें, और मान Q-Table एंट्री मान से संबंधित होगा। (कोड ब्लॉक 9)
```python
Q = {}
@ -177,7 +177,7 @@ Q-Learning में, हमें Q-Table बनानी होती है
return [Q.get((state,a),0) for a in actions]
```
यहां हमने एक फंक्शन `qvalues()` भी परिभाषित किया है, जो एक दिए गए स्थिति के लिए Q-Table मानों की सूची लौटाता है जो सभी संभावित क्रियाओं से मेल खाती है। यदि Q-Table में एंट्री मौजूद नहीं है, तो हम डिफ़ॉल्ट रूप से 0 लौटाएंगे।
यहां हमने एक फंक्शन `qvalues()` भी परिभाषित किया है, जो एक दिए गए स्थिति के लिए Q-Table मानों की सूची लौटाता है जो सभी संभावित क्रियाओं से संबंधित है। यदि Q-Table में एंट्री मौजूद नहीं है, तो हम डिफ़ॉल्ट रूप से 0 लौटाएंगे।
## चलिए Q-Learning शुरू करें
@ -192,11 +192,11 @@ Q-Learning में, हमें Q-Table बनानी होती है
epsilon = 0.90
```
यहां, `alpha` **लर्निंग रेट** है जो यह परिभाषित करता है कि हमें प्रत्येक चरण में Q-Table के वर्तमान मानों को किस हद तक समायोजित करना चाहिए। पिछले पाठ में हमने 1 से शुरुआत की थी, और फिर प्रशिक्षण के दौरान `alpha` को कम मानों तक घटा दिया था। इस उदाहरण में हम इसे स्थिर रखेंगे केवल सादगी के लिए, और आप बाद में `alpha` मानों को समायोजित करने के साथ प्रयोग कर सकते हैं।
यहां, `alpha` **लर्निंग रेट** है जो यह परिभाषित करता है कि हमें प्रत्येक चरण में Q-Table के वर्तमान मानों को किस हद तक समायोजित करना चाहिए। पिछले पाठ में हमने 1 से शुरुआत की थी, और फिर प्रशिक्षण के दौरान `alpha` को कम मानों में घटा दिया था। इस उदाहरण में हम इसे स्थिर रखेंगे केवल सादगी के लिए, और आप बाद में `alpha` मानों को समायोजित करने के साथ प्रयोग कर सकते हैं।
`gamma` **डिस्काउंट फैक्टर** है जो यह दिखाता है कि हमें वर्तमान रिवॉर्ड की तुलना में भविष्य के रिवॉर्ड को किस हद तक प्राथमिकता देनी चाहिए।
`epsilon` **एक्सप्लोरेशन/एक्सप्लॉइटेशन फैक्टर** है जो यह निर्धारित करता है कि हमें एक्सप्लोरेशन को एक्सप्लॉइटेशन पर प्राथमिकता देनी चाहिए या इसके विपरीत। हमारे एल्गोरिदम में, हम `epsilon` प्रतिशत मामलों में Q-Table मानों के अनुसार अगली क्रिया का चयन करेंगे, और शेष मामलों में हम एक रैंडम क्रिया निष्पादित करेंगे। यह हमें खोज स्थान के उन क्षेत्रों का पता लगाने की अनुमति देगा जिन्हें हमने पहले कभी नहीं देखा।
`epsilon` **एक्सप्लोरेशन/एक्सप्लॉइटेशन फैक्टर** है जो यह निर्धारित करता है कि हमें एक्सप्लोरेशन को एक्सप्लॉइटेशन पर या इसके विपरीत प्राथमिकता देनी चाहिए। हमारे एल्गोरिदम में, हम `epsilon` प्रतिशत मामलों में Q-Table मानों के अनुसार अगली क्रिया का चयन करेंगे, और शेष मामलों में हम एक रैंडम क्रिया निष्पादित करेंगे। यह हमें खोज स्थान के उन क्षेत्रों का पता लगाने की अनुमति देगा जिन्हें हमने पहले कभी नहीं देखा।
✅ बैलेंसिंग के संदर्भ में - रैंडम क्रिया (एक्सप्लोरेशन) चुनना गलत दिशा में एक रैंडम पंच की तरह काम करेगा, और पोल को उन "गलतियों" से बैलेंस को पुनः प्राप्त करना सीखना होगा।
@ -204,9 +204,9 @@ Q-Learning में, हमें Q-Table बनानी होती है
हम पिछले पाठ से अपने एल्गोरिदम में दो सुधार कर सकते हैं:
- **औसत संचयी रिवॉर्ड की गणना करें**, कई सिमुलेशन के दौरान। हम हर 5000 पुनरावृत्तियों पर प्रगति को प्रिंट करेंगे, और उस समय अवधि के दौरान अपने संचयी रिवॉर्ड को औसत करेंगे। इसका मतलब है कि यदि हमें 195 से अधिक अंक मिलते हैं - तो हम समस्या को हल मान सकते हैं, आवश्यक गुणवत्ता से भी अधिक
- **औसत संचयी रिवॉर्ड की गणना करें**, कई सिमुलेशन के दौरान। हम हर 5000 इटरेशन पर प्रगति को प्रिंट करेंगे, और उस समय अवधि के दौरान अपने संचयी रिवॉर्ड को औसत करेंगे। इसका मतलब है कि यदि हमें 195 से अधिक अंक मिलते हैं - तो हम समस्या को हल किया हुआ मान सकते हैं, और आवश्यक गुणवत्ता से भी बेहतर
- **अधिकतम औसत संचयी परिणाम की गणना करें**, `Qmax`, और हम उस परिणाम से मेल खाने वाले Q-Table को स्टोर करेंगे। जब आप प्रशिक्षण चलाते हैं तो आप देखेंगे कि कभी-कभी औसत संचयी परिणाम गिरने लगते हैं, और हम प्रशिक्षण के दौरान देखे गए सर्वश्रेष्ठ मॉडल से मेल खाने वाले Q-Table मानों को रखना चाहते हैं।
- **अधिकतम औसत संचयी परिणाम की गणना करें**, `Qmax`, और हम उस परिणाम से संबंधित Q-Table को स्टोर करेंगे। जब आप प्रशिक्षण चलाते हैं तो आप देखेंगे कि कभी-कभी औसत संचयी परिणाम गिरने लगते हैं, और हम प्रशिक्षण के दौरान देखे गए सर्वश्रेष्ठ मॉडल से संबंधित Q-Table मानों को रखना चाहते हैं।
1. प्रत्येक सिमुलेशन में सभी संचयी रिवॉर्ड को `rewards` वेक्टर में एकत्र करें ताकि आगे प्लॉटिंग की जा सके। (कोड ब्लॉक 11)
@ -249,25 +249,25 @@ Q-Learning में, हमें Q-Table बनानी होती है
cum_rewards=[]
```
इन परिणामों से आप क्या देख सकते हैं:
आप इन परिणामों से क्या देख सकते हैं:
- **हमारे लक्ष्य के करीब**। हम 100+ लगातार सिमुलेशन रन के दौरान 195 संचयी रिवॉर्ड प्राप्त करने के लक्ष्य को प्राप्त करने के बहुत करीब हैं, या हमने वास्तव में इसे प्राप्त कर लिया है! भले ही हमें छोटे नंबर मिलें, हम अभी भी नहीं जानते, क्योंकि हम 5000 रन पर औसत करते हैं, और औपचारिक मानदंड में केवल 100 रन की आवश्यकता होती है।
- **हमारे लक्ष्य के करीब**। हम 100+ लगातार सिमुलेशन रन में 195 संचयी रिवॉर्ड प्राप्त करने के लक्ष्य को प्राप्त करने के बहुत करीब हैं, या हमने वास्तव में इसे प्राप्त कर लिया है! भले ही हमें छोटे नंबर मिलें, हमें अभी भी पता नहीं है, क्योंकि हम 5000 रन पर औसत करते हैं, और औपचारिक मानदंड में केवल 100 रन की आवश्यकता होती है।
- **रिवॉर्ड गिरने लगता है**। कभी-कभी रिवॉर्ड गिरने लगता है, जिसका मतलब है कि हम Q-Table में पहले से सीखे गए मानों को उन मानों से "नष्ट" कर सकते हैं जो स्थिति को खराब बनाते हैं।
- **रिवॉर्ड गिरने लगते हैं**। कभी-कभी रिवॉर्ड गिरने लगते हैं, जिसका मतलब है कि हम Q-Table में पहले से सीखे गए मानों को उन मानों से "नष्ट" कर सकते हैं जो स्थिति को खराब बनाते हैं।
यह अवलोकन अधिक स्पष्ट रूप से दिखाई देता है यदि हम प्रशिक्षण प्रगति को प्लॉट करें।
## प्रशिक्षण प्रगति का प्लॉट बनाना
प्रशिक्षण के दौरान, हमने प्रत्येक पुनरावृत्ति में संचयी रिवॉर्ड मान को `rewards` वेक्टर में एकत्र किया। यहां यह कैसा दिखता है जब हम इसे पुनरावृत्ति संख्या के खिलाफ प्लॉट करते हैं:
प्रशिक्षण के दौरान, हमने प्रत्येक इटरेशन में संचयी रिवॉर्ड मान को `rewards` वेक्टर में एकत्र किया। यहां यह कैसा दिखता है जब हम इसे इटरेशन नंबर के खिलाफ प्लॉट करते हैं:
```python
plt.plot(rewards)
```
![raw progress](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.hi.png)
![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png)
इस ग्राफ से कुछ भी बताना संभव नहीं है, क्योंकि स्टोकेस्टिक प्रशिक्षण प्रक्रिया की प्रकृति के कारण प्रशिक्षण सत्रों की लंबाई बहुत भिन्न होती है। इस ग्राफ को अधिक समझने योग्य बनाने के लिए, हम 100 प्रयोगों की श्रृंखला पर **रनिंग एवरेज** की गणना कर सकते हैं। इसे `np.convolve` का उपयोग करके सुविधाजनक तरीके से किया जा सकता है: (कोड ब्लॉक 12)
इस ग्राफ से कुछ भी बताना संभव नहीं है, क्योंकि स्टोकेस्टिक प्रशिक्षण प्रक्रिया की प्रकृति के कारण प्रशिक्षण सत्रों की लंबाई बहुत भिन्न होती है। इस ग्राफ को अधिक समझने योग्य बनाने के लिए, हम 100 के एक श्रृंखला पर **रनिंग एवरेज** की गणना कर सकते हैं। इसे `np.convolve` का उपयोग करके सुविधाजनक रूप से किया जा सकता है: (कोड ब्लॉक 12)
```python
def running_average(x,window):
@ -276,21 +276,21 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
![training progress](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.hi.png)
![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png)
## हाइपरपैरामीटर बदलना
सीखने को अधिक स्थिर बनाने के लिए, प्रशिक्षण के दौरान हमारे कुछ हाइपरपैरामीटर को समायोजित करना समझ में आता है। विशेष रूप से:
- **लर्निंग रेट के लिए**, `alpha`, हम 1 के करीब मानों से शुरू कर सकते हैं, और फिर पैरामीटर को धीरे-धीरे घटा सकते हैं। समय के साथ, हमें Q-Table में अच्छे प्रायिकता मान मिलेंगे, और इसलिए हमें उन्हें थोड़ा समायोजित करना चाहिए, और नए मानों के साथ पूरी तरह से ओवरराइट नहीं करना चाहिए।
- **लर्निंग रेट** `alpha` के लिए, हम 1 के करीब मानों से शुरू कर सकते हैं, और फिर पैरामीटर को कम करते रह सकते हैं। समय के साथ, हमें Q-Table में अच्छे प्रायिकता मान मिलेंगे, और इसलिए हमें उन्हें थोड़ा समायोजित करना चाहिए, और नए मानों के साथ पूरी तरह से ओवरराइट नहीं करना चाहिए।
- **epsilon बढ़ाएं**। हम `epsilon` को धीरे-धीरे बढ़ाना चाह सकते हैं, ताकि कम एक्सप्लोर करें और अधिक एक्सप्लॉइट करें। यह शायद कम `epsilon` मान से शुरू करने और लगभग 1 तक बढ़ने का मतलब रखता है।
- **epsilon बढ़ाएं**। हम `epsilon` को धीरे-धीरे बढ़ाना चाह सकते हैं, ताकि कम एक्सप्लोरेशन और अधिक एक्सप्लॉइटेशन करें। शायद कम `epsilon` मान से शुरू करना और इसे लगभग 1 तक बढ़ाना समझ में आता है।
> **कार्य 1**: हाइपरपैरामीटर मानों के साथ प्रयोग करें और देखें कि क्या आप उच्च संचयी इनाम प्राप्त कर सकते हैं। क्या आप 195 से ऊपर प्राप्त कर रहे हैं?
> **कार्य 2**: समस्या को औपचारिक रूप से हल करने के लिए, आपको 100 लगातार रन में 195 औसत इनाम प्राप्त करना होगा। प्रशिक्षण के दौरान इसे मापें और सुनिश्चित करें कि आपने समस्या को औपचारिक रूप से हल कर लिया है!
> **कार्य 2**: समस्या को औपचारिक रूप से हल करने के लिए, आपको 100 लगातार रन के दौरान 195 औसत इनाम प्राप्त करना होगा। प्रशिक्षण के दौरान इसे मापें और सुनिश्चित करें कि आपने समस्या को औपचारिक रूप से हल कर लिया है!
## परिणाम को क्रियान्वित होते हुए देखना
यह देखना दिलचस्प होगा कि प्रशिक्षित मॉडल कैसे व्यवहार करता है। चलिए सिमुलेशन चलाते हैं और प्रशिक्षण के दौरान अपनाई गई वही क्रिया चयन रणनीति का पालन करते हैं, Q-Table में संभाव्यता वितरण के अनुसार सैंपलिंग करते हुए: (कोड ब्लॉक 13)
यह देखना दिलचस्प होगा कि प्रशिक्षित मॉडल कैसे व्यवहार करता है। चलिए सिमुलेशन चलाते हैं और प्रशिक्षण के दौरान उपयोग की गई वही एक्शन चयन रणनीति अपनाते हैं, Q-Table में प्रायिकता वितरण के अनुसार सैंपलिंग करते हुए: (कोड ब्लॉक 13)
```python
obs = env.reset()
@ -306,28 +306,28 @@ env.close()
आपको कुछ ऐसा दिखाई देना चाहिए:
![एक संतुलन बनाता हुआ कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif)
![एक बैलेंसिंग कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif)
---
## 🚀चुनौती
> **कार्य 3**: यहां, हम Q-Table की अंतिम प्रति का उपयोग कर रहे थे, जो शायद सबसे अच्छी न हो। याद रखें कि हमने सबसे अच्छा प्रदर्शन करने वाले Q-Table को `Qbest` वेरिएबल में संग्रहीत किया है! `Qbest` को `Q` पर कॉपी करके उसी उदाहरण को आज़माएं और देखें कि क्या आप कोई अंतर महसूस करते हैं
> **कार्य 3**: यहां, हम Q-Table की अंतिम प्रति का उपयोग कर रहे थे, जो शायद सबसे अच्छी न हो। याद रखें कि हमने सबसे अच्छा प्रदर्शन करने वाले Q-Table को `Qbest` वेरिएबल में संग्रहीत किया है! `Qbest` को `Q` पर कॉपी करके उसी उदाहरण को आज़माएं और देखें कि क्या आपको कोई अंतर दिखाई देता है
> **कार्य 4**: यहां हम प्रत्येक चरण पर सबसे अच्छी क्रिया का चयन नहीं कर रहे थे, बल्कि संबंधित संभाव्यता वितरण के साथ सैंपलिंग कर रहे थे। क्या यह अधिक समझदारी होगी कि हमेशा सबसे अच्छी क्रिया का चयन करें, जिसमें Q-Table का सबसे उच्च मान हो? यह `np.argmax` फ़ंक्शन का उपयोग करके किया जा सकता है, जो उच्चतम Q-Table मान के अनुरूप क्रिया संख्या का पता लगाता है। इस रणनीति को लागू करें और देखें कि क्या यह संतुलन में सुधार करता है।
> **कार्य 4**: यहां हम प्रत्येक चरण पर सबसे अच्छा एक्शन नहीं चुन रहे थे, बल्कि संबंधित प्रायिकता वितरण के साथ सैंपलिंग कर रहे थे। क्या हमेशा सबसे अच्छा एक्शन चुनना अधिक समझदारी होगी, जिसमें Q-Table का सबसे उच्च मान हो? यह `np.argmax` फ़ंक्शन का उपयोग करके किया जा सकता है, जो उच्चतम Q-Table मान के अनुरूप एक्शन नंबर का पता लगाता है। इस रणनीति को लागू करें और देखें कि क्या यह बैलेंसिंग में सुधार करता है।
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/48/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## असाइनमेंट
[माउंटेन कार को प्रशिक्षित करें](assignment.md)
## निष्कर्ष
अब हमने यह सीख लिया है कि एजेंट्स को अच्छे परिणाम प्राप्त करने के लिए कैसे प्रशिक्षित किया जाए, केवल उन्हें एक इनाम फ़ंक्शन प्रदान करके जो खेल की वांछित स्थिति को परिभाषित करता है, और उन्हें खोज स्थान को बुद्धिमानी से एक्सप्लोर करने का अवसर देकर। हमने Q-Learning एल्गोरिदम को डिस्क्रीट और कंटीन्युअस वातावरण के मामलों में सफलतापूर्वक लागू किया है, लेकिन डिस्क्रीट क्रियाओं के साथ।
अब हमने यह सीख लिया है कि एजेंट्स को केवल एक इनाम फ़ंक्शन प्रदान करके, जो गेम की वांछित स्थिति को परिभाषित करता है, और उन्हें खोज स्थान को बुद्धिमानी से एक्सप्लोर करने का अवसर देकर अच्छे परिणाम प्राप्त करने के लिए प्रशिक्षित कैसे किया जाए। हमने Q-Learning एल्गोरिदम को डिस्क्रीट और कंटीन्यस एनवायरनमेंट्स के मामलों में सफलतापूर्वक लागू किया है, लेकिन डिस्क्रीट एक्शन्स के साथ।
यह भी अध्ययन करना महत्वपूर्ण है कि जब क्रिया स्थिति भी कंटीन्युअस हो और जब अवलोकन स्थान अधिक जटिल हो, जैसे कि एटारी गेम स्क्रीन की छवि। इन समस्याओं में अक्सर अच्छे परिणाम प्राप्त करने के लिए अधिक शक्तिशाली मशीन लर्निंग तकनीकों, जैसे कि न्यूरल नेटवर्क, का उपयोग करना आवश्यक होता है। ये अधिक उन्नत विषय हमारे आगामी उन्नत AI पाठ्यक्रम का विषय हैं।
यह भी अध्ययन करना महत्वपूर्ण है कि जब एक्शन स्टेट भी कंटीन्यस हो और जब ऑब्ज़र्वेशन स्पेस अधिक जटिल हो, जैसे कि एटारी गेम स्क्रीन की छवि। इन समस्याओं में अक्सर अच्छे परिणाम प्राप्त करने के लिए अधिक शक्तिशाली मशीन लर्निंग तकनीकों, जैसे कि न्यूरल नेटवर्क्स, का उपयोग करना आवश्यक होता है। ये अधिक उन्नत विषय हमारे आगामी उन्नत AI कोर्स का विषय हैं।
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,37 +1,37 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "20f18ff565638be615df4174858e4a7f",
"translation_date": "2025-09-03T23:18:36+00:00",
"original_hash": "83320d6b6994909e35d830cebf214039",
"translation_date": "2025-09-05T10:21:12+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "hi"
}
-->
# पोस्टस्क्रिप्ट: वास्तविक दुनिया में मशीन लर्निंग
![वास्तविक दुनिया में मशीन लर्निंग का सारांश एक स्केच नोट में](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.hi.png)
![वास्तविक दुनिया में मशीन लर्निंग का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-realworld.png)
> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
इस पाठ्यक्रम में, आपने डेटा को प्रशिक्षण के लिए तैयार करने और मशीन लर्निंग मॉडल बनाने के कई तरीके सीखे। आपने क्लासिक रिग्रेशन, क्लस्टरिंग, क्लासिफिकेशन, प्राकृतिक भाषा प्रसंस्करण और टाइम सीरीज़ मॉडल की एक श्रृंखला बनाई। बधाई हो! अब, आप सोच रहे होंगे कि यह सब किसके लिए है... इन मॉडलों के वास्तविक दुनिया में क्या उपयोग हैं?
हालांकि उद्योग में एआई, जो आमतौर पर डीप लर्निंग का उपयोग करता है, ने बहुत रुचि प्राप्त की है, फिर भी क्लासिकल मशीन लर्निंग मॉडलों के लिए मूल्यवान अनुप्रयोग हैं। आप आज भी इनमें से कुछ अनुप्रयोगों का उपयोग कर सकते हैं! इस पाठ में, आप देखेंगे कि कैसे आठ अलग-अलग उद्योग और विषय-क्षेत्र इन प्रकार के मॉडलों का उपयोग अपने अनुप्रयोगों को अधिक प्रदर्शनकारी, विश्वसनीय, बुद्धिमान और उपयोगकर्ताओं के लिए मूल्यवान बनाने के लिए करते हैं।
हालांकि उद्योग में AI, जो आमतौर पर डीप लर्निंग का उपयोग करता है, ने बहुत रुचि प्राप्त की है, फिर भी क्लासिकल मशीन लर्निंग मॉडलों के लिए मूल्यवान अनुप्रयोग हैं। आप आज भी इनमें से कुछ अनुप्रयोगों का उपयोग कर सकते हैं! इस पाठ में, आप देखेंगे कि कैसे आठ अलग-अलग उद्योग और विषय-विशेष डोमेन इन प्रकार के मॉडलों का उपयोग अपने अनुप्रयोगों को अधिक प्रदर्शनकारी, विश्वसनीय, बुद्धिमान और उपयोगकर्ताओं के लिए मूल्यवान बनाने के लिए करते हैं।
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/49/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## 💰 वित्त
वित्तीय क्षेत्र मशीन लर्निंग के लिए कई अवसर प्रदान करता है। इस क्षेत्र की कई समस्याएं एमएल का उपयोग करके मॉडल और हल की जा सकती हैं
वित्तीय क्षेत्र मशीन लर्निंग के लिए कई अवसर प्रदान करता है। इस क्षेत्र की कई समस्याओं को मॉडलिंग और हल करने के लिए एमएल का उपयोग किया जा सकता है
### क्रेडिट कार्ड धोखाधड़ी का पता लगाना
हमने पाठ्यक्रम में पहले [k-means क्लस्टरिंग](../../5-Clustering/2-K-Means/README.md) के बारे में सीखा, लेकिन इसे क्रेडिट कार्ड धोखाधड़ी से संबंधित समस्याओं को हल करने के लिए कैसे उपयोग किया जा सकता है?
हमने इस पाठ्यक्रम में पहले [k-means क्लस्टरिंग](../../5-Clustering/2-K-Means/README.md) के बारे में सीखा, लेकिन इसे क्रेडिट कार्ड धोखाधड़ी से संबंधित समस्याओं को हल करने के लिए कैसे उपयोग किया जा सकता है?
k-means क्लस्टरिंग क्रेडिट कार्ड धोखाधड़ी का पता लगाने की तकनीक में उपयोगी है जिसे **आउटलायर डिटेक्शन** कहा जाता है। आउटलायर, या डेटा के एक सेट के बारे में अवलोकनों में विचलन, हमें बता सकते हैं कि क्रेडिट कार्ड सामान्य रूप से उपयोग किया जा रहा है या कुछ असामान्य हो रहा है। नीचे दिए गए पेपर में दिखाया गया है कि आप k-means क्लस्टरिंग एल्गोरिदम का उपयोग करके क्रेडिट कार्ड डेटा को सॉर्ट कर सकते हैं और प्रत्येक लेनदेन को क्लस्टर में असाइन कर सकते हैं कि यह कितना आउटलायर प्रतीत होता है। फिर, आप धोखाधड़ी बनाम वैध लेनदेन के लिए सबसे जोखिम भरे क्लस्टर का मूल्यांकन कर सकते हैं।
k-means क्लस्टरिंग क्रेडिट कार्ड धोखाधड़ी का पता लगाने की तकनीक में उपयोगी है जिसे **आउटलायर डिटेक्शन** कहा जाता है। आउटलायर, या डेटा के एक सेट के बारे में अवलोकनों में विचलन, हमें बता सकते हैं कि क्रेडिट कार्ड सामान्य रूप से उपयोग किया जा रहा है या कुछ असामान्य हो रहा है। नीचे दिए गए पेपर में दिखाया गया है कि आप k-means क्लस्टरिंग एल्गोरिदम का उपयोग करके क्रेडिट कार्ड डेटा को सॉर्ट कर सकते हैं और प्रत्येक लेनदेन को क्लस्टर में असाइन कर सकते हैं कि यह कितना आउटलायर प्रतीत होता है। फिर, आप धोखाधड़ी और वैध लेनदेन के लिए सबसे जोखिम भरे क्लस्टर का मूल्यांकन कर सकते हैं।
[संदर्भ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf)
### वेल्थ मैनेजमेंट
### संपत्ति प्रबंधन
वेल्थ मैनेजमेंट में, एक व्यक्ति या फर्म अपने ग्राहकों की ओर से निवेश संभालता है। उनका काम दीर्घकालिक रूप से धन को बनाए रखना और बढ़ाना है, इसलिए यह आवश्यक है कि वे ऐसे निवेश चुनें जो अच्छा प्रदर्शन करें।
संपत्ति प्रबंधन में, एक व्यक्ति या फर्म अपने ग्राहकों की ओर से निवेश संभालता है। उनका काम दीर्घकालिक में संपत्ति को बनाए रखना और बढ़ाना है, इसलिए यह आवश्यक है कि ऐसे निवेश चुने जाएं जो अच्छा प्रदर्शन करें।
किसी विशेष निवेश के प्रदर्शन का मूल्यांकन करने का एक तरीका सांख्यिकीय रिग्रेशन के माध्यम से है। [लिनियर रिग्रेशन](../../2-Regression/1-Tools/README.md) यह समझने के लिए एक मूल्यवान उपकरण है कि कोई फंड किसी बेंचमार्क के सापेक्ष कैसा प्रदर्शन करता है। हम यह भी निष्कर्ष निकाल सकते हैं कि रिग्रेशन के परिणाम सांख्यिकीय रूप से महत्वपूर्ण हैं या वे ग्राहक के निवेश को कितना प्रभावित करेंगे। आप अपने विश्लेषण को मल्टीपल रिग्रेशन का उपयोग करके और भी विस्तारित कर सकते हैं, जहां अतिरिक्त जोखिम कारकों को ध्यान में रखा जा सकता है। यह कैसे काम करेगा, इसके एक उदाहरण के लिए, नीचे दिए गए पेपर को देखें जो रिग्रेशन का उपयोग करके फंड प्रदर्शन का मूल्यांकन करता है।
[संदर्भ](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/)
@ -47,21 +47,21 @@ k-means क्लस्टरिंग क्रेडिट कार्ड ध
### पूर्वाग्रह को कम करना
[Grammarly](https://grammarly.com), एक लेखन सहायक जो वर्तनी और व्याकरण की त्रुटियों की जांच करता है, अपने उत्पादों में परिष्कृत [प्राकृतिक भाषा प्रसंस्करण प्रणालियों](../../6-NLP/README.md) का उपयोग करता है। उन्होंने अपने टेक ब्लॉग में एक दिलचस्प केस स्टडी प्रकाशित की कि उन्होंने मशीन लर्निंग में जेंडर पूर्वाग्रह से कैसे निपटा, जिसे आपने हमारे [परिचयात्मक निष्पक्षता पाठ](../../1-Introduction/3-fairness/README.md) में सीखा।
[Grammarly](https://grammarly.com), एक लेखन सहायक जो वर्तनी और व्याकरण की त्रुटियों की जांच करता है, अपने उत्पादों में परिष्कृत [प्राकृतिक भाषा प्रसंस्करण प्रणालियों](../../6-NLP/README.md) का उपयोग करता है। उन्होंने अपने टेक ब्लॉग में एक दिलचस्प केस स्टडी प्रकाशित की कि उन्होंने मशीन लर्निंग में लिंग पूर्वाग्रह से कैसे निपटा, जिसे आपने हमारे [परिचयात्मक निष्पक्षता पाठ](../../1-Introduction/3-fairness/README.md) में सीखा।
[संदर्भ](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
## 👜 रिटेल
रिटेल क्षेत्र निश्चित रूप से एमएल का उपयोग करके लाभ उठा सकता है, ग्राहक यात्रा को बेहतर बनाने से लेकर इन्वेंट्री को इष्टतम तरीके से स्टॉक करने तक
रिटेल क्षेत्र निश्चित रूप से एमएल के उपयोग से लाभ उठा सकता है, जिसमें बेहतर ग्राहक यात्रा बनाने से लेकर इन्वेंट्री को इष्टतम तरीके से स्टॉक करना शामिल है
### ग्राहक यात्रा को व्यक्तिगत बनाना
Wayfair, एक कंपनी जो फर्नीचर जैसे घरेलू सामान बेचती है, ग्राहकों को उनके स्वाद और जरूरतों के लिए सही उत्पाद खोजने में मदद करना बहुत महत्वपूर्ण मानती है। इस लेख में, कंपनी के इंजीनियर बताते हैं कि वे एमएल और एनएलपी का उपयोग कैसे करते हैं ताकि "ग्राहकों के लिए सही परिणाम प्रस्तुत किए जा सकें"। विशेष रूप से, उनका क्वेरी इंटेंट इंजन ग्राहक समीक्षाओं पर एंटिटी एक्सट्रैक्शन, क्लासिफायर ट्रेनिंग, एसेट और ओपिनियन एक्सट्रैक्शन, और सेंटिमेंट टैगिंग का उपयोग करता है। यह ऑनलाइन रिटेल में एनएलपी के काम करने का एक क्लासिक उपयोग मामला है।
Wayfair, एक कंपनी जो फर्नीचर जैसे घरेलू सामान बेचती है, ग्राहकों को उनके स्वाद और जरूरतों के लिए सही उत्पाद खोजने में मदद करना बहुत महत्वपूर्ण मानती है। इस लेख में, कंपनी के इंजीनियर बताते हैं कि वे एमएल और एनएलपी का उपयोग कैसे करते हैं ताकि "ग्राहकों के लिए सही परिणाम प्रस्तुत किए जा सकें।" विशेष रूप से, उनका क्वेरी इंटेंट इंजन ग्राहक समीक्षाओं पर एंटिटी एक्सट्रैक्शन, क्लासिफायर ट्रेनिंग, एसेट और ओपिनियन एक्सट्रैक्शन, और सेंटिमेंट टैगिंग का उपयोग करता है। यह ऑनलाइन रिटेल में एनएलपी के काम करने का एक क्लासिक उपयोग मामला है।
[संदर्भ](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
### इन्वेंट्री प्रबंधन
[StitchFix](https://stitchfix.com), एक बॉक्स सेवा जो उपभोक्ताओं को कपड़े भेजती है, जैसे अभिनव और तेज़ कंपनियां सिफारिशों और इन्वेंट्री प्रबंधन के लिए एमएल पर बहुत अधिक निर्भर करती हैं। उनके स्टाइलिंग टीमें उनके मर्चेंडाइजिंग टीमों के साथ मिलकर काम करती हैं। "हमारे डेटा वैज्ञानिकों में से एक ने एक जेनेटिक एल्गोरिदम के साथ प्रयोग किया और इसे परिधान पर लागू किया ताकि यह भविष्यवाणी की जा सके कि आज मौजूद नहीं होने वाला एक सफल कपड़े का टुकड़ा क्या होगा। हमने इसे मर्चेंडाइज टीम को दिया और अब वे इसे एक उपकरण के रूप में उपयोग कर सकते हैं।"
[StitchFix](https://stitchfix.com) जैसे अभिन, तेज़ कंपनियं, जो उपभोक्ताओं को कपड़ों की शिपिंग सेवा प्रदान करती हैं, सिफारिशों और इन्वेंट्री प्रबंधन के लिए एमएल पर बहुत अधिक निर्भर करती हैं। उनके स्टाइलिंग टीमें उनके मर्चेंडाइजिंग टीमों के साथ मिलकर काम करती हैं। "हमारे एक डेटा वैज्ञानिक ने एक जेनेटिक एल्गोरिदम के साथ प्रयोग किया और इसे परिधान पर लागू किया ताकि यह भविष्यवाणी की जा सके कि कौन सा कपड़ा सफल होगा जो आज मौजूद नहीं है। हमने इसे मर्चेंडाइज टीम को दिया और अब वे इसे एक उपकरण के रूप में उपयोग कर सकते हैं।"
[संदर्भ](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/)
## 🏥 स्वास्थ्य देखभाल
@ -70,17 +70,17 @@ Wayfair, एक कंपनी जो फर्नीचर जैसे घर
### क्लिनिकल ट्रायल प्रबंधन
क्लिनिकल ट्रायल में विषाक्तता दवा निर्माताओं के लिए एक प्रमुख चिंता का विषय है। कितनी विषाक्तता सहनीय है? इस अध्ययन में, विभिन्न क्लिनिकल ट्रायल विधियों का विश्लेषण करने से क्लिनिकल ट्रायल परिणामों की संभावनाओं की भविष्यवाणी करने के लिए एक नया दृष्टिकोण विकसित हुआ। विशेष रूप से, उन्होंने रैंडम फॉरेस्ट का उपयोग करके एक [क्लासिफायर](../../4-Classification/README.md) बनाया जो दवाओं के समूहों के बीच अंतर कर सकता है।
क्लिनिकल ट्रायल में विषाक्तता दवा निर्माताओं के लिए एक प्रमुख चिंता का विषय है। कितनी विषाक्तता सहनीय है? इस अध्ययन में, विभिन्न क्लिनिकल ट्रायल विधियों का विश्लेषण करने से क्लिनिकल ट्रायल परिणामों की संभावनाओं की भविष्यवाणी करने के लिए एक नया दृष्टिकोण विकसित हुआ। विशेष रूप से, उन्होंने एक [क्लासिफायर](../../4-Classification/README.md) बनाने के लिए रैंडम फॉरेस्ट का उपयोग किया जो दवाओं के समूहों के बीच अंतर कर सकता है।
[संदर्भ](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
### अस्पताल पुनः प्रवेश प्रबंधन
अस्पताल देखभाल महंगी है, खासकर जब मरीजों को फिर से भर्ती करना पड़ता है। यह पेपर एक कंपनी पर चर्चा करता है जो [क्लस्टरिंग](../../5-Clustering/README.md) एल्गोरिदम का उपयोग करके पुनः प्रवेश की संभावना की भविष्यवाणी करती है। ये क्लस्टर विश्लेषकों को "पुनः प्रवेश के समूहों की खोज करने में मदद करते हैं जो एक सामान्य कारण साझा कर सकते हैं।"
अस्पताल देखभाल महंगी है, खासकर जब मरीजों को फिर से भर्ती करना पड़ता है। इस पेपर में एक कंपनी पर चर्चा की गई है जो [क्लस्टरिंग](../../5-Clustering/README.md) एल्गोरिदम का उपयोग करके पुनः प्रवेश की संभावना की भविष्यवाणी करती है। ये क्लस्टर विश्लेषकों को "पुनः प्रवेश के समूहों की खोज करने में मदद करते हैं जो एक सामान्य कारण साझा कर सकते हैं।"
[संदर्भ](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning)
### रोग प्रबंधन
हाल ही में महामारी ने यह उजागर किया है कि मशीन लर्निंग रोग के फैलने को रोकने में कैसे मदद कर सकती है। इस लेख में, आप ARIMA, लॉजिस्टिक कर्व्स, लिनियर रिग्रेशन, और SARIMA का उपयोग पहचानेंगे। "यह कार्य इस वायरस के फैलने की दर की गणना करने और इस प्रकार मौतों, रिकवरी, और पुष्टि किए गए मामलों की भविष्यवाणी करने का प्रयास है, ताकि यह हमें बेहतर तैयारी करने और जीवित रहने में मदद कर सके।"
हाल ही में महामारी ने यह उजागर किया है कि मशीन लर्निंग रोग के फैलाव को रोकने में कैसे मदद कर सकती है। इस लेख में, आप ARIMA, लॉजिस्टिक कर्व्स, लिनियर रिग्रेशन, और SARIMA का उपयोग पहचानेंगे। "यह कार्य इस वायरस के फैलने की दर की गणना करने और मौतों, रिकवरी, और पुष्टि किए गए मामलों की भविष्यवाणी करने का प्रयास है, ताकि हम बेहतर तैयारी कर सकें और जीवित रह सकें।"
[संदर्भ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/)
## 🌲 पारिस्थितिकी और ग्रीन टेक
@ -89,21 +89,21 @@ Wayfair, एक कंपनी जो फर्नीचर जैसे घर
### जंगल प्रबंधन
आपने पिछले पाठों में [रीइन्फोर्समेंट लर्निंग](../../8-Reinforcement/README.md) के बारे में सीखा। यह प्रकृति में पैटर्न की भविष्यवाणी करने की कोशिश करते समय बहुत उपयोगी हो सकता है। विशेष रूप से, इसका उपयोग जंगल की आग और आक्रामक प्रजातियों के फैलने जैसे पारिस्थितिक समस्याओं को ट्रैक करने के लिए किया जा सकता है। कनाडा में, शोधकर्ताओं के एक समूह ने उपग्रह छवियों से जंगल की आग की गतिशीलता मॉडल बनाने के लिए रीइन्फोर्समेंट लर्निंग का उपयोग किया। एक अभिनव "स्पेशली स्प्रेडिंग प्रोसेस (SSP)" का उपयोग करते हुए, उन्होंने जंगल की आग को "परिदृश्य में किसी भी सेल पर एजेंट" के रूप में देखा। "आग किसी स्थान से किसी भी समय उत्तर, दक्षिण, पूर्व, या पश्चिम में फैलने या न फैलने की क्रिया कर सकती है।"
आपने पिछले पाठों में [रीइन्फोर्समेंट लर्निंग](../../8-Reinforcement/README.md) के बारे में सीखा। यह प्रकृति में पैटर्न की भविष्यवाणी करने की कोशिश करते समय बहुत उपयोगी हो सकता है। विशेष रूप से, इसका उपयोग जंगल की आग और आक्रामक प्रजातियों के फैलाव जैसे पारिस्थितिक समस्याओं को ट्रैक करने के लिए किया जा सकता है। कनाडा में, शोधकर्ताओं के एक समूह ने उपग्रह छवियों से जंगल की आग की गतिशीलता मॉडल बनाने के लिए रीइन्फोर्समेंट लर्निंग का उपयोग किया। एक अभिनव "स्पेशली स्प्रेडिंग प्रोसेस (SSP)" का उपयोग करते हुए, उन्होंने जंगल की आग को "परिदृश्य में किसी भी सेल पर एजेंट" के रूप में देखा। "आग किसी स्थान से किसी भी समय उत्तर, दक्षिण, पूर्व, पश्चिम में फैलने या न फैलने की कार्रवाई कर सकती है।"
इस दृष्टिकोण ने सामान्य RL सेटअप को उलट दिया क्योंकि संबंधित मार्कोव निर्णय प्रक्रिया (MDP) की गतिशीलता तत्काल जंगल की आग फैलने के लिए एक ज्ञात कार्य है। इस समूह द्वारा उपयोग किए गए क्लासिक एल्गोरिदम के बारे में अधिक पढ़ें नीचे दिए गए लिंक पर।
[संदर्भ](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full)
### जानवरों की गति का पता लगाना
हालांकि डीप लर्निंग ने जानवरों की गतिविधियों को ट्रैक करने में क्रांति ला दी है (आप अपना [पोलर बियर ट्रैकर](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) यहां बना सकते हैं), क्लासिक एमएल अभी भी इस कार्य में जगह रखता है।
हालांकि डीप लर्निंग ने जानवरों की गतिविधियों को ट्रैक करने में क्रांति ला दी है (आप अपना [पोलर बियर ट्रैकर](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) यहां बना सकते हैं), क्लासिक एमएल अभी भी इस कार्य में अपनी जगह रखता है।
फार्म जानवरों की गतिविधियों को ट्रैक करने के लिए सेंसर और IoT इस प्रकार की दृश्य प्रसंस्करण का उपयोग करते हैं, लेकिन अधिक बुनियादी एमएल तकनीकें डेटा को प्रीप्रोसेस करने के लिए उपयोगी होती हैं। उदाहरण के लिए, इस पेपर में, विभिन्न क्लासिफायर एल्गोरिदम का उपयोग करके भेड़ों की मुद्राओं की निगरानी और विश्लेषण किया गया। आप पृष्ठ 335 पर ROC कर्व को पहचान सकते हैं।
फार्म जानवरों की गतिविधियों को ट्रैक करने के लिए सेंसर और IoT इस प्रकार की दृश्य प्रसंस्करण का उपयोग करते हैं, लेकिन डेटा को प्रीप्रोसेस करने के लिए अधिक बुनियादी एमएल तकनीकें उपयोगी होती हैं। उदाहरण के लिए, इस पेपर में, विभिन्न क्लासिफायर एल्गोरिदम का उपयोग करके भेड़ों की मुद्राओं की निगरानी और विश्लेषण किया गया। आप पृष्ठ 335 पर ROC कर्व को पहचान सकते हैं।
[संदर्भ](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf)
### ⚡️ ऊर्जा प्रबंधन
हमारे [टाइम सीरीज़ फोरकास्टिंग](../../7-TimeSeries/README.md) पाठों में, हमने स्मार्ट पार्किंग मीटर की अवधारणा को शहर के लिए राजस्व उत्पन्न करने के लिए आपूर्ति और मांग को समझने के आधार पर लागू किया। इस लेख में चर्चा की गई है कि क्लस्टरिंग, रिग्रेशन और टाइम सीरीज़ फोरकास्टिंग ने आयरलैंड में स्मार्ट मीटरिंग के आधार पर भविष्य की ऊर्जा खपत की भविष्यवाणी करने में कैसे मदद की।
हमारे [टाइम सीरीज़ फोरकास्टिंग](../../7-TimeSeries/README.md) पाठों में, हमने स्मार्ट पार्किंग मीटर की अवधारणा को लागू किया ताकि आपूर्ति और मांग को समझकर किसी शहर के लिए राजस्व उत्पन्न किया जा सके। इस लेख में चर्चा की गई है कि क्लस्टरिंग, रिग्रेशन और टाइम सीरीज़ फोरकास्टिंग ने आयरलैंड में भविष्य की ऊर्जा खपत की भविष्यवाणी करने में कैसे मदद की, स्मार्ट मीटरिंग के आधार पर
[संदर्भ](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf)
## 💼 बीमा
@ -112,25 +112,25 @@ Wayfair, एक कंपनी जो फर्नीचर जैसे घर
### अस्थिरता प्रबंधन
MetLife, एक जीवन बीमा प्रदाता, अपने वित्तीय मॉडलों में अस्थिरता का विश्लेषण और प्रबंधन करने के तरीके के बारे में खुला है। इस लेख में आप बाइनरी और ऑर्डिनल क्लासिफिकेशन विज़ुअलाइज़ेशन देखेंगे। आप फोरकास्टिंग विज़ुअलाइज़ेशन भी खोजेंगे।
MetLife, एक जीवन बीमा प्रदाता, अपने वित्तीय मॉडलों में अस्थिरता का विश्लेषण और कम करने के तरीके के बारे में खुला है। इस लेख में आप बाइनरी और ऑर्डिनल क्लासिफिकेशन विज़ुअलाइज़ेशन देखेंगे। आप फोरकास्टिंग विज़ुअलाइज़ेशन भी खोजेंगे।
[संदर्भ](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
## 🎨 कला, संस्कृति, और साहित्य
कला में, उदाहरण के लिए पत्रकारिता में, कई दिलचस्प समस्याएं हैं। फेक न्यूज़ का पता लगाना एक बड़ी समस्या है क्योंकि यह लोगों की राय को प्रभावित करने और यहां तक कि लोकतंत्र को गिराने के लिए सिद्ध हुआ है। संग्रहालय भी एमएल का उपयोग करके लाभ उठा सकते हैं, जैसे कि कलाकृतियों के बीच लिंक ढूंढना या संसाधन योजना।
कला में, उदाहरण के लिए पत्रकारिता में, कई दिलचस्प समस्याएं हैं। फेक न्यूज़ का पता लगाना एक बड़ी समस्या है क्योंकि यह लोगों की राय को प्रभावित करने और यहां तक कि लोकतंत्रों को गिराने के लिए सिद्ध हुआ है। संग्रहालय भी एमएल का उपयोग करके लाभ उठा सकते हैं, जैसे कि कलाकृतियों के बीच लिंक ढूंढना या संसाधन योजना बनाना।
### फेक न्यूज़ का पता लगाना
आज की मीडिया में फेक न्यूज़ का पता लगाना बिल्ली और चूहे का खेल बन गया है। इस लेख में, शोधकर्ता सुझाव देते हैं कि एमएल तकनीकों के संयोजन से एक सिस्टम का परीक्षण किया जा सकता है और सबसे अच्छा मॉडल तैनात किया जा सकता है: "यह सिस्टम डेटा से फीचर्स निकालने के लिए प्राकृतिक भाषा प्रसंस्करण पर आधारित है और फिर इन फीचर्स का उपयोग मशीन लर्निंग क्लासिफायर जैसे Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), और Logistic Regression (LR) के प्रशिक्षण के लिए किया जाता है।"
[संदर्भ](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf)
यह लेख दिखाता है कि कैसे विभिन्न एमएल डोमेन को मिलाकर दिलचस्प परिणाम उत्पन्न किए जा सकते हैं जो फेक न्यूज़ को फैलने और वास्तविक नुकसान पहुंचाने से रोकने में मदद कर सकते हैं; इस मामले में, प्रेरणा COVID उपचारों के बारे में अफवाहों के फैलने से हुई थी जिसने भीड़ हिंसा को उकसाया।
यह लेख दिखाता है कि कैसे विभिन्न एमएल डोमेन को मिलाकर दिलचस्प परिणाम उत्पन्न किए जा सकते हैं जो फेक न्यूज़ को फैलने और वास्तविक नुकसान पैदा करने से रोकने में मदद कर सकते हैं; इस मामले में, प्रेरणा COVID उपचारों के बारे में अफवाहों के फैलने से हुई थी जिसने भीड़ हिंसा को उकसाया।
### संग्रहालय एमएल
संग्रहालय एआई क्रांति के कगार पर हैं, जिसमें संग्रहों को कैटलॉग और डिजिटाइज़ करना और कलाकृतियों के बीच लिंक ढूंढना तकनीक के उन्नति के साथ आसान हो रहा है। [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) जैसे प्रोजेक्ट्स वेटिकन आर्काइव्स जैसे दुर्गम संग्रहों के रहस्यों को खोलने में मदद कर रहे हैं। लेकिन, संग्रहालयों का व्यावसायिक पहलू भी एमएल मॉडलों से लाभ उठाता है।
संग्रहालय एआई क्रांति के कगार पर हैं, जिसमें संग्रहों को कैटलॉग और डिजिटाइज़ करना और कलाकृतियों के बीच लिंक ढूंढना आसान हो रहा है क्योंकि तकनीक आगे बढ़ रही है। [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) जैसे प्रोजेक्ट्स वेटिकन आर्काइव्स जैसे दुर्गम संग्रहों के रहस्यों को खोलने में मदद कर रहे हैं। लेकिन, संग्रहालयों का व्यावसायिक पहलू भी एमएल मॉडलों से लाभान्वित होता है।
उदाहरण के लिए, शिकागो के आर्ट इंस्टीट्यूट ने मॉडल बनाए ताकि यह भविष्यवाणी की जा सके कि दर्शक किसमें रुचि रखते हैं और वे कब प्रदर्शनियों में भाग लेंगे। लक्ष्य प्रत्येक बार जब उपयोगकर्ता संग्रहालय का दौरा करता है तो व्यक्तिगत और अनुकूलित अनुभव बनाना है। "वित्तीय वर्ष 2017 के दौरान, मॉडल ने उपस्थिति और प्रवेश को 1 प्रतिशत की सटीकता के भीतर भविष्यवाणी की, एंड्रयू सिमनिक, आर्ट इंस्टीट्यूट में वरिष्ठ उपाध्यक्ष कहते हैं।"
उदाहरण के लिए, शिकागो के आर्ट इंस्टीट्यूट ने मॉडल बनाए ताकि यह भविष्यवाणी की जा सके कि दर्शक किसमें रुचि रखते हैं और वे कब प्रदर्शनियों में भाग लेंगे। लक्ष्य प्रत्येक बार जब उपयोगकर्ता संग्रहालय का दौरा करता है तो व्यक्तिगत और अनुकूलित अनुभव बनाना है। "वित्तीय वर्ष 2017 के दौरान, मॉडल ने उपस्थिति और प्रवेश को 1 प्रतिशत की सटीकता के भीतर भविष्यवाणी की, कहते हैं एंड्रयू सिमनिक, आर्ट इंस्टीट्यूट में वरिष्ठ उपाध्यक्ष।"
[संदर्भ](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices)
## 🏷 मार्केटिंग
@ -141,13 +141,13 @@ MetLife, एक जीवन बीमा प्रदाता, अपने
[संदर्भ](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/)
## 🚀 चुनौती
एक और क्षेत्र की पहचान करें जो इस पाठ्यक्रम में सीखे गए कुछ तकनीकों से लाभ उठाता है, और जानें कि वह क्षेत्र मशीन लर्निंग का उपयोग कैसे करता है।
## [पाठ के बाद क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/50/)
एक और क्षेत्र की पहचान करें जो आपने इस पाठ्यक्रम में सीखी गई तकनीकों से लाभान्वित होता है
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
Wayfair डेटा साइंस टीम के पास कई दिलचस्प वीडियो हैं जो बताते हैं कि वे अपनी कंपनी में मशीन लर्निंग का उपयोग कैसे करते हैं। [देखने लायक](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) है!
Wayfair की डेटा साइंस टीम ने यह दिखाने के लिए कई दिलचस्प वीडियो बनाए हैं कि वे अपनी कंपनी में मशीन लर्निंग का उपयोग कैसे करते हैं। यह [देखने लायक](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) है!
## असाइनमेंट
@ -156,4 +156,4 @@ Wayfair डेटा साइंस टीम के पास कई दिल
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,28 +1,28 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ba0f6e1019351351c8ee4c92867b6a0b",
"translation_date": "2025-09-03T23:24:11+00:00",
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
"translation_date": "2025-09-05T10:21:53+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "hi"
}
-->
# पोस्टस्क्रिप्ट: मशीन लर्निंग में मॉडल डिबगिंग का जिम्मेदार AI डैशबोर्ड घटकों के साथ उपयोग
## [प्री-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## परिचय
मशीन लर्निंग हमारे दैनिक जीवन को प्रभावित करती है। AI स्वास्थ्य सेवा, वित्त, शिक्षा और रोजगार जैसे महत्वपूर्ण क्षेत्रों में प्रवेश कर रही है, जो हमारे व्यक्तिगत और सामाजिक जीवन को प्रभावित करते हैं। उदाहरण के लिए, सिस्टम और मॉडल रोज़मर्रा के निर्णय लेने वाले कार्यों में शामिल होते हैं, जैसे स्वास्थ्य देखभाल निदान या धोखाधड़ी का पता लगाना। AI में प्रगति और इसके तेज़ी से अपनाने के साथ, समाज की अपेक्षाएं और नियम भी बदल रहे हैं। हम लगातार देखते हैं कि AI सिस्टम कई बार अपेक्षाओं पर खरे नहीं उतरते; वे नई चुनौतियों को उजागर करते हैं; और सरकारें AI समाधानों को विनियमित करना शुरू कर रही हैं। इसलिए, यह महत्वपूर्ण है कि इन मॉडलों का विश्लेषण किया जाए ताकि सभी के लिए निष्पक्ष, विश्वसनीय, समावेशी, पारदर्शी और उत्तरदायी परिणाम सुनिश्चित किए जा सकें।
मशीन लर्निंग हमारे दैनिक जीवन को प्रभावित करती है। AI स्वास्थ्य देखभाल, वित्त, शिक्षा, और रोजगार जैसे महत्वपूर्ण क्षेत्रों में प्रवेश कर रही है, जो हमारे व्यक्तिगत और सामाजिक जीवन को प्रभावित करती है। उदाहरण के लिए, सिस्टम और मॉडल दैनिक निर्णय लेने वाले कार्यों में शामिल होते हैं, जैसे स्वास्थ्य देखभाल निदान या धोखाधड़ी का पता लगाना। AI की प्रगति और तेजी से अपनाने के साथ, समाज की अपेक्षाएं और नियमन भी विकसित हो रहे हैं। हम लगातार देखते हैं कि AI सिस्टम अपेक्षाओं को पूरा करने में विफल रहते हैं, नई चुनौतियों को उजागर करते हैं, और सरकारें AI समाधानों को नियंत्रित करना शुरू कर रही हैं। इसलिए, यह महत्वपूर्ण है कि इन मॉडलों का विश्लेषण किया जाए ताकि सभी के लिए निष्पक्ष, विश्वसनीय, समावेशी, पारदर्शी और उत्तरदायी परिणाम प्रदान किए जा सकें।
इस पाठ्यक्रम में, हम व्यावहारिक उपकरणों पर ध्यान देंगे जो यह आकलन करने में मदद करते हैं कि क्या किसी मॉडल में जिम्मेदार AI से संबंधित समस्याएं हैं। पारंपरिक मशीन लर्निंग डिबगिंग तकनीकें आमतौर पर मात्रात्मक गणनाओं पर आधारित होती हैं, जैसे कि समग्र सटीकता या औसत त्रुटि हानि। कल्पना करें कि जब आप इन मॉडलों को बनाने के लिए उपयोग किए जा रहे डेटा में कुछ जनसांख्यिकी, जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, या असमान रूप से प्रतिनिधित्व करने वाले जनसांख्यिकी की कमी होती है, तो क्या हो सकता है। या जब मॉडल का आउटपुट किसी जनसांख्यिकी को प्राथमिकता देता है। यह संवेदनशील फीचर समूहों के अधिक या कम प्रतिनिधित्व को जन्म दे सकता है, जिससे मॉडल में निष्पक्षता, समावेशिता, या विश्वसनीयता की समस्याएं उत्पन्न हो सकती हैं। इसके अलावा, मशीन लर्निंग मॉडल अक्सर "ब्लैक बॉक्स" माने जाते हैं, जिससे यह समझना और समझाना मुश्किल हो जाता है कि मॉडल की भविष्यवाणी को क्या प्रेरित करता है। ये सभी चुनौतियां डेटा वैज्ञानिकों और AI डेवलपर्स के सामने आती हैं जब उनके पास मॉडल की निष्पक्षता या विश्वसनीयता का आकलन करने के लिए पर्याप्त उपकरण नहीं होते।
इस पाठ्यक्रम में, हम व्यावहारिक उपकरणों पर ध्यान देंगे जो यह आकलन करने में मदद करते हैं कि क्या किसी मॉडल में जिम्मेदार AI से संबंधित समस्याएं हैं। पारंपरिक मशीन लर्निंग डिबगिंग तकनीकें आमतौर पर मात्रात्मक गणनाओं पर आधारित होती हैं, जैसे समग्र सटीकता या औसत त्रुटि हानि। कल्पना करें कि जब आप इन मॉडलों को बनाने के लिए उपयोग किए जा रहे डेटा में कुछ जनसांख्यिकी, जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, या असमान रूप से प्रतिनिधित्व करने वाले जनसांख्यिकी की कमी होती है, तो क्या हो सकता है। या जब मॉडल का आउटपुट कुछ जनसांख्यिकी को प्राथमिकता देता है। यह संवेदनशील फीचर समूहों के अति या कम प्रतिनिधित्व को पेश कर सकता है, जिससे मॉडल में निष्पक्षता, समावेशिता, या विश्वसनीयता की समस्याएं उत्पन्न हो सकती हैं। इसके अलावा, मशीन लर्निंग मॉडल को अक्सर "ब्लैक बॉक्स" माना जाता है, जिससे यह समझना और समझाना मुश्किल हो जाता है कि मॉडल की भविष्यवाणी को क्या प्रेरित करता है। ये सभी चुनौतियां डेटा वैज्ञानिकों और AI डेवलपर्स के सामने आती हैं जब उनके पास मॉडल की निष्पक्षता या विश्वसनीयता का आकलन करने के लिए पर्याप्त उपकरण नहीं होते।
इस पाठ में, आप अपने मॉडलों को डिबग करने के बारे में सीखेंगे:
- **त्रुटि विश्लेषण**: यह पहचानें कि आपके डेटा वितरण में मॉडल की त्रुटि दरें कहाँ अधिक हैं।
- **मॉडल ओवरव्यू**: विभिन्न डेटा समूहों के बीच तुलनात्मक विश्लेषण करें ताकि आपके मॉडल के प्रदर्शन मेट्रिक्स में असमानताओं का पता लगाया जा सके।
- **डेटा विश्लेषण**: यह जांचें कि आपके डेटा में कहाँ अधिक या कम प्रतिनिधित्व हो सकता है, जो आपके मॉडल को एक डेटा जनसांख्यिकी के पक्ष में झुका सकता है।
- **फीचर इंपॉर्टेंस**: यह समझें कि कौन से फीचर्स आपके मॉडल की भविष्यवाणियों को वैश्विक या स्थानीय स्तर पर प्रेरित कर रहे हैं।
- **मॉडल ओवरव्यू**: विभिन्न डेटा समूहों के बीच तुलनात्मक विश्लेषण करें ताकि आपके मॉडल के प्रदर्शन मेट्रिक्स में असमानताओं की खोज की जा सके।
- **डेटा विश्लेषण**: यह जांचें कि आपके डेटा में कहाँ अति या कम प्रतिनिधित्व हो सकता है, जो आपके मॉडल को एक डेटा जनसांख्यिकी को दूसरे के मुकाबले प्राथमिकता देने के लिए प्रभावित कर सकता है।
- **फीचर इंपॉर्टेंस**: यह समझें कि कौन से फीचर्स आपके मॉडल की भविष्यवाणियों को वैश्विक स्तर या स्थानीय स्तर पर प्रेरित कर रहे हैं।
## पूर्वापेक्षा
@ -32,19 +32,19 @@ CO_OP_TRANSLATOR_METADATA:
## त्रुटि विश्लेषण
पारंपरिक मॉडल प्रदर्शन मेट्रिक्स, जो सटीकता को मापने के लिए उपयोग किए जाते हैं, मुख्य रूप से सही बनाम गलत भविष्यवाणियों पर आधारित गणनाएँ होती हैं। उदाहरण के लिए, यह निर्धारित करना कि एक मॉडल 89% समय सटीक है और इसकी त्रुटि हानि 0.001 है, इसे अच्छा प्रदर्शन माना जा सकता है। हालांकि, त्रुटियां आपके अंतर्निहित डेटा सेट में समान रूप से वितरित नहीं होती हैं। आप 89% मॉडल सटीकता स्कोर प्राप्त कर सकते हैं, लेकिन यह पता लगा सकते हैं कि आपके डेटा के विभिन्न क्षेत्रों में मॉडल 42% समय विफल हो रहा है। इन विफलता पैटर्न के परिणामस्वरूप कुछ डेटा समूहों के साथ निष्पक्षता या विश्वसनीयता की समस्याएं हो सकती हैं। यह समझना आवश्यक है कि मॉडल कहाँ अच्छा प्रदर्शन कर रहा है और कहाँ नहीं। डेटा क्षेत्रों में जहाँ आपके मॉडल में अधिक त्रुटियां हैं, वे महत्वपूर्ण डेटा जनसांख्यिकी हो सकते हैं।
पारंपरिक मॉडल प्रदर्शन मेट्रिक्स, जो सटीकता को मापने के लिए उपयोग किए जाते हैं, मुख्य रूप से सही बनाम गलत भविष्यवाणियों पर आधारित गणनाएँ होती हैं। उदाहरण के लिए, यह निर्धारित करना कि एक मॉडल 89% समय सटीक है और इसकी त्रुटि हानि 0.001 है, इसे अच्छा प्रदर्शन माना जा सकता है। हालांकि, त्रुटियां आपके अंतर्निहित डेटा सेट में समान रूप से वितरित नहीं होती हैं। आप 89% मॉडल सटीकता स्कोर प्राप्त कर सकते हैं, लेकिन यह पता लगा सकते हैं कि आपके डेटा के विभिन्न क्षेत्रों में मॉडल 42% समय विफल हो रहा है। इन विफलता पैटर्न के परिणामस्वरूप कुछ डेटा समूहों के साथ निष्पक्षता या विश्वसनीयता की समस्याएं हो सकती हैं। यह समझना आवश्यक है कि मॉडल कहाँ अच्छा प्रदर्शन कर रहा है और कहाँ नहीं। डेटा क्षेत्रों में जहाँ आपके मॉडल में उच्च त्रुटियां हैं, वे महत्वपूर्ण डेटा जनसांख्यिकी हो सकते हैं।
![मॉडल त्रुटियों का विश्लेषण और डिबग करें](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.hi.png)
![मॉडल त्रुटियों का विश्लेषण और डिबग करें](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png)
RAI डैशबोर्ड पर त्रुटि विश्लेषण घटक यह दिखाता है कि मॉडल विफलता विभिन्न समूहों में कैसे वितरित होती है, और इसे एक ट्री विज़ुअलाइज़ेशन के माध्यम से प्रदर्शित करता है। यह आपके डेटा सेट में उच्च त्रुटि दर वाले फीचर्स या क्षेत्रों की पहचान करने में उपयोगी है। यह देखने से कि मॉडल की अधिकांश त्रुटियां कहाँ से आ रही हैं, आप मूल कारण की जांच शुरू कर सकते हैं। आप डेटा समूह भी बना सकते हैं ताकि उन पर विश्लेषण किया जा सके। ये डेटा समूह डिबगिंग प्रक्रिया में मदद करते हैं यह निर्धारित करने के लिए कि मॉडल का प्रदर्शन एक समूह में अच्छा क्यों है, लेकिन दूसरे में त्रुटिपूर्ण क्यों है।
RAI डैशबोर्ड पर त्रुटि विश्लेषण घटक यह दिखाता है कि मॉडल विफलता विभिन्न समूहों में कैसे वितरित होती है, और इसे एक ट्री विज़ुअलाइज़ेशन के माध्यम से प्रदर्शित करता है। यह आपके डेटा सेट में उच्च त्रुटि दर वाले फीचर्स या क्षेत्रों की पहचान करने में उपयोगी है। यह देखने से कि मॉडल की अधिकांश त्रुटियां कहाँ से आ रही हैं, आप मूल कारण की जांच शुरू कर सकते हैं। आप डेटा समूह भी बना सकते हैं ताकि उन पर विश्लेषण किया जा सके। ये डेटा समूह डिबगिंग प्रक्रिया में मदद करते हैं ताकि यह निर्धारित किया जा सके कि मॉडल का प्रदर्शन एक समूह में अच्छा क्यों है, लेकिन दूसरे में गलत है।
![त्रुटि विश्लेषण](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.hi.png)
![त्रुटि विश्लेषण](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png)
ट्री मैप पर दृश्य संकेतक समस्या क्षेत्रों को जल्दी से पहचानने में मदद करते हैं। उदाहरण के लिए, ट्री नोड का गहरा लाल रंग त्रुटि दर को अधिक दिखाता है।
ट्री मैप पर दृश्य संकेतक समस्या क्षेत्रों को तेजी से खोजने में मदद करते हैं। उदाहरण के लिए, ट्री नोड का गहरा लाल रंग त्रुटि दर को अधिक दिखाता है।
हीट मैप एक और विज़ुअलाइज़ेशन कार्यक्षमता है जिसे उपयोगकर्ता एक या दो फीचर्स का उपयोग करके त्रुटि दर की जांच करने के लिए उपयोग कर सकते हैं, ताकि पूरे डेटा सेट या समूहों में मॉडल त्रुटियों के योगदानकर्ता का पता लगाया जा सके।
हीट मैप एक और विज़ुअलाइज़ेशन कार्यक्षमता है जिसे उपयोगकर्ता एक या दो फीचर्स का उपयोग करके त्रुटि दर की जांच करने के लिए उपयोग कर सकते हैं, ताकि पूरे डेटा सेट या समूहों में मॉडल त्रुटियों के योगदानकर्ता को खोजा जा सके।
![त्रुटि विश्लेषण हीटमैप](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.hi.png)
![त्रुटि विश्लेषण हीटमैप](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png)
त्रुटि विश्लेषण का उपयोग करें जब आपको आवश्यकता हो:
@ -53,15 +53,15 @@ RAI डैशबोर्ड पर त्रुटि विश्लेषण
## मॉडल ओवरव्यू
मशीन लर्निंग मॉडल के प्रदर्शन का मूल्यांकन करने के लिए उसके व्यवहार की समग्र समझ प्राप्त करना आवश्यक है। इसे त्रुटि दर, सटीकता, रिकॉल, प्रिसिजन, या MAE (मीन एब्सोल्यूट एरर) जैसे एक से अधिक मेट्रिक्स की समीक्षा करके प्राप्त किया जा सकता है ताकि प्रदर्शन मेट्रिक्स में असमानताओं का पता लगाया जा सके। एक प्रदर्शन मेट्रिक अच्छा लग सकता है, लेकिन दूसरे मेट्रिक में त्रुटियां उजागर हो सकती हैं। इसके अलावा, पूरे डेटा सेट या समूहों में मेट्रिक्स की तुलना करना यह दिखाने में मदद करता है कि मॉडल कहाँ अच्छा प्रदर्शन कर रहा है और कहाँ नहीं। यह विशेष रूप से संवेदनशील बनाम असंवेदनशील फीचर्स (जैसे, रोगी की जाति, लिंग, या आयु) के बीच मॉडल के प्रदर्शन को देखने में महत्वपूर्ण है ताकि संभावित अनुचितता का पता लगाया जा सके। उदाहरण के लिए, यह पता लगाना कि मॉडल एक समूह में अधिक त्रुटिपूर्ण है जिसमें संवेदनशील फीचर्स हैं, मॉडल में संभावित अनुचितता को उजागर कर सकता है।
मशीन लर्निंग मॉडल के प्रदर्शन का मूल्यांकन करने के लिए उसके व्यवहार की समग्र समझ प्राप्त करना आवश्यक है। यह त्रुटि दर, सटीकता, रिकॉल, प्रिसिजन, या MAE (मीन एब्सोल्यूट एरर) जैसे एक से अधिक मेट्रिक्स की समीक्षा करके प्राप्त किया जा सकता है ताकि प्रदर्शन मेट्रिक्स में असमानताओं का पता लगाया जा सके। एक प्रदर्शन मेट्रिक अच्छा लग सकता है, लेकिन दूसरे मेट्रिक में गलतियां उजागर हो सकती हैं। इसके अलावा, पूरे डेटा सेट या समूहों में मेट्रिक्स की तुलना करना यह दिखाने में मदद करता है कि मॉडल कहाँ अच्छा प्रदर्शन कर रहा है और कहाँ नहीं। यह विशेष रूप से संवेदनशील बनाम असंवेदनशील फीचर्स (जैसे, रोगी की जाति, लिंग, या आयु) के बीच मॉडल के प्रदर्शन को देखने में महत्वपूर्ण है ताकि संभावित अनुचितता का पता लगाया जा सके। उदाहरण के लिए, यह पता लगाना कि मॉडल एक समूह में अधिक त्रुटिपूर्ण है जिसमें संवेदनशील फीचर्स हैं, संभावित अनुचितता को उजागर कर सकता है।
RAI डैशबोर्ड का मॉडल ओवरव्यू घटक न केवल डेटा प्रतिनिधित्व के प्रदर्शन मेट्रिक्स का विश्लेषण करने में मदद करता है, बल्कि यह उपयोगकर्ताओं को विभिन्न समूहों में मॉडल के व्यवहार की तुलना करने की क्षमता भी देता है।
![डेटा सेट समूह - RAI डैशबोर्ड में मॉडल ओवरव्यू](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.hi.png)
![डेटा सेट समूह - RAI डैशबोर्ड में मॉडल ओवरव्यू](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png)
घटक की फीचर-आधारित विश्लेषण कार्यक्षमता उपयोगकर्ताओं को एक विशेष फीचर के भीतर डेटा उपसमूहों को संकीर्ण करने की अनुमति देती है ताकि ग्रैन्युलर स्तर पर विसंगतियों की पहचान की जा सके। उदाहरण के लिए, डैशबोर्ड में उपयोगकर्ता-चयनित फीचर (जैसे, *"time_in_hospital < 3"* या *"time_in_hospital >= 7"*) के लिए स्वचालित रूप से समूह बनाने की अंतर्निहित बुद्धिमत्ता है। यह उपयोगकर्ता को एक बड़े डेटा समूह से एक विशेष फीचर को अलग करने की अनुमति देता है ताकि यह देखा जा सके कि यह मॉडल के त्रुटिपूर्ण परिणामों का प्रमुख प्रभावक है या नहीं।
घटक की फीचर-आधारित विश्लेषण कार्यक्षमता उपयोगकर्ताओं को एक विशेष फीचर के भीतर डेटा उपसमूहों को संकीर्ण करने की अनुमति देती है ताकि ग्रैन्युलर स्तर पर विसंगतियों की पहचान की जा सके। उदाहरण के लिए, डैशबोर्ड में उपयोगकर्ता-चयनित फीचर (जैसे, *"time_in_hospital < 3"* या *"time_in_hospital >= 7"*) के लिए स्वचालित रूप से समूह बनाने की अंतर्निहित बुद्धिमत्ता है। यह उपयोगकर्ता को एक बड़े डेटा समूह से एक विशेष फीचर को अलग करने में सक्षम बनाता है ताकि यह देखा जा सके कि यह मॉडल के गलत परिणामों का प्रमुख प्रभावक है या नहीं।
![फीचर समूह - RAI डैशबोर्ड में मॉडल ओवरव्यू](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.hi.png)
![फीचर समूह - RAI डैशबोर्ड में मॉडल ओवरव्यू](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png)
मॉडल ओवरव्यू घटक दो प्रकार के असमानता मेट्रिक्स का समर्थन करता है:
@ -73,56 +73,56 @@ RAI डैशबोर्ड का मॉडल ओवरव्यू घटक
* रिकॉल में असमानता
* मीन एब्सोल्यूट एरर (MAE) में असमानता
**चयन दर में असमानता**: यह मेट्रिक उपसमूहों में चयन दर (अनुकूल भविष्यवाणी) में अंतर को शामिल करता है। इसका एक उदाहरण ऋण स्वीकृति दर में असमानता है। चयन दर का अर्थ है प्रत्येक वर्ग में वर्गीकृत डेटा बिंदुओं का अंश जो 1 के रूप में वर्गीकृत किया गया है (बाइनरी वर्गीकरण में) या भविष्यवाणी मानों का वितरण (रिग्रेशन में)।
**चयन दर में असमानता**: यह मेट्रिक उपसमूहों के बीच चयन दर (अनुकूल भविष्यवाणी) में अंतर को शामिल करता है। इसका एक उदाहरण ऋण स्वीकृति दर में असमानता है। चयन दर का मतलब है प्रत्येक वर्ग में डेटा पॉइंट्स का अंश जिसे 1 के रूप में वर्गीकृत किया गया है (बाइनरी वर्गीकरण में) या भविष्यवाणी मानों का वितरण (रिग्रेशन में)।
## डेटा विश्लेषण
> "यदि आप डेटा को लंबे समय तक यातना देंगे, तो यह कुछ भी स्वीकार कर लेगा" - रोनाल्ड कोस
> "यदि आप डेटा को लंबे समय तक यातना देंगे, तो यह किसी भी निष्कर्ष को स्वीकार कर लेगा" - रोनाल्ड कोस
यह कथन अतिशयोक्तिपूर्ण लगता है, लेकिन यह सच है कि डेटा को किसी भी निष्कर्ष का समर्थन करने के लिए हेरफेर किया जा सकता है। ऐसा हेरफेर कभी-कभी अनजाने में हो सकता है। हम सभी मनुष्य हैं और हमारे पास पूर्वाग्रह होते हैं, और यह जानना अक्सर कठिन होता है कि आप डेटा में पूर्वाग्रह कब पेश कर रहे हैं। AI और मशीन लर्निंग में निष्पक्षता सुनिश्चित करना एक जटिल चुनौती बना हुआ है।
यह कथन अतिशयोक्तिपूर्ण लगता है, लेकिन यह सच है कि डेटा को किसी भी निष्कर्ष का समर्थन करने के लिए हेरफेर किया जा सकता है। ऐसा हेरफेर कभी-कभी अनजाने में हो सकता है। इंसानों के रूप में, हम सभी में पूर्वाग्रह होते हैं, और यह जानना अक्सर कठिन होता है कि आप डेटा में कब पूर्वाग्रह पेश कर रहे हैं। AI और मशीन लर्निंग में निष्पक्षता सुनिश्चित करना एक जटिल चुनौती बनी हुई है।
पारंपरिक मॉडल प्रदर्शन मेट्रिक्स के लिए डेटा एक बड़ा अंधा स्थान है। आपके पास उच्च सटीकता स्कोर हो सकते हैं, लेकिन यह हमेशा आपके डेटा सेट में अंतर्निहित डेटा पूर्वाग्रह को प्रतिबिंबित नहीं करता। उदाहरण के लिए, यदि किसी कंपनी में कार्यकारी पदों पर महिलाओं का प्रतिशत 27% है और पुरुषों का प्रतिशत 73% है, तो इस डेटा पर प्रशिक्षित नौकरी विज्ञापन AI मॉडल वरिष्ठ स्तर की नौकरी के लिए मुख्य रूप से पुरुष दर्शकों को लक्षित कर सकता है। डेटा में इस असंतुलन ने मॉडल की भविष्यवाणी को एक लिंग के पक्ष में झुका दिया। यह एक निष्पक्षता समस्या को उजागर करता है जहाँ AI मॉडल में लिंग पूर्वाग्रह है।
डेटा पारंपरिक मॉडल प्रदर्शन मेट्रिक्स के लिए एक बड़ा अंधा स्थान है। आपके पास उच्च सटीकता स्कोर हो सकते हैं, लेकिन यह हमेशा आपके डेटा सेट में अंतर्निहित डेटा पूर्वाग्रह को प्रतिबिंबित नहीं करता है। उदाहरण के लिए, यदि किसी कंपनी में कार्यकारी पदों पर महिलाओं का प्रतिशत 27% है और पुरुषों का 73%, तो इस डेटा पर प्रशिक्षित एक नौकरी विज्ञापन AI मॉडल वरिष्ठ स्तर की नौकरी पदों के लिए मुख्य रूप से पुरुष दर्शकों को लक्षित कर सकता है। इस डेटा असंतुलन ने मॉडल की भविष्यवाणी को एक लिंग को प्राथमिकता देने के लिए प्रभावित किया। यह एक निष्पक्षता समस्या को उजागर करता है जहाँ AI मॉडल में लिंग पूर्वाग्रह है।
RAI डैशबोर्ड पर डेटा विश्लेषण घटक यह पहचानने में मदद करता है कि डेटा सेट में कहाँ अधिक और कम प्रतिनिधित्व है। यह उपयोगकर्ताओं को डेटा असंतुलन या किसी विशेष डेटा समूह के प्रतिनिधित्व की कमी से उत्पन्न त्रुटियों और निष्पक्षता समस्याओं के मूल कारण का निदान करने में मदद करता है। यह उपयोगकर्ताओं को भविष्यवाणी और वास्तविक परिणामों, त्रुटि समूहों, और विशिष्ट फीचर्स के आधार पर डेटा सेट को विज़ुअलाइज़ करने की क्षमता देता है। कभी-कभी एक कम प्रतिनिधित्व वाले डेटा समूह की खोज यह भी उजागर कर सकती है कि मॉडल अच्छी तरह से सीख नहीं रहा है, जिससे उच्च त्रुटियां हो रही हैं। डेटा पूर्वाग्रह वाला मॉडल न केवल एक निष्पक्षता समस्या है बल्कि यह दिखाता है कि मॉडल समावेशी या विश्वसनीय नहीं है।
RAI डैशबोर्ड पर डेटा विश्लेषण घटक यह पहचानने में मदद करता है कि डेटा सेट में कहाँ अति- और कम-प्रतिनिधित्व है। यह उपयोगकर्ताओं को डेटा असंतुलन या किसी विशेष डेटा समूह के प्रतिनिधित्व की कमी से उत्पन्न त्रुटियों और निष्पक्षता समस्याओं के मूल कारण का निदान करने में मदद करता है। यह उपयोगकर्ताओं को भविष्यवाणी और वास्तविक परिणामों, त्रुटि समूहों, और विशिष्ट फीचर्स के आधार पर डेटा सेट को विज़ुअलाइज़ करने की क्षमता देता है। कभी-कभी एक कम प्रतिनिधित्व वाले डेटा समूह की खोज यह भी उजागर कर सकती है कि मॉडल अच्छी तरह से सीख नहीं रहा है, इसलिए उच्च त्रुटियां हैं। डेटा पूर्वाग्रह वाला मॉडल न केवल एक निष्पक्षता समस्या है बल्कि यह दिखाता है कि मॉडल समावेशी या विश्वसनीय नहीं है।
![RAI डैशबोर्ड पर डेटा विश्लेषण घटक](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.hi.png)
![RAI डैशबोर्ड पर डेटा विश्लेषण घटक](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png)
डेटा विश्लेषण का उपयोग करें जब आपको आवश्यकता हो:
* अपने डेटा सेट के आँकड़ों का अन्वेषण करें और विभिन्न आयामों (जिन्हें समूह भी कहा जाता है) में डेटा को विभाजित करने के लिए विभिन्न फ़िल्टर चुनें
* विभिन्न फ़िल्टर का चयन करके अपने डेटा सेट के आँकड़ों का अन्वेषण करें ताकि अपने डेटा को विभिन्न आयामों (जिसे समूह भी कहा जाता है) में विभाजित किया जा सके
* विभिन्न समूहों और फीचर समूहों में अपने डेटा सेट के वितरण को समझें।
* यह निर्धारित करें कि निष्पक्षता, त्रुटि विश्लेषण, और कारणता से संबंधित आपकी खोजें (डैशबोर्ड के अन्य घटकों से प्राप्त) आपके डेटा सेट के वितरण का परिणाम हैं या नहीं।
* यह निर्धारित करें कि निष्पक्षता, त्रुटि विश्लेषण, और कारणता से संबंधित आपकी खोजें (अन्य डैशबोर्ड घटकों से प्राप्त) आपके डेटा सेट के वितरण का परिणाम हैं।
* यह तय करें कि किन क्षेत्रों में अधिक डेटा एकत्र करना है ताकि प्रतिनिधित्व समस्याओं, लेबल शोर, फीचर शोर, लेबल पूर्वाग्रह, और इसी तरह के कारकों से उत्पन्न त्रुटियों को कम किया जा सके।
## मॉडल व्याख्या
मशीन लर्निंग मॉडल अक्सर "ब्लैक बॉक्स" होते हैं। यह समझना कि कौन से प्रमुख डेटा फीचर्स मॉडल की भविष्यवाणी को प्रेरित करते हैं, चुनौतीपूर्ण हो सकता है। यह महत्वपूर्ण है कि यह पारदर्शिता प्रदान की जाए कि मॉडल ने एक निश्चित भविष्यवाणी क्यों की। उदाहरण के लिए, यदि एक AI सिस्टम भविष्यवाणी करता है कि एक मधुमेह रोगी को 30 दिनों से कम समय में अस्पताल में फिर से भर्ती होने का जोखिम है, तो इसे अपनी भविष्यवाणी के पीछे सहायक डेटा प्रदान करना चाहिए। सहायक डेटा संकेतक पारदर्शिता लाते हैं ताकि चिकित्सक या अस्पताल अच्छी तरह से सूचित निर्णय ले सकें। इसके अलावा, यह समझाने में सक्षम होना कि मॉडल ने एक व्यक्तिगत रोगी के लिए भविष्यवाणी क्यों की, स्वास्थ्य नियमों के साथ उत्तरदायित्व सुनिश्चित करता है। जब आप मशीन लर्निंग मॉडल का उपयोग ऐसे तरीकों से कर रहे हैं जो लोगों के जीवन को प्रभावित करते हैं, तो यह समझना और समझाना महत्वपूर्ण है कि मॉडल के व्यवहार को क्या प्रभावित करता है। मॉडल व्याख्या और समझने की क्षमता निम्नलिखित परिदृश्यों में सवालों के जवाब देने में मदद करती है:
मशीन लर्निंग मॉडल अक्सर "ब्लैक बॉक्स" होते हैं। यह समझना कि कौन से प्रमुख डेटा फीचर्स मॉडल की भविष्यवाणी को प्रेरित करते हैं, चुनौतीपूर्ण हो सकता है। यह महत्वपूर्ण है कि यह पारदर्शिता प्रदान की जाए कि मॉडल ने एक निश्चित भविष्यवाणी क्यों की। उदाहरण के लिए, यदि एक AI सिस्टम भविष्यवाणी करता है कि एक मधुमेह रोगी को 30 दिनों से कम समय में अस्पताल में फिर से भर्ती होने का जोखिम है, तो इसे अपनी भविष्यवाणी के पीछे सहायक डेटा प्रदान करना चाहिए। सहायक डेटा संकेतक पारदर्शिता लाते हैं ताकि चिकित्सक या अस्पताल अच्छी तरह से सूचित निर्णय ले सकें। इसके अलावा, यह समझाने में सक्षम होना कि मॉडल ने एक व्यक्तिगत रोगी के लिए भविष्यवाणी क्यों की, स्वास्थ्य नियमों के साथ उत्तरदायित्व को सक्षम बनाता है। जब आप मशीन लर्निंग मॉडल का उपयोग ऐसे तरीकों से कर रहे हैं जो लोगों के जीवन को प्रभावित करते हैं, तो यह समझना और समझाना महत्वपूर्ण है कि मॉडल के व्यवहार को क्या प्रभावित करता है। मॉडल व्याख्या और समझने की क्षमता निम्नलिखित परिदृश्यों में सवालों के जवाब देने में मदद करती है:
* मॉडल डिबगिंग: मेरे मॉडल ने यह गलती क्यों की? मैं अपने मॉडल को कैसे सुधार सकता हूँ?
* मानव-AI सहयोग: मैं मॉडल के निर्णयों को कैसे समझ सकता हूँ और उन पर भरोसा कर सकता हूँ?
* नियामक अनुपालन: क्या मेरा मॉडल कानूनी आवश्यकताओं को पूरा करता है?
RAI डैशबोर्ड का फीचर इंपॉर्टेंस घटक आपको डिबग करने और यह समझने में मदद करता है कि मॉडल भविष्यवाणियाँ कैसे करता है। यह मशीन लर्निंग पेशेवरों और निर्णय लेने वालों के लिए एक उपयोगी उपकरण है ताकि मॉडल के व्यवहार को प्रभावित करने वाले फीचर्स के प्रमाण दिखाए जा सकें और नियामक अनुपालन सुनिश्चित किया जा सके। इसके बाद, उपयोगकर्ता वैश्विक और स्थानीय व्याख्याओं का अन्वेषण कर सकते हैं ताकि यह सत्यापित किया जा सके कि कौन से फीचर्स मॉडल की भविष्यवाणी को प्रेरित करते हैं। वैश्विक व्याख्याएँ उन शीर्ष फीचर्स को सूचीबद्ध करती हैं जिन्होंने मॉडल की समग्र भविष्यवाणी को प्रभावित किया। स्थानीय व्याख्याएँ दिखाती हैं कि किसी व्यक्तिगत मामले के लिए मॉडल की भविष्यवाणी को कौन से फीचर्स प्रेरित करते हैं। स्थानीय व्याख्याओं का मूल्यांकन करना किसी विशेष मामले को डिबग या ऑडिट करने में भी मददगार होता है ताकि यह बेहतर समझा जा सके कि मॉडल ने सटीक या त्रुटिपूर्ण भविष्यवाणी क्यों की।
RAI डैशबोर्ड का फीचर इंपॉर्टेंस घटक आपको डिबग करने और यह समझने में मदद करता है कि मॉडल भविष्यवाणियाँ कैसे करता है। यह मशीन लर्निंग पेशेवरों और निर्णय लेने वालों के लिए एक उपयोगी उपकरण है ताकि मॉडल के व्यवहार को प्रभावित करने वाले फीचर्स के प्रमाण दिखाए जा सकें और नियामक अनुपालन के लिए इसे समझाया जा सके। इसके बाद, उपयोगकर्ता वैश्विक और स्थानीय व्याख्याओं का अन्वेषण कर सकते हैं ताकि यह सत्यापित किया जा सके कि कौन से फीचर्स मॉडल की भविष्यवाणी को प्रेरित करते हैं। वैश्विक व्याख्याएँ उन शीर्ष फीचर्स को सूचीबद्ध करती हैं जिन्होंने मॉडल की समग्र भविष्यवाणी को प्रभावित किया। स्थानीय व्याख्याएँ यह दिखाती हैं कि किसी व्यक्तिगत मामले के लिए मॉडल की भविष्यवाणी को कौन से फीचर्स प्रेरित करते हैं। स्थानीय व्याख्याओं का मूल्यांकन करना किसी विशेष मामले को डिबग या ऑडिट करने में भी मदद करता है ताकि यह बेहतर समझा जा सके कि मॉडल ने सही या गलत भविष्यवाणी क्यों की।
![RAI डैशबोर्ड का फीचर इंपॉर्टेंस घटक](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.hi.png)
![RAI डैशबोर्ड का फीचर इंपॉर्टेंस घटक](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png)
* वैश्विक व्याख्याएँ: उदाहरण के लिए, मधुमेह अस्पताल पुनः प्रवेश मॉडल के समग्र व्यवहार को कौन से फीचर्स प्रभावित करते हैं?
* स्थानीय व्याख्याएँ: उदाहरण के लिए, क्यों एक 60 वर्ष से अधिक उम्र के मधुमेह रोगी को, जिनकी पहले अस्पताल में भर्ती हो चुकी है, 30 दिनों के भीतर अस्पताल में फिर से भर्ती होने या न होने की भविष्यवाणी की गई?
* वैश्विक व्याख्याएँ: उदाहरण के लिए, कौन से फीचर्स मधुमेह अस्पताल पुनः प्रवेश मॉडल के समग्र व्यवहार को प्रभावित करते हैं?
* स्थानीय व्याख्याएँ: उदाहरण के लिए, क्यों एक 60 वर्ष से अधिक उम्र के मधुमेह रोगी को, जिसके पास पहले अस्पताल में भर्ती होने का इतिहास है, 30 दिनों के भीतर अस्पताल में फिर से भर्ती होने या न होने की भविष्यवाणी की गई?
मॉडल के प्रदर्शन को विभिन्न समूहों में जांचने की प्रक्रिया में, फीचर इंपॉर्टेंस यह दिखाता है कि समूहों में फीचर का प्रभाव किस स्तर क है। यह तुलना करते समय विसंगतियों को उजागर करने में मदद करता है कि फीचर मॉडल की त्रुटिपूर्ण भविष्यवाणियों को प्रेरित करने में कितना प्रभावशाली है। फीचर इंपॉर्टेंस घटक यह दिखा सकता है कि किसी फीचर में कौन से मान मॉडल के परिणाम को सकारात्मक या नकारात्मक रूप से प्रभावित करते हैं। उदाहरण के लिए, यदि मॉडल ने एक त्रुटिपूर्ण भविष्यवाणी की, तो घटक आपको यह जांचने और पहचानने की क्षमता देता है कि कौन से फीचर्स या फीचर मान भविष्यवाणी को प्रेरित करते हैं। यह स्तर न केवल डिबगिंग में मदद करता है बल्कि ऑडिटिंग स्थितियों में पारदर्शिता और उत्तरदायित्व प्रदान करता है। अंत में, घटक निष्पक्षता समस्याओं की पहचान करने में मदद कर सकता है। उदाहरण के लिए, यदि जातीयता या लिंग जैसे संवेदनशील फीचर्स मॉडल की भविष्यवाणी को प्रेरित करने में अत्यधिक प्रभावशाली हैं, तो यह मॉडल में जाति या लिंग पूर्वाग्रह का संकेत हो सकता है।
मॉडल के प्रदर्शन को विभिन्न समूहों में जांचने की प्रक्रिया में, फीचर इंपॉर्टेंस यह दिखाता है कि समूहों में फीचर का प्रभाव किस स्तर क है। यह तुलना करते समय विसंगतियों को उजागर करने में मदद करता है कि फीचर मॉडल की गलत भविष्यवाणियों को प्रेरित करने में कितना प्रभावशाली है। फीचर इंपॉर्टेंस घटक यह दिखा सकता है कि किसी फीचर में कौन से मान मॉडल के परिणाम को सकारात्मक या नकारात्मक रूप से प्रभावित करते हैं। उदाहरण के लिए, यदि मॉडल ने गलत भविष्यवाणी की, तो घटक आपको यह जांचने और पहचानने की क्षमता देता है कि कौन से फीचर्स या फीचर मान भविष्यवाणी को प्रेरित करते हैं। यह स्तर न केवल डिबगिंग में मदद करता है बल्कि ऑडिटिंग स्थितियों में पारदर्शिता और उत्तरदायित्व प्रदान करता है। अंत में, घटक आपको निष्पक्षता समस्याओं की पहचान करने में मदद कर सकता है। उदाहरण के लिए, यदि जातीयता या लिंग जैसे संवेदनशील फीचर्स मॉडल की भविष्यवाणी को प्रेरित करने में अत्यधिक प्रभावशाली हैं, तो यह मॉडल में जाति या लिंग पूर्वाग्रह का संकेत हो सकता है।
![फीचर इंपॉर्टेंस](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.hi.png)
![फीचर इंपॉर्टेंस](../../../../9-Real-World/2-Debugging-ML-Models/images/9-features-influence.png)
व्याख्या का उपयोग करें जब आपको आवश्यकता हो:
* यह निर्धारित करने के लिए कि आपके AI सिस्टम की भविष्यवाणियाँ कितनी भरोसेमंद हैं, यह समझकर कि भविष्यवाणियों के लिए कौन से फीचर्स सबसे महत्वपूर्ण हैं।
* यह निर्धारित करने के लिए कि आपके AI सिस्टम की भविष्यवाणियाँ कितनी भरोसेमंद हैं, यह समझकर कि कौन से फीचर्स भविष्यवाणियों के लिए सबसे महत्वपूर्ण हैं।
* अपने मॉडल को समझकर और यह पहचानकर कि क्या मॉडल स्वस्थ फीचर्स का उपयोग कर रहा है या केवल गलत सहसंबंधों का उपयोग कर रहा है, डिबगिंग प्रक्रिया को अपनाएँ।
* संभावित अनुचितता के
* संभावित अनुचितता के स्रोतों को उजागर करें यह समझकर कि क्या मॉडल संवेदन
- **अधिक या कम प्रतिनिधित्व**। विचार यह है कि किसी विशेष समूह को किसी विशेष पेशे में नहीं देखा जाता है, और कोई भी सेवा या कार्य जो इसे बढ़ावा देता है, वह नुकसान पहुंचाने में योगदान देता है।
### Azure RAI डैशबोर्ड
[Azure RAI डैशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ओपन-सोर्स टूल्स पर आधारित है, जिन्हें प्रमुख शैक्षणिक संस्थानों और संगठनों, जिनमें Microsoft भी शामिल है, द्वारा विकसित किया गया है। य डेटा वैज्ञानिकों और AI डेवलपर्स को मॉडल के व्यवहार को बेहतर ढंग से समझने, और AI मॉडलों में अवांछनीय समस्याओं की पहचान और समाधान करने में मदद करता है
[Azure RAI डैशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ओपन-सोर्स टूल्स पर आधारित है, जिन्हें प्रमुख शैक्षणिक संस्थानों और संगठनों, जिनमें Microsoft भी शामिल है, द्वारा विकसित किया गया है। ये टूल डेटा वैज्ञानिकों और AI डेवलपर्स को मॉडल के व्यवहार को बेहतर ढंग से समझने, और AI मॉडलों में अवांछनीय समस्याओं की पहचान और समाधान करने में मदद करते हैं
- RAI डैशबोर्ड के विभिन्न घटकों का उपयोग करना सीखने के लिए [डॉक्यूमेंटेशन](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) देखें।
@ -131,26 +131,26 @@ RAI डैशबोर्ड का फीचर इंपॉर्टेंस
---
## 🚀 चुनौती
यह सुनिश्चित करने के लिए कि सांख्यिकीय या डेटा पूर्वाग्रह शुरू से ही न आएं, हमें:
तथ्यात्मक या डेटा पूर्वाग्रहों को शुरुआत में ही रोकने के लिए, हमें:
- सिस्टम पर काम करने वाले लोगों में विभिन्न पृष्ठभूमियों और दृष्टिकोणों का समावेश करना चाहिए
- ऐसे डेटा सेट्स में निवेश करना चाहिए जो हमारे समाज की विविधता को दर्शाते हों
- पूर्वाग्रह का पता लगाने और उसे सुधारने के बेहतर तरीकों को विकसित करना चाहिए
- ऐसे डेटा सेट में निवेश करना चाहिए जो हमारे समाज की विविधता को दर्शाते हों
- पूर्वाग्रह का पता लगाने और उसे सुधारने के बेहतर तरीके विकसित करने चाहिए
उन वास्तविक जीवन के परिदृश्यों के बारे में सोचें, जहां मॉडल निर्माण और उपयोग में अन्याय स्पष्ट है। हमें और किन बातों पर विचार करना चाहिए?
उन वास्तविक जीवन के परिदृश्यों के बारे में सोचें जहां मॉडल निर्माण और उपयोग में अन्याय स्पष्ट है। हमें और क्या विचार करना चाहिए?
## [पोस्ट-लेक्चर क्विज़](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/)
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
इस पाठ में, आपने मशीन लर्निंग में जिम्मेदार AI को शामिल करने के कुछ व्यावहारिक टूल्स के बारे में सीखा है।
इन विषयों में गहराई से जाने के लिए इस वर्कशॉप को देखें:
इन विषयों में गहराई से जाने के लिए यह वर्कशॉप देखें:
- जिम्मेदार AI डैशबोर्ड: Besmira Nushi और Mehrnoosh Sameki द्वारा व्यावहारिक रूप से RAI को लागू करने के लिए एक-स्टॉप समाधान
[![जिम्मेदार AI डैशबोर्ड: व्यावहारिक रूप से RAI को लागू करने के लिए एक-स्टॉप समाधान](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जिम्मेदार AI डैशबोर्ड: व्यावहारिक रूप से RAI को लागू करने के लिए एक-स्टॉप समाधान")
> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: Besmira Nushi और Mehrnoosh Sameki द्वारा जिम्मेदार AI डैशबोर्ड: व्यावहारिक रूप से RAI को लागू करने के लिए एक-स्टॉप समाधान
> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: जिम्मेदार AI डैशबोर्ड: व्यावहारिक रूप से RAI को लागू करने के लिए एक-स्टॉप समाधान, Besmira Nushi और Mehrnoosh Sameki द्वारा
जिम्मेदार AI और अधिक भरोसेमंद मॉडल बनाने के बारे में अधिक जानने के लिए निम्नलिखित सामग्रियों का संदर्भ लें:
@ -160,7 +160,7 @@ RAI डैशबोर्ड का फीचर इंपॉर्टेंस
- Microsoft का RAI संसाधन केंद्र: [जिम्मेदार AI संसाधन Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft का FATE शोध समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft का FATE अनुसंधान समूह: [FATE: AI में निष्पक्षता, जवाबदेही, पारदर्शिता, और नैतिकता - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## असाइनमेंट
@ -169,4 +169,4 @@ RAI डैशबोर्ड का फीचर इंपॉर्टेंस
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b79add6cc71cc7468fa23c9cf42f2327",
"translation_date": "2025-09-03T22:10:05+00:00",
"original_hash": "612aef7a03204260e940131b09691977",
"translation_date": "2025-09-05T10:11:40+00:00",
"source_file": "README.md",
"language_code": "hi"
}
@ -23,7 +23,7 @@ CO_OP_TRANSLATOR_METADATA:
[French](../fr/README.md) | [Spanish](../es/README.md) | [German](../de/README.md) | [Russian](../ru/README.md) | [Arabic](../ar/README.md) | [Persian (Farsi)](../fa/README.md) | [Urdu](../ur/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Hindi](./README.md) | [Bengali](../bn/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Portuguese (Brazil)](../br/README.md) | [Italian](../it/README.md) | [Polish](../pl/README.md) | [Turkish](../tr/README.md) | [Greek](../el/README.md) | [Thai](../th/README.md) | [Swedish](../sv/README.md) | [Danish](../da/README.md) | [Norwegian](../no/README.md) | [Finnish](../fi/README.md) | [Dutch](../nl/README.md) | [Hebrew](../he/README.md) | [Vietnamese](../vi/README.md) | [Indonesian](../id/README.md) | [Malay](../ms/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Swahili](../sw/README.md) | [Hungarian](../hu/README.md) | [Czech](../cs/README.md) | [Slovak](../sk/README.md) | [Romanian](../ro/README.md) | [Bulgarian](../bg/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Croatian](../hr/README.md) | [Slovenian](../sl/README.md) | [Ukrainian](../uk/README.md) | [Burmese (Myanmar)](../my/README.md)
#### समुदाय से जुड़े
#### समुदाय में शामिल हो
[![Azure AI Discord](https://dcbadge.limes.pink/api/server/kzRShWzttr)](https://discord.gg/kzRShWzttr)
@ -31,7 +31,7 @@ CO_OP_TRANSLATOR_METADATA:
> 🌍 दुनिया भर की संस्कृतियों के माध्यम से मशीन लर्निंग का अन्वेषण करें 🌍
Microsoft के Cloud Advocates ने **मशीन लर्निंग** पर आधारित 12-सप्ताह, 26-पाठों का पाठ्यक्रम पेश किया है। इस पाठ्यक्रम में, आप **क्लासिक मशीन लर्निंग** के बारे में जानेंगे, मुख्य रूप से Scikit-learn लाइब्रेरी का उपयोग करते हुए और डीप लर्निंग से बचते हुए, जिसे हमारे [AI for Beginners' पाठ्यक्रम](https://aka.ms/ai4beginners) में शामिल किया गया है। इन पाठों को हमारे ['Data Science for Beginners' पाठ्यक्रम](https://aka.ms/ds4beginners) के साथ जोड़ें।
Microsoft के Cloud Advocates ने **मशीन लर्निंग** पर आधारित 12-सप्ताह, 26-पाठों का पाठ्यक्रम पेश किया है। इस पाठ्यक्रम में, आप **क्लासिक मशीन लर्निंग** के बारे में जानेंगे, मुख्य रूप से Scikit-learn लाइब्रेरी का उपयोग करते हुए और गहन शिक्षण (Deep Learning) से बचते हुए, जिसे हमारे [AI for Beginners' पाठ्यक्रम](https://aka.ms/ai4beginners) में शामिल किया गया है। इन पाठों को हमारे ['Data Science for Beginners' पाठ्यक्रम](https://aka.ms/ds4beginners) के साथ जोड़ें।
हमारे साथ दुनिया भर की यात्रा करें क्योंकि हम इन क्लासिक तकनीकों को विभिन्न क्षेत्रों के डेटा पर लागू करते हैं। प्रत्येक पाठ में प्री- और पोस्ट-लेसन क्विज़, लिखित निर्देश, समाधान, असाइनमेंट और बहुत कुछ शामिल है। हमारा प्रोजेक्ट-आधारित शिक्षण दृष्टिकोण आपको निर्माण करते हुए सीखने की अनुमति देता है, जो नए कौशल को बनाए रखने का एक सिद्ध तरीका है।
@ -43,23 +43,23 @@ Microsoft के Cloud Advocates ने **मशीन लर्निंग**
**🤩 अतिरिक्त आभार Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, और Vidushi Gupta को हमारे R पाठों के लिए!**
# शुरुआत करें
# शुरुआत कैसे करें
इन चरणों का पालन करें:
1. **िपॉजिटरी को फोर्क करें**: इस पेज के शीर्ष-दाएं कोने पर "Fork" बटन पर क्लिक करें।
2. **िपॉजिटरी को क्लोन करें**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
1. **ेपो को फोर्क करें**: इस पेज के शीर्ष-दाएं कोने पर "Fork" बटन पर क्लिक करें।
2. **ेपो को क्लोन करें**: `git clone https://github.com/microsoft/ML-For-Beginners.git`
> [इस पाठ्यक्रम के लिए सभी अतिरिक्त संसाधन हमारे Microsoft Learn संग्रह में खोजें](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
**[छात्रों](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' एक प्रगति मूल्यांकन उपकरण है जिसे आप अपनी सीखने को आगे बढ़ाने के लिए भरते हैं। आप अन्य PATs पर प्रतिक्रिया भी दे सकते हैं ताकि हम एक साथ सीख सकें।
> आगे की पढ़ाई के लिए, हम इन [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) मॉड्यूल और लर्निंग पाथ्स का अनुसरण करने की सिफारिश करते हैं।
@ -69,9 +69,9 @@ Microsoft के Cloud Advocates ने **मशीन लर्निंग**
## वीडियो वॉकथ्रू
कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। आप इन सभी को पाठों में इन-लाइन पा सकते हैं, या [Microsoft Developer YouTube चैनल पर ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) पर क्लिक करके देख सकते हैं।
कुछ पाठ छोटे वीडियो के रूप में उपलब्ध हैं। आप इन सभी को पाठों में इनलाइन पा सकते हैं, या [Microsoft Developer YouTube चैनल पर ML for Beginners प्लेलिस्ट](https://aka.ms/ml-beginners-videos) पर क्लिक करके देख सकते हैं।
[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.hi.png)](https://aka.ms/ml-beginners-videos)
[![ML for beginners banner](../../images/ml-for-beginners-video-banner.png)](https://aka.ms/ml-beginners-videos)
---
@ -89,7 +89,7 @@ Microsoft के Cloud Advocates ने **मशीन लर्निंग**
हमने इस पाठ्यक्रम को बनाते समय दो शिक्षण सिद्धांतों को चुना है: यह सुनिश्चित करना कि यह **प्रोजेक्ट-आधारित** है और इसमें **बार-बार क्विज़** शामिल हैं। इसके अलावा, इस पाठ्यक्रम में एक सामान्य **थीम** है जो इसे एकजुटता प्रदान करती है।
सुनिश्चित करके कि सामग्री प्रोजेक्ट्स के साथ संरेखित है, प्रक्रिया छात्रों के लिए अधिक आकर्षक बन जाती है और अवधारणाओं की प्रतिधारण बढ़ जाती है। इसके अलावा, कक्षा से पहले एक कम-जोखिम क्विज़ छात्र को विषय सीखने के इरादे की ओर सेट करता है, जबकि कक्षा के बाद दूसरा क्विज़ आगे की प्रतिधारण सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार बनाया गया है और इसे पूरे या आंशिक रूप से लिया जा सकता है। प्रोजेक्ट छोटे से शुरू होते हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाते हैं। इस पाठ्यक्रम में ML के वास्तविक दुनिया के अनुप्रयोगों पर एक पोस्टस्क्रिप्ट भी शामिल है, जिसे अतिरिक्त क्रेडिट के रूप में या चर्चा के आधार के रूप में उपयोग किया जा सकता है।
सुनिश्चित करके कि सामग्री प्रोजेक्ट्स के साथ संरेखित है, प्रक्रिया छात्रों के लिए अधिक आकर्षक बन जाती है और अवधारणाओं की अवधारण बढ़ जाती है। इसके अलावा, कक्षा से पहले एक कम-जोखिम क्विज़ छात्र को विषय सीखने के इरादे की ओर सेट करता है, जबकि कक्षा के बाद दूसरा क्विज़ आगे की अवधारण सुनिश्चित करता है। यह पाठ्यक्रम लचीला और मजेदार बनाया गया है और इसे पूरे या आंशिक रूप से लिया जा सकता है। प्रोजेक्ट छोटे से शुरू होते हैं और 12-सप्ताह के चक्र के अंत तक धीरे-धीरे जटिल हो जाते हैं। इस पाठ्यक्रम में ML के वास्तविक दुनिया के अनुप्रयोगों पर एक पोस्टस्क्रिप्ट भी शामिल है, जिसे अतिरिक्त क्रेडिट के रूप में या चर्चा के आधार के रूप में उपयोग किया जा सकता है।
> हमारा [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), और [Translation](TRANSLATIONS.md) दिशानिर्देश देखें। हम आपकी रचनात्मक प्रतिक्रिया का स्वागत करते हैं!
@ -98,63 +98,63 @@ Microsoft के Cloud Advocates ने **मशीन लर्निंग**
- वैकल्पिक स्केच नोट
- वैकल्पिक पूरक वीडियो
- वीडियो वॉकथ्रू (कुछ पाठों में ही)
- प्री-लेक्चर वार्मअप क्विज़
- [प्री-लेक्चर वार्मअप क्विज़](https://ff-quizzes.netlify.app/en/ml/)
- लिखित पाठ
- प्रोजेक्ट-आधारित पाठों के लिए, प्रोजेक्ट बनाने के लिए चरण-दर-चरण गाइड
- ज्ञान जांच
- एक चुनौती
- पूरक पढ़ाई
- असाइनमेंट
- पोस्ट-लेक्चर क्विज़
- [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> **भाषाओं के बारे में एक नोट**: ये पाठ मुख्य रूप से Python में लिखे गए हैं, लेकिन कई R में भी उपलब्ध हैं। R पाठ पूरा करने के लिए, `/solution` फ़ोल्डर पर जाएं और R पाठों की तलाश करें। इनमें .rmd एक्सटेंशन होता है जो **R Markdown** फ़ाइल का प्रतिनिधित्व करता है, जिसे `कोड चंक्स` (R या अन्य भाषाओं के) और `YAML हेडर` (जो आउटपुट को PDF जैसे स्वरूपों में गाइड करता है) को `Markdown दस्तावेज़` में एम्बेडिंग के रूप में परिभाषित किया जा सकता है। इस प्रकार, यह डेटा विज्ञान के लिए एक उत्कृष्ट लेखन ढांचा के रूप में कार्य करता है क्योंकि यह आपको अपने कोड, उसके आउटपुट और अपने विचारों को Markdown में लिखने की अनुमति देता है। इसके अलावा, R Markdown दस्तावेज़ों को PDF, HTML, या Word जैसे आउटपुट स्वरूपों में प्रस्तुत किया जा सकता है।
> **भाषाओं के बारे में एक नोट**: ये पाठ मुख्य रूप से 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 पर तैनात करने के लिए।
> **क्विज़ के बारे में एक नोट**: सभी क्विज़ [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 और Amy |
| 03 | मशीन लर्निंग और निष्पक्षता | [परिचय](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाते और लागू करते समय छात्रों को निष्पक्षता के महत्वपूर्ण दार्शनिक मुद्दों पर विचार करना चाहिए? | [पाठ](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | मशीन लर्निंग के लिए तकनीक | [परिचय](1-Introduction/README.md) | मशीन लर्निंग शोधकर्ता ML मॉडल बनाने के लिए कौन सी तकनीक का उपयोग करते हैं? | [पाठ](1-Introduction/4-techniques-of-ML/README.md) | Chris और Jen |
| 05 | प्रतिगमन का परिचय | [Regression](2-Regression/README.md) | प्रतिगमन मॉडल के लिए Python और Scikit-learn के साथ शुरुआत करें |
<ul><li>[Python](2-Regression/1-Tools/README.md)</li><li>[R](../../2-Regression/1-Tools/solution/R/lesson_1.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 06 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंग की तैयारी के लिए डेटा को विज़ुअलाइज़ और साफ करें | <ul><li>[Python](2-Regression/2-Data/README.md)</li><li>[R](../../2-Regression/2-Data/solution/R/lesson_2.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 07 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | रैखिक और बहुपद प्रतिगमन मॉडल बनाएं | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](../../2-Regression/3-Linear/solution/R/lesson_3.html)</li></ul> | <ul><li>जेन और दिमित्री</li><li>एरिक वंजा</li></ul> |
| 08 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | एक लॉजिस्टिक प्रतिगमन मॉडल बनाएं | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](../../2-Regression/4-Logistic/solution/R/lesson_4.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 09 | एक वेब ऐप 🔌 | [Web App](3-Web-App/README.md) | अपने प्रशिक्षित मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं | [Python](3-Web-App/1-Web-App/README.md) | जेन |
| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | <ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताओं का परिचय | <ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अधिक वर्गीकरणकर्ता | <ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक अनुशंसा वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | जेन |
| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 15 | नाइजीरियाई संगीत स्वाद का अन्वेषण 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण करें | <ul><li> [Python](5-Clustering/2-K-Means/README.md)</li><li>[R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 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) | Q-Learning के साथ सुदृढीकरण सीखने का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री |
| 25 | पीटर को भेड़िये से बचाने में मदद करें! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण सीखने का जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री |
| Postscript | वास्तविक दुनिया के एमएल परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मशीन लर्निंग के दिलचस्प और खुलासा करने वाले वास्तविक दुनिया के अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम |
| Postscript | RAI डैशबोर्ड का उपयोग करके एमएल में मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार एआई डैशबोर्ड घटकों का उपयोग करके मशीन लर्निंग में मॉडल डिबगिंग | [Lesson](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`
| 03 | मशीन लर्निंग और निष्पक्षता | [परिचय](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाते और लागू करते समय छात्रों को कौन से महत्वपूर्ण दार्शनिक मुद्दों पर विचार करना चाहिए? | [पाठ](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | मशीन लर्निंग के लिए तकनीकें | [Introduction](1-Introduction/README.md) | मशीन लर्निंग मॉडल बनाने के लिए शोधकर्ता कौन-कौन सी तकनीकें उपयोग करते हैं? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | क्रिस और जेन |
| 05 | रिग्रेशन का परिचय | [Regression](2-Regression/README.md) | रिग्रेशन मॉडल के लिए Python और Scikit-learn के साथ शुरुआत करें |
<ul><li>[Python](2-Regression/1-Tools/README.md)</li><li>[R](../../2-Regression/1-Tools/solution/R/lesson_1.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 06 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | मशीन लर्निंग के लिए डेटा को विज़ुअलाइज़ और साफ करें | <ul><li>[Python](2-Regression/2-Data/README.md)</li><li>[R](../../2-Regression/2-Data/solution/R/lesson_2.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 07 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | लीनियर और पॉलिनोमियल रिग्रेशन मॉडल बनाएं | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](../../2-Regression/3-Linear/solution/R/lesson_3.html)</li></ul> | <ul><li>जेन और दिमित्री</li><li>एरिक वंजा</li></ul> |
| 08 | उत्तरी अमेरिकी कद्दू की कीमतें 🎃 | [Regression](2-Regression/README.md) | लॉजिस्टिक रिग्रेशन मॉडल बनाएं | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](../../2-Regression/4-Logistic/solution/R/lesson_4.html)</li></ul> | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 09 | एक वेब ऐप 🔌 | [Web App](3-Web-App/README.md) | अपने प्रशिक्षित मॉडल का उपयोग करने के लिए एक वेब ऐप बनाएं | [Python](3-Web-App/1-Web-App/README.md) | जेन |
| 10 | वर्गीकरण का परिचय | [Classification](4-Classification/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; वर्गीकरण का परिचय | <ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 11 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | वर्गीकरणकर्ताओं का परिचय | <ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 12 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अधिक वर्गीकरणकर्ता | <ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | <ul><li>जेन और कैसी</li><li>एरिक वंजा</li></ul> |
| 13 | स्वादिष्ट एशियाई और भारतीय व्यंजन 🍜 | [Classification](4-Classification/README.md) | अपने मॉडल का उपयोग करके एक अनुशंसा वेब ऐप बनाएं | [Python](4-Classification/4-Applied/README.md) | जेन |
| 14 | क्लस्टरिंग का परिचय | [Clustering](5-Clustering/README.md) | अपने डेटा को साफ करें, तैयार करें और विज़ुअलाइज़ करें; क्लस्टरिंग का परिचय | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 15 | नाइजीरियाई संगीत स्वाद की खोज 🎧 | [Clustering](5-Clustering/README.md) | K-Means क्लस्टरिंग विधि का अन्वेषण करें | <ul><li> [Python](5-Clustering/2-K-Means/README.md)</li><li>[R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | <ul><li>जेन</li><li>एरिक वंजा</li></ul> |
| 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) | Q-Learning के साथ सुदृढीकरण सीखने का परिचय | [Python](8-Reinforcement/1-QLearning/README.md) | दिमित्री |
| 25 | पीटर को भेड़िये से बचाने में मदद करें! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | सुदृढीकरण सीखने का जिम | [Python](8-Reinforcement/2-Gym/README.md) | दिमित्री |
| Postscript | वास्तविक दुनिया के ML परिदृश्य और अनुप्रयोग | [ML in the Wild](9-Real-World/README.md) | क्लासिकल मशीन लर्निंग के दिलचस्प और खुलासा करने वाले वास्तविक दुनिया के अनुप्रयोग | [Lesson](9-Real-World/1-Applications/README.md) | टीम |
| Postscript | RAI डैशबोर्ड का उपयोग करके ML मॉडल डिबगिंग | [ML in the Wild](9-Real-World/README.md) | जिम्मेदार AI डैशबोर्ड घटकों का उपयोग करके मशीन लर्निंग मॉडल डिबगिंग | [Lesson](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`
## PDFs
लिंक्स के साथ पाठ्यक्रम का पीडीएफ [यहां](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) खोजें।
लिंक्स के साथ पाठ्यक्रम का PDF [यहां](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf) खोजें।
## 🎒 अन्य पाठ्यक्रम
## 🎒 अन्य कोर्स
हमारी टीम अन्य पाठ्यक्रम भी बनाती है! देखें:
हमारी टीम अन्य कोर्स भी बनाती है! देखें:
- [Generative AI for Beginners](https://aka.ms/genai-beginners)
- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet)
@ -174,4 +174,4 @@ Microsoft के Cloud Advocates ने **मशीन लर्निंग**
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।

@ -1,15 +1,15 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "73e9a7245aa57f00cd413ffd22c0ccb6",
"translation_date": "2025-09-03T23:36:37+00:00",
"original_hash": "69389392fa6346e0dfa30f664b7b6fec",
"translation_date": "2025-09-05T10:49:01+00:00",
"source_file": "1-Introduction/1-intro-to-ML/README.md",
"language_code": "ko"
}
-->
# 머신 러닝 소개
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
---
@ -17,7 +17,7 @@ CO_OP_TRANSLATOR_METADATA:
> 🎥 위 이미지를 클릭하면 이 강의를 다루는 짧은 영상을 볼 수 있습니다.
초보자를 위한 고전적인 머신 러닝 과정에 오신 것을 환영합니다! 이 주제에 완전히 처음이든, 아니면 특정 영역을 복습하려는 경험 많은 ML 실무자든, 여러분을 환영합니다! 우리는 여러분의 ML 학습을 시작하기 위한 친근한 출발점을 제공하고자 하며, 여러분의 [피드백](https://github.com/microsoft/ML-For-Beginners/discussions)을 평가하고, 응답하며, 반영할 준비가 되어 있습니다.
초보자를 위한 고전적인 머신 러닝 과정에 오신 것을 환영합니다! 이 주제에 완전히 처음이든, 아니면 특정 영역을 복습하려는 경험 많은 ML 실무자든, 여러분을 환영합니다! 우리는 여러분의 ML 학습을 시작할 수 있는 친근한 출발점을 제공하고자 하며, 여러분의 [피드백](https://github.com/microsoft/ML-For-Beginners/discussions)을 평가하고, 응답하며, 반영할 준비가 되어 있습니다.
[![ML 소개](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "ML 소개")
@ -31,35 +31,35 @@ CO_OP_TRANSLATOR_METADATA:
- **이 비디오를 사용하여 컴퓨터를 설정하세요**. [Python 설치 방법](https://youtu.be/CXZYvNRIAKM)과 [텍스트 편집기 설정 방법](https://youtu.be/EU8eayHWoZg)을 배우기 위해 아래 링크를 사용하세요.
- **Python 배우기**. 데이터 과학자에게 유용한 프로그래밍 언어인 [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott)에 대한 기본적인 이해가 필요합니다. 이 과정에서 Python을 사용합니다.
- **Node.js와 JavaScript 배우기**. 이 과정에서 웹 앱을 구축할 때 몇 번 JavaScript를 사용하므로 [node](https://nodejs.org)와 [npm](https://www.npmjs.com/)을 설치하고, Python과 JavaScript 개발을 위해 [Visual Studio Code](https://code.visualstudio.com/)를 사용할 수 있어야 합니다.
- **GitHub 계정 만들기**. 여러분이 이미 [GitHub](https://github.com)에 있다면 계정이 있을 가능성이 높지만, 그렇지 않다면 계정을 만들고 이 커리큘럼을 포크하여 사용하세요. (별을 주시면 감사하겠습니다 😊)
- **Scikit-learn 탐색하기**. 이 강의에서 참조하는 ML 라이브러리 세트인 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)을 익숙하게 사용하세요.
- **GitHub 계정 만들기**. 여러분이 [GitHub](https://github.com)에서 우리를 찾았다면 이미 계정이 있을 수도 있지만, 그렇지 않다면 계정을 만들고 이 커리큘럼을 포크하여 사용하세요. (별을 주는 것도 환영합니다 😊)
- **Scikit-learn 탐색하기**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)에 익숙해지세요. 이 과정에서 참조하는 ML 라이브러리입니다.
---
## 머신 러닝이란 무엇인가?
## 머신 러닝이란?
'머신 러닝'이라는 용어는 오늘날 가장 인기 있고 자주 사용되는 용어 중 하나입니다. 기술에 대해 약간의 친숙함이 있다면, 여러분이 어떤 분야에서 일하든 이 용어를 적어도 한 번은 들어봤을 가능성이 높습니다. 그러나 머신 러닝의 작동 방식은 대부분의 사람들에게는 미스터리입니다. 머신 러닝 초보자에게는 이 주제가 때로는 압도적으로 느껴질 수 있습니다. 따라서 머신 러닝이 실제로 무엇인지 이해하고 실용적인 예제를 통해 단계적으로 배우는 것이 중요합니다.
'머신 러닝'이라는 용어는 오늘날 가장 인기 있고 자주 사용되는 용어 중 하나입니다. 기술에 대해 어느 정도 친숙하다면, 여러분이 어떤 분야에서 일하든 이 용어를 적어도 한 번은 들어봤을 가능성이 높습니다. 그러나 머신 러닝의 작동 방식은 대부분의 사람들에게는 미스터리입니다. 머신 러닝 초보자에게는 이 주제가 때로는 압도적으로 느껴질 수 있습니다. 따라서 머신 러닝이 실제로 무엇인지 이해하고, 실용적인 예제를 통해 단계적으로 배우는 것이 중요합니다.
---
## 유행 곡선
![ml hype curve](../../../../translated_images/hype.07183d711a17aafe70915909a0e45aa286ede136ee9424d418026ab00fec344c.ko.png)
![ml hype curve](../../../../1-Introduction/1-intro-to-ML/images/hype.png)
> Google Trends '머신 러닝' 용어의 최근 유행 곡선을 보여줍니다.
> Google Trends에서 '머신 러닝' 용어의 최근 유행 곡선을 보여줍니다.
---
## 신비로운 우주
우리는 매혹적인 신비로 가득 찬 우주에 살고 있습니다. Stephen Hawking, Albert Einstein과 같은 위대한 과학자들은 우리 주변 세계의 신비를 밝히는 의미 있는 정보를 찾기 위해 평생을 바쳤습니다. 이것이 바로 인간의 학습 조건입니다: 인간의 아이는 새로운 것을 배우고 성장하면서 해마다 자신의 세계 구조를 밝혀냅니다.
우리는 매혹적인 신비로 가득 찬 우주에 살고 있습니다. Stephen Hawking, Albert Einstein 위대한 과학자들은 우리 주변 세계의 신비를 밝히는 의미 있는 정보를 찾기 위해 평생을 바쳤습니다. 이것이 바로 인간의 학습 조건입니다. 인간의 아이는 새로운 것을 배우고 성장하면서 자신의 세계 구조를 해마다 밝혀냅니다.
---
## 아이의 뇌
아이의 뇌와 감각은 주변 환경의 사실을 인식하고 점차 숨겨진 패턴을 학습하여 논리적 규칙을 만들어 학습한 패턴을 식별합니다. 인간 뇌의 학습 과정은 인간을 이 세상에서 가장 정교한 생명체로 만듭니다. 숨겨진 패턴을 발견하고 그 패턴을 혁신적으로 발전시키며 지속적으로 학습하는 것은 평생 동안 우리를 더 나아지게 만듭니다. 이러한 학습 능력과 진화 가능성은 [뇌 가소성](https://www.simplypsychology.org/brain-plasticity.html)이라는 개념과 관련이 있습니다. 표면적으로, 인간 뇌의 학습 과정과 머신 러닝 개념 사이에 몇 가지 동기적 유사점을 그릴 수 있습니다.
아이의 뇌와 감각은 주변 환경의 사실을 인식하고, 점차 삶의 숨겨진 패턴을 배우며, 아이가 배운 패턴을 식별하기 위한 논리적 규칙을 만들도록 돕습니다. 인간 뇌의 학습 과정은 인간을 이 세상에서 가장 정교한 생명체로 만듭니다. 숨겨진 패턴을 발견하고 그 패턴을 혁신함으로써 우리는 평생 동안 더 나아질 수 있습니다. 이러한 학습 능력과 진화 가능성은 [뇌 가소성](https://www.simplypsychology.org/brain-plasticity.html)이라는 개념과 관련이 있습니다. 표면적으로, 인간 뇌의 학습 과정과 머신 러닝 개념 사이에 몇 가지 동기적 유사점을 그릴 수 있습니다.
---
## 인간의 뇌
[인간의 뇌](https://www.livescience.com/29365-human-brain.html)는 현실 세계에서 정보를 인식하고, 인식한 정보를 처리하며, 합리적인 결정을 내리고, 상황에 따라 특정 행동을 수행합니다. 이것이 바로 지능적으로 행동하는 것이라고 합니다. 지능적 행동 과정을 기계에 프로그램하면 이를 인공지능(AI)이라고 합니다.
[인간의 뇌](https://www.livescience.com/29365-human-brain.html)는 현실 세계에서 정보를 인식하고, 인식한 정보를 처리하며, 합리적인 결정을 내리고, 상황에 따라 특정 행동을 수행합니다. 이것이 우리가 지능적으로 행동한다고 부르는 것입니다. 지능적 행동 과정을 기계에 프로그램하면 이를 인공지능(AI)이라고 합니다.
---
## 몇 가지 용어
@ -69,14 +69,14 @@ CO_OP_TRANSLATOR_METADATA:
---
## AI, ML, 딥 러닝
![AI, ML, deep learning, data science](../../../../translated_images/ai-ml-ds.537ea441b124ebf69c144a52c0eb13a7af63c4355c2f92f440979380a2fb08b8.ko.png)
![AI, ML, deep learning, data science](../../../../1-Introduction/1-intro-to-ML/images/ai-ml-ds.png)
> AI, ML, 딥 러닝, 데이터 과학 간의 관계를 보여주는 다이어그램. [Jen Looper](https://twitter.com/jenlooper)가 [이 그래픽](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining)에서 영감을 받아 제작한 인포그래픽
---
## 다룰 개념
이 커리큘럼에서는 초보자가 반드시 알아야 할 머신 러닝의 핵심 개념만 다룰 것입니다. 우리는 주로 학생들이 기본을 배우는 데 사용하는 훌륭한 라이브러리인 Scikit-learn을 사용하여 '고전적인 머신 러닝'을 다룹니다. 인공지능이나 딥 러닝의 더 넓은 개념을 이해하려면 머신 러닝에 대한 강력한 기초 지식이 필수적이며, 이를 여기서 제공하고자 합니다.
이 커리큘럼에서는 초보자가 반드시 알아야 할 머신 러닝의 핵심 개념만 다룰 것입니다. 우리는 주로 학생들이 기본을 배우는 데 사용하는 훌륭한 라이브러리인 Scikit-learn을 사용하여 '고전적인 머신 러닝'을 다룹니다. 인공지능이나 딥 러닝의 더 넓은 개념을 이해하려면 머신 러닝에 대한 강력한 기초 지식이 필수적이며, 이를 여기서 제공하고자 합니다.
---
## 이 과정에서 배우게 될 내용:
@ -99,7 +99,7 @@ CO_OP_TRANSLATOR_METADATA:
- 신경망
- AI
더 나은 학습 경험을 위해, 신경망, 딥 러닝(신경망을 사용한 다층 모델 구축), 그리고 AI의 복잡성을 피할 것입니다. 이러한 주제는 다른 커리큘럼에서 다룰 예정입니다. 또한 데이터 과학에 초점을 맞춘 커리큘럼도 곧 제공할 예정입니다.
더 나은 학습 경험을 위해, 신경망을 사용하는 다층 모델링인 '딥 러닝'과 AI의 복잡성을 피할 것입니다. 이러한 주제는 다른 커리큘럼에서 다룰 예정입니다. 또한 데이터 과학에 초점을 맞춘 커리큘럼도 곧 제공할 예정입니다.
---
## 왜 머신 러닝을 공부해야 할까?
@ -108,38 +108,38 @@ CO_OP_TRANSLATOR_METADATA:
이 동기는 인간의 뇌가 외부 세계에서 인식한 데이터를 기반으로 특정한 것을 학습하는 방식에서 느슨하게 영감을 받았습니다.
✅ 비즈니스가 하드코딩된 규칙 기반 엔진을 만드는 대신 머신 러닝 전략을 사용하려는 이유를 잠시 생각해 보세요.
✅ 비즈니스가 하드코딩된 규칙 기반 엔진 대신 머신 러닝 전략을 사용하려는 이유를 잠시 생각해 보세요.
---
## 머신 러닝의 응용
머신 러닝의 응용은 이제 거의 모든 곳에 있으며, 스마트폰, 연결된 장치, 기타 시스템에서 생성되는 데이터만큼이나 널리 퍼져 있습니다. 최첨단 머신 러닝 알고리즘의 엄청난 잠재력을 고려할 때, 연구자들은 다차원적이고 다학문적인 실제 문제를 해결하기 위해 그 능력을 탐구하고 있으며, 매우 긍정적인 결과를 얻고 있습니다.
머신 러닝의 응용은 이제 거의 모든 곳에 있으며, 스마트폰, 연결된 장치, 기타 시스템에서 생성되는 데이터만큼이나 널리 퍼져 있습니다. 최첨단 머신 러닝 알고리즘의 엄청난 잠재력을 고려할 때, 연구자들은 다차원적이고 다학문적인 실제 문제를 해결하기 위해 그 능력을 탐구하고 있으며, 긍정적인 결과를 얻고 있습니다.
---
## 적용된 ML의 예
**머신 러닝은 다양한 방식으로 사용할 수 있습니다**:
- 환자의 의료 기록이나 보고서를 통해 질병 가능성을 예측합니다.
- 환자의 병력이나 보고서를 바탕으로 질병 가능성을 예측합니다.
- 날씨 데이터를 활용하여 기상 현상을 예측합니다.
- 텍스트의 감정을 이해합니다.
- 가짜 뉴스를 감지하여 선전의 확산을 막습니다.
금융, 경제, 지구 과학, 우주 탐사, 생물 의학 공학, 인지 과학, 심지어 인문학 분야에서도 머신 러닝을 채택하여 해당 분야의 어려운 데이터 처리 문제를 해결하고 있습니다.
금융, 경제, 지구과학, 우주 탐사, 생물의학 공학, 인지 과학, 심지어 인문학 분야에서도 머신 러닝을 채택하여 해당 분야의 어려운 데이터 처리 문제를 해결하고 있습니다.
---
## 결론
머신 러닝은 실제 데이터 또는 생성된 데이터에서 의미 있는 통찰력을 발견하여 패턴 발견 과정을 자동화합니다. 이는 비즈니스, 건강, 금융 응용 분야 등에서 매우 가치가 있음을 입증했습니다.
머신 러닝은 실제 데이터 또는 생성된 데이터에서 의미 있는 통찰력을 발견하여 패턴 발견 과정을 자동화합니다. 비즈니스, 건강, 금융 응용 분야 등에서 매우 가치가 있음을 입증했습니다.
가까운 미래에는 머신 러닝의 기본을 이해하는 것이 모든 분야의 사람들에게 필수적이 될 것입니다. 이는 그 채택이 널리 퍼지고 있기 때문입니다.
머지않아 머신 러닝의 기본을 이해하는 것이 모든 분야의 사람들에게 필수적인 요소가 될 것입니다. 이는 머신 러닝의 광범위한 채택 때문입니다.
---
# 🚀 도전
# 🚀 도전 과제
[Excalidraw](https://excalidraw.com/)와 같은 온라인 앱이나 종이를 사용하여 AI, ML, 딥 러닝, 데이터 과학의 차이에 대한 여러분의 이해를 스케치하세요. 각 기술이 해결하기에 적합한 문제에 대한 아이디어를 추가하세요.
# [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/)
# [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
---
# 복습 및 자기 학습

@ -1,41 +1,41 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b2d11df10030cacc41427a1fbc8bc8f1",
"translation_date": "2025-09-03T23:40:04+00:00",
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
"translation_date": "2025-09-05T10:49:35+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "ko"
}
-->
# 머신 러닝의 역사
![머신 러닝 역사의 요약 스케치노트](../../../../translated_images/ml-history.a1bdfd4ce1f464d9a0502f38d355ffda384c95cd5278297a46c9a391b5053bc4.ko.png)
![머신 러닝 역사의 요약 스케치노트](../../../../sketchnotes/ml-history.png)
> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
---
[![초보자를 위한 머신 러닝 - 머신 러닝의 역사](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "초보자를 위한 머신 러닝 - 머신 러닝의 역사")
> 🎥 위 이미지를 클릭하면 이 강의를 다 짧은 영상을 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 이 강의를 다루는 짧은 영상을 볼 수 있습니다.
이 강의에서는 머신 러닝과 인공지능의 역사에서 주요 이정표를 살펴봅니다.
인공지능(AI) 분야의 역사는 머신 러닝의 역사와 밀접하게 얽혀 있습니다. 머신 러닝을 뒷받침하는 알고리즘과 계산적 발전이 AI 개발에 기여했기 때문입니다. 이 두 분야가 독립적인 연구 영역으로 구체화되기 시작한 것은 1950년대이지만, 중요한 [알고리즘적, 통계적, 수학적, 계산적, 기술적 발견](https://wikipedia.org/wiki/Timeline_of_machine_learning)은 이 시기 이전에도 존재했으며, 이 시기와 겹쳐졌습니다. 사실, 사람들은 [수백 년 동안](https://wikipedia.org/wiki/History_of_artificial_intelligence) '생각하는 기계'라는 아이디어에 대해 고민해 왔습니다. 이 글은 '생각하는 기계'라는 개념의 역사적 지적 기반을 논의합니다.
인공지능(AI) 분야의 역사는 머신 러닝의 역사와 밀접하게 얽혀 있습니다. 머신 러닝을 뒷받침하는 알고리즘과 계산적 발전이 AI의 개발로 이어졌기 때문입니다. 이 두 분야가 독립적인 연구 영역으로 구체화되기 시작한 것은 1950년대이지만, 중요한 [알고리즘적, 통계적, 수학적, 계산적, 기술적 발견](https://wikipedia.org/wiki/Timeline_of_machine_learning)은 이 시기 이전에도 존재했으며, 이 시기와 겹치기도 했습니다. 사실, 사람들은 [수백 년 동안](https://wikipedia.org/wiki/History_of_artificial_intelligence) '생각하는 기계'라는 아이디어에 대해 고민해 왔습니다. 이 글은 '생각하는 기계'라는 개념의 역사적 지적 기반을 논의합니다.
---
## 주요 발견
## 주목할 만한 발견들
- 1763, 1812 [베이즈 정리](https://wikipedia.org/wiki/Bayes%27_theorem)와 그 선구자들. 이 정리와 그 응용은 사전 지식을 바탕으로 사건이 발생할 확률을 설명하는 추론의 기초를 제공합니다.
- 1805 [최소제곱법](https://wikipedia.org/wiki/Least_squares) 프랑스 수학자 Adrien-Marie Legendre에 의해 개발됨. 이 이론은 회귀 단원에서 배우게 될 데이터 적합에 도움을 줍니다.
- 1913 [마르코프 체인](https://wikipedia.org/wiki/Markov_chain), 러시아 수학자 Andrey Markov의 이름을 딴 것으로, 이전 상태를 기반으로 가능한 사건의 순서를 설명합니다.
- 1957 [퍼셉트론](https://wikipedia.org/wiki/Perceptron), 미국 심리학자 Frank Rosenblatt에 의해 발명된 선형 분류기의 일종으로, 딥러닝 발전의 기초가 됩니다.
- 1913 [마르코프 체인](https://wikipedia.org/wiki/Markov_chain), 러시아 수학자 Andrey Markov의 이름을 딴 것으로, 이전 상태를 기반으로 가능한 사건의 연속을 설명합니다.
- 1957 [퍼셉트론](https://wikipedia.org/wiki/Perceptron), 미국 심리학자 Frank Rosenblatt이 발명한 선형 분류기의 일종으로, 딥러닝 발전의 기초가 됩니다.
---
- 1967 [최근접 이웃](https://wikipedia.org/wiki/Nearest_neighbor), 원래 경로를 매핑하기 위해 설계된 알고리즘. 머신 러닝에서는 패턴을 감지하는 데 사용됩니다.
- 1970 [역전파](https://wikipedia.org/wiki/Backpropagation), [피드포워드 신경망](https://wikipedia.org/wiki/Feedforward_neural_network)을 훈련시키는 데 사용됩니다.
- 1970 [역전파](https://wikipedia.org/wiki/Backpropagation), [피드포워드 신경망](https://wikipedia.org/wiki/Feedforward_neural_network)을 훈련는 데 사용됩니다.
- 1982 [순환 신경망](https://wikipedia.org/wiki/Recurrent_neural_network), 피드포워드 신경망에서 파생된 인공 신경망으로, 시간적 그래프를 생성합니다.
✅ 조금 더 조사해 보세요. 머신 러닝과 AI의 역사에서 중요한 다른 날짜는 무엇인가요?
@ -48,7 +48,7 @@ Alan Turing은 2019년 [대중 투표](https://wikipedia.org/wiki/Icons:_The_Gre
---
## 1956: 다트머스 여름 연구 프로젝트
"다트머스 여름 연구 프로젝트는 인공지능 분야의 기념비적인 사건이었으며, 이곳에서 '인공지능'이라는 용어가 만들어졌습니다." ([출처](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
"다트머스 여름 연구 프로젝트는 인공지능 분야의 획기적인 사건이었으며, 여기서 '인공지능'이라는 용어가 처음 만들어졌습니다." ([출처](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
> 학습의 모든 측면이나 지능의 다른 특징은 원칙적으로 매우 정확하게 설명될 수 있으며, 이를 통해 기계가 이를 모방하도록 만들 수 있습니다.
@ -56,54 +56,54 @@ Alan Turing은 2019년 [대중 투표](https://wikipedia.org/wiki/Icons:_The_Gre
수석 연구자인 수학 교수 John McCarthy는 "학습의 모든 측면이나 지능의 다른 특징은 원칙적으로 매우 정확하게 설명될 수 있으며, 이를 통해 기계가 이를 모방하도록 만들 수 있다"는 가설을 바탕으로 연구를 진행하기를 희망했습니다. 참가자들 중에는 이 분야의 또 다른 거장인 Marvin Minsky도 포함되어 있었습니다.
이 워크숍은 "상징적 방법의 부상, 제한된 도메인에 초점을 맞춘 시스템(초기 전문가 시스템), 그리고 연역적 시스템 대 귀납적 시스템"을 포함한 여러 논의를 시작하고 장려한 것으로 평가받고 있습니다. ([출처](https://wikipedia.org/wiki/Dartmouth_workshop))
이 워크숍은 "상징적 방법의 부상, 제한된 도메인에 초점을 맞춘 시스템(초기 전문가 시스템), 연역적 시스템 대 귀납적 시스템"을 포함한 여러 논의를 시작하고 장려한 것으로 평가받고 있습니다. ([출처](https://wikipedia.org/wiki/Dartmouth_workshop))
---
## 1956 - 1974: "황금기"
1950년대부터 70년대 중반까지, AI가 많은 문제를 해결할 수 있을 것이라는 낙관론이 높았습니다. 1967년 Marvin Minsky는 "한 세대 안에 ... '인공지능'을 만드는 문제는 실질적으로 해결될 것이다"고 자신 있게 말했습니다. (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
자연어 처리 연구가 번성했고, 검색이 정교해지고 강력해졌으며, '마이크로월드'라는 개념이 만들어져 간단한 작업이 평범한 언어 지시를 사용하여 완료될 수 있었습니다.
자연어 처리 연구가 번성했고, 검색이 정교해지고 강력해졌으며, '마이크로월드'라는 개념이 만들어져 간단한 작업이 평범한 언어 지시를 사용 완료될 수 있었습니다.
---
정부 기관의 연구 자금이 풍부했고, 계산 알고리즘에서 진보가 이루어졌으며, 지능형 기계의 프로토타입이 만들어졌습니다. 이러한 기계들 중 일부는 다음과 같습니다:
정부 기관의 연구 자금이 풍부했고, 계산 알고리즘에서 진보가 이루어졌으며, 지능형 기계의 프로토타입이 만들어졌습니다. 이러한 기계들 중 일부는 다음과 같습니다:
* [Shakey 로봇](https://wikipedia.org/wiki/Shakey_the_robot), '지능적으로' 작업을 수행하는 방법을 결정하고 이동할 수 있었습니다.
![Shakey, 지능형 로봇](../../../../translated_images/shakey.4dc17819c447c05bf4b52f76da0bdd28817d056fdb906252ec20124dd4cfa55e.ko.jpg)
![Shakey, 지능형 로봇](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg)
> 1972년의 Shakey
---
* Eliza, 초기 '채터봇'으로 사람들과 대화하고 원시적인 '치료사' 역할을 할 수 있었습니다. NLP 강의에서 Eliza에 대해 더 배우게 될 것입니다.
![Eliza, 봇](../../../../translated_images/eliza.84397454cda9559bb5ec296b5b8fff067571c0cccc5405f9c1ab1c3f105c075c.ko.png)
![Eliza, 봇](../../../../1-Introduction/2-history-of-ML/images/eliza.png)
> Eliza의 한 버전, 채터봇
---
* "블록스 월드"는 블록을 쌓고 정렬할 수 있는 마이크로월드의 예로, 기계가 결정을 내리는 방법을 가르치는 실험이 테스트될 수 있었습니다. [SHRDLU](https://wikipedia.org/wiki/SHRDLU)와 같은 라이브러리를 사용하여 구축된 발전은 언어 처리를 더욱 발전시켰습니다.
* "블록스 월드"는 블록을 쌓고 정렬할 수 있는 마이크로월드의 예로, 기계가 결정을 내리는 방법을 가르치는 실험이 테스트될 수 있었습니다. [SHRDLU](https://wikipedia.org/wiki/SHRDLU)와 같은 라이브러리를 사용 발전은 언어 처리를 더욱 발전시켰습니다.
[![SHRDLU와 블록스 월드](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU와 블록스 월드")
[![SHRDLU와 함께하는 블록스 월드](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU와 함께하는 블록스 월드")
> 🎥 위 이미지를 클릭하면 영상: SHRDLU와 블록스 월드를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 영상: SHRDLU와 함께하는 블록스 월드를 볼 수 있습니다.
---
## 1974 - 1980: "AI 겨울"
1970년대 중반까지 '지능형 기계'를 만드는 복잡성이 과소평가되었고, 사용 가능한 컴퓨팅 능력으로 인해 그 약속이 과장되었다는 것이 명해졌습니다. 자금이 고갈되고 이 분야에 대한 신뢰가 감소했습니다. 신뢰에 영향을 미친 몇 가지 문제는 다음과 같습니다:
1970년대 중반까지 '지능형 기계'를 만드는 복잡성이 과소평가되었고, 사용 가능한 컴퓨팅 능력으로 인해 그 약속이 과장되었다는 것이 명해졌습니다. 자금이 고갈되고 이 분야에 대한 신뢰가 감소했습니다. 신뢰에 영향을 미친 몇 가지 문제는 다음과 같습니다:
---
- **제한 사항**. 컴퓨팅 능력이 너무 제한적이었습니다.
- **조합 폭발**. 컴퓨터에 더 많은 것을 요구할수록 훈련해야 할 매개변수의 양이 기하급수적으로 증가했지만, 컴퓨팅 능력과 역량은 병행하여 발전하지 않았습니다.
- **데이터 부족**. 알고리즘을 테스트, 개발 및 개선하는 과정을 방해하는 데이터 부족이 있었습니다.
- **우리가 올바른 질문을 하고 있는가?**. 연구자들이 접근 방식에 대해 비판을 받기 시작하면서, 제기된 질문 자체가 의문시되었습니다:
- 튜링 테스트는 '중국 방 이론'을 포함한 여러 아이디어를 통해 의문을 제기받았습니다. 이 이론은 "디지털 컴퓨터를 프로그래밍하면 언어를 이해하는 것처럼 보일 수 있지만 실제 이해를 생성할 수는 없다"고 주장했습니다. ([출처](https://plato.stanford.edu/entries/chinese-room/))
- ELIZA와 같은 인공지능 '치료사'를 사회에 도입하는 윤리가 도전받았습니다.
- 튜링 테스트는 '중국 방 이론'을 포함한 여러 아이디어를 통해 의문을 제기받았습니다. 이 이론은 "디지털 컴퓨터를 프로그래밍하면 언어를 이해하는 것처럼 보일 수 있지만 실제 이해를 생성할 수는 없다"고 주장했습니다. ([출처](https://plato.stanford.edu/entries/chinese-room/))
- ELIZA와 같은 인공지능 사회에 도입하는 윤리가 도전받았습니다.
---
동시에 다양한 AI 학파가 형성되기 시작했습니다. ["지저분한 AI" vs. "깔끔한 AI"](https://wikipedia.org/wiki/Neats_and_scruffies) 관행 간의 이분법이 확립되었습니다. _지저분한_ 연구소는 원하는 결과를 얻을 때까지 프로그램을 몇 시간 동안 조정했습니다. _깔끔한_ 연구소는 "논리와 공식적인 문제 해결"에 초점을 맞췄습니다. ELIZA와 SHRDLU는 잘 알려진 _지저분한_ 시스템이었습니다. 1980년대에는 ML 시스템을 재현 가능하게 만들려는 수요가 증가하면서, 결과가 더 설명 가능한 _깔끔한_ 접근 방식이 점차 주류로 자리 잡았습니다.
동시에 다양한 AI 학파가 형성되기 시작했습니다. ["지저분한 AI vs. 깔끔한 AI"](https://wikipedia.org/wiki/Neats_and_scruffies) 관행 간의 이분법이 확립되었습니다. _지저분한_ 연구소는 원하는 결과를 얻을 때까지 프로그램을 몇 시간 동안 조정했습니다. _깔끔한_ 연구소는 "논리와 공식적인 문제 해결"에 초점을 맞췄습니다. ELIZA와 SHRDLU는 잘 알려진 _지저분한_ 시스템이었습니다. 1980년대에는 ML 시스템을 재현 가능하게 만들려는 수요가 증가하면서, 결과가 더 설명 가능한 _깔끔한_ 접근 방식이 점차 주류로 자리 잡았습니다.
---
## 1980년대 전문가 시스템
@ -117,12 +117,12 @@ Alan Turing은 2019년 [대중 투표](https://wikipedia.org/wiki/Icons:_The_Gre
---
## 1987 - 1993: AI '냉각기'
전문화된 전문가 시스템 하드웨어의 확산은 지나치게 전문화되는 부작용을 초래했습니다. 개인용 컴퓨터의 부상은 이러한 대형, 전문화된 중앙 시스템과 경쟁했습니다. 컴퓨팅의 민주화가 시작되었으며, 이는 결국 빅데이터의 현대적 폭발을 위한 길을 열었습니다.
전문가 시스템 하드웨어의 확산은 지나치게 전문화되는 부작용을 낳았습니다. 개인용 컴퓨터의 부상은 이러한 대형, 전문화된 중앙 시스템과 경쟁했습니다. 컴퓨팅의 민주화가 시작되었으며, 이는 결국 빅데이터의 현대적 폭발로 이어졌습니다.
---
## 1993 - 2011
이 시기는 데이터와 컴퓨팅 능력 부족으로 인해 이전에 발생했던 문제를 해결할 수 있는 새로운 시대를 열었습니다. 데이터의 양이 급격히 증가하고 더 널리 이용 가능해졌으며, 이는 긍정적이든 부정적이든 스마트폰이 2007년경 등장하면서 더욱 가속화되었습니다. 컴퓨팅 능력은 기하급수적으로 확장되었고, 알고리즘도 함께 발전했습니다. 이 분야는 과거의 자유분방한 시기를 지나 진정한 학문으로서 성숙해지기 시작했습니다.
이 시기는 데이터와 컴퓨팅 능력 부족으로 인해 이전에 발생했던 문제를 해결할 수 있는 새로운 시대를 열었습니다. 데이터의 양이 급격히 증가하고 더 널리 이용 가능해졌으며, 특히 2007년경 스마트폰의 등장으로 인해 긍정적이든 부정적이든 영향을 미쳤습니다. 컴퓨팅 능력은 기하급수적으로 확장되었고, 알고리즘도 함께 발전했습니다. 이 분야는 과거의 자유분방한 시기를 지나 진정한 학문으로서 성숙해지기 시작했습니다.
---
## 현재
@ -134,14 +134,14 @@ Alan Turing은 2019년 [대중 투표](https://wikipedia.org/wiki/Icons:_The_Gre
미래가 어떻게 될지는 아직 알 수 없지만, 이러한 컴퓨터 시스템과 그들이 실행하는 소프트웨어 및 알고리즘을 이해하는 것이 중요합니다. 이 커리큘럼이 여러분이 더 나은 이해를 얻고 스스로 판단할 수 있도록 돕기를 바랍니다.
[![딥러닝의 역사](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "딥러닝의 역사")
> 🎥 위 이미지를 클릭하면 영상: Yann LeCun이 딥러닝의 역사를 논의하는 강의를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 영상: Yann LeCun이 이 강의에서 딥러닝의 역사를 논의합니다.
---
## 🚀도전
이 역사적 순간 중 하나를 깊이 파고들어 그 뒤에 있는 사람들에 대해 더 알아보세요. 매력적인 인물들이 있으며, 어떤 과학적 발견도 문화적 진공 상태에서 만들어지지 않았습니다. 무엇을 발견했나요?
이 역사적 순간 중 하나를 깊이 파고들어 그 뒤에 있는 사람들에 대해 더 알아보세요. 매력적인 인물들이 있으며, 어떤 과학적 발견도 문화적 공백 속에서 만들어지지 않았습니다. 무엇을 발견했나요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
---
## 복습 및 자기 학습
@ -161,4 +161,4 @@ Alan Turing은 2019년 [대중 투표](https://wikipedia.org/wiki/Icons:_The_Gre
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,37 +1,37 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "8f819813b2ca08ec7b9f60a2c9336045",
"translation_date": "2025-09-03T23:28:06+00:00",
"original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
"translation_date": "2025-09-05T10:47:40+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ko"
}
-->
# 책임 있는 AI를 활용한 머신 러닝 솔루션 구축
![머신 러닝에서 책임 있는 AI의 요약을 담은 스케치노트](../../../../translated_images/ml-fairness.ef296ebec6afc98a44566d7b6c1ed18dc2bf1115c13ec679bb626028e852fa1d.ko.png)
![머신 러닝에서 책임 있는 AI의 요약을 담은 스케치노트](../../../../sketchnotes/ml-fairness.png)
> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 소개
이 커리큘럼에서는 머신 러닝이 우리의 일상생활에 어떤 영향을 미치고 있는지 알아보기 시작합니다. 현재도 시스템과 모델은 의료 진단, 대출 승인, 사기 탐지와 같은 일상적인 의사 결정 작업에 관여하고 있습니다. 따라서 이러한 모델이 신뢰할 수 있는 결과를 제공하기 위해 잘 작동하는 것이 중요합니다. 모든 소프트웨어 애플리케이션과 마찬가지로, AI 시스템은 기대에 미치지 못하거나 바람직하지 않은 결과를 초래할 수 있습니다. 그렇기 때문에 AI 모델의 행동을 이해하고 설명할 수 있는 것이 필수적입니다.
모델을 구축하는 데 사용하는 데이터가 인종, 성별, 정치적 견해, 종교와 같은 특정 인구 통계가 부족하거나 불균형적으로 대표되는 경우 어떤 일이 발생할 수 있을지 상상해 보세요. 모델의 출력이 특정 인구 통계를 선호하도록 해석된다면 애플리케이션에 어떤 영향을 미칠까요? 또한 모델이 부정적인 결과를 초래하여 사람들에게 해를 끼친다면 어떻게 될까요? AI 시스템의 행동에 대한 책임은 누구에게 있을까요? 이러한 질문들은 이 커리큘럼에서 탐구할 내용입니다.
모델을 구축하는 데 사용하는 데이터가 특정 인구 통계(예: 인종, 성별, 정치적 견해, 종교 등)를 포함하지 않거나 불균형적으로 대표하는 경우 어떤 일이 발생할 수 있을까요? 모델의 출력이 특정 인구 통계를 선호하도록 해석된다면 어떻게 될까요? 애플리케이션에 어떤 영향을 미칠까요? 또한 모델이 부정적인 결과를 초래하여 사람들에게 해를 끼친다면 어떻게 될까요? AI 시스템의 행동에 대한 책임은 누구에게 있을까요? 이러한 질문들은 이 커리큘럼에서 탐구할 내용입니다.
이 강의에서 여러분은 다음을 배우게 됩니다:
- 머신 러닝에서 공정성의 중요성과 공정성 관련 피해에 대한 인식을 높입니다.
- 신뢰성과 안전성을 보장하기 위해 이상치와 특이한 시나리오를 탐구하는 실습에 익숙해집니다.
- 신뢰성과 안전성을 보장하기 위해 이상치와 비정상적인 시나리오를 탐구하는 실습에 익숙해집니다.
- 포괄적인 시스템을 설계하여 모두를 지원해야 하는 필요성을 이해합니다.
- 데이터와 사람들의 프라이버시와 보안을 보호하는 것이 얼마나 중요한지 탐구합니다.
- AI 모델의 행동을 설명하기 위해 투명성을 갖는 것이 얼마나 중요한지 확인합니다.
- AI 시스템에 대한 신뢰를 구축하기 위해 책임감이 필수적이라는 점을 인식합니다.
- AI 모델의 행동을 설명하기 위해 투명성을 유지하는 접근 방식의 중요성을 확인합니다.
- AI 시스템에 대한 신뢰를 구축하기 위해 책임감이 얼마나 중요한지 인식합니다.
## 사전 요구 사항
## 사전 요구사항
사전 요구 사항으로 "책임 있는 AI 원칙" 학습 경로를 수강하고 아래의 주제에 대한 비디오를 시청하세요:
사전 요구사항으로 "책임 있는 AI 원칙" 학습 경로를 완료하고 아래의 주제에 대한 비디오를 시청하세요:
[학습 경로](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)를 통해 책임 있는 AI에 대해 더 알아보세요.
@ -41,23 +41,23 @@ CO_OP_TRANSLATOR_METADATA:
## 공정성
AI 시스템은 모든 사람을 공정하게 대하고 유사한 그룹의 사람들에게 다른 방식으로 영향을 미치는 것을 피해야 합니다. 예를 들어, AI 시스템이 의료 치료, 대출 신청 또는 고용에 대한 지침을 제공할 때, 유사한 증상, 재정 상황 또는 전문 자격을 가진 모든 사람에게 동일한 권장 사항을 제공해야 합니다. 우리 각자는 인간으로서 우리의 결정과 행동에 영향을 미치는 내재된 편견을 가지고 있습니다. 이러한 편견은 우리가 AI 시스템을 훈련시키는 데 사용하는 데이터에서 드러날 수 있습니다. 이러한 조작은 때로는 의도치 않게 발생할 수 있습니다. 데이터를 통해 편견을 도입하고 있는지 의식적으로 알기 어려운 경우가 많습니다.
AI 시스템은 모든 사람을 공정하게 대하고 유사한 그룹의 사람들에게 다른 방식으로 영향을 미치지 않아야 합니다. 예를 들어, AI 시스템이 의료 치료, 대출 신청 또는 고용에 대한 지침을 제공할 때, 유사한 증상, 재정 상황 또는 전문 자격을 가진 모든 사람에게 동일한 권장 사항을 제공해야 합니다. 우리 각자는 인간으로서 우리의 결정과 행동에 영향을 미치는 내재된 편견을 가지고 있습니다. 이러한 편견은 우리가 AI 시스템을 훈련시키는 데 사용하는 데이터에서 드러날 수 있습니다. 이러한 조작은 때로는 의도치 않게 발생할 수 있습니다. 데이터를 다룰 때 편견을 도입하고 있는지 의식적으로 알기 어려운 경우가 많습니다.
**“불공정성”**은 인종, 성별, 연령 또는 장애 상태와 같은 기준으로 정의된 특정 그룹에 대한 부정적인 영향 또는 “피해”를 포함합니다. 주요 공정성 관련 피해는 다음과 같이 분류할 수 있습니다:
**“불공정성”**은 인종, 성별, 연령 또는 장애 상태와 같은 기준으로 정의된 사람들 그룹에 대한 부정적인 영향 또는 “피해”를 포함합니다. 주요 공정성 관련 피해는 다음과 같이 분류할 수 있습니다:
- **할당**: 예를 들어, 특정 성별이나 민족이 다른 성별이나 민족보다 선호되는 경우.
- **서비스 품질**: 특정 시나리오에 대해 데이터를 훈련시켰지만 현실은 훨씬 더 복잡한 경우, 서비스 성능이 저하됩니다. 예를 들어, 어두운 피부를 가진 사람을 감지하지 못하는 손 비누 디스펜서. [참조](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **서비스 품질**: 특정 시나리오에 맞춰 데이터를 훈련시키지만 현실은 훨씬 더 복잡한 경우, 서비스 성능이 저하됩니다. 예를 들어, 어두운 피부를 가진 사람을 감지하지 못하는 손 비누 디스펜서. [참조](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
- **비난**: 부당하게 비판하거나 특정 대상이나 사람을 잘못 평가하는 경우. 예를 들어, 이미지 라벨링 기술이 어두운 피부를 가진 사람들의 이미지를 고릴라로 잘못 라벨링한 사례.
- **과잉 또는 과소 대표**: 특정 직업에서 특정 그룹이 보이지 않는다는 아이디어와 이를 계속 촉진하는 서비스나 기능이 피해를 초래하는 경우.
- **고정관념**: 특정 그룹을 미리 정해진 속성과 연관시키는 경우. 예를 들어, 영어와 터키어 간의 언어 번역 시스템이 성별과 관련된 고정관념으로 인해 부정확성을 가질 수 있습니다.
- **과잉 또는 부족 대표**: 특정 그룹이 특정 직업에서 보이지 않는 경우, 이를 계속 촉진하는 서비스나 기능은 피해를 초래할 수 있습니다.
- **고정관념**: 특정 그룹을 미리 할당된 속성과 연관시키는 경우. 예를 들어, 영어와 터키어 간의 언어 번역 시스템이 성별과 관련된 고정관념으로 인해 부정확성을 가질 수 있습니다.
![터키어로 번역](../../../../translated_images/gender-bias-translate-en-tr.f185fd8822c2d4372912f2b690f6aaddd306ffbb49d795ad8d12a4bf141e7af0.ko.png)
![터키어로 번역](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png)
> 터키어로 번역
![영어로 다시 번역](../../../../translated_images/gender-bias-translate-tr-en.4eee7e3cecb8c70e13a8abbc379209bc8032714169e585bdeac75af09b1752aa.ko.png)
![영어로 다시 번역](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png)
> 영어로 다시 번역
AI 시스템을 설계하고 테스트할 때, AI가 인간이 금지된 편향적이거나 차별적인 결정을 내리지 않도록 보장해야 합니다. AI와 머신 러닝에서 공정성을 보장하는 것은 여전히 복잡한 사회기술적 과제입니다.
AI 시스템을 설계하고 테스트할 때, AI가 공정하며 인간이 금지된 편향적이거나 차별적인 결정을 내리지 않도록 해야 합니다. AI와 머신 러닝에서 공정성을 보장하는 것은 여전히 복잡한 사회기술적 과제입니다.
### 신뢰성과 안전성
@ -67,37 +67,37 @@ AI 시스템을 설계하고 테스트할 때, AI가 인간이 금지된 편향
### 포괄성
AI 시스템은 모든 사람을 참여시키고 지원도록 설계되어야 합니다. AI 시스템을 설계하고 구현할 때 데이터 과학자와 AI 개발자는 시스템에서 사람들을 의도치 않게 배제할 수 있는 잠재적 장애물을 식별하고 해결합니다. 예를 들어, 전 세계적으로 10억 명의 장애인이 있습니다. AI의 발전으로 인해 이들은 일상생활에서 더 쉽게 다양한 정보와 기회를 접할 수 있습니다. 장애물을 해결함으로써 모든 사람에게 혜택을 주는 더 나은 경험을 제공하는 AI 제품을 혁신하고 개발할 기회를 창출합니다.
AI 시스템은 모든 사람을 참여시키고 지원할 수 있도록 설계되어야 합니다. AI 시스템을 설계하고 구현할 때 데이터 과학자와 AI 개발자는 시스템에서 사람들을 의도치 않게 배제할 수 있는 잠재적 장을 식별하고 해결합니다. 예를 들어, 전 세계적으로 10억 명의 장애인이 있습니다. AI의 발전으로 인해 이들은 일상생활에서 더 쉽게 다양한 정보와 기회를 접할 수 있습니다. 이러한 장벽을 해결함으로써 모든 사람에게 혜택을 주는 더 나은 경험을 제공하는 AI 제품을 혁신하고 개발할 기회를 창출합니다.
> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 포괄성](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### 보안과 프라이버시
AI 시스템은 안전해야 하며 사람들의 프라이버시를 존중해야 합니다. 프라이버시, 정보 또는 생명을 위험에 빠뜨리는 시스템에 대한 신뢰는 낮아집니다. 머신 러닝 모델을 훈련할 때, 최상의 결과를 도출하기 위해 데이터를 활용합니다. 이를 수행하는 과정에서 데이터의 출처와 무결성을 고려해야 합니다. 예를 들어, 데이터가 사용자 제출 데이터인지 또는 공개적으로 이용 가능한 데이터인지 확인해야 합니다. 다음으로, 데이터를 처리하는 동안 기밀 정보를 보호하고 공격에 저항할 수 있는 AI 시스템을 개발하는 것이 중요합니다. AI가 점점 더 널리 사용됨에 따라 프라이버시를 보호하고 중요한 개인 및 비즈니스 정보를 안전하게 유지하는 것이 점점 더 중요하고 복잡해지고 있습니다. 프라이버시와 데이터 보안 문제는 AI에서 특히 주의 깊게 다뤄야 합니다. 데이터에 대한 접근은 AI 시스템이 사람들에 대한 정확하고 정보에 입각한 예측과 결정을 내리는 데 필수적이기 때문입니다.
AI 시스템은 안전해야 하며 사람들의 프라이버시를 존중해야 합니다. 프라이버시, 정보 또는 생명을 위험에 빠뜨리는 시스템에 대한 신뢰는 낮아집니다. 머신 러닝 모델을 훈련할 때, 최상의 결과를 도출하기 위해 데이터를 활용합니다. 이 과정에서 데이터의 출처와 무결성을 고려해야 합니다. 예를 들어, 데이터가 사용자 제출 데이터인지 공개적으로 이용 가능한 데이터인지 확인해야 합니다. 다음으로 데이터를 다룰 때, 기밀 정보를 보호하고 공격에 저항할 수 있는 AI 시스템을 개발하는 것이 중요합니다. AI가 점점 더 널리 사용됨에 따라 프라이버시를 보호하고 중요한 개인 및 비즈니스 정보를 안전하게 유지하는 것이 점점 더 중요하고 복잡해지고 있습니다. AI는 데이터를 기반으로 사람들에 대한 정확하고 정보에 입각한 예측과 결정을 내리기 때문에 프라이버시와 데이터 보안 문제는 특히 주의가 필요합니다.
> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 보안](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- 업계는 GDPR(일반 데이터 보호 규정)과 같은 규정에 의해 크게 촉진된 프라이버시 보안에서 상당한 발전을 이루었습니다.
- 업계는 GDPR(일반 데이터 보호 규정)과 같은 규정에 의해 크게 촉진된 프라이버시 보안에서 상당한 발전을 이루었습니다.
- 그러나 AI 시스템에서는 시스템을 더 개인적이고 효과적으로 만들기 위해 더 많은 개인 데이터를 필요로 하는 것과 프라이버시 간의 긴장을 인정해야 합니다.
- 인터넷으로 연결된 컴퓨터의 탄생과 마찬가지로 AI와 관련된 보안 문제의 급증을 목격하고 있습니다.
- 동시에 AI가 보안을 개선하는 데 사용되는 사례도 있습니다. 예를 들어, 대부분의 현대적인 안티바이러스 스캐너는 오늘날 AI 휴리스틱에 의해 구동됩니다.
- 데이터 과학 프로세스가 최신 프라이버시 및 보안 관행과 조화를 이루도록 보장해야 합니다.
- 데이터 과학 프로세스가 최신 프라이버시 및 보안 관행과 조화를 이루도록 해야 합니다.
### 투명성
AI 시스템은 이해할 수 있어야 합니다. 투명성의 중요한 부분은 AI 시스템과 그 구성 요소의 행동을 설명하는 것입니다. AI 시스템에 대한 이해를 개선하려면 이해관계자가 시스템이 어떻게 작동하고 왜 작동하는지 이해하여 잠재적인 성능 문제, 안전 및 프라이버시 문제, 편향, 배제적 관행 또는 의도치 않은 결과를 식별할 수 있어야 합니다. 또한 AI 시스템을 사용하는 사람들은 시스템을 언제, 왜, 어떻게 사용하는지, 그리고 사용하는 시스템의 한계를 솔직하게 공개해야 한다고 믿습니다. 예를 들어, 은행이 소비자 대출 결정을 지원하기 위해 AI 시스템을 사용하는 경우, 결과를 검토하고 시스템의 권장 사항에 영향을 미치는 데이터를 이해하는 것이 중요합니다. 정부는 산업 전반에 걸쳐 AI를 규제하기 시작하고 있으므로 데이터 과학자와 조직은 AI 시스템이 규제 요구 사항을 충족하는지, 특히 바람직하지 않은 결과가 발생했을 때 이를 설명해야 합니다.
AI 시스템은 이해할 수 있어야 합니다. 투명성의 중요한 부분은 AI 시스템과 그 구성 요소의 행동을 설명하는 것입니다. AI 시스템에 대한 이해를 개선하려면 이해관계자가 시스템이 어떻게 작동하고 왜 작동하는지 이해하여 잠재적인 성능 문제, 안전 및 프라이버시 문제, 편향, 배제적 관행 또는 의도치 않은 결과를 식별할 수 있어야 합니다. 또한 AI 시스템을 사용하는 사람들은 시스템을 언제, 왜, 어떻게 배포하는지, 그리고 사용하는 시스템의 한계를 솔직하게 공개해야 한다고 믿습니다. 예를 들어, 은행이 소비자 대출 결정을 지원하기 위해 AI 시스템을 사용하는 경우, 결과를 검토하고 시스템의 권장 사항에 영향을 미치는 데이터를 이해하는 것이 중요합니다. 정부는 산업 전반에 걸쳐 AI를 규제하기 시작하고 있으므로 데이터 과학자와 조직은 AI 시스템이 규제 요구 사항을 충족하는지, 특히 바람직하지 않은 결과가 발생했을 때 이를 설명해야 합니다.
> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 투명성](https://www.microsoft.com/videoplayer/embed/RE4voJF)
- AI 시스템이 매우 복잡하기 때문에 시스템이 어떻게 작동하는지 이해하고 결과를 해석하기 어렵습니다.
- AI 시스템이 매우 복잡하기 때문에 시스템이 어떻게 작동하고 결과를 해석하는지 이해하기 어렵습니다.
- 이러한 이해 부족은 시스템이 관리, 운영 및 문서화되는 방식에 영향을 미칩니다.
- 더 중요한 것은 이러한 이해 부족이 시스템이 생성하는 결과를 사용하여 내리는 결정에 영향을 미친다는 점입니다.
- 더 중요한 것은 이러한 이해 부족이 시스템이 생성하는 결과를 기반으로 내리는 결정에 영향을 미친다는 점입니다.
### 책임감
AI 시스템을 설계하고 배포하는 사람들은 시스템이 어떻게 작동하는지에 대해 책임을 져야 합니다. 책임감의 필요성은 특히 얼굴 인식과 같은 민감한 기술을 사용할 때 중요합니다. 최근에는 실종 아동을 찾는 것과 같은 용도로 기술의 잠재력을 보는 법 집행 기관에서 얼굴 인식 기술에 대한 수요가 증가하고 있습니다. 그러나 이러한 기술은 특정 개인에 대한 지속적인 감시를 가능하게 함으로써 시민의 기본적인 자유를 위협할 수 있는 방식으로 정부에 의해 사용될 가능성이 있습니다. 따라서 데이터 과학자와 조직은 AI 시스템이 개인이나 사회에 미치는 영향에 대해 책임을 져야 합니다.
AI 시스템을 설계하고 배포하는 사람들은 시스템이 어떻게 작동하는지에 대해 책임을 져야 합니다. 책임감의 필요성은 특히 얼굴 인식과 같은 민감한 기술에서 중요합니다. 최근에는 실종 아동을 찾는 것과 같은 용도로 기술의 잠재력을 보는 법 집행 기관에서 얼굴 인식 기술에 대한 수요가 증가하고 있습니다. 그러나 이러한 기술은 특정 개인에 대한 지속적인 감시를 가능하게 함으로써 시민의 기본 자유를 위협할 수 있는 방식으로 정부에 의해 사용될 가능성이 있습니다. 따라서 데이터 과학자와 조직은 AI 시스템이 개인이나 사회에 미치는 영향에 대해 책임을 져야 합니다.
[![AI 연구자가 얼굴 인식을 통한 대규모 감시에 대해 경고](../../../../translated_images/accountability.41d8c0f4b85b6231301d97f17a450a805b7a07aaeb56b34015d71c757cad142e.ko.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft의 책임 있는 AI 접근 방식")
[![AI 연구자가 얼굴 인식을 통한 대규모 감시에 대해 경고](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft의 책임 있는 AI 접근 방식")
> 🎥 위 이미지를 클릭하여 비디오를 시청하세요: 얼굴 인식을 통한 대규모 감시에 대한 경고
@ -107,63 +107,64 @@ AI 시스템을 설계하고 배포하는 사람들은 시스템이 어떻게
머신 러닝 모델을 훈련하기 전에 AI 시스템의 목적, 의도된 사용, 배포 위치 및 시스템과 상호작용할 사람들을 이해하기 위해 영향 평가를 수행하는 것이 중요합니다. 이는 시스템을 평가하는 리뷰어 또는 테스터가 잠재적 위험과 예상 결과를 식별할 때 고려해야 할 요소를 아는 데 도움이 됩니다.
영향 평가를 수행할 때 초점을 맞춰야 할 영역은 다음과 같습니다:
영향 평가를 수행할 때 집중해야 할 영역은 다음과 같습니다:
* **개인에 대한 부정적 영향**: 시스템 성능을 저해하는 제한 또는 요구 사항, 지원되지 않는 사용 또는 알려진 제한 사항을 인식하여 시스템이 개인에게 해를 끼칠 수 있는 방식으로 사용되지 않도록 보장합니다.
* **데이터 요구 사항**: 시스템이 데이터를 사용하는 방법과 위치를 이해하면 리뷰어가 고려해야 할 데이터 요구 사항(예: GDPR 또는 HIPPA 데이터 규정)을 탐구할 수 있습니다. 또한 데이터의 출처나 양이 훈련에 충분한지 검토합니다.
* **개인에 대한 부정적 영향**: 시스템 성능을 저해할 수 있는 제한, 요구사항, 지원되지 않는 사용 또는 알려진 한계를 인식하는 것이 중요합니다.
* **데이터 요구사항**: 시스템이 데이터를 사용하는 방법과 위치를 이해하면 GDPR 또는 HIPPA 데이터 규정과 같은 데이터 요구사항을 고려해야 할 사항을 탐구할 수 있습니다. 또한 데이터를 훈련시키기에 충분한 출처와 양을 검토합니다.
* **영향 요약**: 시스템 사용으로 인해 발생할 수 있는 잠재적 피해 목록을 수집합니다. ML 라이프사이클 전반에 걸쳐 식별된 문제가 완화되었거나 해결되었는지 검토합니다.
* **적용 가능한 목표**: 여섯 가지 핵심 원칙 각각에 대한 목표를 평가하고 목표가 충족되었는지, 그리고 어떤 격차가 있는지 확인합니다.
* **적용 가능한 목표**: 여섯 가지 핵심 원칙 각각에 대한 목표가 충족되었는지, 그리고 어떤 격차가 있는지 평가합니다.
## 책임 있는 AI로 디버깅하기
소프트웨어 애플리케이션을 디버깅하는 것과 마찬가지로, AI 시스템을 디버깅하는 것은 시스템의 문제를 식별하고 해결하는 데 필요한 과정입니다. 시스템이 예상대로 또는 책임감 있게 작동하지 않는 이유에 영향을 미치는 많은 요인이 있습니다. 대부분의 전통적인 모델 성능 메트릭은 모델 성능의 정량적 집계로, 책임 있는 AI 원칙을 위반하는 방식을 분석하기에는 충분하지 않습니다. 게다가 머신 러닝 모델은 결과를 유도하는 요인을 이해하거나 실수를 했을 때 설명을 제공하기 어려운 블랙박스입니다. 이 과정에서 우리는 책임 있는 AI 대시보드를 사용하여 AI 시스템을 디버깅하는 방법을 배우게 됩니다. 대시보드는 데이터 과학자와 AI 개발자가 다음을 수행할 수 있는 포괄적인 도구를 제공합니다:
소프트웨어 애플리케이션을 디버깅하는 것과 마찬가지로, AI 시스템을 디버깅하는 것은 시스템의 문제를 식별하고 해결하는 데 필요한 과정입니다. 모델이 예상대로 또는 책임감 있게 작동하지 않는 데 영향을 미치는 많은 요인이 있습니다. 대부분의 전통적인 모델 성능 지표는 모델 성능의 정량적 집계로, 책임 있는 AI 원칙을 위반하는 방법을 분석하기에는 충분하지 않습니다. 게다가 머신 러닝 모델은 결과를 유도하는 요인을 이해하거나 실수를 했을 때 설명을 제공하기 어려운 블랙박스입니다. 이 과정에서 우리는 책임 있는 AI 대시보드를 사용하여 AI 시스템을 디버깅하는 방법을 배우게 됩니다. 대시보드는 데이터 과학자와 AI 개발자가 다음을 수행할 수 있는 포괄적인 도구를 제공합니다:
* **오류 분석**: 시스템의 공정성 또는 신뢰성에 영향을 미칠 수 있는 모델의 오류 분포를 식별합니다.
* **모델 개요**: 데이터 코호트 간의 모델 성능에서 불균형이 있는 곳을 발견합니다.
* **데이터 분석**: 데이터 분포를 이해하고 공정성, 포괄성 및 신뢰성 문제를 초래할 수 있는 데이터의 잠재적 편향을 식별합니다.
* **모델 해석 가능성**: 모델의 예측에 영향을 미치거나 영향을 주는 요인을 이해합니다. 이는 모델의 행동을 설명하는 데 중요하며, 투명성과 책임감을 위해 필요합니다.
## 🚀 도전 과제
## 🚀 도전
피해가 처음부터 도입되지 않도록 하기 위해 우리는 다음을 수행해야 합니다:
피해가 처음부터 도입되지 않도록 하기 위해 우리는 다음을 해야 합니다:
- 시스템 작업에 참여하는 사람들 간에 다양한 배경과 관점을 확보합니다.
- 우리 사회의 다양성을 반영하는 데이터 세트에 투자합니다.
- 머신 러닝 라이프사이클 전반에 걸쳐 책임 있는 AI를 감지하고 수정하는 더 나은 방법을 개발합니다.
모델 구축 및 사용에서 모델의 신뢰할 수 없는 점이 드러나는 실제 시나리오를 생각해 보세요. 우리는 무엇을 더 고려해야 할까요?
모델 구축 및 사용에서 모델의 신뢰할 수 없는 점이 드러나는 실제 시나리오를 생각해보세요. 우리는 무엇을 더 고려해야 할까요?
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/)
## 복습 및 자기 학습
이 수업에서는 머신 러닝에서 공정성과 불공정성 개념의 기본 사항을 배웠습니다.
다음 워크숍을 시청하여 주제를 더 깊이 탐구하세요:
이 강의에서는 머신 러닝에서 공정성과 불공정성의 개념에 대한 기본 사항을 배웠습니다.
이 워크숍을 통해 주제에 대해 더 깊이 알아보세요:
- 책임 있는 AI를 추구하며: 원칙을 실천으로 옮기기 - Besmira Nushi, Mehrnoosh Sameki, Amit Sharma
- 책임 있는 AI를 추구하며: 원칙을 실천으로 옮기기 - Besmira Nushi, Mehrnoosh Sameki, Amit Sharma
[![Responsible AI Toolbox: 책임 있는 AI를 구축하기 위한 오픈 소스 프레임워크](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈 소스 프레임워크")
[![Responsible AI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크")
> 🎥 위 이미지를 클릭하면 Besmira Nushi, Mehrnoosh Sameki, Amit Sharma가 발표한 "RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈 소스 프레임워크" 영상을 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 비디오를 볼 수 있습니다: RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크 - Besmira Nushi, Mehrnoosh Sameki, Amit Sharma
또한 읽어보세요:
또한 읽어보세요:
- Microsoft의 RAI 리소스 센터: [Responsible AI Resources Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft의 RAI 리소스 센터: [Responsible AI Resources Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft의 FATE 연구 그룹: [FATE: 공정성, 책임성, 투명성, 윤리성 - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft의 FATE 연구 그룹: [FATE: 공정성, 책임성, 투명성, 윤리성 - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
RAI Toolbox:
RAI Toolbox:
- [Responsible AI Toolbox GitHub 저장소](https://github.com/microsoft/responsible-ai-toolbox)
- [Responsible AI Toolbox GitHub 저장소](https://github.com/microsoft/responsible-ai-toolbox)
Azure Machine Learning의 공정성을 보장하는 도구에 대해 읽어보세요:
Azure Machine Learning의 공정성을 보장하기 위한 도구에 대해 읽어보세요:
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## 과제
## 과제
[RAI Toolbox 탐색하기](assignment.md)
[RAI Toolbox 탐색하기](assignment.md)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,20 +1,20 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "dc4575225da159f2b06706e103ddba2a",
"translation_date": "2025-09-03T23:32:50+00:00",
"original_hash": "9d91f3af3758fdd4569fb410575995ef",
"translation_date": "2025-09-05T10:48:28+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "ko"
}
-->
# 머신 러닝 기법
머신 러닝 모델을 구축, 사용, 유지 관리하는 과정과 그 모델이 사용하는 데이터는 다른 개발 워크플로우와 매우 다릅니다. 이번 강의에서는 이 과정을 이해하기 쉽게 설명하고, 알아야 할 주요 기법들을 개괄적으로 소개합니다. 여러분은 다음을 배우게 됩니다:
머신 러닝 모델을 구축, 사용, 유지 관리하는 과정과 그 모델이 사용하는 데이터는 다른 개발 워크플로우와 매우 다릅니다. 이번 강의에서는 이 과정을 이해하기 쉽게 설명하고, 알아야 할 주요 기법들을 정리합니다. 여러분은 다음을 배우게 됩니다:
- 머신 러닝의 기본 과정을 높은 수준에서 이해합니다.
- '모델', '예측', '훈련 데이터'와 같은 기본 개념을 탐구합니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
[![초보자를 위한 머신 러닝 - 머신 러닝 기법](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "초보자를 위한 머신 러닝 - 머신 러닝 기법")
@ -24,9 +24,9 @@ CO_OP_TRANSLATOR_METADATA:
머신 러닝(ML) 프로세스를 만드는 기술은 다음과 같은 여러 단계로 구성됩니다:
1. **질문 결정하기**. 대부분의 ML 프로세스는 단한 조건부 프로그램이나 규칙 기반 엔진으로 답할 수 없는 질문을 제기하는 것으로 시작됩니다. 이러한 질문은 종종 데이터 집합을 기반으로 한 예측과 관련이 있습니다.
2. **데이터 수집 및 준비**. 질문에 답하기 위해서는 데이터가 필요합니다. 데이터의 품질과 때로는 양이 초기 질문에 얼마나 잘 답할 수 있는지를 결정합니다. 데이터를 시각화하는 것은 이 단계에서 중요한 부분입니다. 이 단계에는 데이터를 훈련 테스트 그룹으로 나누어 모델을 구축하는 작업도 포함됩니다.
3. **훈련 방법 선택**. 질문과 데이터의 특성에 따라 데이터를 가장 잘 반영하고 정확한 예측을 할 수 있는 모델을 훈련시키는 방법을 선택해야 합니다. 이 단계는 특정 전문 지식이 필요하며 종종 많은 실험이 요구됩니다.
1. **질문 결정하기**. 대부분의 ML 프로세스는 단한 조건부 프로그램이나 규칙 기반 엔진으로는 답할 수 없는 질문을 던지는 것으로 시작합니다. 이러한 질문은 종종 데이터 집합을 기반으로 한 예측과 관련이 있습니다.
2. **데이터 수집 및 준비**. 질문에 답하기 위해서는 데이터가 필요합니다. 데이터의 품질과 때로는 양이 초기 질문에 얼마나 잘 답할 수 있는지를 결정합니다. 데이터를 시각화하는 것은 이 단계에서 중요한 부분입니다. 이 단계에는 데이터를 훈련 그룹과 테스트 그룹으로 나누어 모델을 구축하는 작업도 포함됩니다.
3. **훈련 방법 선택**. 질문과 데이터의 특성에 따라 데이터를 가장 잘 반영하고 정확한 예측을 할 수 있는 모델을 훈련시키는 방법을 선택해야 합니다. 이 단계는 특정 전문 지식이 필요하며, 종종 상당한 실험이 요구됩니다.
4. **모델 훈련**. 훈련 데이터를 사용하여 다양한 알고리즘을 통해 데이터의 패턴을 인식하도록 모델을 훈련시킵니다. 모델은 데이터의 특정 부분을 우선적으로 고려하여 더 나은 모델을 구축하기 위해 내부 가중치를 조정할 수 있습니다.
5. **모델 평가**. 수집된 데이터 중 이전에 본 적 없는 데이터를 사용하여 모델의 성능을 평가합니다.
6. **매개변수 조정**. 모델의 성능에 따라 알고리즘의 동작을 제어하는 매개변수 또는 변수를 변경하여 프로세스를 다시 실행할 수 있습니다.
@ -34,9 +34,9 @@ CO_OP_TRANSLATOR_METADATA:
## 어떤 질문을 할 것인가
컴퓨터는 데이터에서 숨겨진 패턴을 발견하는 데 특히 능숙합니다. 이 유용성은 특정 도메인에 대해 간단한 조건 기반 규칙 엔진을 만들어 쉽게 답할 수 없는 질문을 가진 연구자들에게 매우 유용합니다. 예를 들어, 보험 업무에서는 데이터 과학자가 흡연자와 비흡연자의 사망률에 대한 수작업 규칙을 만들 수 있습니다.
컴퓨터는 데이터에서 숨겨진 패턴을 발견하는 데 특히 능숙합니다. 이 유용성은 조건 기반 규칙 엔진을 만들어 쉽게 답할 수 없는 특정 도메인에 대한 질문을 가진 연구자들에게 매우 유용합니다. 예를 들어, 보험 업무에서는 데이터 과학자가 흡연자와 비흡연자의 사망률에 대한 수작업 규칙을 만들 수 있습니다.
하지만 다른 많은 변수가 방정식에 포함되면, 과거 건강 기록을 기반으로 미래 사망률을 예측하는 데 ML 모델이 더 효율적일 수 있습니다. 더 긍정적인 예로는 위도, 경도, 기후 변화, 해양 근접성, 제트 기류 패턴 등을 포함한 데이터를 기반으로 특정 지역의 4월 날씨를 예측하는 것이 있습니다.
그러나 많은 다른 변수가 방정식에 포함되면, 과거 건강 기록을 기반으로 미래 사망률을 예측하는 데 ML 모델이 더 효율적일 수 있습니다. 더 긍정적인 예로는 위도, 경도, 기후 변화, 해양 근접성, 제트 기류 패턴 등을 포함한 데이터를 기반으로 특정 지역의 4월 날씨를 예측하는 것이 있습니다.
✅ 이 [슬라이드 자료](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf)는 날씨 분석에서 ML을 사용하는 역사적 관점을 제공합니다.
@ -48,44 +48,44 @@ CO_OP_TRANSLATOR_METADATA:
질문에 확실히 답하기 위해서는 적절한 유형의 충분한 데이터가 필요합니다. 이 단계에서 해야 할 두 가지 작업은 다음과 같습니다:
- **데이터 수집**. 데이터 분석의 공정성에 대한 이전 강의를 염두에 두고 데이터를 신중하게 수집합니다. 데이터의 출처, 내재된 편향, 출처를 문서화하는 것에 주의하세요.
- **데이터 준비**. 데이터 준비 과정에는 여러 단계가 포함됩니다. 다양한 출처에서 온 데이터를 통합하고 정규화해야 할 수도 있습니다. 문자열을 숫자로 변환하거나 데이터를 생성하는 등 다양한 방법으로 데이터의 품질과 양을 개선할 수 있습니다. 데이터를 정리하고 편집하거나 무작위화 및 섞는 작업도 필요할 수 있습니다.
- **데이터 수집**. 데이터 분석의 공정성에 대한 이전 강의를 염두에 두고 데이터를 신중 수집합니다. 데이터의 출처, 내재된 편향, 출처를 문서화하는 것에 주의하세요.
- **데이터 준비**. 데이터 준비 과정에는 여러 단계가 포함됩니다. 다양한 출처에서 온 데이터를 통합하고 정규화해야 할 수도 있습니다. 문자열을 숫자로 변환하거나(예: [클러스터링](../../5-Clustering/1-Visualize/README.md)에서 수행) 원본 데이터를 기반으로 새로운 데이터를 생성하거나(예: [분류](../../4-Classification/1-Introduction/README.md)에서 수행) 데이터를 정리하고 편집할 수 있습니다. 또한 훈련 기법에 따라 데이터를 무작위화하고 섞어야 할 수도 있습니다.
✅ 데이터를 수집하고 처리한 후, 데이터의 형태가 의도한 질문을 해결할 수 있는지 확인하세요. 데이터가 주어진 작업에서 잘 작동하지 않을 수도 있습니다. 이는 [클러스터링](../../5-Clustering/1-Visualize/README.md) 강의에서 발견됩니다!
### 특징과 목표
[특징](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)은 데이터의 측정 가능한 속성입니다. 많은 데이터셋에서 '날짜', '크기', '색상'과 같은 열 제목으로 표현됩니다. 특징 변수는 일반적으로 코드에서 `X`로 표현되며, 모델을 훈련시키는 데 사용되는 입력 변수니다.
[특징](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection)은 데이터의 측정 가능한 속성입니다. 많은 데이터셋에서 '날짜', '크기', '색상'과 같은 열 제목으로 표현됩니다. 특징 변수는 일반적으로 코드에서 `X`로 표현되며, 모델을 훈련시키는 데 사용되는 입력 변수를 나타냅니다.
목표는 예측하려는 것입니다. 목표는 일반적으로 코드에서 `y`로 표현되며, 데이터에 대해 묻고자 하는 질문의 답을 나타냅니다. 예를 들어, 12월에 가장 저렴한 호박의 **색상**은 무엇인가? 샌프란시스코에서 가장 좋은 부동산 **가격**을 가진 지역은 어디인가? 목표는 레이블 속성이라고도 합니다.
목표는 예측하려는 것입니다. 목표는 일반적으로 코드에서 `y`로 표현되며, 데이터에 대해 질문하려는 것에 대한 답을 나타냅니다. 예를 들어, 12월에 가장 저렴한 **호박 색상**은 무엇인가? 샌프란시스코에서 가장 좋은 부동산 **가격**을 가진 지역은 어디인가? 목표는 때때로 레이블 속성이라고도 합니다.
### 특징 변수 선택
🎓 **특징 선택과 특징 추출** 모델을 구축할 때 어떤 변수를 선택해야 할지 어떻게 알 수 있을까요? 특징 선택 또는 특징 추출 과정을 거쳐 가장 성능이 좋은 모델을 위한 적절한 변수를 선택하게 될 것입니다. 두 과정은 동일하지 않습니다: "특징 추출은 원래 특징의 함수에서 새로운 특징을 생성하는 반면, 특징 선택은 특징의 하위 집합을 반환합니다." ([출처](https://wikipedia.org/wiki/Feature_selection))
🎓 **특징 선택과 특징 추출** 모델을 구축할 때 어떤 변수를 선택해야 할지 어떻게 알 수 있을까요? 아마도 특징 선택 또는 특징 추출 과정을 거쳐 가장 성능이 좋은 모델을 위한 적절한 변수를 선택하게 될 것입니다. 그러나 이 두 가지는 동일하지 않습니다: "특징 추출은 원래 특징의 함수에서 새로운 특징을 생성하는 반면, 특징 선택은 특징의 하위 집합을 반환합니다." ([출처](https://wikipedia.org/wiki/Feature_selection))
### 데이터 시각화
데이터 과학자의 도구 키트에서 중요한 측면은 Seaborn이나 MatPlotLib과 같은 훌륭한 라이브러리를 사용하여 데이터를 시각화하는 능력입니다. 데이터를 시각적으로 표현하면 활용할 수 있는 숨겨진 상관관계를 발견할 수 있습니다. 시각화는 또한 편향이나 불균형 데이터를 발견하는 데 도움을 줄 수 있습니다.
데이터 과학자의 도구 중 중요한 부분은 Seaborn이나 MatPlotLib과 같은 훌륭한 라이브러리를 사용하여 데이터를 시각화하는 능력입니다. 데이터를 시각적으로 표현하면 활용할 수 있는 숨겨진 상관관계를 발견할 수 있습니다. 시각화는 또한 편향이나 불균형 데이터를 발견하는 데 도움을 줄 수 있습니다(예: [분류](../../4-Classification/2-Classifiers-1/README.md) 강의에서 발견).
### 데이터셋 분할
훈련 전에 데이터셋을 불균등한 크기 두 부분 이상으로 나누어야 합니다. 이 데이터는 여전히 데이터를 잘 대표해야 합니다.
훈련 전에 데이터셋을 불균등한 크기 두 부분 이상으로 나누어야 합니다. 이 데이터는 여전히 데이터를 잘 대표해야 합니다.
- **훈련**. 데이터셋의 이 부분은 모델에 맞춰 훈련됩니다. 이 세트는 원래 데이터셋의 대부분을 차지합니다.
- **테스트**. 테스트 데이터셋은 독립적인 데이터 그룹으로, 종종 원래 데이터에서 수집되어 구축된 모델의 성능을 확인하는 데 사용됩니다.
- **검증**. 검증 세트는 모델의 하이퍼파라미터 또는 아키텍처를 조정하여 모델을 개선하는 데 사용되는 더 작은 독립적인 예제 그룹입니다. 데이터의 크기와 질문에 따라 이 세 번째 세트를 만들 필요가 없을 수도 있습니다.
- **훈련**. 데이터셋의 이 부분은 모델을 훈련시키는 데 사용됩니다. 이 세트는 원래 데이터셋의 대부분을 차지합니다.
- **테스트**. 테스트 데이터셋은 원래 데이터에서 수집된 독립적인 데이터 그룹으로, 구축된 모델의 성능을 확인하는 데 사용됩니다.
- **검증**. 검증 세트는 모델의 하이퍼파라미터 또는 아키텍처를 조정하여 모델을 개선하는 데 사용되는 더 작은 독립적인 예제 그룹입니다. 데이터의 크기와 질문에 따라 이 세 번째 세트를 만들 필요가 없을 수도 있습니다(예: [시계열 예측](../../7-TimeSeries/1-Introduction/README.md) 강의에서 언급).
## 모델 구축
훈련 데이터를 사용하여 목표는 다양한 알고리즘을 사용하여 데이터를 **훈련**시켜 모델, 즉 데이터의 통계적 표현을 구축하는 것입니다. 모델 훈련은 데이터를 노출시켜 발견된 패턴을 가정하고 이를 검증하며 수용하거나 거부할 수 있도록 합니다.
훈련 데이터를 사용하여 목표는 다양한 알고리즘을 사용하여 데이터를 **훈련**시켜 모델, 즉 데이터의 통계적 표현을 구축하는 것입니다. 모델 훈련은 데이터를 노출시켜 발견된 패턴을 가정하고, 이를 검증하며, 수용하거나 거부할 수 있도록 합니다.
### 훈련 방법 결정
질문과 데이터의 특성에 따라 훈련 방법을 선택합니다. [Scikit-learn의 문서](https://scikit-learn.org/stable/user_guide.html)를 살펴보면 다양한 방법으로 모델을 훈련시킬 수 있습니다. 경험에 따라 가장 적합한 모델을 구축하기 위해 여러 방법을 시도해야 할 수도 있습니다. 데이터 과학자는 모델의 성능을 평가하기 위해 보지 못한 데이터를 제공하고 정확성, 편향, 기타 품질 저하 문제를 확인하며 주어진 작업에 가장 적합한 훈련 방법을 선택하는 과정을 거칠 가능성이 높습니다.
질문과 데이터의 특성에 따라 훈련 방법을 선택합니다. 이 강의에서 사용하는 [Scikit-learn의 문서](https://scikit-learn.org/stable/user_guide.html)를 살펴보면 모델을 훈련시키는 다양한 방법을 탐구할 수 있습니다. 경험에 따라 최적의 모델을 구축하기 위해 여러 가지 방법을 시도해야 할 수도 있습니다. 데이터 과학자들이 모델의 성능을 평가하기 위해 보지 못한 데이터를 제공하고, 정확성, 편향, 기타 품질 저하 문제를 확인하며, 주어진 작업에 가장 적합한 훈련 방법을 선택하는 과정을 거칠 가능성이 높습니다.
### 모델 훈련
훈련 데이터를 준비한 후, 이를 사용하여 모델을 '적합'시킬 준비가 됩니다. 많은 ML 라이브러리에서 'model.fit'이라는 코드를 볼 수 있습니다. 이 시점에서 특징 변수(일반적으로 'X')와 목표 변수(일반적으로 'y')를 값 배열로 전달합니다.
훈련 데이터를 가지고 모델을 '적합'시킬 준비가 되었습니다. 많은 ML 라이브러리에서 'model.fit'이라는 코드를 발견할 수 있습니다. 이 시점에서 특징 변수(일반적으로 'X')와 목표 변수(일반적으로 'y')를 값 배열로 전달합니다.
### 모델 평가
@ -93,11 +93,11 @@ CO_OP_TRANSLATOR_METADATA:
🎓 **모델 적합**
머신 러닝의 맥락에서 모델 적합은 모델의 기본 함수가 익숙하지 않은 데이터를 분석하려는 정확성을 나타냅니다.
머신 러닝의 맥락에서 모델 적합은 모델의 기본 함수가 익숙하지 않은 데이터를 분석하려는 시도의 정확성을 나타냅니다.
🎓 **과소적합**과 **과적합**은 모델의 품질을 저하시키는 일반적인 문제로, 모델이 훈련 데이터에 대해 너무 잘 맞거나 너무 느슨하게 맞는 경우를 말합니다. 과적합된 모델은 데이터의 세부 사항과 노이즈를 너무 잘 학습했기 때문에 훈련 데이터를 너무 잘 예측합니다. 과소적합된 모델은 훈련 데이터와 이전에 '본 적 없는' 데이터를 정확히 분석할 수 없기 때문에 정확하지 않습니다.
🎓 **과소적합**과 **적합**은 모델의 품질을 저하시키는 일반적인 문제로, 모델이 훈련 데이터에 대해 너무 잘 맞거나 너무 느슨하게 맞는 경우를 말합니다. 과적합된 모델은 데이터의 세부 사항과 노이즈를 너무 잘 학습했기 때문에 훈련 데이터를 너무 잘 예측합니다. 과소적합된 모델은 훈련 데이터와 아직 '본 적 없는' 데이터를 정확히 분석할 수 없기 때문에 정확하지 않습니다.
![적합 모델](../../../../translated_images/overfitting.1c132d92bfd93cb63240baf63ebdf82c30e30a0a44e1ad49861b82ff600c2b5c.ko.png)
![대적합 모델](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png)
> [Jen Looper](https://twitter.com/jenlooper)의 인포그래픽
## 매개변수 조정
@ -106,21 +106,21 @@ CO_OP_TRANSLATOR_METADATA:
## 예측
이제 완전히 새로운 데이터를 사용하여 모델의 정확성을 테스트할 수 있는 순간입니다. '적용된' ML 환경에서는 모델을 프로덕션에서 사용하기 위해 웹 자산을 구축하는 과정이 포함될 수 있습니다. 이 과정은 사용자 입력(예: 버튼 클릭)을 변수로 설정하고 이를 모델에 전달하여 추론 또는 평가를 수행하는 것을 포함할 수 있습니다.
이제 완전히 새로운 데이터를 사용하여 모델의 정확성을 테스트할 수 있는 순간입니다. '적용된' ML 환경에서는 모델을 프로덕션에서 사용하기 위해 웹 자산을 구축하는 과정이 포함될 수 있습니다. 이 과정은 사용자 입력(예: 버튼 클릭)을 수집하여 변수를 설정하고 모델에 추론 또는 평가를 위해 전달하는 것을 포함할 수 있습니다.
이 강의에서는 데이터 과학자로서 준비, 구축, 테스트, 평가, 예측을 수행하는 방법을 배우게 됩니다. 또한 '풀스택' ML 엔지니어로 성장하는 여정에서 더 많은 것을 배우게 될 것입니다.
이 강의에서는 데이터 과학자로서의 제스처와 더불어 준비, 구축, 테스트, 평가, 예측하는 방법을 배우게 됩니다. 이는 '풀스택' ML 엔지니어로 성장하는 여정에서 중요한 단계입니다.
---
## 🚀도전
ML 실무자의 단계들을 반영하는 흐름도를 그려보세요. 현재 자신이 이 과정에서 어디에 있다고 생각하나요? 어려움을 겪을 것으로 예상되는 부분은 어디인가요? 쉬워 보이는 부분은 무엇인가요?
ML 실무자의 단계들을 반영하는 흐름도를 그려보세요. 현재 프로세스에서 자신이 어디에 있다고 생각하나요? 어려움을 겪을 것으로 예상되는 부분은 어디인가요? 쉬워 보이는 부분은 무엇인가요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
데이터 과학자가 자신의 일상 업무에 대해 이야기하는 인터뷰를 온라인에서 검색해보세요. [여기](https://www.youtube.com/watch?v=Z3IjgbbCEfs) 하나의 예가 있습니다.
데이터 과학자가 자신의 일상 업무에 대해 이야기하는 인터뷰를 온라인에서 검색해 보세요. [여기](https://www.youtube.com/watch?v=Z3IjgbbCEfs) 하나의 예가 있습니다.
## 과제
@ -129,4 +129,4 @@ ML 실무자의 단계들을 반영하는 흐름도를 그려보세요. 현재
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,29 +1,29 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6b1cb0e46d4c5b747eff6e3607642760",
"translation_date": "2025-09-03T22:33:22+00:00",
"original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
"translation_date": "2025-09-05T10:41:04+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ko"
}
-->
# Python 및 Scikit-learn을 사용한 회귀 모델 시작하기
# Python과 Scikit-learn으로 회귀 모델 시작하기
![스케치노트로 본 회귀 요약](../../../../translated_images/ml-regression.4e4f70e3b3ed446e3ace348dec973e133fa5d3680fbc8412b61879507369b98d.ko.png)
![스케치노트로 요약된 회귀](../../../../sketchnotes/ml-regression.png)
> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac)
> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## 소개
이 네 가지 강의에서는 회귀 모델을 구축하는 방법을 배웁니다. 회귀 모델이 무엇을 위해 사용되는지 곧 논의할 예정입니다. 하지만 시작하기 전에, 프로세스를 시작할 수 있는 적절한 도구가 준비되어 있는지 확인하세요!
이 네 가지 강의에서는 회귀 모델을 구축하는 방법을 배웁니다. 회귀 모델이 무엇을 위한 것인지 곧 논의할 것입니다. 하지만 그 전에, 과정을 시작하기 위해 적절한 도구가 준비되어 있는지 확인하세요!
이 강의에서 배우게 될 내용:
- 로컬 머신 러닝 작업을 위해 컴퓨터를 설정하는 방법
- 로컬 머신 러닝 작업을 위한 컴퓨터 설정
- Jupyter 노트북 사용법
- Scikit-learn 설치 및 사용법
- 실습을 통해 선형 회귀 탐구
@ -32,33 +32,33 @@ CO_OP_TRANSLATOR_METADATA:
[![초보자를 위한 머신 러닝 - 머신 러닝 모델 구축을 위한 도구 설정](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "초보자를 위한 머신 러닝 - 머신 러닝 모델 구축을 위한 도구 설정")
> 🎥 위 이미지를 클릭하면 컴퓨터를 ML에 맞게 설정하는 짧은 비디오를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 머신 러닝을 위한 컴퓨터 설정 과정을 다룬 짧은 영상을 볼 수 있습니다.
1. **Python 설치**. [Python](https://www.python.org/downloads/)이 컴퓨터에 설치되어 있는지 확인하세요. Python은 데이터 과학 및 머신 러닝 작업에 많이 사용됩니다. 대부분의 컴퓨터 시스템에는 이미 Python이 설치되어 있습니다. 일부 사용자에게는 설정을 간소화하기 위해 유용한 [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)도 제공됩니다.
1. **Python 설치**. [Python](https://www.python.org/downloads/)이 컴퓨터에 설치되어 있는지 확인하세요. Python은 데이터 과학 및 머신 러닝 작업에 많이 사용됩니다. 대부분의 컴퓨터 시스템에는 이미 Python이 설치되어 있습니다. 일부 사용자에게는 설정을 쉽게 해주는 [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)도 유용할 수 있습니다.
그러나 Python의 일부 사용 사례는 특정 버전을 요구할 수 있습니다. 따라서 [가상 환경](https://docs.python.org/3/library/venv.html)에서 작업하는 것이 유용합니다.
하지만 Python의 일부 사용 사례는 특정 버전을 요구할 수 있습니다. 따라서 [가상 환경](https://docs.python.org/3/library/venv.html)에서 작업하는 것이 유용합니다.
2. **Visual Studio Code 설치**. 컴퓨터에 Visual Studio Code가 설치되어 있는지 확인하세요. [Visual Studio Code 설치](https://code.visualstudio.com/) 지침을 따라 기본 설치를 완료하세요. 이 강의에서는 Visual Studio Code에서 Python을 사용할 것이므로 [Visual Studio Code를 Python 개발에 맞게 설정하는 방법](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)을 익히는 것이 좋습니다.
2. **Visual Studio Code 설치**. 컴퓨터에 Visual Studio Code가 설치되어 있는지 확인하세요. [Visual Studio Code 설치](https://code.visualstudio.com/)에 대한 지침을 따라 기본 설치를 완료하세요. 이 강의에서는 Visual Studio Code에서 Python을 사용할 예정이므로, [Visual Studio Code를 Python 개발에 맞게 설정](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)하는 방법을 익혀두는 것이 좋습니다.
> Python에 익숙해지려면 이 [Learn 모듈 컬렉션](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)을 살펴보세요.
> Python에 익숙해지려면 이 [Learn 모듈 모음](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)을 살펴보세요.
>
> [![Visual Studio Code로 Python 설정](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code로 Python 설정")
>
> 🎥 위 이미지를 클릭하면 VS Code에서 Python을 사용하는 방법에 대한 비디오를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 VS Code에서 Python을 사용하는 방법에 대한 영상을 볼 수 있습니다.
3. **Scikit-learn 설치**. [이 지침](https://scikit-learn.org/stable/install.html)을 따라 Scikit-learn을 설치하세요. Python 3을 사용해야 하므로 가상 환경을 사용하는 것이 권장됩니다. M1 Mac에 이 라이브러리를 설치하는 경우, 위 링크된 페이지에 특별 지침이 있습니다.
3. **Scikit-learn 설치**. [이 지침](https://scikit-learn.org/stable/install.html)을 따라 Scikit-learn을 설치하세요. Python 3을 사용해야 하므로 가상 환경을 사용하는 것이 권장됩니다. M1 Mac에 이 라이브러리를 설치하는 경우, 위 링크에 특별 지침이 나와 있습니다.
4. **Jupyter Notebook 설치**. [Jupyter 패키지](https://pypi.org/project/jupyter/)를 설치해야 합니다.
4. **Jupyter Notebook 설치**. [Jupyter 패키지 설치](https://pypi.org/project/jupyter/)가 필요합니다.
## ML 작성 환경
## 머신 러닝 작성 환경
Python 코드를 개발하고 머신 러닝 모델을 생성하기 위해 **노트북**을 사용할 것입니다. 이 파일 형은 데이터 과학자들이 자주 사용하는 도구이며, `.ipynb` 확장자로 식별할 수 있습니다.
Python 코드 개발 및 머신 러닝 모델 생성을 위해 **노트북**을 사용할 것입니다. 이 파일 형은 데이터 과학자들이 자주 사용하는 도구로, `.ipynb` 확장자로 식별됩니다.
노트북은 개발자가 코드를 작성하고 코드에 대한 문서화를 추가할 수 있는 인터랙티브 환경을 제공합니다. 이는 실험적이거나 연구 지향적인 프로젝트에 매우 유용합니다.
노트북은 개발자가 코드를 작성하고, 코드에 대한 주석을 추가하며, 문서를 작성할 수 있는 대화형 환경을 제공합니다. 이는 실험적이거나 연구 지향적인 프로젝트에 매우 유용합니다.
[![초보자를 위한 머신 러닝 - 회귀 모델 구축을 위한 Jupyter 노트북 설정](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "초보자를 위한 머신 러닝 - 회귀 모델 구축을 위한 Jupyter 노트북 설정")
> 🎥 위 이미지를 클릭하면 이 연습을 진행하는 짧은 비디오를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 이 연습 과정을 다룬 짧은 영상을 볼 수 있습니다.
### 연습 - 노트북 작업하기
@ -66,22 +66,22 @@ Python 코드를 개발하고 머신 러닝 모델을 생성하기 위해 **노
1. Visual Studio Code에서 _notebook.ipynb_를 엽니다.
Jupyter 서버가 Python 3+로 시작됩니다. 노트북의 특정 영역에서 `run`할 수 있는 코드 조각을 찾을 수 있습니다. 코드 블록을 실행하려면 재생 버튼처럼 생긴 아이콘을 선택하세요.
Jupyter 서버가 Python 3+와 함께 시작됩니다. 노트북의 특정 영역에서 `실행(run)`할 수 있는 코드 블록을 찾을 수 있습니다. 코드 블록은 재생 버튼 모양의 아이콘을 선택하여 실행할 수 있습니다.
2. `md` 아이콘을 선택하고 약간의 마크다운을 추가한 후 **# Welcome to your notebook** 텍스트를 입력하세요.
2. `md` 아이콘을 선택하고, 다음 텍스트를 추가하여 약간의 마크다운을 작성합니다: **# Welcome to your notebook**.
다음으로 Python 코드를 추가합니다.
다음으로, Python 코드를 추가합니다.
3. 코드 블록에 **print('hello notebook')**을 입력하세요.
4. 화살표를 선택하여 코드를 실행하세요.
3. 코드 블록에 **print('hello notebook')**을 입력합니다.
4. 화살표를 선택하여 코드를 실행합니다.
출력 결과로 다음과 같은 문장이 표시됩니다:
출력 결과로 다음과 같은 문구가 표시됩니다:
```output
hello notebook
```
![노트북이 열린 VS Code](../../../../translated_images/notebook.4a3ee31f396b88325607afda33cadcc6368de98040ff33942424260aa84d75f2.ko.jpg)
![노트북이 열려 있는 VS Code](../../../../2-Regression/1-Tools/images/notebook.jpg)
코드와 함께 주석을 추가하여 노트북을 스스로 문서화할 수 있습니다.
@ -89,13 +89,13 @@ Python 코드를 개발하고 머신 러닝 모델을 생성하기 위해 **노
## Scikit-learn 시작하기
이제 Python이 로컬 환경에 설정되었고 Jupyter 노트북에 익숙해졌으니, Scikit-learn에도 익숙해져 봅시다. Scikit-learn은 ML 작업을 수행하는 데 도움을 주는 [광범위한 API](https://scikit-learn.org/stable/modules/classes.html#api-ref)를 제공합니다.
이제 로컬 환경에 Python이 설정되었고, Jupyter 노트북에 익숙해졌으니, Scikit-learn에도 익숙해져 봅시다. Scikit-learn은 머신 러닝 작업을 수행하는 데 도움을 주는 [광범위한 API](https://scikit-learn.org/stable/modules/classes.html#api-ref)를 제공합니다.
[Scikit-learn 웹사이트](https://scikit-learn.org/stable/getting_started.html)에 따르면, "Scikit-learn은 감독 학습 및 비감독 학습을 지원하는 오픈 소스 머신 러닝 라이브러리입니다. 또한 모델 적합, 데이터 전처리, 모델 선택 및 평가, 기타 다양한 유틸리티를 제공합니다."
Scikit-learn [웹사이트](https://scikit-learn.org/stable/getting_started.html)에 따르면, "Scikit-learn은 지도 학습 및 비지도 학습을 지원하는 오픈 소스 머신 러닝 라이브러리입니다. 또한 모델 피팅, 데이터 전처리, 모델 선택 및 평가, 기타 다양한 유틸리티를 제공합니다."
이 강의에서는 Scikit-learn 및 기타 도구를 사용하여 '전통적인 머신 러닝' 작업을 수행하는 머신 러닝 모델을 구축할 것입니다. 신경망과 딥러닝은 다루지 않으며, 이는 곧 제공될 'AI for Beginners' 커리큘럼에서 더 잘 다룰 예정입니다.
이 강의에서는 Scikit-learn 및 기타 도구를 사용하여 '전통적인 머신 러닝' 작업을 수행하는 머신 러닝 모델을 구축할 것입니다. 신경망과 딥러닝은 다루지 않으며, 이는 곧 제공될 'AI for Beginners' 커리큘럼에서 다룰 예정입니다.
Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간단하게 만들어줍니다. 주로 숫자 데이터를 사용하는 데 초점을 맞추며, 학습 도구로 사용할 수 있는 여러 준비된 데이터셋을 포함하고 있습니다. 또한 학생들이 시도해볼 수 있는 사전 구축된 모델도 포함되어 있습니다. 이제 Scikit-learn을 사용하여 기본 데이터를 활용한 첫 번째 ML 모델을 탐구해 봅시다.
Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만들어 줍니다. 주로 숫자 데이터를 사용하는 데 초점이 맞춰져 있으며, 학습 도구로 사용할 수 있는 여러 가지 사전 제작된 데이터셋을 포함하고 있습니다. 또한 학생들이 시도해볼 수 있는 사전 제작된 모델도 포함되어 있습니다. 이제 사전 패키지 데이터와 기본 데이터를 사용하여 첫 번째 머신 러닝 모델을 구축하는 과정을 살펴봅시다.
## 연습 - 첫 번째 Scikit-learn 노트북
@ -103,27 +103,27 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
[![초보자를 위한 머신 러닝 - Python에서 첫 번째 선형 회귀 프로젝트](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "초보자를 위한 머신 러닝 - Python에서 첫 번째 선형 회귀 프로젝트")
> 🎥 위 이미지를 클릭하면 이 연습을 진행하는 짧은 비디오를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 이 연습 과정을 다룬 짧은 영상을 볼 수 있습니다.
이 강의와 관련된 _notebook.ipynb_ 파일에서 모든 셀을 '휴지통' 아이콘을 눌러 삭제하세요.
이 강의와 관련된 _notebook.ipynb_ 파일에서 모든 셀을 '휴지통' 아이콘을 눌러 비웁니다.
이 섹션에서는 학습 목적으로 Scikit-learn에 내장된 당뇨병 관련 소규모 데이터셋을 사용합니다. 당뇨병 환자를 대상으로 치료를 테스트하려고 한다고 가정해 보세요. 머신 러닝 모델은 변수 조합을 기반으로 어떤 환자가 치료에 더 잘 반응할지 결정하는 데 도움을 줄 수 있습니다. 매우 기본적인 회귀 모델이라도 시각화하면 이론적인 임상 시험을 조직하는 데 도움이 되는 변수에 대한 정보를 제공할 수 있습니다.
이 섹션에서는 학습 목적으로 Scikit-learn에 내장된 당뇨병 관련 소규모 데이터셋을 사용합니다. 당뇨병 환자에 대한 치료를 테스트하려 한다고 가정해 봅시다. 머신 러닝 모델은 변수 조합을 기반으로 어떤 환자가 치료에 더 잘 반응할지 결정하는 데 도움을 줄 수 있습니다. 시각화된 매우 기본적인 회귀 모델조차도 이론적 임상 시험을 조직하는 데 도움이 되는 변수에 대한 정보를 보여줄 수 있습니다.
✅ 회귀 방법에는 여러 종류가 있으며, 선택하는 방법은 찾고자 하는 답변에 따라 다릅니다. 특정 나이의 사람의 예상 키를 예측하려면 **숫자 값**을 찾고 있으므로 선형 회귀를 사용합니다. 특정 요리가 비건인지 아닌지를 확인하려면 **범주 할당**을 찾고 있으므로 로지스틱 회귀를 사용합니다. 데이터를 통해 물어볼 수 있는 질문과 어떤 방법이 더 적합할지 잠시 생각해 보세요.
✅ 회귀 방법에는 여러 가지가 있으며, 어떤 방법을 선택할지는 찾고자 하는 답에 따라 다릅니다. 예를 들어, 특정 나이에 대한 예상 키를 예측하려면 선형 회귀를 사용합니다. 이는 **숫자 값**을 찾고 있기 때문입니다. 반면, 특정 요리가 비건인지 아닌지를 알아내고 싶다면 **범주 할당**을 찾고 있는 것이므로 로지스틱 회귀를 사용합니다. 이후에 로지스틱 회귀에 대해 더 배우게 될 것입니다. 데이터를 통해 어떤 질문을 할 수 있을지, 그리고 어떤 방법이 더 적합할지 잠시 생각해 보세요.
작업을 시작해 봅시다.
시작해 봅시다.
### 라이브러리 가져오기
이 작업을 위해 몇 가지 라이브러리를 가져옵니다:
- **matplotlib**. 유용한 [그래프 도구](https://matplotlib.org/)로, 선 그래프를 생성하는 데 사용할 것입니다.
- **matplotlib**. [그래프 도구](https://matplotlib.org/)로 유용하며, 선 그래프를 생성하는 데 사용할 것입니다.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 Python에서 숫자 데이터를 처리하는 데 유용한 라이브러리입니다.
- **sklearn**. 이것은 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리입니다.
- **sklearn**. 이 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리입니다.
작업을 돕기 위해 몇 가지 라이브러리를 가져옵니다.
작업에 필요한 라이브러리를 가져옵니다.
1. 다음 코드를 입력하여 가져오기 작업을 수행하세요:
1. 다음 코드를 입력하여 라이브러리를 가져옵니다:
```python
import matplotlib.pyplot as plt
@ -131,26 +131,26 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
from sklearn import datasets, linear_model, model_selection
```
위 코드에서는 `matplotlib`, `numpy`를 가져오고, `sklearn`에서 `datasets`, `linear_model`, `model_selection`을 가져옵니다. `model_selection`은 데이터를 학습 및 테스트 세트로 분할하는 데 사용됩니다.
위 코드에서는 `matplotlib`, `numpy`를 가져오고, `sklearn`에서 `datasets`, `linear_model`, `model_selection`을 가져옵니다. `model_selection`은 데이터를 학습 및 테스트 세트로 나누는 데 사용됩니다.
### 당뇨병 데이터셋
내장된 [당뇨병 데이터셋](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)에는 당뇨병과 관련된 442개의 샘플 데이터가 포함되어 있으며, 10개의 특징 변수 중 일부는 다음과 같습니다:
내장된 [당뇨병 데이터셋](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)에는 당뇨병과 관련된 442개의 샘플 데이터와 10개의 특징 변수가 포함되어 있습니다. 일부 변수는 다음과 같습니다:
- age: 나이(연도 기준)
- age: 나이 (연도 단위)
- bmi: 체질량지수
- bp: 평균 혈압
- s1 tc: T-세포(백혈구의 일종)
- s1 tc: T-세포 (백혈구의 한 종류)
✅ 이 데이터셋에는 당뇨병 연구와 관련된 중요한 특징 변수로 '성별' 개념이 포함되어 있습니다. 많은 의료 데이터셋에는 이러한 유형의 이진 분류가 포함되어 있습니다. 이러한 분류가 인구의 특정 부분을 치료에서 배제할 가능성에 대해 잠시 생각해 보세요.
✅ 이 데이터셋에는 당뇨병 연구에서 중요한 특징 변수로 '성별' 개념이 포함되어 있습니다. 많은 의료 데이터셋에는 이러한 이진 분류가 포함되어 있습니다. 이러한 분류가 인구의 특정 부분을 치료에서 배제할 가능성에 대해 잠시 생각해 보세요.
이제 X와 y 데이터를 로드합니다.
> 🎓 이것은 지도 학습이며, 명명된 'y' 타겟이 필요합니다.
> 🎓 이는 지도 학습(supervised learning)이며, 명명된 'y' 타겟이 필요합니다.
새로운 코드 셀에서 `load_diabetes()`를 호출하여 당뇨병 데이터셋을 로드합니다. 입력값 `return_X_y=True``X`가 데이터 매트릭스가 되고, `y`가 회귀 타겟이 되도록 신호를 보냅니다.
새로운 코드 셀에서 `load_diabetes()`를 호출하여 당뇨병 데이터셋을 로드합니다. 입력값 `return_X_y=True``X`가 데이터 행렬이 되고, `y`가 회귀 타겟이 됨을 나타냅니다.
1. 데이터 매트릭스의 모양과 첫 번째 요소를 표시하기 위해 몇 가지 print 명령을 추가하세요:
1. 데이터 행렬의 모양과 첫 번째 요소를 표시하는 몇 가지 print 명령을 추가합니다:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@ -158,7 +158,7 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
print(X[0])
```
반환값은 튜플입니다. 여기서 튜플의 첫 번째 두 값을 각각 `X``y`에 할당합니다. [튜플에 대해 더 알아보기](https://wikipedia.org/wiki/Tuple).
반환값은 튜플입니다. 튜플의 첫 번째 두 값을 각각 `X``y`에 할당합니다. [튜플에 대해 더 알아보기](https://wikipedia.org/wiki/Tuple).
이 데이터는 442개의 항목으로 구성되어 있으며, 각 항목은 10개의 요소로 이루어진 배열로 되어 있음을 확인할 수 있습니다:
@ -170,37 +170,37 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
✅ 데이터와 회귀 타겟 간의 관계에 대해 잠시 생각해 보세요. 선형 회귀는 특징 X와 타겟 변수 y 간의 관계를 예측합니다. 당뇨병 데이터셋의 [타겟](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)을 문서에서 찾을 수 있나요? 이 데이터셋은 무엇을 보여주고 있나요?
2. 다음으로, 데이터셋의 일부를 선택하여 플롯합니다. 데이터셋의 3번째 열을 선택하려면 `:` 연산자를 사용하여 모든 행을 선택한 다음, 인덱스(2)를 사용하여 3번째 열을 선택합니다. 또한 `reshape(n_rows, n_columns)` 사용하여 데이터를 2D 배열로 재구성할 수 있습니다. 매개변수 중 하나가 -1이면 해당 차원이 자동으로 계산됩니다.
2. 다음으로, 데이터셋의 3번째 열을 선택하여 플롯합니다. `:` 연산자를 사용하여 모든 행을 선택한 다음, 인덱스(2)를 사용하여 3번째 열을 선택할 수 있습니다. 또한 `reshape(n_rows, n_columns)` 사용하여 데이터를 2D 배열로 재구성할 수 있습니다. 매개변수 중 하나가 -1이면 해당 차원이 자동으로 계산됩니다.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ 언제든지 데이터를 출력하여 모양을 확인하세요.
데이터의 모양을 확인하려면 언제든지 데이터를 출력하세요.
3. 이제 데이터를 플롯할 준비가 되었으니, 머신이 이 데이터셋의 숫자들 사이에서 논리적인 분리를 결정할 수 있는지 확인할 수 있습니다. 이를 위해 데이터(X)와 타겟(y)을 테스트 및 학습 세트로 분할해야 합니다. Scikit-learn은 이를 간단하게 수행할 수 있는 방법을 제공합니다. 특정 지점에서 테스트 데이터를 분할할 수 있습니다.
3. 이제 데이터를 플롯할 준비가 되었으니, 머신이 이 데이터셋의 숫자 간 논리적 분리를 결정할 수 있는지 확인할 수 있습니다. 이를 위해 데이터(X)와 타겟(y)을 테스트 및 학습 세트로 나눌 필요가 있습니다. Scikit-learn은 이를 간단히 수행할 수 있는 방법을 제공합니다. 특정 지점에서 테스트 데이터를 나눌 수 있습니다.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
4. 이제 모델을 학습시킬 준비가 되었습니다! 선형 회귀 모델을 로드하고 `model.fit()`을 사용하여 X와 y 학습 세트를 학습시킵니다:
4. 이제 모델을 학습시킬 준비가 되었습니다! 선형 회귀 모델을 로드하고, `model.fit()`을 사용하여 X 및 y 학습 세트로 학습시킵니다:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
`model.fit()`은 TensorFlow와 같은 많은 ML 라이브러리에서 볼 수 있는 함수입니다.
`model.fit()`은 TensorFlow와 같은 많은 머신 러닝 라이브러리에서 볼 수 있는 함수입니다.
5. 그런 다음, 테스트 데이터를 사용하여 `predict()` 함수를 사용해 예측을 생성합니다. 이는 데이터 그룹 간의 선을 그리는 데 사용됩니다.
5. 그런 다음, `predict()` 함수를 사용하여 테스트 데이터를 기반으로 예측을 생성합니다. 이는 데이터 그룹 간의 선을 그리는 데 사용됩니다.
```python
y_pred = model.predict(X_test)
```
6. 이제 데이터를 플롯으로 표시할 시간입니다. Matplotlib은 이 작업에 매우 유용한 도구입니다. 모든 X와 y 테스트 데이터의 산점도를 생성하고, 모델의 데이터 그룹 사이에서 가장 적절한 위치에 선을 그리기 위해 예측을 사용합니다.
6. 이제 데이터를 플롯에 표시할 시간입니다. Matplotlib은 이 작업에 매우 유용한 도구입니다. 모든 X 및 y 테스트 데이터의 산점도를 생성하고, 예측을 사용하여 데이터 그룹 간 가장 적절한 위치에 선을 그립니다.
```python
plt.scatter(X_test, y_test, color='black')
@ -211,8 +211,8 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
plt.show()
```
![당뇨병 관련 데이터 포인트를 보여주는 산점도](../../../../translated_images/scatterplot.ad8b356bcbb33be68d54050e09b9b7bfc03e94fde7371f2609ae43f4c563b2d7.ko.png)
✅ 여기서 무슨 일이 일어나고 있는지 잠시 생각해 보세요. 많은 작은 데이터 점들 사이로 직선이 지나가고 있습니다. 하지만 이 직선이 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 보지 못한 데이터 포인트가 플롯의 y축과 어떤 관계를 맺어야 하는지 예측할 수 있다는 것을 이해할 수 있나요? 이 모델의 실질적인 사용 방법을 말로 표현해 보세요.
![당뇨병 데이터를 나타내는 산점도](../../../../2-Regression/1-Tools/images/scatterplot.png)
✅ 여기서 무슨 일이 일어나고 있는지 잠시 생각해 보세요. 많은 작은 데이터 점들을 관통하는 직선이 있습니다. 하지만 이 직선이 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 보지 못한 데이터 포인트가 플롯의 y축과 어떤 관계를 맺어야 하는지 예측할 수 있다는 것을 이해할 수 있나요? 이 모델의 실질적인 사용 방법을 말로 표현해 보세요.
축하합니다! 첫 번째 선형 회귀 모델을 구축하고, 이를 사용해 예측을 생성한 뒤 플롯에 표시했습니다!
@ -221,7 +221,7 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
이 데이터셋에서 다른 변수를 플롯해 보세요. 힌트: 이 줄을 수정하세요: `X = X[:,2]`. 이 데이터셋의 목표를 고려했을 때, 당뇨병이 질병으로서 어떻게 진행되는지에 대해 무엇을 발견할 수 있나요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
@ -236,4 +236,4 @@ Scikit-learn은 모델을 구축하고 평가하여 사용할 수 있도록 간
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,46 +1,46 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a683e1fe430bb0d4a10b68f6ca15e0a6",
"translation_date": "2025-09-03T22:38:10+00:00",
"original_hash": "7c077988328ebfe33b24d07945f16eca",
"translation_date": "2025-09-05T10:41:52+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ko"
}
-->
# Scikit-learn을 사용한 회귀 모델 구축: 데이터 준비 및 시각화
![데이터 시각화 인포그래픽](../../../../translated_images/data-visualization.54e56dded7c1a804d00d027543f2881cb32da73aeadda2d4a4f10f3497526114.ko.png)
![데이터 시각화 인포그래픽](../../../../2-Regression/2-Data/images/data-visualization.png)
인포그래픽 제작: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## 소개
Scikit-learn을 사용하여 머신러닝 모델을 구축하기 위한 도구를 준비했으니, 이제 데이터를 분석하고 질문을 던질 준비가 되었습니다. 데이터를 다루고 머신러닝 솔루션을 적용할 때, 올바른 질문을 던져 데이터셋의 잠재력을 제대로 활용하는 것이 매우 중요합니다.
Scikit-learn을 사용하여 머신러닝 모델을 구축하기 위한 도구를 준비했으니, 이제 데이터를 분석하고 질문을 던질 준비가 되었습니다. 데이터를 다루고 ML 솔루션을 적용할 때, 올바른 질문을 던지는 것이 데이터의 잠재력을 제대로 활용하는 데 매우 중요합니다.
이 강의에서는 다음을 배웁니다:
이 강의에서 배우게 될 내용:
- 모델 구축을 위한 데이터 준비 방법
- Matplotlib을 사용한 데이터 시각화 방법
## 데이터에 올바른 질문 던지기
답을 얻고자 하는 질문은 어떤 유형의 머신러닝 알고리즘을 사용할지 결정합니다. 그리고 얻는 답변의 품질은 데이터의 특성에 크게 좌우됩니다.
답을 얻고자 하는 질문은 어떤 유형의 ML 알고리즘을 사용할지 결정합니다. 그리고 얻는 답변의 품질은 데이터의 특성에 크게 좌우됩니다.
이 강의에서 제공된 [데이터](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)를 살펴보세요. 이 .csv 파일을 VS Code에서 열어볼 수 있습니다. 빠르게 훑어보면 빈칸과 문자열 및 숫자 데이터가 섞여 있다는 것을 알 수 있습니다. 또한 'Package'라는 이상한 열이 있는데, 데이터가 'sacks', 'bins' 등 다양한 값으로 구성되어 있습니다. 사실 이 데이터는 약간 엉망입니다.
이 강의에서 제공된 [데이터](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)를 살펴보세요. 이 .csv 파일을 VS Code에서 열어보면, 빈칸과 문자열 및 숫자 데이터가 혼합되어 있음을 바로 확인할 수 있습니다. 또한 'Package'라는 이상한 열이 있는데, 데이터가 'sacks', 'bins' 등 다양한 값으로 구성되어 있습니다. 사실, 이 데이터는 약간 엉망입니다.
[![초보자를 위한 머신러닝 - 데이터셋 분석 및 정리 방법](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "초보자를 위한 머신러닝 - 데이터셋 분석 및 정리 방법")
[![ML 초보자를 위한 데이터셋 분석 및 정리 방법](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML 초보자를 위한 데이터셋 분석 및 정리 방법")
> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터 준비 과정을 다룬 짧은 영상을 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터 준비하는 과정을 다룬 짧은 영상을 볼 수 있습니다.
사실, 머신러닝 모델을 바로 사용할 수 있도록 완전히 준비된 데이터셋을 받는 경우는 드뭅니다. 이 강의에서는 표준 Python 라이브러리를 사용하여 원시 데이터를 준비하는 방법을 배우게 됩니다. 또한 데이터를 시각화하는 다양한 기술도 배니다.
사실, ML 모델을 바로 사용할 수 있도록 완벽히 준비된 데이터셋을 받는 경우는 드뭅니다. 이 강의에서는 표준 Python 라이브러리를 사용하여 원시 데이터를 준비하는 방법을 배우게 됩니다. 또한 데이터를 시각화하는 다양한 기술도 배울 것입니다.
## 사례 연구: '호박 시장'
이 폴더의 루트 `data` 폴더에는 [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)라는 .csv 파일이 포함되어 있으며, 이는 도시별로 그룹화된 호박 시장에 대한 1757개의 데이터 라인을 포함하고 있습니다. 이 데이터는 미국 농무부가 배포한 [특수 작물 터미널 시장 표준 보고서](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)에서 추출한 원시 데이터입니다.
이 폴더의 루트 `data` 폴더에는 [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)라는 .csv 파일이 포함되어 있으며, 이는 도시별로 그룹화된 호박 시장에 대한 1757개의 데이터 라인을 포함하고 있습니다. 이 데이터는 미국 농무부(USDA)가 배포한 [특수 작물 터미널 시장 표준 보고서](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)에서 추출한 원시 데이터입니다.
### 데이터 준비
@ -48,17 +48,17 @@ Scikit-learn을 사용하여 머신러닝 모델을 구축하기 위한 도구
### 호박 데이터 - 초기 결론
이 데이터에서 무엇을 발견할 수 있나요? 이미 문자열, 숫자, 빈칸 및 이상한 값이 섞여 있다는 것을 확인했습니다.
이 데이터에서 무엇을 발견할 수 있나요? 이미 문자열, 숫자, 빈칸 및 이상한 값이 혼합되어 있다는 것을 확인했습니다.
회귀 기법을 사용하여 이 데이터에 어떤 질문을 던질 수 있을까요? 예를 들어, "특정 월에 판매되는 호박의 가격을 예측하라"는 질문은 어떨까요? 데이터를 다시 살펴보면, 이 작업에 필요한 데이터 구조를 만들기 위해 몇 가지 변경이 필요하다는 것을 알 수 있습니다.
## 실습 - 호박 데이터 분석
[판다스(Pandas)](https://pandas.pydata.org/)를 사용해 봅시다. 판다스는 데이터를 분석하고 준비하는 데 매우 유용한 도구입니다. 이를 사용하여 호박 데이터를 분석하고 준비해 보겠습니다.
[판다스(Pandas)](https://pandas.pydata.org/)를 사용해 봅시다. 판다스는 데이터를 분석하고 준비하는 데 매우 유용한 도구입니다.
### 첫 번째 단계: 누락된 날짜 확인
먼저 누락된 날짜를 확인하기 위한 작업을 수행해야 합니다:
먼저 누락된 날짜를 확인하기 위한 단계를 수행해야 합니다.
1. 날짜를 월 형식으로 변환합니다(미국 날짜 형식은 `MM/DD/YYYY`입니다).
2. 월을 새 열로 추출합니다.
@ -75,15 +75,15 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
✅ 마지막 다섯 줄을 확인하려면 어떤 함수를 사용해야 할까요?
1. 현재 데이터프레임에 누락된 데이터가 있는지 확인합니다:
1. 현재 데이터프레임에 누락된 데이터가 있는지 확인합니다.
```python
pumpkins.isnull().sum()
```
누락된 데이터가 있지만, 현재 작업에는 큰 영향을 미치지 않을 수도 있습니다.
누락된 데이터가 있지만, 현재 작업에는 문제가 없을 수도 있습니다.
1. 데이터프레임을 더 쉽게 작업할 수 있도록 `loc` 함수를 사용하여 필요한 열만 선택합니다. `loc` 함수는 원래 데이터프레임에서 특정 행(첫 번째 매개변수로 전달)과 열(두 번째 매개변수로 전달)을 추출합니다. 아래의 `:` 표현은 "모든 행"을 의미합니다.
1. 데이터프레임을 더 쉽게 작업할 수 있도록 `loc` 함수를 사용하여 필요한 열만 선택합니다. `loc` 함수는 원래 데이터프레임에서 행(첫 번째 매개변수)과 열(두 번째 매개변수)을 추출합니다. 아래의 경우 `:` "모든 행"을 의미합니다.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@ -92,11 +92,11 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
### 두 번째 단계: 호박의 평균 가격 결정
특정 월에 호박의 평균 가격을 결정하는 방법을 생각해 보세요. 이 작업에 어떤 열을 선택해야 할까요? 힌트: 3개의 열이 필요합니다.
특정 월에 호박의 평균 가격을 결정하는 방법을 생각해 보세요. 이 작업에 어떤 열이 필요할까요? 힌트: 3개의 열이 필요합니다.
해결 방법: `Low Price``High Price` 열의 평균을 계산하여 새 Price 열을 채우고, Date 열을 월만 표시하도록 변환합니다. 다행히 위의 확인에 따르면 날짜와 가격에 누락된 데이터는 없습니다.
1. 평균을 계산하려면 다음 코드를 추가하세요:
1. 평균을 계산하려면 다음 코드를 추가하세요.
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@ -107,7 +107,7 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
`print(month)`를 사용하여 데이터를 확인할 수 있습니다.
2. 변환된 데이터를 새 판다스 데이터프레임에 복사합니다:
2. 변환된 데이터를 새 판다스 데이터프레임에 복사합니다.
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
@ -117,25 +117,25 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
### 그런데! 이상한 점이 있습니다
`Package` 열을 보면, 호박은 다양한 구성으로 판매됩니다. 일부는 '1 1/9 bushel' 단위로, 일부는 '1/2 bushel' 단위로, 일부는 호박 개별 단위로, 일부는 파운드 단위로, 그리고 일부는 다양한 크기의 큰 상자 단위로 판매됩니다.
`Package` 열을 보면, 호박은 다양한 구성으로 판매됩니다. 일부는 '1 1/9 bushel' 단위로, 일부는 '1/2 bushel' 단위로, 일부는 호박 개별 단위로, 일부는 파운드 단위로, 그리고 일부는 다양한 크기의 큰 상자로 판매됩니다.
> 호박은 일관되게 무게를 측정하기가 매우 어려운 것 같습니다.
> 호박은 일관되게 무게를 측정하기가 매우 어습니다.
원래 데이터를 살펴보면, `Unit of Sale`이 'EACH' 또는 'PER BIN'인 경우에도 `Package` 유형이 인치 단위, 빈 단위 또는 'each'로 표시됩니다. 호박은 일관되게 무게를 측정하기가 매우 어려운 것 같으니, `Package` 열에 'bushel' 문자열이 포함된 호박만 선택하여 필터링해 봅시다.
원래 데이터를 살펴보면, `Unit of Sale`이 'EACH' 또는 'PER BIN'인 경우 `Package` 유형이 인치 단위, 빈 단위 또는 'each'로 표시됩니다. 호박은 일관되게 무게를 측정하기가 매우 어려운 것 같습니다. 따라서 `Package` 열에 'bushel' 문자열이 포함된 호박만 선택하여 필터링해 봅시다.
1. 초기 .csv 가져오기 아래에 필터를 추가하세요:
1. 초기 .csv 가져오기 아래에 필터를 추가하세요.
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
데이터를 출력하면 'bushel'이 포함된 약 415개의 데이터 행만 가져오는 것을 확인할 수 있습니다.
데이터를 출력하면 이제 'bushel'이 포함된 약 415개의 데이터 행만 가져오는 것을 확인할 수 있습니다.
### 그런데! 해야 할 일이 하나 더 있습니다
버셸 양이 행마다 다르다는 것을 눈치챘나요? 가격을 표준화하여 버셸 단위로 가격을 표시하도록 수학적 계산을 수행해야 합니다.
1. 새 데이터프레임을 생성하는 블록 아래에 다음 줄을 추가하세요:
1. 새 데이터프레임을 생성하는 블록 아래에 다음 줄을 추가하세요.
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@ -143,21 +143,21 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)에 따르면, 버셸의 무게는 농산물의 종류에 따라 다릅니다. 이는 부피 측정 단위입니다. "예를 들어, 토마토 한 버셸은 56파운드로 간주됩니다... 잎과 채소는 더 많은 공간을 차지하지만 무게는 적기 때문에 시금치 한 버셸은 20파운드에 불과합니다." 이는 매우 복잡합니다! 버셸에서 파운드로의 변환은 생략하고 대신 버셸 단위로 가격을 표시합시다. 그러나 호박의 버셸을 연구하면서 데이터의 특성을 이해하는 것이 얼마나 중요한지 알게 됩니다!
✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)에 따르면, 버셸의 무게는 농산물의 종류에 따라 다릅니다. 이는 부피 측정 단위입니다. "예를 들어, 토마토 한 버셸은 56파운드로 간주됩니다... 잎과 채소는 더 많은 공간을 차지하지만 무게는 적기 때문에 시금치 한 버셸은 20파운드에 불과합니다." 이는 매우 복잡합니다! 버셸을 파운드로 변환하는 작업은 생략하고 대신 버셸 단위로 가격을 표시합시다. 그러나 호박의 버셸을 연구하면서 데이터의 특성을 이해하는 것이 얼마나 중요한지 알게 됩니다!
이제 버셸 측정 단위를 기준으로 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력하면 표준화된 데이터를 확인할 수 있습니다.
이제 버셸 측정 단위에 따라 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력하면 표준화된 데이터를 확인할 수 있습니다.
✅ 반 버셸로 판매되는 호박이 매우 비싸다는 것을 눈치챘나요? 왜 그런지 알아낼 수 있나요? 힌트: 작은 호박은 큰 호박보다 훨씬 비쌉니다. 이는 큰 속이 빈 파이 호박 하나가 차지하는 공간 때문에 버셸당 더 많은 작은 호박이 들어가기 때문입니다.
✅ 반 버셸로 판매되는 호박이 매우 비싸다는 것을 눈치챘나요? 왜 그런지 알아낼 수 있나요? 힌트: 작은 호박은 큰 호박보다 훨씬 비쌉니다. 이는 큰 속이 빈 파이 호박 하나가 차지하는 공간 때문에 버셸당 훨씬 더 많은 작은 호박이 포함되기 때문입니다.
## 시각화 전략
데이터 과학자의 역할 중 하나는 자신이 작업하는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 종종 흥미로운 시각화, 즉 플롯, 그래프, 차트를 만들어 데이터의 다양한 측면을 보여줍니다. 이렇게 하면 관계와 격차를 시각적으로 보여줄 수 있어, 그렇지 않으면 발견하기 어려운 점을 드러낼 수 있습니다.
데이터 과학자의 역할 중 하나는 자신이 작업하는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 데이터의 다양한 측면을 보여주는 흥미로운 시각화, 즉 플롯, 그래프, 차트를 생성합니다. 이를 통해 관계와 격차를 시각적으로 보여줄 수 있으며, 이는 그렇지 않으면 발견하기 어려운 경우가 많습니다.
[![초보자를 위한 머신러닝 - Matplotlib을 사용한 데이터 시각화 방법](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "초보자를 위한 머신러닝 - Matplotlib을 사용한 데이터 시각화 방법")
[![ML 초보자를 위한 Matplotlib을 사용한 데이터 시각화 방법](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML 초보자를 위한 Matplotlib을 사용한 데이터 시각화 방법")
> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터 시각화 과정을 다룬 짧은 영상을 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터 시각화하는 과정을 다룬 짧은 영상을 볼 수 있습니다.
시각화는 데이터에 가장 적합한 머신러닝 기법을 결정하는 데도 도움이 됩니다. 예를 들어, 선을 따라가는 것처럼 보이는 산점도는 데이터가 선형 회귀 연습에 적합하다는 것을 나타냅니다.
시각화는 데이터에 가장 적합한 머신러닝 기법을 결정하는 데도 도움이 됩니다. 예를 들어, 선을 따는 것처럼 보이는 산점도는 데이터가 선형 회귀 연습에 적합하다는 것을 나타냅니다.
Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중 하나는 [Matplotlib](https://matplotlib.org/)입니다(이전 강의에서도 보았습니다).
@ -167,14 +167,14 @@ Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중
방금 생성한 새 데이터프레임을 표시하기 위해 기본 플롯을 만들어 보세요. 기본 선형 플롯은 무엇을 보여줄까요?
1. 파일 상단의 Pandas 가져오기 아래에 Matplotlib을 가져옵니다:
1. 파일 상단의 Pandas 가져오기 아래에 Matplotlib을 가져옵니다.
```python
import matplotlib.pyplot as plt
```
1. 노트북 전체를 다시 실행하여 새로 고칩니다.
1. 노트북 하단에 데이터를 박스 형태로 플롯하는 셀을 추가합니다:
1. 노트북 하단에 데이터를 박스로 표시하는 셀을 추가합니다.
```python
price = new_pumpkins.Price
@ -183,7 +183,7 @@ Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중
plt.show()
```
![가격과 월 관계를 보여주는 산점도](../../../../translated_images/scatterplot.b6868f44cbd2051c6680ccdbb1510697d06a3ff6cd4abda656f5009c0ed4e3fc.ko.png)
![가격과 월 관계를 보여주는 산점도](../../../../2-Regression/2-Data/images/scatterplot.png)
이 플롯이 유용한가요? 놀라운 점이 있나요?
@ -193,16 +193,16 @@ Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중
유용한 데이터를 표시하려면 데이터를 그룹화해야 합니다. y축에 월을 표시하고 데이터가 분포를 나타내는 플롯을 만들어 봅시다.
1. 그룹화된 막대 차트를 생성하는 셀을 추가합니다:
1. 그룹화된 막대 차트를 생성하는 셀을 추가합니다.
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![가격과 월 관계를 보여주는 막대 차트](../../../../translated_images/barchart.a833ea9194346d769c77a3a870f7d8aee51574cd1138ca902e5500830a41cbce.ko.png)
![가격과 월 관계를 보여주는 막대 차트](../../../../2-Regression/2-Data/images/barchart.png)
이 시각화는 더 유용합니다! 호박의 최고 가격이 9월과 10월에 발생한다는 것을 나타내는 것 같습니다. 이것이 예상에 부합하나요? 왜 그런지 생각해 보세요.
이 시각화는 더 유용합니다! 호박의 최고 가격이 9월과 10월에 발생한다는 것을 나타내는 것 같습니다. 이것이 예상과 일치하나요? 왜 그런지 생각해 보세요.
---
@ -210,11 +210,11 @@ Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중
Matplotlib이 제공하는 다양한 시각화 유형을 탐색해 보세요. 회귀 문제에 가장 적합한 유형은 무엇인가요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
데이터를 시각화하는 다양한 방법을 살펴보세요. 사용 가능한 다양한 라이브러리 목록을 작성하고, 2D 시각화와 3D 시각화와 같은 특정 작업에 가장 적합한 라이브러리를 기록하세요. 무엇을 발견했나요?
데이터를 시각화하는 다양한 방법을 살펴보세요. 사용 가능한 라이브러리 목록을 작성하고, 2D 시각화와 3D 시각화와 같은 특정 작업에 가장 적합한 라이브러리를 기록하세요. 무엇을 발견했나요?
## 과제
@ -223,4 +223,4 @@ Matplotlib이 제공하는 다양한 시각화 유형을 탐색해 보세요.
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,24 +1,24 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2f88fbc741d792890ff2f1430fe0dae0",
"translation_date": "2025-09-03T22:18:04+00:00",
"original_hash": "40e64f004f3cb50aa1d8661672d3cd92",
"translation_date": "2025-09-05T10:37:57+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ko"
}
-->
# Scikit-learn을 사용하여 회귀 모델 구축: 네 가지 방법으로 회귀 분석하기
![선형 회귀 vs 다항 회귀 인포그래픽](../../../../translated_images/linear-polynomial.5523c7cb6576ccab0fecbd0e3505986eb2d191d9378e785f82befcf3a578a6e7.ko.png)
![선형 회귀와 다항 회귀 인포그래픽](../../../../2-Regression/3-Linear/images/linear-polynomial.png)
> 인포그래픽 제작: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### 소개
지금까지 호박 가격 데이터셋을 사용하여 회귀 분석이 무엇인지 탐구하고, Matplotlib을 사용하여 시각화하는 방법을 배웠습니다.
이제 머신러닝을 위한 회귀 분석을 더 깊이 탐구할 준비가 되었습니다. 시각화를 통해 데이터를 이해할 수 있지만, 머신러닝의 진정한 힘은 _모델 훈련_에서 나옵니다. 모델은 과거 데이터를 기반으로 데이터 간의 의존성을 자동으로 포착하며, 이전에 본 적 없는 새로운 데이터에 대한 결과를 예측할 수 있습니다.
이제 머신러닝을 위한 회귀 분석을 더 깊이 탐구할 준비가 되었습니다. 시각화를 통해 데이터를 이해할 수 있지만, 머신러닝의 진정한 힘은 _모델 훈련_에서 나옵니다. 모델은 과거 데이터를 기반으로 데이터 간의 의존성을 자동으로 학습하며, 이전에 본 적 없는 새로운 데이터에 대한 결과를 예측할 수 있습니다.
이번 강의에서는 두 가지 유형의 회귀 분석, 즉 _기본 선형 회귀__다항 회귀_에 대해 배우고, 이러한 기술의 수학적 기초를 살펴볼 것입니다. 이러한 모델을 사용하여 다양한 입력 데이터를 기반으로 호박 가격을 예측할 수 있습니다.
@ -26,35 +26,36 @@ CO_OP_TRANSLATOR_METADATA:
> 🎥 위 이미지를 클릭하면 선형 회귀에 대한 짧은 영상 개요를 볼 수 있습니다.
> 이 커리큘럼에서는 수학에 대한 최소한의 지식을 가정하며, 다른 분야에서 온 학생들이 이해할 수 있도록 접근성을 높이기 위해 노트, 🧮 수학 팁, 다이어그램 및 기타 학습 도구를 제공합니다.
> 이 커리큘럼에서는 수학에 대한 최소한의 지식을 가정하며, 다른 분야에서 온 학생들이 이해할 수 있도록 접근성을 높이고자 합니다. 따라서 주석, 🧮 수학 관련 내용, 다이어그램 및 기타 학습 도구를 활용하여 이해를 돕습니다.
### 사전 요구사항
### 사전 준비
이제 우리가 분석할 호박 데이터의 구조에 익숙해졌을 것입니다. 이 강의의 _notebook.ipynb_ 파일에서 미리 로드되고 정리된 데이터를 찾을 수 있습니다. 이 파일에서는 호박 가격이 새로운 데이터 프레임에서 부셸당 표시됩니다. Visual Studio Code의 커널에서 이 노트북을 실행할 수 있는지 확인하세요.
이제까지 호박 데이터의 구조를 익혔을 것입니다. 이 강의의 _notebook.ipynb_ 파일에서 미리 로드되고 정리된 데이터를 확인할 수 있습니다. 이 파일에서는 호박 가격이 새로운 데이터 프레임에 부셸 단위로 표시됩니다. Visual Studio Code의 커널에서 이 노트북을 실행할 수 있는지 확인하세요.
### 준비
### 준비 작업
데이터를 로드하는 이유는 질문을 던지기 위함입니다.
데이터를 로드하는 이유는 질문을 던지기 위함입니다.
- 호박을 구매하기 가장 좋은 시기는 언제인가요?
- 미니어처 호박 한 상자의 가격은 얼마일까요?
- 반 부셸 바구니로 구매하는 것이 좋을까요, 아니면 1 1/9 부셸 상자로 구매하는 것이 좋을까요?
이 데이터를 계속 탐구해 봅시다.
전 강의에서는 Pandas 데이터 프레임을 생성하고 원본 데이터셋의 일부를 표준화하여 부셸당 가격을 계산했습니다. 그러나 그렇게 함으로써 약 400개의 데이터 포인트만 얻을 수 있었고, 가을철 데이터만 포함되었습니다.
데이터를 더 깊이 탐구해 봅시다.
이번 강의의 노트북에 미리 로드된 데이터를 살펴보세요. 데이터는 미리 로드되어 있으며, 초기 산점도가 월별 데이터를 보여주도록 차트화되어 있습니다. 데이터를 더 정리하면 데이터의 특성을 조금 더 자세히 알 수 있을지도 모릅니다.
이전 강의에서는 Pandas 데이터 프레임을 생성하고 원본 데이터셋의 일부를 표준화하여 부셸 단위로 가격을 표시했습니다. 하지만 그렇게 함으로써 약 400개의 데이터 포인트만 얻을 수 있었고, 가을철 데이터만 포함되었습니다.
이번 강의의 노트북에 미리 로드된 데이터를 살펴보세요. 데이터는 미리 로드되어 있으며 초기 산점도가 월별 데이터를 보여주도록 차트화되어 있습니다. 데이터를 더 정리하면 데이터의 특성을 조금 더 자세히 알 수 있을지도 모릅니다.
## 선형 회귀선
1강에서 배운 것처럼, 선형 회귀 분석의 목표는 다음을 가능하게 하는 선을 그리는 것입니다:
1강에서 배운 바와 같이, 선형 회귀의 목표는 다음을 가능하게 하는 선을 그리는 것입니다:
- **변수 관계를 보여주기**. 변수 간의 관계를 보여줍니다.
- **예측하기**. 새로운 데이터 포인트가 이 선과의 관계에서 어디에 위치할지 정확히 예측합니다.
- **변수 관계를 보여**. 변수 간의 관계를 보여줍니다.
- **예측 수행**. 새로운 데이터 포인트가 이 선과 어떤 관계에 있을지 정확히 예측합니다.
**최소 제곱 회귀**는 이러한 유형의 선을 그리는 데 일반적으로 사용됩니다. '최소 제곱'이라는 용어는 회귀선 주변의 모든 데이터 포인트를 제곱한 다음 합산한다는 것을 의미합니다. 이상적으로는 최종 합계가 가능한 한 작아야 합니다. 이는 오류가 적다는 것을 의미하며, 즉 `최소 제곱`을 원합니다.
**최소 제곱 회귀**는 이러한 유형의 선을 그리는 데 일반적으로 사용됩니다. '최소 제곱'이라는 용어는 회귀선 주변의 모든 데이터 포인트를 제곱한 다음 합산한다는 것을 의미합니다. 이상적으로는 최종 합계가 가능한 한 작아야 합니다. 이는 오류 수를 줄이고자 하기 때문입니다.
우리는 데이터 포인트와 선 사이의 누적 거리가 가장 적은 선을 모델링하고자 합니다. 또한 방향보다는 크기에 관심이 있기 때문에 항목을 제곱한 후 합산합니다.
우리는 데이터 포인트와 선 사이의 누적 거리가 가장 적은 선을 모델링하고자 합니다. 또한 방향보다는 크기에 관심이 있으므로 항을 제곱한 후 합산합니다.
> **🧮 수학을 보여주세요**
>
@ -66,27 +67,27 @@ CO_OP_TRANSLATOR_METADATA:
>
> `X`는 '설명 변수'이고, `Y`는 '종속 변수'입니다. 선의 기울기는 `b`이고, `a`는 y절편으로, 이는 `X = 0`일 때 `Y`의 값을 나타냅니다.
>
>![기울기 계산](../../../../translated_images/slope.f3c9d5910ddbfcf9096eb5564254ba22c9a32d7acd7694cab905d29ad8261db3.ko.png)
>![기울기 계산](../../../../2-Regression/3-Linear/images/slope.png)
>
> 먼저 기울기 `b`를 계산합니다. 인포그래픽 제작: [Jen Looper](https://twitter.com/jenlooper)
>
> 즉, 호박 데이터의 원래 질문인 "월별로 부셸당 호박 가격을 예측한다"를 참조하면, `X`는 가격을 나타내고 `Y`는 판매 월을 나타냅니다.
>
>![방정식 완성](../../../../translated_images/calculation.a209813050a1ddb141cdc4bc56f3af31e67157ed499e16a2ecf9837542704c94.ko.png)
>![방정식 완성](../../../../2-Regression/3-Linear/images/calculation.png)
>
> `Y` 값을 계산합니다. 약 $4를 지불하고 있다면, 아마도 4월일 것입니다! 인포그래픽 제작: [Jen Looper](https://twitter.com/jenlooper)
> `Y` 값을 계산합니다. 약 $4를 지불다면, 아마도 4월일 것입니다! 인포그래픽 제작: [Jen Looper](https://twitter.com/jenlooper)
>
> 선의 기울기를 계산하는 수학은 y절편, 즉 `X = 0`일 때 `Y`의 위치에 따라 달라집니다.
> 선의 기울기는 y절편에 따라 달라지며, 이는 `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 변수 간의 **상관 계수**입니다. 산점도를 사용하면 이 계수를 빠르게 시각화할 수 있습니다. 데이터 포인트가 깔끔한 선으로 흩어져 있는 플롯은 높은 상관관계를 가지, 데이터 포인트가 X와 Y 사이에 무작위로 흩어져 있는 플롯은 낮은 상관관계를 가집니다.
이해해야 할 또 다른 용어는 주어진 X와 Y 변수 간의 **상관 계수**입니다. 산점도를 사용하면 이 계수를 빠르게 시각화할 수 있습니다. 데이터 포인트가 깔끔한 선으로 흩어져 있는 플롯은 높은 상관관계를 가지지만, 데이터 포인트가 X와 Y 사이에 무작위로 흩어져 있는 플롯은 낮은 상관관계를 가집니다.
좋은 선형 회귀 모델은 높은 상관 계수(0보다 1에 가까운 값)를 가지며, 최소 제곱 회귀 방법과 회귀선을 사용합니다.
좋은 선형 회귀 모델은 높은 상관 계수(1에 가까운 값)를 가지며, 최소 제곱 회귀 방법과 회귀선을 사용합니다.
✅ 이번 강의의 노트북을 실행하고 월별 가격 산점도를 확인하세요. 호박 판매의 월별 가격 데이터는 산점도를 시각적으로 해석했을 때 높은 상관관계를 가지는 것처럼 보이나요? `Month` 대신 더 세분화된 측정값(예: *연도의 일수*, 즉 연초부터의 일수)을 사용하면 결과가 달라지나요?
✅ 이번 강의의 노트북을 실행하고 월별 가격 산점도를 확인하세요. 호박 판매의 월별 가격 데이터는 산점도를 시각적으로 해석했을 때 높은 상관관계를 가지는 것 같나요, 아니면 낮은 상관관계를 가지는 것 같나요? `Month` 대신 더 세분화된 측정값(예: *연도의 일수*, 즉 연초부터의 일수)을 사용하면 결과가 달라지나요?
아래 코드에서는 데이터를 정리하고 `new_pumpkins`라는 데이터 프레임을 얻었다고 가정합니다. 데이터는 다음과 비슷합니다:
@ -98,13 +99,13 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> 데이터를 정리하는 코드는 [`notebook.ipynb`](notebook.ipynb)에 있습니다. 이전 강의와 동일한 정리 단계를 수행했으며, 다음 표현식을 사용하여 `DayOfYear` 열을 계산했습니다:
> 데이터를 정리하는 코드는 [`notebook.ipynb`](../../../../2-Regression/3-Linear/notebook.ipynb)에 있습니다. 이전 강의와 동일한 정리 단계를 수행했으며, 다음 표현식을 사용하여 `DayOfYear` 열을 계산했습니다:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
이제 선형 회귀의 수학적 기초를 이해했으니, 호박 패키지 중 가장 좋은 가격을 가진 패키지를 예측할 수 있는 회귀 모델을 만들어 봅시다. 휴일 호박 패치를 위해 호박을 구매하려는 사람은 패치에 최적화된 호박 패키지를 구매하기 위해 이 정보를 원할 수 있습니다.
이제 선형 회귀의 수학적 기초를 이해했으니, 호박 패키지 중 가장 좋은 가격을 가진 패키지를 예측할 수 있는 회귀 모델을 만들어 봅시다. 휴일 호박 패치를 위해 호박을 구매하려는 사람은 패치에 필요한 호박 패키지 구매를 최적화하기 위해 이 정보를 원할 수 있습니다.
## 상관관계 찾기
@ -112,7 +113,7 @@ day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.
> 🎥 위 이미지를 클릭하면 상관관계에 대한 짧은 영상 개요를 볼 수 있습니다.
이전 강의에서 월별 평균 가격이 다음과 같다는 것을 보았을 것입니다:
이전 강의에서 보았듯이, 월별 평균 가격은 다음과 같습니다:
<img alt="월별 평균 가격" src="../2-Data/images/barchart.png" width="50%"/>
@ -127,7 +128,7 @@ print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
상관관계는 `Month` 기준으로 -0.15, `DayOfYear` 기준으로 -0.17로 비교적 낮아 보이지만, 다른 중요한 관계가 있을 수 있습니다. 가격이 호박 품종에 따라 다른 클러스터로 나뉘는 것처럼 보입니다. 이 가설을 확인하기 위해 각 호박 카테고리를 다른 색상으로 표시해 봅시다. `scatter` 플롯 함수에 `ax` 매개변수를 전달하여 모든 포인트를 동일한 그래프에 표시할 수 있습니다:
상관관계는 `Month` 기준으로 -0.15, `DayOfYear` 기준으로 -0.17로 비교적 낮은 것 같습니다. 하지만 또 다른 중요한 관계가 있을 수 있습니다. 가격이 호박 품종에 따라 다른 클러스터를 형성하는 것처럼 보입니다. 이 가설을 확인하기 위해 각 호박 카테고리를 다른 색상으로 표시해 봅시다. `scatter` 플롯 함수에 `ax` 매개변수를 전달하여 모든 점을 동일한 그래프에 표시할 수 있습니다:
```python
ax=None
@ -139,7 +140,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<img alt="가격 vs 연도의 일수 산점도" src="images/scatter-dayofyear-color.png" width="50%" />
우리의 조사 결과는 판매 날짜보다 품종이 전체 가격에 더 큰 영향을 미친다는 것을 시사합니다. 이를 막대 그래프로 확인할 수 있습니다:
조사 결과, 판매 날짜보다 품종이 전체 가격에 더 큰 영향을 미친다는 것을 알 수 있습니다. 이를 막대 그래프로 확인할 수 있습니다:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
@ -147,30 +148,30 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
<img alt="품종별 가격 막대 그래프" src="images/price-by-variety.png" width="50%" />
잠시 동안 '파이 타입'이라는 하나의 호박 품종에만 집중하여 날짜가 가격에 미치는 영향을 살펴봅시다:
이제 '파이 타입'이라는 특정 호박 품종에만 집중하여 날짜가 가격에 미치는 영향을 살펴봅시다:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="가격 vs 연도의 일수 산점도" src="images/pie-pumpkins-scatter.png" width="50%" />
<img alt="파이 호박 가격 vs 연도의 일수 산점도" src="images/pie-pumpkins-scatter.png" width="50%" />
이제 `corr` 함수를 사용하여 `Price``DayOfYear` 간의 상관관계를 계산하면 `-0.27` 정도가 나옵니다. 이는 예측 모델을 훈련시키는 것이 의미가 있다는 것을 나타냅니다.
이제 `corr` 함수를 사용하여 `Price``DayOfYear` 간의 상관관계를 계산하면 `-0.27` 정도의 값을 얻을 수 있습니다. 이는 예측 모델을 훈련시키는 것이 의미가 있음을 나타냅니다.
> 선형 회귀 모델을 훈련시키기 전에 데이터가 깨끗한지 확인하는 것이 중요합니다. 선형 회귀는 결측값과 잘 작동하지 않으므로 모든 빈 셀을 제거하는 것이 좋습니다:
> 선형 회귀 모델을 훈련시키기 전에 데이터가 깨끗한지 확인하는 것이 중요합니다. 선형 회귀는 결측값과 잘 작동하지 않으므로 빈 셀을 모두 제거하는 것이 좋습니다:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
또 다른 접근법은 빈 값을 해당 열의 평균 값으로 채우는 것입니다.
또 다른 접근법은 빈 값을 해당 열의 평균값으로 채우는 것입니다.
## 간단한 선형 회귀
[![초보자를 위한 머신러닝 - Scikit-learn을 사용한 선형 및 다항 회귀](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "초보자를 위한 머신러닝 - Scikit-learn을 사용한 선형 및 다항 회귀")
> 🎥 위 이미지를 클릭하면 선형 및 다항 회귀에 대한 짧은 영상 개요를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 Scikit-learn을 사용한 선형 및 다항 회귀에 대한 짧은 영상 개요를 볼 수 있습니다.
선형 회귀 모델을 훈련시키기 위해 **Scikit-learn** 라이브러리를 사용할 것입니다.
@ -187,24 +188,24 @@ X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> 입력 데이터를 Linear Regression 패키지가 올바르게 이해할 수 있도록 `reshape`를 수행해야 했다는 점에 유의하세요. 선형 회귀는 2D 배열을 입력으로 기대하며, 배열의 각 행은 입력 특징 벡터에 해당합니다. 우리의 경우 입력이 하나뿐이므로 데이터셋 크기 N×1의 배열이 필요합니다.
> 입력 데이터를 올바르게 이해시키기 위해 `reshape`를 수행해야 했습니다. 선형 회귀는 각 행이 입력 특징 벡터에 해당하는 2D 배열을 입력으로 기대합니다. 우리의 경우 입력이 하나뿐이므로 데이터셋 크기가 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` 메서드를 사용하여 데이터를 적용합니다:
마지막으로 실제 선형 회귀 모델을 훈련시키는 데는 코드 두 줄만 필요합니다. `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센트 정도 하락합니다. 또한 `lin_reg.intercept_`를 사용하여 회귀선이 Y축과 교차하는 지점을 확인할 수 있습니다. 우리의 경우 약 `21` 정도로, 연초 가격을 나타냅니다.
모델의 정확성을 확인하려면 테스트 데이터셋에서 가격을 예측한 다음, 예측 값과 예상 값이 얼마나 가까운지 측정할 수 있습니다. 이는 평균 제곱 오차(MSE) 메트릭을 사용하여 수행할 수 있으며, 이는 예상 값과 예측 값 간의 모든 제곱 차이의 평균입니다.
모델의 정확성을 확인하려면 테스트 데이터셋에서 가격을 예측한 후 예상 값과 예측 값이 얼마나 가까운지 측정할 수 있습니다. 이는 평균 제곱 오차(MSE) 메트릭스를 사용하여 수행할 수 있으며, 예상 값과 예측 값 간의 모든 제곱 차이의 평균입니다.
```python
pred = lin_reg.predict(X_test)
@ -212,13 +213,13 @@ pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
```
우리의 오류는 약 2개의 포인트에서 발생하는 것으로 보이며, 이는 약 17%입니다. 그다지 좋지 않은 결과입니다. 모델 품질의 또 다른 지표는 **결정 계수**로, 다음과 같이 얻을 수 있습니다:
우리의 오류는 약 2포인트, 즉 약 17%로 보입니다. 그다지 좋지 않습니다. 모델 품질의 또 다른 지표는 **결정 계수**로, 다음과 같이 얻을 수 있습니다:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
값이 0이면 모델이 입력 데이터를 고려하지 않고, 단순히 결과의 평균값을 예측하는 *최악의 선형 예측기*로 작동한다는 것을 의미합니다. 값이 1이면 모든 예상 출력값을 완벽하게 예측할 수 있음을 나타냅니다. 우리의 경우, 결정 계수는 약 0.06으로 매우 낮습니다.
값이 0이면 모델이 입력 데이터를 고려하지 않고, 단순히 결과의 평균값을 예측하는 *최악의 선형 예측기*로 작동한다는 것을 의미합니다. 값이 1이면 모든 예상 출력값을 완벽하게 예측할 수 있다는 것을 의미합니다. 우리의 경우, 결정 계수는 약 0.06으로 매우 낮습니다.
또한 테스트 데이터를 회귀선과 함께 플롯하여 우리의 경우 회귀가 어떻게 작동하는지 더 잘 볼 수 있습니다:
@ -231,7 +232,7 @@ plt.plot(X_test,pred)
## 다항 회귀
선형 회귀의 또 다른 유형은 다항 회귀입니다. 때로는 변수 간에 선형 관계가 있을 수 있습니다. 예를 들어, 호박의 부피가 클수록 가격이 높아지는 경우가 있습니다. 하지만 이러한 관계가 평면이나 직선으로 표현될 수 없는 경우도 있습니다.
선형 회귀의 또 다른 유형은 다항 회귀입니다. 때로는 변수 간에 선형 관계가 있을 수 있습니다. 예를 들어, 호박의 부피가 클수록 가격이 높아지는 경우처럼요. 하지만 때로는 이러한 관계를 평면이나 직선으로 나타낼 수 없습니다.
✅ [여기](https://online.stat.psu.edu/stat501/lesson/9/9.8)에서 다항 회귀를 사용할 수 있는 데이터의 몇 가지 예를 확인할 수 있습니다.
@ -241,7 +242,7 @@ plt.plot(X_test,pred)
다항 회귀는 곡선을 생성하여 비선형 데이터를 더 잘 맞춥니다. 우리의 경우, 입력 데이터에 `DayOfYear` 변수의 제곱을 포함하면, 연중 특정 지점에서 최소값을 가지는 포물선 곡선으로 데이터를 맞출 수 있습니다.
Scikit-learn에는 데이터 처리의 여러 단계를 결합할 수 있는 유용한 [파이프라인 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)가 포함되어 있습니다. **파이프라인**은 **추정기**의 체인입니다. 우리의 경우, 먼저 모델에 다항식 특성을 추가 다음 회귀를 학습시키는 파이프라인을 생성할 것입니다:
Scikit-learn에는 데이터 처리의 다양한 단계를 결합할 수 있는 유용한 [파이프라인 API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline)가 포함되어 있습니다. **파이프라인**은 **추정기**의 체인입니다. 우리의 경우, 먼저 모델에 다항식 특성을 추가하고, 그런 다음 회귀를 학습시키는 파이프라인을 생성할 것입니다:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -254,15 +255,15 @@ pipeline.fit(X_train,y_train)
`PolynomialFeatures(2)`를 사용하면 입력 데이터에서 모든 2차 다항식을 포함하게 됩니다. 우리의 경우, 이는 단순히 `DayOfYear`<sup>2</sup>를 의미하지만, 두 개의 입력 변수 X와 Y가 주어지면 X<sup>2</sup>, XY, Y<sup>2</sup>를 추가합니다. 더 높은 차수의 다항식을 사용하고 싶다면 사용할 수도 있습니다.
파이프라인은 원래의 `LinearRegression` 객체와 동일한 방식으로 사용할 수 있습니다. 즉, 파이프라인을 `fit`하고, `predict`를 사용하여 예측 결과를 얻을 수 있습니다. 아래는 테스트 데이터와 근사 곡선을 보여주는 그래프입니다:
파이프라인은 원래의 `LinearRegression` 객체와 동일한 방식으로 사용할 수 있습니다. 즉, 파이프라인을 `fit`하고, 그런 다음 `predict`를 사용하여 예측 결과를 얻을 수 있습니다. 아래는 테스트 데이터와 근사 곡선을 보여주는 그래프입니다:
<img alt="다항 회귀" src="images/poly-results.png" width="50%" />
다항 회귀를 사용하면 약간 낮은 MSE와 약간 높은 결정 계수를 얻을 수 있지만, 큰 차이는 없습니다. 다른 특성을 고려해야 합니다!
> 최소 호박 가격이 할로윈 즈음에 관찰되는 것을 볼 수 있습니다. 이를 어떻게 설명할 수 있을까요?
> 최소 호박 가격이 할로윈 즈음에 관찰된다는 것을 알 수 있습니다. 이를 어떻게 설명할 수 있을까요?
🎃 축하합니다! 파이 호박의 가격을 예측하는 데 도움이 되는 모델을 만들었습니다. 아마도 모든 호박 종류에 대해 동일한 절차를 반복할 수 있겠지만, 이는 번거로울 것입니다. 이제 모델에서 호박 종류를 고려하는 방법을 배워봅시다!
🎃 축하합니다! 파이 호박의 가격을 예측하는 데 도움을 줄 수 있는 모델을 만들었습니다. 아마도 모든 호박 종류에 대해 동일한 절차를 반복할 수 있겠지만, 이는 번거로울 것입니다. 이제 모델에서 호박 종류를 고려하는 방법을 배워봅시다!
## 범주형 특성
@ -276,10 +277,10 @@ pipeline.fit(X_train,y_train)
<img alt="종류별 평균 가격" src="images/price-by-variety.png" width="50%" />
종류를 고려하려면 먼저 이를 숫자 형태로 변환하거나 **인코딩**해야 합니다. 이를 수행하는 방법은 여러 가지가 있습니다:
종류를 고려하려면 먼저 이를 숫자 형태로 변환하거나 **인코딩**해야 합니다. 이를 수행하는 몇 가지 방법이 있습니다:
* 간단한 **숫자 인코딩**은 다양한 종류의 테이블을 생성한 다음, 종류 이름을 해당 테이블의 인덱스로 대체합니다. 이는 선형 회귀에 가장 좋은 방법은 아닙니다. 선형 회귀는 인덱스의 실제 숫자 값을 가져와 결과에 추가하고 특정 계수를 곱하기 때문입니다. 우리의 경우, 인덱스 번호와 가격 간의 관계는 명확히 비선형적이며, 특정 방식으로 인덱스를 정렬하더라도 마찬가지입니다.
* **원-핫 인코딩**은 `Variety` 열을 각 종류에 대해 4개의 다른 열로 대체합니다. 각 열은 해당 행이 특정 종류 경우 `1`을 포함하고, 그렇지 않은 경우 `0`을 포함합니다. 이는 선형 회귀에서 각 호박 종류에 대해 "시작 가격"(혹은 "추가 가격")을 담당하는 4개의 계수를 생성합니다.
* 간단한 **숫자 인코딩**은 다양한 종류의 테이블을 생성한 다음, 종류 이름을 해당 테이블의 인덱스로 대체합니다. 이는 선형 회귀에 가장 좋은 방법은 아닙니다. 왜냐하면 선형 회귀는 인덱스의 실제 숫자 값을 가져와 결과에 추가하고 특정 계수를 곱하기 때문입니다. 우리의 경우, 인덱스 번호와 가격 간의 관계는 명확히 비선형적이며, 특정 방식으로 인덱스를 정렬하더라도 마찬가지입니다.
* **원-핫 인코딩**은 `Variety` 열을 각 종류에 대해 4개의 다른 열로 대체합니다. 각 열은 해당 행이 특정 종류에 속하는 경우 `1`을 포함하고, 그렇지 않은 경우 `0`을 포함합니다. 이는 선형 회귀에서 각 호박 종류에 대해 "시작 가격"(혹은 "추가 가격")을 담당하는 4개의 계수를 생성합니다.
아래 코드는 종류를 원-핫 인코딩하는 방법을 보여줍니다:
@ -305,7 +306,7 @@ 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']) \
@ -315,11 +316,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
여기에서는 `City``Package` 유형도 고려하여 MSE 2.84(10%)와 결정 계수 0.94를 얻습니다!
여기에서는 `City``Package` 유형도 고려하여 MSE 2.84 (10%)와 결정 계수 0.94를 얻습니다!
## 모든 것을 종합하
## 모든 것을 하나로 합치
최상의 모델을 만들기 위해 위의 예에서 다항 회귀와 함께 결합된 (원-핫 인코딩된 범주형 + 숫자) 데이터를 사용할 수 있습니다. 아래는 편의를 위해 전체 코드입니다:
최상의 모델을 만들기 위해 위의 예에서 다항 회귀와 함께 결합된 (원-핫 인코딩된 범주형 + 숫자) 데이터를 사용할 수 있습니다. 아래는 편의를 위해 전체 코드입니다:
```python
# set up training data
@ -347,17 +348,17 @@ score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
이를 통해 거의 97%의 결정 계수와 MSE=2.23(~8% 예측 오류)을 얻을 수 있습니다.
이를 통해 거의 97%의 결정 계수와 MSE=2.23 (~8% 예측 오류)을 얻을 수 있습니다.
| 모델 | MSE | 결정 계수 |
|------|-----|-----------|
|-------|-----|---------------|
| `DayOfYear` 선형 | 2.77 (17.2%) | 0.07 |
| `DayOfYear` 다항 | 2.73 (17.0%) | 0.08 |
| `Variety` 선형 | 5.24 (19.7%) | 0.77 |
| 모든 특성 선형 | 2.84 (10.5%) | 0.94 |
| 모든 특성 다항 | 2.23 (8.25%) | 0.97 |
🏆 잘하셨습니다! 한 수업에서 네 가지 회귀 모델을 만들고 모델 품질을 97%로 개선했습니다. 회귀에 대한 마지막 섹션에서는 범주를 결정하기 위한 로지스틱 회귀에 대해 배울 것입니다.
🏆 잘하셨습니다! 한 수업에서 네 가지 회귀 모델을 만들, 모델 품질을 97%로 개선했습니다. 회귀에 대한 마지막 섹션에서는 범주를 결정하기 위한 로지스틱 회귀에 대해 배울 것입니다.
---
@ -365,7 +366,7 @@ print('Model determination: ', score)
이 노트북에서 여러 변수를 테스트하여 상관관계가 모델 정확도와 어떻게 연결되는지 확인하세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
@ -378,4 +379,4 @@ print('Model determination: ', score)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,25 +1,25 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "72b5bae0879baddf6aafc82bb07b8776",
"translation_date": "2025-09-03T22:26:52+00:00",
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T10:40:02+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "ko"
}
-->
# 카테고리 예측을 위한 로지스틱 회귀
![로지스틱 vs. 선형 회귀 인포그래픽](../../../../translated_images/linear-vs-logistic.ba180bf95e7ee66721ba10ebf2dac2666acbd64a88b003c83928712433a13c7d.ko.png)
![로지스틱 vs. 선형 회귀 인포그래픽](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png)
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
## 소개
이번 회귀에 대한 마지막 강의에서는 기본적인 _고전적인_ 머신러닝 기법 중 하나인 로지스틱 회귀를 살펴보겠습니다. 이 기법은 패턴을 발견하여 이진 카테고리를 예측하는 데 사용됩니다. 이 사탕이 초콜릿인가 아닌가? 이 질병이 전염성인가 아닌가? 이 고객이 이 제품을 선택할 것인가 아닌가?
회귀에 대한 마지막 강의에서는 기본적인 _고전적인_ 머신러닝 기법 중 하나인 로지스틱 회귀를 살펴보겠습니다. 이 기법은 패턴을 발견하여 이진 카테고리를 예측하는 데 사용됩니다. 이 사탕이 초콜릿인가 아닌가? 이 질병이 전염성인가 아닌가? 이 고객이 이 제품을 선택할 것인가 아닌가?
강의에서 배우게 될 내용:
이 강의에서 배우게 될 내용:
- 데이터 시각화를 위한 새로운 라이브러리
- 로지스틱 회귀 기법
@ -30,57 +30,57 @@ CO_OP_TRANSLATOR_METADATA:
호박 데이터를 다루면서, 이제 `Color`라는 이진 카테고리를 작업할 수 있다는 것을 충분히 이해하게 되었습니다.
이제 로지스틱 회귀 모델을 구축하여 몇 가지 변수에 따라 _주어진 호박의 색상이 무엇일 가능성이 높은지_ 예측해 봅시다 (주황색 🎃 또는 흰색 👻).
이제 몇 가지 변수를 기반으로 _주어진 호박의 색상이 무엇일 가능성이 높은지_ 예측하는 로지스틱 회귀 모델을 만들어 봅시다 (주황색 🎃 또는 흰색 👻).
> 회귀에 대한 강의에서 이진 분류를 다루고 있을까요? 언어적 편의를 위해서입니다. 로지스틱 회귀는 [사실 분류 방법](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression)이며, 선형 기반이긴 하지만요. 다음 강의 그룹에서 데이터를 분류하는 다른 방법에 대해 알아보세요.
> 회귀에 대한 강의에서 이진 분류를 다루는 이유는 무엇일까요? 언어적 편의를 위해서입니다. 로지스틱 회귀는 [사실 분류 방법](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression)이며, 선형 기반이긴 하지만요. 다음 강의 그룹에서 데이터를 분류하는 다른 방법에 대해 알아보세요.
## 질문 정의하기
우리의 목적을 위해 이를 이진으로 표현하겠습니다: '흰색' 또는 '흰색이 아님'. 데이터셋에 '줄무늬' 카테고리도 있지만, 해당 사례가 적기 때문에 사용하지 않을 것입니다. 어쨌든 데이터셋에서 null 값을 제거하면 사라집니다.
우리의 목적을 위해 이를 이진으로 표현하겠습니다: '흰색' 또는 '흰색이 아님'. 데이터셋에 '줄무늬' 카테고리도 있지만, 해당 사례가 적어서 사용하지 않을 것입니다. 어쨌든 데이터셋에서 null 값을 제거하면 사라집니다.
> 🎃 재미있는 사실: 우리는 때때로 흰색 호박을 '유령' 호박이라고 부릅니다. 조각하기가 쉽지 않아서 주황색 호박만큼 인기가 많지는 않지만, 멋지게 생겼습니다! 따라서 질문을 이렇게 다시 표현할 수도 있습니다: '유령' 또는 '유령이 아님'. 👻
> 🎃 재미있는 사실: 흰색 호박을 '유령 호박'이라고 부르기도 합니다. 조각하기가 쉽지 않아서 주황색 호박만큼 인기가 많지는 않지만, 멋지게 생겼습니다! 따라서 질문을 이렇게 다시 표현할 수도 있습니다: '유령' 또는 '유령이 아님'. 👻
## 로지스틱 회귀에 대하여
로지스틱 회귀는 이전에 배운 선형 회귀와 몇 가지 중요한 점에서 다릅니다.
[![초보자를 위한 머신러닝 - 로지스틱 회귀를 통한 데이터 분류 이해하기](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "초보자를 위한 머신러닝 - 로지스틱 회귀를 통한 데이터 분류 이해하기")
[![초보자를 위한 머신러닝 - 로지스틱 회귀 이해하기](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "초보자를 위한 머신러닝 - 로지스틱 회귀 이해하기")
> 🎥 위 이미지를 클릭하여 로지스틱 회귀에 대한 간단한 비디오 개요를 확인하세요.
> 🎥 위 이미지를 클릭하면 로지스틱 회귀에 대한 짧은 비디오 개요를 볼 수 있습니다.
### 이진 분류
로지스틱 회귀는 선형 회귀와 같은 기능을 제공하지 않습니다. 전자는 이진 카테고리("흰색 또는 흰색이 아님")에 대한 예측을 제공하는 반면, 후자는 연속적인 값을 예측할 수 있습니다. 예를 들어, 호박의 원산지와 수확 시기를 기준으로 _가격이 얼마나 오를지_ 예측할 수 있습니다.
![호박 분류 모델](../../../../translated_images/pumpkin-classifier.562771f104ad5436b87d1c67bca02a42a17841133556559325c0a0e348e5b774.ko.png)
> 인포그래픽: [Dasani Madipalli](https://twitter.com/dasani_decoded)
![호박 분류 모델](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png)
> 인포그래픽 제공: [Dasani Madipalli](https://twitter.com/dasani_decoded)
### 기타 분류
### 다른 분류 방법
로지스틱 회귀에는 다항 및 순서형을 포함한 다른 유형도 있습니다:
- **다항**: 여러 카테고리가 있는 경우 - "주황색, 흰색, 줄무늬".
- **순서형**: 카테고리가 논리적으로 순서가 있는 경우, 예를 들어 호박의 크기가 제한된 수의 크기(미니, 소, 중, 대, 특대, 초특대)로 정렬된 경우.
- **다항 회귀**: 여러 카테고리가 있는 경우 - "주황색, 흰색, 줄무늬".
- **순서형 회귀**: 카테고리가 순서대로 정렬된 경우, 예를 들어 호박 크기가 제한된 수의 크기(미니, 소, 중, 대, XL, XXL)로 정렬된 경우.
![다항 vs 순서형 회귀](../../../../translated_images/multinomial-vs-ordinal.36701b4850e37d86c9dd49f7bef93a2f94dbdb8fe03443eb68f0542f97f28f29.ko.png)
![다항 vs 순서형 회귀](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png)
### 변수는 반드시 상관관계가 있을 필요 없음
선형 회귀가 더 많은 상관관계가 있는 변수와 잘 작동했던 것을 기억하시나요? 로지스틱 회귀는 반대입니다 - 변수들이 반드시 일치할 필요가 없습니다. 이는 상관관계가 약한 이 데이터에 적합합니다.
### 많은 양의 깨끗한 데이터가 필요함
### 많은 깨끗한 데이터가 필요함
로지스틱 회귀는 더 많은 데이터를 사용할수록 더 정확한 결과를 제공합니다. 우리의 작은 데이터셋은 이 작업에 최적이 아니므로 이를 염두에 두세요.
로지스틱 회귀는 더 많은 데이터를 사용할수록 더 정확한 결과를 제공합니다. 우리의 작은 데이터셋은 이 작업에 최적화되어 있지 않으니 참고하세요.
[![초보자를 위한 머신러닝 - 로지스틱 회귀를 위한 데이터 분석 및 준비](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "초보자를 위한 머신러닝 - 로지스틱 회귀를 위한 데이터 분석 및 준비")
> 🎥 위 이미지를 클릭하여 선형 회귀를 위한 데이터 준비에 대한 간단한 비디오 개요를 확인하세요.
> 🎥 위 이미지를 클릭하면 선형 회귀를 위한 데이터 준비에 대한 짧은 비디오 개요를 볼 수 있습니다.
✅ 로지스틱 회귀에 적합한 데이터 유형에 대해 생각해 보세요.
## 실습 - 데이터 정리하기
먼저 null 값을 제거하고 몇 가지 열만 선택하여 데이터를 약간 정리합니다:
먼저, null 값을 제거하고 일부 열만 선택하여 데이터를 약간 정리합니다:
1. 다음 코드를 추가하세요:
@ -92,7 +92,7 @@ CO_OP_TRANSLATOR_METADATA:
pumpkins.dropna(inplace=True)
```
새 데이터프레임을 확인할 수도 있습니다:
로운 데이터프레임을 확인할 수도 있습니다:
```python
pumpkins.info
@ -100,11 +100,11 @@ CO_OP_TRANSLATOR_METADATA:
### 시각화 - 카테고리 플롯
이제 [시작 노트북](./notebook.ipynb)에 호박 데이터를 다시 로드하고 몇 가지 변수, 특히 `Color`를 포함하는 데이터셋을 유지하도록 정리했습니다. 이번에는 다른 라이브러리를 사용하여 데이터프레임을 노트북에서 시각화해 봅시다: [Seaborn](https://seaborn.pydata.org/index.html). 이는 이전에 사용한 Matplotlib을 기반으로 구축되었습니다.
이제 다시 호박 데이터를 로드하고 `Color`를 포함한 몇 가지 변수를 유지하도록 데이터를 정리했습니다. 노트북에서 데이터프레임을 시각화하기 위해 이전에 사용한 Matplotlib 기반의 [Seaborn](https://seaborn.pydata.org/index.html) 라이브러리를 사용해 봅시다.
Seaborn은 데이터를 시각화하는 멋진 방법을 제공합니다. 예를 들어, `Variety``Color`의 데이터 분포를 카테고리 플롯에서 비교할 수 있습니다.
1. 호박 데이터 `pumpkins`를 사용하여 `catplot` 함수를 사용하고 각 호박 카테고리(주황색 또는 흰색)에 대한 색상 매핑을 지정하여 플롯을 생성하세요:
1. 호박 데이터 `pumpkins`를 사용하여 `catplot` 함수를 사용하고, 각 호박 카테고리(주황색 또는 흰색)에 대한 색상 매핑을 지정하여 플롯을 생성하세요:
```python
import seaborn as sns
@ -120,18 +120,18 @@ Seaborn은 데이터를 시각화하는 멋진 방법을 제공합니다. 예를
)
```
![시각화된 데이터의 그리드](../../../../translated_images/pumpkins_catplot_1.c55c409b71fea2ecc01921e64b91970542101f90bcccfa4aa3a205db8936f48b.ko.png)
![시각화된 데이터 그리드](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png)
데이터를 관찰함으로써 Color 데이터가 Variety와 어떻게 관련되어 있는지 확인할 수 있습니다.
데이터를 관찰함으로써 Color 데이터가 Variety와 어떻게 관련되는지 알 수 있습니다.
✅ 이 카테고리 플롯을 보고 어떤 흥미로운 탐구를 상상할 수 있나요?
✅ 이 카테고리 플롯을 기반으로 어떤 흥미로운 탐구를 상상할 수 있나요?
### 데이터 전처리: 특징 및 라벨 인코딩
우리의 호박 데이터셋은 모든 열에 문자열 값을 포함하고 있습니다. 카테고리 데이터를 다루는 것은 인간에게는 직관적이지만 기계에게는 그렇지 않습니다. 머신러닝 알고리즘은 숫자와 잘 작동합니다. 따라서 인코딩은 데이터 전처리 단계에서 매우 중요한 단계입니다. 이는 카테고리 데이터를 숫자 데이터로 변환할 수 있게 해주며, 정보를 잃지 않습니다. 좋은 인코딩은 좋은 모델을 구축하는 데 도움이 됩니다.
우리의 호박 데이터셋은 모든 열에 문자열 값을 포함하고 있습니다. 카테고리 데이터를 다루는 것은 인간에게는 직관적이지만 기계에게는 그렇지 않습니다. 머신러닝 알고리즘은 숫자와 잘 작동합니다. 따라서 인코딩은 데이터 전처리 단계에서 매우 중요한 단계입니다. 이를 통해 카테고리 데이터를 숫자 데이터로 변환할 수 있으며, 정보 손실 없이 가능합니다. 좋은 인코딩은 좋은 모델을 구축하는 데 도움이 됩니다.
특징 인코딩에는 두 가지 주요 유형의 인코더가 있습니다:
1. 순서형 인코더: 순서형 변수에 적합합니다. 순서형 변수는 데이터가 논리적 순서를 따르는 카테고리 변수입니다. 예를 들어, 데이터셋의 `Item Size` 열이 이에 해당합니다. 각 카테고리가 열의 순서에 따라 숫자로 표현되도록 매핑을 생성합니다.
1. 순서형 인코더: 순서형 변수에 적합하며, 이는 데이터가 논리적 순서를 따르는 카테고리 변수입니다. 예를 들어, 데이터셋의 `Item Size` 열이 이에 해당합니다. 각 카테고리가 열의 순서에 따라 숫자로 표현되도록 매핑을 생성합니다.
```python
from sklearn.preprocessing import OrdinalEncoder
@ -141,7 +141,7 @@ Seaborn은 데이터를 시각화하는 멋진 방법을 제공합니다. 예를
ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
```
2. 카테고리 인코더: 명목 변수에 적합합니다. 명목 변수는 데이터가 논리적 순서를 따르지 않는 카테고리 변수입니다. 데이터셋에서 `Item Size`를 제외한 모든 특징이 이에 해당합니다. 이는 원-핫 인코딩으로, 각 카테고리가 이진 열로 표현됩니다: 인코딩된 변수는 호박이 해당 Variety에 속하면 1이고 그렇지 않으면 0입니다.
2. 카테고리 인코더: 명목 변수에 적합하며, 이는 데이터가 논리적 순서를 따르지 않는 카테고리 변수입니다. 데이터셋에서 `Item Size`를 제외한 모든 특징이 이에 해당합니다. 이는 원-핫 인코딩으로, 각 카테고리가 이진 열로 표현됩니다: 인코딩된 변수는 호박이 해당 Variety에 속하면 1이고 그렇지 않으면 0입니다.
```python
from sklearn.preprocessing import OneHotEncoder
@ -180,7 +180,7 @@ Seaborn은 데이터를 시각화하는 멋진 방법을 제공합니다. 예를
### 변수 간 관계 분석
이제 데이터를 전처리했으니, 특징과 라벨 간의 관계를 분석하여 모델이 특징을 기반으로 라벨을 얼마나 잘 예측할 수 있을지에 대한 아이디어를 얻을 수 있습니다.
이러한 분석을 수행하는 가장 좋은 방법은 데이터를 시각화하는 것입니다. Seaborn의 `catplot` 함수를 다시 사용하여 `Item Size`, `Variety`, `Color` 간의 관계를 카테고리 플롯에서 시각화합니다. 데이터를 더 잘 시각화하기 위해 인코딩된 `Item Size` 열과 인코딩되지 않은 `Variety` 열을 사용합니다.
이러한 분석을 수행하는 가장 좋은 방법은 데이터를 시각화하는 것입니다. Seaborn의 `catplot` 함수를 다시 사용하여 `Item Size`, `Variety`, `Color` 간의 관계를 카테고리 플롯에서 시각화합니다. 데이터를 더 잘 플롯하기 위해 인코딩된 `Item Size` 열과 인코딩되지 않은 `Variety` 열을 사용합니다.
```python
palette = {
@ -199,13 +199,13 @@ Seaborn은 데이터를 시각화하는 멋진 방법을 제공합니다. 예를
g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6))
g.set_titles(row_template="{row_name}")
```
![시각화된 데이터의 카테고리 플롯](../../../../translated_images/pumpkins_catplot_2.87a354447880b3889278155957f8f60dd63db4598de5a6d0fda91c334d31f9f1.ko.png)
![시각화된 데이터의 카테고리 플롯](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png)
### 스웜 플롯 사용하기
Color는 이진 카테고리(흰색 또는 흰색이 아님)이므로 '시각화를 위한 [특별한 접근법](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)'이 필요합니다. 이 카테고리가 다른 변수와의 관계를 시각화하는 다른 방법도 있습니다.
변수를 나란히 시각화할 수 있는 Seaborn 플롯을 사용할 수 있습니다.
변수를 나란히 시각화하려면 Seaborn 플롯을 사용할 수 있습니다.
1. 값의 분포를 보여주는 '스웜' 플롯을 시도해 보세요:
@ -217,25 +217,25 @@ Color는 이진 카테고리(흰색 또는 흰색이 아님)이므로 '시각화
sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette)
```
![시각화된 데이터의 스웜](../../../../translated_images/swarm_2.efeacfca536c2b577dc7b5f8891f28926663fbf62d893ab5e1278ae734ca104e.ko.png)
![시각화된 데이터의 스웜 플롯](../../../../2-Regression/4-Logistic/images/swarm_2.png)
**주의**: 위 코드는 경고를 생성할 수 있습니다. Seaborn이 많은 데이터 포인트를 스웜 플롯에 표현하지 못하기 때문입니다. 가능한 해결책은 'size' 매개변수를 사용하여 마커 크기를 줄이는 것입니다. 그러나 이는 플롯의 가독성에 영향을 미칠 수 있다는 점을 유의하세요.
**주의**: 위 코드는 경고를 생성할 수 있습니다. Seaborn이 많은 데이터 포인트를 스웜 플롯에 표현하지 못하기 때문입니다. 가능한 해결책은 'size' 매개변수를 사용하여 마커 크기를 줄이는 것입니다. 그러나 이는 플롯의 가독성에 영향을 미칠 수 있습니다.
> **🧮 수학 보여주세요**
> **🧮 수학 보여주세요**
>
> 로지스틱 회귀는 [시그모이드 함수](https://wikipedia.org/wiki/Sigmoid_function)를 사용하여 '최대 가능도' 개념에 의존합니다. 플롯에서 '시그모이드 함수'는 'S' 모양으로 보입니다. 값 하나를 받아 0과 1 사이의 값으로 매핑합니다. 이 곡선은 '로지스틱 곡선'이라고도 불립니다. 공식은 다음과 같습니다:
> 로지스틱 회귀는 [시그모이드 함수](https://wikipedia.org/wiki/Sigmoid_function)를 사용하여 '최대 가능도' 개념에 의존합니다. 시그모이드 함수는 플롯에서 'S' 모양으로 보입니다. 값을 받아 0과 1 사이로 매핑합니다. 곡선은 '로지스틱 곡선'이라고도 불립니다. 공식은 다음과 같습니다:
>
> ![로지스틱 함수](../../../../translated_images/sigmoid.8b7ba9d095c789cf72780675d0d1d44980c3736617329abfc392dfc859799704.ko.png)
> ![로지스틱 함수](../../../../2-Regression/4-Logistic/images/sigmoid.png)
>
> 여기서 시그모이드의 중간점은 x의 0 지점에 위치하며, L은 곡선의 최대값, k는 곡선의 가파름을 나타냅니다. 함수 결과가 0.5보다 크면 해당 라벨은 이진 선택의 '1' 클래스에 할당됩니다. 그렇지 않으면 '0'으로 분류됩니다.
> 여기서 시그모이드의 중간점은 x의 0 지점에 위치하며, L은 곡선의 최대값, k는 곡선의 기울기입니다. 함수 결과가 0.5보다 크면 해당 라벨은 이진 선택의 '1'로 분류됩니다. 그렇지 않으면 '0'으로 분류됩니다.
## 모델 구축하기
Scikit-learn에서 이진 분류를 찾는 모델을 구축하는 것은 놀라울 정도로 간단합니다.
Scikit-learn에서 이진 분류를 찾는 모델을 구축하는 것은 놀랍도록 간단합니다.
[![초보자를 위한 머신러닝 - 데이터 분류를 위한 로지스틱 회귀](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "초보자를 위한 머신러닝 - 데이터 분류를 위한 로지스틱 회귀")
> 🎥 위 이미지를 클릭하여 선형 회귀 모델 구축에 대한 간단한 비디오 개요를 확인하세요.
> 🎥 위 이미지를 클릭하면 선형 회귀 모델 구축에 대한 짧은 비디오 개요를 볼 수 있습니다.
1. 분류 모델에서 사용할 변수를 선택하고 `train_test_split()`을 호출하여 학습 및 테스트 세트를 분리하세요:
@ -264,7 +264,7 @@ Scikit-learn에서 이진 분류를 찾는 모델을 구축하는 것은 놀라
print('F1-score: ', f1_score(y_test, predictions))
```
모델의 점수표를 확인하세요. 데이터가 약 1000행밖에 없다는 점을 고려하면 나쁘지 않습니다:
모델의 점수표를 확인하세요. 약 1000개의 데이터 행만 가지고 있다는 점을 고려하면 나쁘지 않습니다:
```output
precision recall f1-score support
@ -287,9 +287,9 @@ Scikit-learn에서 이진 분류를 찾는 모델을 구축하는 것은 놀라
## 혼동 행렬을 통한 더 나은 이해
위에서 항목을 출력하여 [용어](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report)를 보고 점수표를 확인할 수 있지만, 모델을 더 쉽게 이해하려면 [혼동 행렬](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix)을 사용하여 모델 성능을 이해할 수 있습니다.
위에서 항목을 출력하여 [용어](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report)를 보고 점수표를 얻을 수 있지만, [혼동 행렬](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix)을 사용하면 모델을 더 쉽게 이해할 수 있습니다.
> 🎓 '[혼동 행렬](https://wikipedia.org/wiki/Confusion_matrix)'(또는 '오류 행렬')은 모델의 실제 vs. 예측된 긍정 및 부정을 표현하는 표로, 예측 정확도를 측정합니다.
> 🎓 '[혼동 행렬](https://wikipedia.org/wiki/Confusion_matrix)'(또는 '오류 행렬')은 모델의 실제 vs. 예측된 긍정 및 부정을 표현하는 표로, 예측 정확도를 측정합니다.
1. 혼동 행렬을 사용하려면 `confusion_matrix()`를 호출하세요:
@ -312,32 +312,32 @@ Scikit-learn에서 혼동 행렬의 행(축 0)은 실제 라벨이고 열(축 1)
| 0 | TN | FP |
| 1 | FN | TP |
여기서 무슨 일이 일어나고 있을까요? 모델이 호박을 두 가지 이진 카테고리, '흰색'과 '흰색이 아님'으로 분류하도록 요청받았다고 가정해 봅시다.
여기서 무슨 일이 일어나고 있을까요? 모델이 호박을 두 개의 이진 카테고리, '흰색'과 '흰색이 아님'으로 분류하도록 요청받았다고 가정해 봅시다.
- 모델이 호박을 흰색이 아니라고 예측했는데 실제로 '흰색이 아님' 카테고리에 속한다면 이를 참 부정(true negative)이라고 하며, 왼쪽 상단 숫자로 표시됩니다.
- 모델이 호박을 흰색이라고 예측했는데 실제로 '흰색이 아님' 카테고리에 속한다면 이를 거짓 부정(false negative)이라고 하며, 왼쪽 하단 숫자로 표시됩니다.
- 모델이 호박을 흰색이 아니라고 예측했는데 실제로 '흰색' 카테고리에 속한다면 이를 거짓 긍정(false positive)이라고 하며, 오른쪽 상단 숫자로 표시됩니다.
- 모델이 호박을 흰색이라고 예측했는데 실제로 '흰색' 카테고리에 속한다면 이를 참 긍정(true positive)이라고 하며, 오른쪽 하단 숫자로 표시됩니다.
- 모델이 호박을 흰색이 아니라고 예측했는데 실제로 '흰색이 아님' 카테고리에 속면 이를 참 부정(true negative)이라고 하며, 왼쪽 상단 숫자로 표시됩니다.
- 모델이 호박을 흰색이라고 예측했는데 실제로 '흰색이 아님' 카테고리에 속면 이를 거짓 부정(false negative)이라고 하며, 왼쪽 하단 숫자로 표시됩니다.
- 모델이 호박을 흰색이 아니라고 예측했는데 실제로 '흰색' 카테고리에 속면 이를 거짓 긍정(false positive)이라고 하며, 오른쪽 상단 숫자로 표시됩니다.
- 모델이 호박을 흰색이라고 예측했는데 실제로 '흰색' 카테고리에 속면 이를 참 긍정(true positive)이라고 하며, 오른쪽 하단 숫자로 표시됩니다.
예상하셨겠지만, 참 긍정과 참 부정의 숫자가 많고 거짓 긍정과 거짓 부정의 숫자가 적을수록 모델 성능이 더 좋다는 것을 의미합니다.
혼동 행렬은 정밀도와 재현율과 어떻게 관련이 있을까요? 위에서 출력된 분류 보고서는 정밀도(0.85)와 재현율(0.67)을 보여니다.
예상하셨겠지만, 참 긍정과 참 부정의 숫자가 많고 거짓 긍정과 거짓 부정의 숫자가 적을수록 모델이 더 잘 작동한다는 것을 의미합니다.
혼동 행렬은 정밀도와 재현율과 어떻게 관련이 있을까요? 위에서 출력된 분류 보고서는 정밀도(0.85)와 재현율(0.67)을 보여줬습니다.
정밀도 = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
재현율 = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
✅ Q: 혼동 행렬에 따르면 모델의 성능은 어땠나요?
✅ Q: 혼동 행렬에 따르면 모델은 어떻게 작동했나요?
A: 나쁘지 않습니다. 참 음성(true negatives)이 꽤 많지만, 몇 개의 거짓 음성(false negatives)도 있습니다.
혼동 행렬의 TP/TN 및 FP/FN 매핑을 통해 이전에 본 용어들을 다시 살펴봅시다:
🎓 정밀도(Precision): TP/(TP + FP)
검색된 인스턴스 중에서 관련 있는 인스턴스의 비율 (예: 잘 분류된 레이블)
검색된 인스턴스 중에서 관련 있는 인스턴스의 비율 (예: 잘 라벨링된 레이블)
🎓 재현율(Recall): TP/(TP + FN)
검색된 인스턴스 중에서 관련 있는 인스턴스의 비율, 잘 분류되었는지 여부와 관계없이
검색된 인스턴스 중에서 관련 있는 인스턴스의 비율, 잘 라벨링되었는지 여부와 관계없이
🎓 f1-score: (2 * 정밀도 * 재현율)/(정밀도 + 재현율)
🎓 f1-점수(f1-score): (2 * 정밀도 * 재현율)/(정밀도 + 재현율)
정밀도와 재현율의 가중 평균, 최고는 1, 최악은 0
🎓 지원(Support): 검색된 각 레이블의 발생 횟수
@ -346,10 +346,10 @@ A: 나쁘지 않습니다. 참 음성(true negatives)이 꽤 많지만, 몇 개
샘플에 대해 정확히 예측된 레이블의 비율
🎓 매크로 평균(Macro Avg):
레이블 불균형을 고려하지 않고 각 레이블에 대한 비중 없는 평균 지표 계산
레이블 불균형을 고려하지 않고 각 레이블에 대한 비중 평균 지표 계산
🎓 가중 평균(Weighted Avg):
레이블 불균형을 고려하여 각 레이블에 대한 평균 지표를 지원(각 레이블의 실제 인스턴스 수)으로 가중 계산
레이블 불균형을 고려하여 각 레이블에 대한 평균 지표를 지원(각 레이블의 실제 인스턴스 수)으로 가중치를 부여하여 계산
✅ 거짓 음성(false negatives)의 수를 줄이고 싶다면 어떤 지표를 주의 깊게 봐야 할지 생각해볼 수 있나요?
@ -357,9 +357,9 @@ A: 나쁘지 않습니다. 참 음성(true negatives)이 꽤 많지만, 몇 개
[![초보자를 위한 머신러닝 - ROC 곡선을 사용한 로지스틱 회귀 성능 분석](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "초보자를 위한 머신러닝 - ROC 곡선을 사용한 로지스틱 회귀 성능 분석")
> 🎥 위 이미지를 클릭하면 ROC 곡선에 대한 짧은 영상 개요를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 ROC 곡선에 대한 짧은 비디오 개요를 볼 수 있습니다.
이른바 'ROC' 곡선을 보기 위해 한 번 더 시각화를 진행 봅시다:
이른바 'ROC' 곡선을 보기 위해 한 번 더 시각화를 해봅시다:
```python
from sklearn.metrics import roc_curve, roc_auc_score
@ -379,9 +379,9 @@ plt.title('ROC Curve')
plt.show()
```
Matplotlib을 사용하여 모델의 [수신 운영 특성(ROC)](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) 또는 ROC를 그립니다. ROC 곡선은 분류기의 출력(참 양성 대 거짓 양성)을 확인하는 데 자주 사용됩니다. "ROC 곡선은 일반적으로 Y축에 참 양성 비율, X축에 거짓 양성 비율을 표시합니다." 따라서 곡선의 가파름과 중간선과 곡선 사이의 공간이 중요합니다. 곡선이 빠르게 위로 올라가고 선을 넘어가는 것이 이상적입니다. 우리의 경우, 처음에는 거짓 양성이 있지만 이후 곡선이 제대로 위로 올라가고 넘어갑니다:
Matplotlib을 사용하여 모델의 [수신 운영 특성(Receiving Operating Characteristic)](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) 또는 ROC를 그립니다. ROC 곡선은 분류기의 출력(참 양성 대 거짓 양성)을 확인하는 데 자주 사용됩니다. "ROC 곡선은 일반적으로 Y축에 참 양성 비율, X축에 거짓 양성 비율을 표시합니다." 따라서 곡선의 가파름과 중간선과 곡선 사이의 공간이 중요합니다: 곡선이 빠르게 위로 올라가고 선을 넘어가는 것이 이상적입니다. 우리의 경우, 처음에는 거짓 양성이 있지만 곡선이 제대로 위로 올라가고 넘어갑니다:
![ROC](../../../../translated_images/ROC_2.777f20cdfc4988ca683ade6850ac832cb70c96c12f1b910d294f270ef36e1a1c.ko.png)
![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png)
마지막으로 Scikit-learn의 [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score)를 사용하여 실제 '곡선 아래 면적(AUC)'을 계산합니다:
@ -394,21 +394,21 @@ print(auc)
향후 분류에 대한 수업에서는 모델의 점수를 개선하기 위해 반복하는 방법을 배우게 될 것입니다. 하지만 지금은 축하합니다! 이 회귀 수업을 완료했습니다!
---
## 🚀도전 과제
## 🚀도전
로지스틱 회귀에 대해 더 알아볼 것이 많습니다! 하지만 배우는 가장 좋은 방법은 실험하는 것입니다. 이 유형의 분석에 적합한 데이터셋을 찾아 모델을 만들어 보세요. 무엇을 배우게 될까요? 팁: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets)에서 흥미로운 데이터셋을 찾아보세요.
로지스틱 회귀에 대해 더 알아볼 것이 많습니다! 하지만 배우는 가장 좋은 방법은 실험하는 것입니다. 이 유형의 분석에 적합한 데이터셋을 찾아 모델을 만들어보세요. 무엇을 배우게 될까요? 팁: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets)에서 흥미로운 데이터셋을 찾아보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
[스탠포드의 이 논문](https://web.stanford.edu/~jurafsky/slp3/5.pdf)의 첫 몇 페이지를 읽고 로지스틱 회귀의 실용적인 사용 사례를 살펴보세요. 지금까지 공부한 회귀 유형 중 어떤 작업에 더 적합할지 생각해 보세요. 어떤 것이 가장 잘 작동할까요?
[스탠포드의 이 논문](https://web.stanford.edu/~jurafsky/slp3/5.pdf)의 첫 몇 페이지를 읽고 로지스틱 회귀의 실용적인 사용 사례에 대해 알아보세요. 지금까지 공부한 회귀 유형 중 어떤 작업에 더 적합할지 생각해보세요. 어떤 것이 가장 잘 작동할까요?
## 과제
[이 회귀 다시 시도하기](assignment.md)
[이 회귀 다시 시도하기](assignment.md)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,65 +1,65 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2680c691fbdb6367f350761a275e2508",
"translation_date": "2025-09-03T23:44:56+00:00",
"original_hash": "e0b75f73e4a90d45181dc5581fe2ef5c",
"translation_date": "2025-09-05T10:50:13+00:00",
"source_file": "3-Web-App/1-Web-App/README.md",
"language_code": "ko"
}
-->
# 웹 앱을 만들어 ML 모델 사용하기
이 강의에서는 _지난 세기 동안의 UFO 목격 사례_라는 독특한 데이터 세트를 사용하여 ML 모델을 훈련합니다. 이 데이터는 NUFORC의 데이터베이스에서 가져왔습니다.
이 강의에서는 _지난 세기 동안의 UFO 목격_ 데이터를 사용하여 ML 모델을 훈련시킬 것입니다. 이 데이터는 NUFORC의 데이터베이스에서 가져왔습니다.
배울 내용:
- 훈련된 모델을 '피클링'하는 방법
- Flask 앱에서 모델을 사용하는 방법
노트북을 사용하여 데이터를 정리하고 모델을 훈련하는 작업을 계속 진행하겠지만, 이를 한 단계 더 발전시켜 웹 앱에서 모델을 사용하는 방법을 탐구할 수 있습니다.
노트북을 사용하여 데이터를 정리하고 모델을 훈련시키는 작업을 계속 진행할 것이지만, 이를 한 단계 더 발전시켜 웹 앱에서 모델을 사용하는 방법을 탐구할 것입니다.
이를 위해 Flask를 사용하여 웹 앱을 구축해야 합니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/17/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 앱 구축하기
ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있습니다. 웹 아키텍처는 모델 훈련 방식에 영향을 미칠 수 있습니다. 데이터 과학 팀이 훈련한 모델을 앱에서 사용해야 하는 비즈니스 환경을 상상해 보세요.
머신 러닝 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있습니다. 웹 아키텍처는 모델 훈련 방식에 영향을 미칠 수 있습니다. 데이터 과학 팀이 훈련한 모델을 앱에서 사용해야 하는 비즈니스 환경을 상상해 보세요.
### 고려 사항
다음과 같은 질문을 해야 합니다:
- **웹 앱인가 모바일 앱인가?** 모바일 앱을 구축하거나 IoT 환경에서 모델을 사용해야 한다면 [TensorFlow Lite](https://www.tensorflow.org/lite/)를 사용하여 Android 또는 iOS 앱에서 모델을 사용할 수 있습니다.
- **모델은 어디에 위치할 것인가?** 클라우드에 있거나 로컬에 있을 수 있습니다.
- **모델은 어디에 위치할 것인가?** 클라우드인가 로컬인가?
- **오프라인 지원.** 앱이 오프라인에서도 작동해야 하는가?
- **모델 훈련에 사용된 기술은 무엇인가?** 선택한 기술이 필요한 도구에 영향을 미칠 수 있습니다.
- **TensorFlow 사용.** 예를 들어 TensorFlow를 사용하여 모델을 훈련는 경우, [TensorFlow.js](https://www.tensorflow.org/js/)를 사용하여 웹 앱에서 모델을 사용할 수 있도록 변환할 수 있습니다.
- **PyTorch 사용.** [PyTorch](https://pytorch.org/)와 같은 라이브러리를 사용하여 모델을 구축하는 경우, [ONNX](https://onnx.ai/) (Open Neural Network Exchange) 형식으로 내보내 JavaScript 웹 앱에서 사용할 수 있습니다. 이 옵션은 Scikit-learn으로 훈련된 모델을 다루는 향후 강의에서 탐구할 예정입니다.
- **Lobe.ai 또는 Azure Custom Vision 사용.** [Lobe.ai](https://lobe.ai/) 또는 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott)과 같은 ML SaaS(Software as a Service) 시스템을 사용하여 모델을 훈련는 경우, 이 소프트웨어는 클라우드에서 온라인 애플리케이션이 쿼리할 수 있는 맞춤형 API를 구축하는 등 다양한 플랫폼으로 모델을 내보낼 수 있는 방법을 제공합니다.
- **모델을 훈련시킨 기술은 무엇인가?** 선택한 기술은 필요한 도구에 영향을 미칠 수 있습니다.
- **TensorFlow 사용.** 예를 들어 TensorFlow를 사용하여 모델을 훈련시키는 경우, [TensorFlow.js](https://www.tensorflow.org/js/)를 사용하여 웹 앱에서 모델을 사용할 수 있도록 변환할 수 있습니다.
- **PyTorch 사용.** [PyTorch](https://pytorch.org/)와 같은 라이브러리를 사용하여 모델을 구축하는 경우, [ONNX](https://onnx.ai/) (Open Neural Network Exchange) 형식으로 내보내 JavaScript 웹 앱에서 [Onnx Runtime](https://www.onnxruntime.ai/)을 사용할 수 있습니다. 이 옵션은 Scikit-learn으로 훈련된 모델을 다루는 향후 강의에서 탐구할 입니다.
- **Lobe.ai 또는 Azure Custom Vision 사용.** [Lobe.ai](https://lobe.ai/) 또는 [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott)과 같은 ML SaaS(Software as a Service) 시스템을 사용하여 모델을 훈련시키는 경우, 이 소프트웨어는 클라우드에서 온라인 애플리케이션이 쿼리할 수 있는 맞춤형 API를 구축하는 등 다양한 플랫폼으로 모델을 내보는 방법을 제공합니다.
또한 웹 브라우저에서 직접 모델을 훈련 수 있는 전체 Flask 웹 앱을 구축할 수도 있습니다. 이는 JavaScript 환경에서 TensorFlow.js를 사용하여도 가능합니다.
또한 웹 브라우저에서 직접 모델을 훈련시킬 수 있는 전체 Flask 웹 앱을 구축할 수도 있습니다. 이는 JavaScript 환경에서 TensorFlow.js를 사용하여도 가능합니다.
우리의 경우, Python 기반 노트북을 사용해 왔으므로, 노트북에서 훈련된 모델을 Python으로 구축된 웹 앱에서 읽을 수 있는 형식으로 내보내는 단계를 탐구해 보겠습니다.
## 도구
이 작업을 위해 필요한 도구는 Flask와 Pickle입니다. 둘 다 Python에서 실행됩니다.
이 작업을 위해 Flask와 Pickle이라는 두 가지 도구가 필요합니다. 둘 다 Python에서 실행됩니다.
✅ [Flask](https://palletsprojects.com/p/flask/)란 무엇인가요? Flask는 제작자들이 '마이크로 프레임워크'라고 정의한 것으로, Python과 템플릿 엔진을 사용하여 웹 페이지를 구축하는 웹 프레임워크의 기본 기능을 제공합니다. Flask를 사용하여 앱을 구축하는 연습을 하려면 [이 학습 모듈](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott)을 확인하세요.
✅ [Flask](https://palletsprojects.com/p/flask/)란 무엇인가요? Flask는 제작자들에 의해 '마이크로 프레임워크'로 정의되며, Python을 사용하여 웹 페이지를 구축하기 위한 템플릿 엔진과 웹 프레임워크의 기본 기능을 제공합니다. Flask를 사용하여 앱을 구축하는 연습을 하려면 [이 학습 모듈](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott)을 확인하세요.
✅ [Pickle](https://docs.python.org/3/library/pickle.html)이란 무엇인가요? Pickle 🥒은 Python 객체 구조를 직렬화하고 역직렬화하는 Python 모듈입니다. 모델을 '피클링'하면 웹에서 사용할 수 있도록 구조를 직렬화하거나 평탄화합니다. 주의하세요: Pickle은 본질적으로 안전하지 않으므로 파일을 '언피클링'하라는 요청을 받을 경우 주의해야 합니다. 피클링된 파일은 `.pkl` 확장자를 가집니다.
## 실습 - 데이터 정리하기
이번 강의에서는 [NUFORC](https://nuforc.org) (National UFO Reporting Center)에서 수집한 80,000건의 UFO 목격 데이터를 사용합니다. 이 데이터에는 흥미로운 목격 설명이 포함되어 있습니다. 예를 들어:
이번 강의에서는 [NUFORC](https://nuforc.org) (National UFO Reporting Center)에서 수집한 80,000건의 UFO 목격 데이터를 사용합니다. 이 데이터에는 흥미로운 UFO 목격 설명이 포함되어 있습니다. 예를 들어:
- **긴 설명 예시.** "밤에 풀밭에 빛이 비추는 가운데 한 남자가 빛 속에서 나타나 텍사스 인스트루먼트 주차장으로 달려갑니다."
- **짧은 설명 예시.** "빛이 우리를 쫓아왔습니다."
- **긴 설명 예시.** "밤에 풀밭에 빛이 비추고 그 빛에서 한 남자가 나타나 텍사스 인스트루먼트 주차장으로 달려간다."
- **짧은 설명 예시.** "빛이 우리를 쫓아왔다."
[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) 스프레드시트에는 목격이 발생한 `city`, `state`, `country`, 체의 `shape`, 그리고 `latitude``longitude`에 대한 열이 포함되어 있습니다.
[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) 스프레드시트에는 목격이 발생한 `city`, `state`, `country`, 체의 `shape`, 그리고 `latitude``longitude`에 대한 열이 포함되어 있습니다.
이 강의에 포함된 빈 [노트북](notebook.ipynb)에서:
이 강의에 포함된 빈 [노트북](../../../../3-Web-App/1-Web-App/notebook.ipynb)에서:
1. 이전 강의에서 했던 것처럼 `pandas`, `matplotlib`, `numpy`를 가져오고 ufos 스프레드시트를 가져옵니다. 샘플 데이터 세트를 확인할 수 있습니다:
@ -114,7 +114,7 @@ ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있
## 실습 - 모델 구축하기
이제 데이터를 훈련 및 테스트 그룹으로 나누어 모델을 훈련할 준비를 합니다.
이제 데이터를 훈련 및 테스트 그룹으로 나누어 모델을 훈련시킬 준비를 할 수 있습니다.
1. 훈련할 세 가지 특징을 X 벡터로 선택하고 y 벡터는 `Country`로 설정합니다. `Seconds`, `Latitude`, `Longitude`를 입력하여 국가 ID를 반환할 수 있도록 합니다.
@ -129,7 +129,7 @@ ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
1. 로지스틱 회귀를 사용하여 모델을 훈련니다:
1. 로지스틱 회귀를 사용하여 모델을 훈련시킵니다:
```python
from sklearn.metrics import accuracy_score, classification_report
@ -143,9 +143,9 @@ ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있
print('Accuracy: ', accuracy_score(y_test, predictions))
```
정확도는 **(약 95%)** 나쁘지 않습니다. 이는 `Country``Latitude/Longitude`가 상관관계가 있기 때문입니다.
정확도는 **(약 95%)** 나쁘지 않습니다. 이는 `Country``Latitude/Longitude`가 상관관계가 있기 때문입니다.
이 모델은 혁신적이지는 않지만, 정리된 원시 데이터를 사용하여 모델을 훈련고 이를 웹 앱에서 사용하는 좋은 연습이 됩니다.
이 모델은 혁신적이지는 않지만, 정리된 원시 데이터를 사용하여 모델을 훈련시키고 이를 웹 앱에서 사용하는 좋은 연습이 됩니다.
## 실습 - 모델 '피클링'하기
@ -164,7 +164,7 @@ print(model.predict([[50,44,-12]]))
## 실습 - Flask 앱 구축하기
이제 Flask 앱을 구축하여 모델을 호출하고 더 보기 좋은 방식으로 결과를 반환할 수 있습니다.
이제 Flask 앱을 구축하여 모델을 호출하고 더 시각적으로 보기 좋은 방식으로 결과를 반환할 수 있습니다.
1. _notebook.ipynb_ 파일 옆에 **web-app**이라는 폴더를 만듭니다. 이 폴더에는 _ufo-model.pkl_ 파일이 있어야 합니다.
@ -179,7 +179,7 @@ print(model.predict([[50,44,-12]]))
ufo-model.pkl
```
✅ 완성된 앱의 모습을 보려면 솔루션 폴더를 참조하세요.
✅ 완성된 앱의 보기 형태는 솔루션 폴더를 참조하세요.
1. _web-app_ 폴더에서 첫 번째 파일로 **requirements.txt**를 만듭니다. JavaScript 앱의 _package.json_처럼 이 파일은 앱에 필요한 종속성을 나열합니다. **requirements.txt**에 다음 줄을 추가합니다:
@ -202,7 +202,7 @@ print(model.predict([[50,44,-12]]))
pip install -r requirements.txt
```
1. 이제 앱을 완성하기 위해 세 개의 파일을 더 만니다:
1. 이제 앱을 완성하기 위해 세 개의 파일을 더 만들 준비가 되었습니다:
1. 루트에 **app.py**를 만듭니다.
2. _templates_ 디렉토리에 **index.html**을 만듭니다.
@ -277,9 +277,9 @@ print(model.predict([[50,44,-12]]))
</html>
```
이 파일의 템플릿을 살펴보세요. `{{}}`와 같은 변수 주위의 '머스태시' 구문을 확인할 수 있습니다. 이 변수는 앱에서 제공됩니다. 예를 들어 예측 텍스트: `{{}}`. 또한 `/predict` 경로에 예측을 게시하는 폼도 있습니다.
이 파일의 템플릿을 살펴보세요. 앱에서 제공될 변수들, 예를 들어 예측 텍스트 `{{}}` 주위의 '머스태시' 구문을 확인하세요. 또한 `/predict` 경로에 예측을 게시하는 폼이 있습니다.
이제 모델 소비와 예측 표시를 담당하는 Python 파일을 작성할 준비가 되었습니다:
마지막으로, 모델 소비와 예측 표시를 구동하는 Python 파일을 작성할 준비가 되었습니다:
1. `app.py`에 다음을 추가합니다:
@ -318,9 +318,9 @@ print(model.predict([[50,44,-12]]))
app.run(debug=True)
```
> 💡 팁: Flask를 사용하여 웹 앱을 실행할 때 [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode)를 추가하면 서버를 다시 시작하지 않고도 애플리케이션에 대한 변경 사항이 즉시 반영됩니다. 주의하세요! 프로덕션 앱에서는 이 모드를 활성화하지 마세요.
> 💡 팁: Flask를 사용하여 웹 앱을 실행할 때 [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode)를 추가하면 애플리케이션에 변경 사항을 적용할 때 서버를 다시 시작하지 않아도 즉시 반영됩니다. 주의하세요! 프로덕션 앱에서는 이 모드를 활성화하지 마세요.
`python app.py` 또는 `python3 app.py`를 실행하면 로컬에서 웹 서버가 시작되고 짧은 폼을 작성하여 UFO 목격이 어디에서 발생했는지에 대한 답을 얻을 수 있습니다!
`python app.py` 또는 `python3 app.py`를 실행하면 로컬에서 웹 서버가 시작되고, 짧은 폼을 작성하여 UFO 목격 위치에 대한 궁금증을 해결할 수 있습니다!
그 전에 `app.py`의 구성 요소를 살펴보세요:
@ -330,24 +330,24 @@ print(model.predict([[50,44,-12]]))
`/predict` 경로에서 폼이 게시되면 여러 가지 일이 발생합니다:
1. 폼 변수 수집되어 numpy 배열로 변환됩니다. 그런 다음 모델로 보내져 예측이 반환됩니다.
2. 우리가 표시하려는 국가들은 예측된 국가 코드에서 읽을 수 있는 텍스트로 다시 렌더링되며, 그 값이 index.html로 다시 보내져 템플릿에서 렌더링됩니다.
1. 폼 변수들이 수집되어 numpy 배열로 변환됩니다. 그런 다음 모델로 보내져 예측이 반환됩니다.
2. 표시할 국가들이 예측된 국가 코드에서 읽기 가능한 텍스트로 다시 렌더링되며, 해당 값이 index.html로 다시 보내져 템플릿에서 렌더링됩니다.
Flask와 피클링된 모델을 사용하여 모델을 사용하는 것은 비교적 간단합니다. 가장 어려운 점은 모델에서 예측을 얻기 위해 보내야 할 데이터의 형태를 이해하는 것입니다. 이는 모델이 어떻게 훈련되었는지에 따라 달라집니다. 이 모델은 예측을 얻기 위해 입력해야 할 세 가지 데이터 포인트를 가지고 있습니다.
전문적인 환경에서는 모델을 훈련는 사람들과 이를 웹 또는 모바일 앱에서 소비하는 사람들 간의 원활한 의사소통이 얼마나 중요한지 알 수 있습니다. 우리의 경우, 그 모든 작업을 한 사람이 수행합니다!
전문적인 환경에서는 모델을 훈련시키는 사람들과 이를 웹 또는 모바일 앱에서 소비하는 사람들 간의 원활한 의사소통이 얼마나 중요한지 알 수 있습니다. 우리의 경우, 그 사람은 바로 여러분입니다!
---
## 🚀 도전 과제
노트북에서 작업하고 모델을 Flask 앱으로 가져오는 대신, Flask 앱 내에서 모델을 훈련 수 있습니다! 데이터를 정리한 후 노트북의 Python 코드를 앱 내에서 `train`이라는 경로에서 모델을 훈련도록 변환해 보세요. 이 방법을 추구하는 장단점은 무엇인가요?
노트북에서 작업하고 모델을 Flask 앱으로 가져오는 대신, Flask 앱 내에서 모델을 훈련시킬 수 있습니다! 데이터를 정리한 후 노트북의 Python 코드를 앱 내에서 `train`이라는 경로에서 모델을 훈련시키도록 변환해 보세요. 이 방법을 추구하는 장단점은 무엇인가요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있습니다. JavaScript 또는 Python을 사용하여 ML을 활용하는 웹 앱을 구축할 수 있는 방법 목록을 작성해 보세요. 아키텍처를 고려하세요: 모델이 앱에 있어야 할까요, 아니면 클라우드에 있어야 할까요? 후자의 경우, 어떻게 접근할 수 있을까요? 적용된 ML 웹 솔루션에 대한 아키텍처 모델을 그려보세요.
ML 모델을 소비하는 웹 앱을 구축하는 방법은 여러 가지가 있습니다. JavaScript 또는 Python을 사용하여 머신 러닝을 활용하는 웹 앱을 구축할 수 있는 방법 목록을 작성해 보세요. 아키텍처를 고려하세요: 모델이 앱에 있어야 할까요, 아니면 클라우드에 있어야 할까요? 후자의 경우, 어떻게 접근할 수 있을까요? 적용된 ML 웹 솔루션에 대한 아키텍처 모델을 그려보세요.
## 과제

@ -1,17 +1,17 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "76438ce4e5d48982d48f1b55c981caac",
"translation_date": "2025-09-04T00:02:02+00:00",
"original_hash": "aaf391d922bd6de5efba871d514c6d47",
"translation_date": "2025-09-05T10:52:28+00:00",
"source_file": "4-Classification/1-Introduction/README.md",
"language_code": "ko"
}
-->
# 분류 소개
이 네 가지 강의에서는 고전적인 머신 러닝의 핵심 주제인 _분류_를 탐구합니다. 아시아와 인도의 다양한 요리 데이터를 사용하여 여러 분류 알고리즘을 살펴볼 것입니다. 배가 고프셨으면 좋겠네요!
이 네 가지 강의에서는 고전적인 머신 러닝의 핵심 주제인 _분류_를 탐구합니다. 아시아와 인도의 다양한 요리 데이터를 사용하여 여러 분류 알고리즘을 살펴볼 것입니다. 배가 고프셨다면 잘 오셨습니다!
![한 꼬집만!](../../../../translated_images/pinch.1b035ec9ba7e0d408313b551b60c721c9c290b2dd2094115bc87e6ddacd114c9.ko.png)
![한 꼬집만!](../../../../4-Classification/1-Introduction/images/pinch.png)
> 이 강의에서 범아시아 요리를 축하하세요! 이미지 제공: [Jen Looper](https://twitter.com/jenlooper)
@ -23,46 +23,46 @@ CO_OP_TRANSLATOR_METADATA:
기억하세요:
- **선형 회귀**는 변수 간의 관계를 예측하고 새로운 데이터 포인트가 그 선과의 관계에서 어디에 위치할지 정확히 예측하는 데 도움을 줍니다. 예를 들어, _9월과 12월에 호박 가격이 얼마일지_ 예측할 수 있습니다.
- **로지스틱 회귀**는 "이진 카테고리"를 발견하는 데 도움을 줍니다: 가격대에서, _이 호박이 주황색인지 아닌지_를 예측할 수 있습니다.
- **선형 회귀**는 변수 간의 관계를 예측하고 새로운 데이터 포인트가 그 선과 어떤 관계에 있는지 정확히 예측할 수 있도록 도와줍니다. 예를 들어, _9월과 12월에 호박 가격이 얼마일지_ 예측할 수 있습니다.
- **로지스틱 회귀**는 "이진 카테고리"를 발견하는 데 도움을 줍니다: 특정 가격대에서, _이 호박이 주황색인지 아닌지_를 예측할 수 있습니다.
분류는 다양한 알고리즘을 사용하여 데이터 포인트의 레이블이나 클래스를 결정하는 방법을 제공합니다. 이 요리 데이터를 사용하여 재료 그룹을 관찰함으로써 해당 요리의 출처를 결정할 수 있는지 살펴보겠습니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> ### [이 강의는 R에서도 제공됩니다!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html)
### 소개
분류는 머신 러닝 연구자와 데이터 과학자의 기본 활동 중 하나입니다. 간단한 이진 값 분류("이 이메일이 스팸인지 아닌지")에서 복잡한 이미지 분류 및 컴퓨터 비전을 사용한 세분화까지, 데이터를 클래스별로 정렬하고 질문을 던질 수 있는 능력은 항상 유용합니다.
분류는 머신 러닝 연구자와 데이터 과학자의 기본 활동 중 하나입니다. 이진 값의 기본 분류("이 이메일이 스팸인지 아닌지")부터 컴퓨터 비전을 사용한 복잡한 이미지 분류 및 세분화까지, 데이터를 클래스별로 정렬하고 질문을 던질 수 있는 능력은 항상 유용합니다.
과정을 좀 더 과학적으로 설명하자면, 분류 방법은 입력 변수와 출력 변수 간의 관계를 매핑할 수 있는 예측 모델을 생성합니다.
![이진 vs. 다중 클래스 분류](../../../../translated_images/binary-multiclass.b56d0c86c81105a697dddd82242c1d11e4d78b7afefea07a44627a0f1111c1a9.ko.png)
![이진 vs. 다중 클래스 분류](../../../../4-Classification/1-Introduction/images/binary-multiclass.png)
> 분류 알고리즘이 처리해야 할 이진 문제와 다중 클래스 문제. 인포그래픽 제공: [Jen Looper](https://twitter.com/jenlooper)
데이터를 정리하고 시각화하며 머신 러닝 작업을 준비하기 전에, 머신 러닝이 데이터를 분류하는 데 활용될 수 있는 다양한 방법에 대해 알아봅시다.
데이터를 정리하고 시각화하며 머신 러닝 작업을 준비하기 전에, 머신 러닝이 데이터를 분류하는 다양한 방법에 대해 조금 배워봅시다.
[통계](https://wikipedia.org/wiki/Statistical_classification)에서 파생된 고전적인 머신 러닝을 사용한 분류는 `smoker`, `weight`, `age`와 같은 특징을 사용하여 _X 질병에 걸릴 가능성_을 결정합니다. 이전에 수행한 회귀 연습과 유사한 지도 학습 기법으로, 데이터는 레이블이 지정되어 있으며 ML 알고리즘은 이러한 레이블을 사용하여 데이터셋의 클래스(또는 '특징')를 분류하고 그룹이나 결과에 할당합니다.
[통계](https://wikipedia.org/wiki/Statistical_classification)에서 유래된 고전적인 머신 러닝을 사용한 분류는 `smoker`, `weight`, `age`와 같은 특징을 사용하여 _X 질병에 걸릴 가능성_을 결정합니다. 이전에 수행한 회귀 연습과 유사한 지도 학습 기법으로, 데이터는 레이블이 지정되어 있으며 머신 러닝 알고리즘은 이러한 레이블을 사용하여 데이터셋의 클래스(또는 '특징')를 분류하고 그룹이나 결과에 할당합니다.
✅ 요리에 대한 데이터셋을 상상해 보세요. 다중 클래스 모델은 어떤 질문에 답할 수 있을까요? 이진 모델은 어떤 질문에 답할 수 있을까요? 특정 요리가 페그릭을 사용할 가능성을 결정하고 싶다면 어떻게 할까요? 아니면 스타 아니스, 아티초크, 콜리플라워, 고추냉이가 가득 든 장바구니를 선물받았을 때, 전형적인 인도 요리를 만들 수 있을지 알고 싶다면 어떻게 할까요?
✅ 요리에 대한 데이터셋을 상상해 보세요. 다중 클래스 모델은 어떤 질문에 답할 수 있을까요? 이진 모델은 어떤 질문에 답할 수 있을까요? 특정 요리가 페그릭을 사용할 가능성을 결정하고 싶다면 어떻게 할까요? 아니면 스타 아니스, 아티초크, 콜리플라워, 고추냉이가 가득 든 장바구니를 선물받았을 때, 전형적인 인도 요리를 만들 수 있을지 알고 싶다면 어떻게 할까요?
[![미스터리 바구니](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "미스터리 바구니")
> 🎥 위 이미지를 클릭하면 'Chopped' 쇼의 미스터리 바구니에서 셰프들이 무작위 재료로 요리를 만드는 과정을 볼 수 있습니다. 머신 러닝 모델이 도움이 되었을지도 모르겠네요!
> 🎥 위 이미지를 클릭하면 영상을 볼 수 있습니다. 'Chopped'라는 쇼의 전체 전제는 '미스터리 바구니'로, 셰프들이 무작위로 선택된 재료로 요리를 만들어야 합니다. 머신 러닝 모델이 도움이 되었을지도 모르겠네요!
## 안녕하세요, '분류기'
이 요리 데이터셋에서 우리가 묻고 싶은 질문은 사실 **다중 클래스 질문**입니다. 여러 국가 요리 중에서, 주어진 재료 그룹이 어떤 클래스에 속할지 알아보는 것입니다.
이 요리 데이터셋에서 우리가 묻고 싶은 질문은 사실 **다중 클래스 질문**입니다. 여러 국가 요리 중에서, 주어진 재료 그룹이 어떤 클래스에 속할지 결정해야 합니다.
Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할 수 있는 여러 알고리즘을 제공합니다. 다음 두 강의에서는 이러한 알고리즘 중 몇 가지를 배울 것입니다.
## 실습 - 데이터 정리 및 균형 맞추기
이 프로젝트를 시작하기 전에 첫 번째 작업은 데이터를 정리하고 **균형을 맞추는 것**입니다. 이 폴더의 루트에 있는 빈 _notebook.ipynb_ 파일에서 시작하세요.
이 프로젝트를 시작하기 전에 첫 번째 작업은 데이터를 정리하고 **균형을 맞추는 것**입니다. 더 나은 결과를 얻기 위해 데이터를 정리하세요. 이 폴더의 루트에 있는 빈 _notebook.ipynb_ 파일에서 시작하세요.
첫 번째로 설치해야 할 것은 [imblearn](https://imbalanced-learn.org/stable/)입니다. 이 패키지는 Scikit-learn의 일부로, 데이터를 더 잘 균형 맞추는 데 도움을 줍니다(이 작업에 대해 곧 더 배우게 될 것입니다).
첫 번째로 설치해야 할 것은 [imblearn](https://imbalanced-learn.org/stable/)입니다. 이는 데이터를 더 잘 균형 맞출 수 있도록 도와주는 Scikit-learn 패키지입니다(이 작업에 대해 곧 더 배우게 될 것입니다).
1. `imblearn`을 설치하려면 `pip install`을 실행하세요:
@ -70,7 +70,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
pip install imblearn
```
1. 데이터를 가져오고 시각화하는 데 필요한 패키지를 가져오고, `imblearn`에서 `SMOTE`를 가져오세요.
1. 데이터를 가져오고 시각화하기 위해 필요한 패키지를 가져오세요. 또한 `imblearn`에서 `SMOTE`를 가져오세요.
```python
import pandas as pd
@ -126,7 +126,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
## 실습 - 요리에 대해 배우기
이제 작업이 더 흥미로워지기 시작합니다. 요리별 데이터 분포를 알아봅시다.
이제 작업이 더 흥미로워지기 시작합니다. 요리별 데이터 분포를 알아봅시다.
1. `barh()`를 호출하여 데이터를 막대로 시각화하세요:
@ -134,7 +134,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
df.cuisine.value_counts().plot.barh()
```
![요리 데이터 분포](../../../../translated_images/cuisine-dist.d0cc2d551abe5c25f83d73a5f560927e4a061e9a4560bac1e97d35682ef3ca6d.ko.png)
![요리 데이터 분포](../../../../4-Classification/1-Introduction/images/cuisine-dist.png)
요리의 수는 유한하지만 데이터 분포는 고르지 않습니다. 이를 수정할 수 있습니다! 수정하기 전에 조금 더 탐색해 보세요.
@ -166,9 +166,9 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
## 재료 발견하기
이제 데이터를 더 깊이 탐구하여 요리별로 일반적인 재료를 알아볼 수 있습니다. 혼란을 초래하는 반복 데이터를 제거해야 하므로 이 문제에 대해 알아봅시다.
이제 데이터를 더 깊이 탐구하여 요리별로 일반적인 재료를 알아볼 수 있습니다. 혼란을 초래하는 반복 데이터를 제거해야 하므로 이 문제에 대해 배워봅시다.
1. Python에서 `create_ingredient()` 함수를 만들어 재료 데이터프레임을 생성하세요. 이 함수는 도움이 되지 않는 열을 제거하고 재료를 개수별로 정렬합니다:
1. Python에서 `create_ingredient()`라는 함수를 만들어 재료 데이터프레임을 생성하세요. 이 함수는 도움이 되지 않는 열을 제거하고 재료를 개수별로 정렬합니다:
```python
def create_ingredient_df(df):
@ -179,7 +179,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
return ingredient_df
```
이제 이 함수를 사용하여 요리별로 가장 인기 있는 상위 10개 재료를 확인할 수 있습니다.
이제 이 함수를 사용하여 요리별로 가장 인기 있는 상위 10개 재료를 파악할 수 있습니다.
1. `create_ingredient()`를 호출하고 `barh()`를 호출하여 시각화하세요:
@ -188,43 +188,43 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
thai_ingredient_df.head(10).plot.barh()
```
![태국](../../../../translated_images/thai.0269dbab2e78bd38a132067759fe980008bdb80b6d778e5313448dbe12bed846.ko.png)
![태국 요리](../../../../4-Classification/1-Introduction/images/thai.png)
1. 일본 데이터를 동일하게 처리하세요:
1. 일본 데이터를 동일한 방식으로 처리하세요:
```python
japanese_ingredient_df = create_ingredient_df(japanese_df)
japanese_ingredient_df.head(10).plot.barh()
```
![일본](../../../../translated_images/japanese.30260486f2a05c463c8faa62ebe7b38f0961ed293bd9a6db8eef5d3f0cf17155.ko.png)
![일본 요리](../../../../4-Classification/1-Introduction/images/japanese.png)
1. 중국 재료를 확인하세요:
1. 중국 요리 재료를 시각화하세요:
```python
chinese_ingredient_df = create_ingredient_df(chinese_df)
chinese_ingredient_df.head(10).plot.barh()
```
![중국](../../../../translated_images/chinese.e62cafa5309f111afd1b54490336daf4e927ce32bed837069a0b7ce481dfae8d.ko.png)
![중국 요리](../../../../4-Classification/1-Introduction/images/chinese.png)
1. 인도 재료를 시각화하세요:
1. 인도 요리 재료를 시각화하세요:
```python
indian_ingredient_df = create_ingredient_df(indian_df)
indian_ingredient_df.head(10).plot.barh()
```
![인도](../../../../translated_images/indian.2c4292002af1a1f97a4a24fec6b1459ee8ff616c3822ae56bb62b9903e192af6.ko.png)
![인도 요리](../../../../4-Classification/1-Introduction/images/indian.png)
1. 마지막으로 한국 재료를 시각화하세요:
1. 마지막으로 한국 요리 재료를 시각화하세요:
```python
korean_ingredient_df = create_ingredient_df(korean_df)
korean_ingredient_df.head(10).plot.barh()
```
![한국](../../../../translated_images/korean.4a4f0274f3d9805a65e61f05597eeaad8620b03be23a2c0a705c023f65fad2c0.ko.png)
![한국 요리](../../../../4-Classification/1-Introduction/images/korean.png)
1. 이제 `drop()`을 호출하여 서로 다른 요리 간 혼란을 초래하는 가장 일반적인 재료를 제거하세요:
@ -238,7 +238,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
## 데이터셋 균형 맞추기
데이터를 정리한 후에는 [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "Synthetic Minority Over-sampling Technique" -를 사용하여 데이터를 균형 맞추세요.
데이터를 정리한 후, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "Synthetic Minority Over-sampling Technique"를 사용하여 데이터를 균형 맞추세요.
1. `fit_resample()`을 호출하세요. 이 전략은 보간법을 통해 새로운 샘플을 생성합니다.
@ -247,7 +247,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)
```
데이터를 균형 맞추면 분류 시 더 나은 결과를 얻을 수 있습니다. 이진 분류를 생각해 보세요. 대부분의 데이터가 한 클래스에 속한다면, ML 모델은 단순히 데이터가 더 많기 때문에 해당 클래스를 더 자주 예측할 것입니다. 데이터를 균형 맞추면 이러한 불균형을 제거하는 데 도움이 됩니다.
데이터를 균형 맞춤으로써 분류 시 더 나은 결과를 얻을 수 있습니다. 이진 분류를 생각해 보세요. 대부분의 데이터가 한 클래스에 속한다면, 머신 러닝 모델은 단순히 데이터가 더 많기 때문에 해당 클래스를 더 자주 예측할 것입니다. 데이터를 균형 맞추면 이러한 불균형을 제거하는 데 도움이 됩니다.
1. 이제 재료별 레이블 수를 확인할 수 있습니다:
@ -273,7 +273,7 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
Name: cuisine, dtype: int64
```
데이터가 깔끔하고 균형 잡혀 있으며 매우 맛있어 보입니다!
데이터가 깔끔하고 균형 잡혔으며 매우 맛있어졌습니다!
1. 마지막 단계는 레이블과 특징을 포함한 균형 잡힌 데이터를 새 데이터프레임에 저장하여 파일로 내보내는 것입니다:
@ -297,11 +297,11 @@ Scikit-learn은 문제 유형에 따라 데이터를 분류하는 데 사용할
이 커리큘럼에는 여러 흥미로운 데이터셋이 포함되어 있습니다. `data` 폴더를 탐색하여 이진 또는 다중 클래스 분류에 적합한 데이터셋이 있는지 확인하세요. 이 데이터셋에 대해 어떤 질문을 던질 수 있을까요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
SMOTE의 API를 탐하세요. 어떤 사용 사례에 가장 적합하며, 어떤 문제를 해결할 수 있을까요?
SMOTE의 API를 탐하세요. 어떤 사용 사례에 가장 적합하며, 어떤 문제를 해결할 수 있을까요?
## 과제
@ -310,4 +310,4 @@ SMOTE의 API를 탐구하세요. 어떤 사용 사례에 가장 적합하며,
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,26 +1,26 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9579f42e3ff5114c58379cc9e186a828",
"translation_date": "2025-09-03T23:51:03+00:00",
"original_hash": "1a6e9e46b34a2e559fbbfc1f95397c7b",
"translation_date": "2025-09-05T10:50:49+00:00",
"source_file": "4-Classification/2-Classifiers-1/README.md",
"language_code": "ko"
}
-->
# 요리 분류기 1
이 강의에서는 이전 강의에서 저장한 균형 잡히고 깨끗한 요리 데이터셋을 사용하게 됩니다.
이 강의에서는 이전 강의에서 저장한 균형 잡히고 깨끗한 요리 데이터셋을 사용니다.
이 데이터셋을 다양한 분류기와 함께 사용하여 _재료 그룹을 기반으로 특정 국가의 요리를 예측_합니다. 이를 통해 분류 작업에 알고리즘을 활용하는 방법에 대해 더 깊이 배우게 될 것입니다.
이 데이터셋을 다양한 분류기와 함께 사용하여 _재료 그룹을 기반으로 특정 국가의 요리를 예측_합니다. 이를 통해 분류 작업에 알고리즘을 활용하는 방법에 대해 더 많이 배우게 됩니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/21/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
# 준비
[Lesson 1](../1-Introduction/README.md)을 완료했다고 가정하고, _cleaned_cuisines.csv_ 파일이 이 네 개의 강의를 위해 루트 `/data` 폴더에 존재하는지 확인하세요.
[Lesson 1](../1-Introduction/README.md)을 완료했다고 가정하고, _cleaned_cuisines.csv_ 파일이 이 네 강의를 위한 루트 `/data` 폴더에 존재하는지 확인하세요.
## 연습 - 국가별 요리 예측하기
1. 이 강의의 _notebook.ipynb_ 폴더에서 Pandas 라이브러리와 함께 해당 파일을 가져옵니다:
1. 이 강의의 _notebook.ipynb_ 폴더에서 Pandas 라이브러리와 함께 해당 파일을 가져옵니다:
```python
import pandas as pd
@ -74,7 +74,7 @@ CO_OP_TRANSLATOR_METADATA:
cuisines_feature_df.head()
```
특징 데이터는 다음과 같이 보일 것입니다:
특징 데이터는 다음과 같이 보입니다:
| | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | artemisia | artichoke | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
| ---: | -----: | -------: | ----: | ---------: | ----: | -----------: | ------: | -------: | --------: | --------: | ---: | ------: | ----------: | ---------: | ----------------------: | ---: | ---: | ---: | ----: | -----: | -------: |
@ -90,7 +90,7 @@ CO_OP_TRANSLATOR_METADATA:
데이터가 깨끗하고 훈련 준비가 되었으니, 어떤 알고리즘을 사용할지 결정해야 합니다.
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)
@ -98,56 +98,56 @@ Scikit-learn은 분류를 지도 학습(Supervised Learning)으로 분류하며,
- 최근접 이웃(Nearest Neighbors)
- 가우시안 프로세스(Gaussian Processes)
- 결정 트리(Decision Trees)
- 앙상블 방법(Ensemble methods, 투표 분류기 포함)
- 앙상블 방법(Ensemble methods, 투표 분류기)
- 다중 클래스 및 다중 출력 알고리즘(다중 클래스 및 다중 레이블 분류, 다중 클래스-다중 출력 분류)
> [신경망을 사용하여 데이터를 분류](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)할 수도 있지만, 이는 이 강의의 범위를 벗어납니다.
> [신경망을 사용하여 데이터를 분류](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification)할 수도 있지만, 이는 이 강의의 범위를 벗어납니다.
### 어떤 분류기를 선택할까?
그렇다면 어떤 분류기를 선택해야 할까요? 종종 여러 분류기를 실행해보고 좋은 결과를 찾는 것이 테스트 방법이 될 수 있습니다. Scikit-learn은 KNeighbors, SVC 두 가지 방식, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB 및 QuadraticDiscriminationAnalysis를 비교한 [비교 자료](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)를 제공합니다. 결과는 시각화되어 있습니다:
그렇다면 어떤 분류기를 선택해야 할까요? 종종 여러 분류기를 실행해보고 좋은 결과를 찾는 것이 테스트 방법입니다. Scikit-learn은 [비교 예제](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html)를 제공하며, KNeighbors, SVC 두 가지 방식, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB 및 QuadraticDiscriminationAnalysis를 비교하여 결과를 시각화합니다:
![분류기 비교](../../../../translated_images/comparison.edfab56193a85e7fdecbeaa1b1f8c99e94adbf7178bed0de902090cf93d6734f.ko.png)
![분류기 비교](../../../../4-Classification/2-Classifiers-1/images/comparison.png)
> Scikit-learn 문서에서 생성된 플롯
> 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 Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott)를 따르는 것입니다. 여기에서 다중 클래스 문제에 대해 몇 가지 선택지가 있다는 것을 알 수 있습니다:
![다중 클래스 문제를 위한 치트 시트](../../../../translated_images/cheatsheet.07a475ea444d22234cb8907a3826df5bdd1953efec94bd18e4496f36ff60624a.ko.png)
> Microsoft의 알고리즘 치트 시트의 일부, 다중 클래스 분류 옵션을 설명합니다.
![다중 클래스 문제를 위한 치트 시트](../../../../4-Classification/2-Classifiers-1/images/cheatsheet.png)
> Microsoft의 알고리즘 치트 시트의 일부, 다중 클래스 분류 옵션을 설명
✅ 이 치트 시트를 다운로드하여 출력하고 벽에 걸어두세요!
✅ 이 치트 시트를 다운로드하고, 출력하여 벽에 걸어두세요!
### 추론
제약 조건을 고려하여 다양한 접근 방식을 추론해 봅시다:
제약 조건을 고려하여 다양한 접근을 추론해 봅시다:
- **신경망은 너무 무겁다**. 깨끗하지만 최소한의 데이터셋과 로컬 노트북을 통해 훈련을 실행한다는 점을 고려할 때, 신경망은 이 작업에 너무 무겁습니다.
- **진 분류기는 사용하지 않는다**. 이진 분류기를 사용하지 않으므로 one-vs-all은 제외됩니다.
- **중 클래스 분류기는 사용하지 않는다**. 이중 클래스 분류기를 사용하지 않으므로 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` 값과 함께 사용할 수 있는 것은 아닙니다.
문서에 따르면, 다중 클래스의 경우 훈련 알고리즘은:
- **one-vs-rest (OvR) 방식**을 사용합니다. `multi_class` 옵션이 `ovr`로 설정된 경우
- **교차 엔트로피 손실**을 사용합니다. `multi_class` 옵션이 `multinomial`로 설정된 경우 (`multinomial` 옵션은 현재 lbfgs, sag, saga, newton-cg solver에서만 지원됩니다).
- **one-vs-rest (OvR) 방식**을 사용합니다, 만약 `multi_class` 옵션이 `ovr`로 설정된 경우
- **교차 엔트로피 손실**을 사용합니다, 만약 `multi_class` 옵션이 `multinomial`로 설정된 경우. (현재 `multinomial` 옵션은 lbfgs, sag, saganewton-cg solver에서만 지원됩니다.)
> 🎓 여기서 '방식'은 '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).
Scikit-learn은 solver가 다양한 데이터 구조에서 발생하는 문제를 어떻게 처리하는지 설명하는 다음 표를 제공합니다:
Scikit-learn은 solver가 다양한 데이터 구조에서 발생하는 다양한 문제를 어떻게 처리하는지 설명하는 표를 제공합니다:
![solver](../../../../translated_images/solvers.5fc648618529e627dfac29b917b3ccabda4b45ee8ed41b0acb1ce1441e8d1ef1.ko.png)
![solver](../../../../4-Classification/2-Classifiers-1/images/solvers.png)
## 연습 - 데이터 나누기
@ -160,7 +160,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## 연습 - 로지스틱 회귀 적용하기
다중 클래스 사례를 사용하고 있으므로 어떤 _방식_을 사용할지와 어떤 _solver_를 설정할지 선택해야 합니다. 다중 클래스 설정과 **liblinear** solver를 사용하여 LogisticRegression을 훈련하세요.
다중 클래스의 경우, 어떤 _방식_을 사용할지와 어떤 _solver_를 설정할지 선택해야 합니다. 다중 클래스 설정과 **liblinear** solver를 사용하여 LogisticRegression을 훈련하세요.
1. `multi_class``ovr`로 설정하고 solver를 `liblinear`로 설정하여 로지스틱 회귀를 생성하세요:
@ -173,7 +173,7 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
```
✅ 기본값으로 자주 설정되는 `lbfgs`와 같은 다른 solver를 시도해보세요.
> 참고로, 데이터가 필요할 때 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 함수를 사용하여 데이터를 평탄화하세요.
> 참고로, 데이터가 필요할 때 평탄화하려면 Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) 함수를 사용하세요.
정확도가 **80%** 이상으로 좋습니다!
1. 데이터의 한 행(#50)을 테스트하여 이 모델의 작동을 확인할 수 있습니다:
@ -236,13 +236,13 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
## 🚀도전 과제
이번 수업에서는 정된 데이터를 사용하여 재료 목록을 기반으로 국가별 요리를 예측하는 머신 러닝 모델을 구축했습니다. Scikit-learn이 제공하는 다양한 데이터 분류 옵션을 읽어보며 시간을 가져보세요. 'solver' 개념을 더 깊이 탐구하여 내부적으로 어떤 일이 일어나는지 이해해 보세요.
이번 수업에서는 정된 데이터를 사용하여 재료 목록을 기반으로 국가별 요리를 예측하는 머신 러닝 모델을 구축했습니다. Scikit-learn이 데이터를 분류하기 위해 제공하는 다양한 옵션을 읽어보세요. 'solver' 개념을 더 깊이 탐구하여 내부적으로 어떤 일이 일어나는지 이해해 보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/22/)
## [강의 후 퀴즈](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)
@ -250,4 +250,4 @@ X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisine
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,45 +1,45 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "808a71076f76ae8f5458862a8edd9215",
"translation_date": "2025-09-03T23:58:30+00:00",
"original_hash": "49047911108adc49d605cddfb455749c",
"translation_date": "2025-09-05T10:52:05+00:00",
"source_file": "4-Classification/3-Classifiers-2/README.md",
"language_code": "ko"
}
-->
# 요리 분류기 2
이 두 번째 분류 수업에서는 숫자 데이터를 분류하는 더 많은 방법을 탐구합니다. 또한, 특정 분류기를 선택했을 때의 결과에 대해 배우게 됩니다.
이 두 번째 분류 수업에서는 숫자 데이터를 분류하는 더 많은 방법을 탐구합니다. 또한 하나의 분류기를 선택하는 것이 다른 분류기를 선택하는 것에 비해 어떤 영향을 미치는지 배우게 됩니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/23/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
### 사전 요구사항
### 사전 요구 사항
이전 수업을 완료하고, 이 4개 수업 폴더의 루트에 있는 `data` 폴더에 _cleaned_cuisines.csv_라는 정리된 데이터셋이 있다고 가정합니다.
이전 수업을 완료하고, 이 4개 수업 폴더의 루트에 있는 `data` 폴더에 _cleaned_cuisines.csv_라는 정리된 데이터셋이 있다고 가정합니다.
### 준비
정리된 데이터셋을 _notebook.ipynb_ 파일에 로드하고, 이를 X와 y 데이터프레임으로 나누어 모델 구축 프로세스를 준비했습니다.
_노트북.ipynb_ 파일에 정리된 데이터셋을 로드하고, 이를 X와 y 데이터프레임으로 나누어 모델 구축 프로세스를 준비했습니다.
## 분류 지도
이전에 Microsoft의 치트 시트를 사용하여 데이터를 분류하는 다양한 옵션에 대해 배웠습니다. Scikit-learn은 이와 유사하지만 더 세부적인 치트 시트를 제공하여 추정기(분류기의 또 다른 용어)를 좁히는 데 도움을 줄 수 있습니다:
이전에 Microsoft의 치트 시트를 사용하여 데이터를 분류하는 다양한 옵션에 대해 배웠습니다. Scikit-learn은 더 세부적인 치트 시트를 제공하며, 이를 통해 분류기를 더 좁혀 선택할 수 있습니다:
![Scikit-learn의 ML 지도](../../../../translated_images/map.e963a6a51349425ab107b38f6c7307eb4c0d0c7ccdd2e81a5e1919292bab9ac7.ko.png)
> : [온라인에서 이 지도를 방문](https://scikit-learn.org/stable/tutorial/machine_learning_map/)하여 경로를 따라가며 문서를 읽어보세요.
![Scikit-learn의 ML 지도](../../../../4-Classification/3-Classifiers-2/images/map.png)
> Tip: [온라인에서 이 지도를 방문](https://scikit-learn.org/stable/tutorial/machine_learning_map/)하여 경로를 클릭하며 문서를 읽어보세요.
### 계획
이 지도는 데이터를 명확히 이해한 후 경로를 따라가며 결정을 내리는 데 매우 유용합니다:
이 지도는 데이터를 명확히 이해한 후 경로를 따라 결정을 내리는 데 매우 유용합니다:
- 샘플이 50개 이상입니다.
- 카테고리를 예측하고 싶습니다.
- 라벨이 있는 데이터가 있습니다.
- 샘플이 100K 미만입니다.
- ✨ Linear SVC를 선택할 수 있습니다.
- 이것이 작동하지 않으면, 숫자 데이터가 있으므로
- ✨ KNeighbors Classifier를 시도할 수 있습니다.
- 이것이 작동하지 않으면 ✨ SVC와 ✨ Ensemble Classifiers를 시도할 수 있습니다.
- 샘플이 50개 이상 있음
- 카테고리를 예측하고 싶
- 라벨이 있는 데이터가 있
- 샘플이 100K개 미만임
- ✨ Linear SVC를 선택할 수 있
- 작동하지 않을 경우, 숫자 데이터가 있으므로
- ✨ KNeighbors Classifier를 시도할 수 있
- 작동하지 않을 경우, ✨ SVC와 ✨ Ensemble Classifiers를 시도할 수 있음
이 경로를 따라가는 것은 매우 유용합니다.
@ -59,7 +59,7 @@ CO_OP_TRANSLATOR_METADATA:
import numpy as np
```
1. 훈련 데이터와 테스트 데이터를 나누세요:
1. 학습 데이터와 테스트 데이터를 나누세요:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
@ -67,7 +67,7 @@ CO_OP_TRANSLATOR_METADATA:
## Linear SVC 분류기
Support-Vector Clustering(SVC)는 Support-Vector Machines(SVM) ML 기술의 하위 기술입니다(아래에서 더 알아보세요). 이 방법에서는 라벨을 클러스터링하는 방법을 결정하기 위해 '커널'을 선택할 수 있습니다. 'C' 매개변수는 '정규화'를 의미하며 매개변수의 영향을 조정합니다. 커널은 [여러 가지](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) 중 하나를 선택할 수 있습니다. 여기서는 'linear'로 설정하여 Linear SVC를 활용합니다. 확률은 기본적으로 'false'로 설정되며, 여기서는 확률 추정을 수집하기 위해 'true'로 설정합니다. 데이터를 섞어 확률을 얻기 위해 랜덤 상태를 '0'으로 설정합니다.
Support-Vector Clustering(SVC)는 Support-Vector Machines(SVM) 기술의 하위 방법입니다(아래에서 더 알아보세요). 이 방법에서는 '커널'을 선택하여 라벨을 클러스터링하는 방식을 결정할 수 있습니다. 'C' 매개변수는 '정규화'를 의미하며 매개변수의 영향을 조정합니다. 커널은 [여러 가지](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC) 중 하나를 선택할 수 있으며, 여기서는 'linear'로 설정하여 Linear SVC를 활용합니다. 확률은 기본적으로 'false'로 설정되며, 여기서는 확률 추정을 수집하기 위해 'true'로 설정합니다. 데이터를 섞어 확률을 얻기 위해 랜덤 상태를 '0'으로 설정합니다.
### 연습 - Linear SVC 적용하기
@ -83,7 +83,7 @@ Support-Vector Clustering(SVC)는 Support-Vector Machines(SVM) ML 기술의 하
}
```
2. Linear SVC를 사용하여 모델을 훈련하고 보고서를 출력하세요:
2. Linear SVC를 사용하여 모델을 학습시키고 보고서를 출력하세요:
```python
n_classifiers = len(classifiers)
@ -116,7 +116,7 @@ Support-Vector Clustering(SVC)는 Support-Vector Machines(SVM) ML 기술의 하
## K-Neighbors 분류기
K-Neighbors는 ML 방법의 "이웃" 계열에 속하며, 지도 학습과 비지도 학습 모두에 사용할 수 있습니다. 이 방법에서는 미리 정의된 수의 포인트를 생성하고 데이터를 이러한 포인트 주변에 모아 일반화된 라벨을 예측할 수 있습니다.
K-Neighbors는 ML 방법의 "이웃" 계열에 속하며, 지도 학습과 비지도 학습 모두에 사용할 수 있습니다. 이 방법에서는 미리 정의된 수의 점을 생성하고, 데이터가 이러한 점 주위에 모여 일반화된 라벨을 예측할 수 있도록 합니다.
### 연습 - K-Neighbors 분류기 적용하기
@ -149,13 +149,13 @@ K-Neighbors는 ML 방법의 "이웃" 계열에 속하며, 지도 학습과 비
## Support Vector 분류기
Support-Vector 분류기는 [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) 계열의 ML 방법에 속하며, 분류 및 회귀 작업에 사용됩니다. SVM은 "훈련 예제를 공간의 포인트로 매핑"하여 두 카테고리 간의 거리를 최대화합니다. 이후 데이터는 이 공간에 매핑되어 카테고리를 예측할 수 있습니다.
Support-Vector 분류기는 [Support-Vector Machine](https://wikipedia.org/wiki/Support-vector_machine) 계열의 ML 방법에 속하며, 분류 및 회귀 작업에 사용됩니다. SVM은 "훈련 예제를 공간의 점으로 매핑"하여 두 카테고리 간의 거리를 최대화합니다. 이후 데이터는 이 공간에 매핑되어 카테고리를 예측할 수 있습니다.
### 연습 - Support Vector 분류기 적용하기
Support Vector 분류기를 사용하여 더 나은 정확도를 시도해보세요.
1. K-Neighbors 항목 뒤에 쉼표를 추가한 후 다음 줄을 추가하세요:
1. K-Neighbors 항목 뒤에 쉼표를 추가한 후, 다음 줄을 추가하세요:
```python
'SVC': SVC(),
@ -182,7 +182,7 @@ Support Vector 분류기를 사용하여 더 나은 정확도를 시도해보세
## Ensemble 분류기
이전 테스트가 꽤 좋았지만, 경로를 끝까지 따라가 봅시다. Random Forest와 AdaBoost라는 'Ensemble Classifiers'를 시도해보세요:
이전 테스트가 꽤 좋았지만, 경로를 끝까지 따라가 봅시다. 'Ensemble Classifiers'를 시도해보세요. 특히 Random Forest와 AdaBoost를 사용합니다:
```python
'RFST': RandomForestClassifier(n_estimators=100),
@ -221,11 +221,11 @@ weighted avg 0.73 0.72 0.72 1199
✅ [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html)에 대해 알아보세요.
ML 방법은 "여러 기본 추정기의 예측을 결합"하여 모델의 품질을 향상시킵니다. 우리의 예제에서는 Random Trees와 AdaBoost를 사용했습니다.
머신 러닝 방법은 "여러 기본 추정기의 예측을 결합"하여 모델의 품질을 향상시킵니다. 우리의 예제에서는 Random Trees와 AdaBoost를 사용했습니다.
- [Random Forest](https://scikit-learn.org/stable/modules/ensemble.html#forest)는 평균화 방법으로, '결정 트리'의 '숲'을 생성하며 과적합을 방지하기 위해 무작위성을 추가합니다. n_estimators 매개변수는 트리의 수를 설정합니다.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html)는 데이터셋에 분류기를 맞추고, 동일한 데이터셋에 그 분류기의 복사본을 맞춥니다. 잘못 분류된 항목의 가중치에 초점을 맞추고, 다음 분류기의 적합성을 조정하여 수정합니다.
- [AdaBoost](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html)는 데이터셋에 분류기를 맞춘 후, 동일한 데이터셋에 그 분류기의 복사본을 맞춥니다. 잘못 분류된 항목의 가중치에 초점을 맞추고, 다음 분류기의 적합성을 조정하여 수정합니다.
---
@ -233,11 +233,11 @@ weighted avg 0.73 0.72 0.72 1199
이 기술들 각각은 조정할 수 있는 많은 매개변수를 가지고 있습니다. 각 기술의 기본 매개변수를 조사하고, 이러한 매개변수를 조정하면 모델 품질에 어떤 영향을 미칠지 생각해보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
이 수업에는 많은 전문 용어가 포함되어 있으니, [용어 목록](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott)을 검토하며 시간을 가져보세요!
이 수업에는 많은 전문 용어가 포함되어 있으니, [목록](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott)을 검토하며 유용한 용어를 확인해보세요!
## 과제
@ -246,4 +246,4 @@ weighted avg 0.73 0.72 0.72 1199
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서(원어로 작성된 문서)를 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,27 +1,27 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ad2cf19d7490247558d20a6a59650d13",
"translation_date": "2025-09-03T23:55:35+00:00",
"original_hash": "61bdec27ed2da8b098cd9065405d9bb0",
"translation_date": "2025-09-05T10:51:38+00:00",
"source_file": "4-Classification/4-Applied/README.md",
"language_code": "ko"
}
-->
# 요리 추천 웹 앱 만들기
이 강의에서는 이전 강의에서 배운 기술과 이 시리즈에서 사용된 맛있는 요리 데이터셋을 활용하여 분류 모델을 구축합니다. 또한 저장된 모델을 사용하여 Onnx의 웹 런타임을 활용한 작은 웹 앱을 구축합니다.
이 강의에서는 이전 강의에서 배운 기술과 이 시리즈에서 사용된 맛있는 요리 데이터셋을 활용하여 분류 모델을 구축합니다. 또한 저장된 모델을 사용하여 Onnx의 웹 런타임을 활용한 작은 웹 앱을 만들 것입니다.
머신 러닝의 가장 실용적인 활용 중 하나는 추천 시스템을 구축하는 것입니다. 오늘 그 방향으로 첫걸음을 내딛어 보세요!
[![웹 앱 소개](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML")
> 🎥 위 이미지를 클릭하면 제니 루퍼가 분류된 요리 데이터를 사용하여 웹 앱을 구축하는 영상을 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 제니 루퍼가 분류된 요리 데이터를 사용하여 웹 앱을 만드는 영상을 볼 수 있습니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/25/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
이 강의에서 배우게 될 내용:
- 모델을 구축하고 Onnx 모델로 저장하는 방법
- 모델을 구축하고 이를 Onnx 모델로 저장하는 방법
- Netron을 사용하여 모델을 검사하는 방법
- 웹 앱에서 모델을 사용하여 추론하는 방법
@ -31,11 +31,11 @@ CO_OP_TRANSLATOR_METADATA:
[이전 강의](../../3-Web-App/1-Web-App/README.md)에서는 UFO 목격에 대한 회귀 모델을 구축하고 이를 "피클링"하여 Flask 앱에서 사용했습니다. 이 아키텍처는 매우 유용하지만, 전체 스택 Python 앱이며 JavaScript 애플리케이션을 사용해야 할 수도 있습니다.
이번 강의에서는 추론을 위한 기본 JavaScript 기반 시스템을 구축합니다. 먼저 모델을 훈련시키고 Onnx로 변환해야 합니다.
이번 강의에서는 추론을 위한 기본적인 JavaScript 기반 시스템을 구축할 수 있습니다. 먼저 모델을 훈련시키고 이를 Onnx에서 사용할 수 있도록 변환해야 합니다.
## 실습 - 분류 모델 훈련하기
먼저, 우리가 사용했던 정리된 요리 데이터셋을 사용하여 분류 모델을 훈련니다.
먼저, 우리가 사용했던 정리된 요리 데이터셋을 사용하여 분류 모델을 훈련시킵니다.
1. 유용한 라이브러리를 가져옵니다:
@ -81,7 +81,7 @@ CO_OP_TRANSLATOR_METADATA:
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report
```
1. 훈련 세트와 테스트 세트를 분리합니다:
1. 훈련 테스트 세트를 분리합니다:
```python
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
@ -124,7 +124,7 @@ CO_OP_TRANSLATOR_METADATA:
### 모델을 Onnx로 변환하기
올바른 텐서 번호로 변환을 수행해야 합니다. 이 데이터셋에는 380개의 재료가 나열되어 있으므로 `FloatTensorType`서 해당 숫자를 명시해야 합니다.
올바른 텐서 번호로 변환을 수행해야 합니다. 이 데이터셋에는 380개의 재료가 나열되어 있으므로 `FloatTensorType` 해당 숫자를 기재해야 합니다.
1. 텐서 번호를 380으로 설정하여 변환합니다.
@ -144,19 +144,19 @@ CO_OP_TRANSLATOR_METADATA:
f.write(onx.SerializeToString())
```
> 참고로, 변환 스크립트에서 [옵션](https://onnx.ai/sklearn-onnx/parameterized.html)을 전달할 수 있습니다. 이 경우 'nocl'을 True로 설정하고 'zipmap'을 False로 설정했습니다. 이는 분류 모델이므로 ZipMap을 제거하여 딕셔너리 목록을 생성하지 않도록 설정할 수 있습니다(필요하지 않음). `nocl`은 모델에 클래스 정보를 포함하는 것을 나타냅니다. `nocl`을 'True'로 설정하여 모델 크기를 줄일 수 있습니다.
> 참고로, 변환 스크립트에서 [옵션](https://onnx.ai/sklearn-onnx/parameterized.html)을 전달할 수 있습니다. 이 경우 'nocl'을 True로 설정하고 'zipmap'을 False로 설정했습니다. 이는 분류 모델이므로 ZipMap을 제거하여 딕셔너리 목록을 생성하지 않도록 할 수 있습니다(필요하지 않음). `nocl`은 모델에 클래스 정보를 포함시키는 옵션을 나타냅니다. `nocl`을 'True'로 설정하여 모델 크기를 줄일 수 있습니다.
전체 노트북을 실행하면 Onnx 모델이 생성되 이 폴더에 저장됩니다.
전체 노트북을 실행하면 Onnx 모델이 생성되 이 폴더에 저장됩니다.
## 모델 보기
Onnx 모델은 Visual Studio Code에서 잘 보이지 않지만, 많은 연구자들이 모델이 제대로 구축되었는지 확인하기 위해 사용하는 매우 좋은 무료 소프트웨어가 있습니다. [Netron](https://github.com/lutzroeder/Netron)을 다운로드하여 model.onnx 파일을 열어보세요. 380개의 입력과 분류기가 나열된 간단한 모델을 시각화할 수 있습니다:
![Netron 시각화](../../../../translated_images/netron.a05f39410211915e0f95e2c0e8b88f41e7d13d725faf660188f3802ba5c9e831.ko.png)
![Netron 시각화](../../../../4-Classification/4-Applied/images/netron.png)
Netron은 모델을 보는 데 유용한 도구입니다.
이제 이 멋진 모델을 웹 앱에서 사용할 준비가 되었습니다. 냉장고를 열어 남은 재료를 조합하여 모델이 결정한 요리를 만들 수 있는 앱을 만들어 봅시다.
이제 이 멋진 모델을 웹 앱에서 사용할 준비가 되었습니다. 냉장고를 열어 남은 재료를 조합하여 모델이 결정한 요리를 만들 수 있는 앱을 만들어 봅시다.
## 추천 웹 애플리케이션 만들기
@ -176,7 +176,7 @@ Netron은 모델을 보는 데 유용한 도구입니다.
</html>
```
1. 이제 `body` 태그 내에서 몇 가지 재료를 반영하는 체크박스 목록을 표시하는 약간의 마크업을 추가합니다:
1. 이제 `body` 태그 내에서 몇 가지 재료를 반영하는 체크박스 목록을 표시하는 마크업을 추가합니다:
```html
<h1>Check your refrigerator. What can you create?</h1>
@ -221,9 +221,9 @@ Netron은 모델을 보는 데 유용한 도구입니다.
</div>
```
각 체크박스에 값이 지정된 것을 확인하세요. 이는 데이터셋에 따라 재료가 발견되는 인덱스를 반영합니다. 예를 들어, 사과는 이 알파벳 순서 목록에서 다섯 번째 열을 차지하므로 값이 '4'입니다(0부터 시작). [재료 스프레드시트](../../../../4-Classification/data/ingredient_indexes.csv)를 참조하여 특정 재료의 인덱스를 확인할 수 있습니다.
각 체크박스에 값이 부여된 것을 확인하세요. 이는 데이터셋에 따라 재료가 발견되는 인덱스를 반영합니다. 예를 들어, 사과는 이 알파벳 목록에서 다섯 번째 열을 차지하므로 값이 '4'입니다(0부터 시작). [재료 스프레드시트](../../../../4-Classification/data/ingredient_indexes.csv)를 참조하여 특정 재료의 인덱스를 확인할 수 있습니다.
index.html 파일에서 작업을 계속하며, 마지막 닫는 `</div>` 뒤에 모델을 호출하는 스크립트 블록을 추가합니다.
index.html 파일 작업을 계속하면서 마지막 닫는 `</div>` 뒤에 스크립트 블록을 추가하여 모델을 호출합니다.
1. 먼저 [Onnx Runtime](https://www.onnxruntime.ai/)을 가져옵니다:
@ -231,7 +231,7 @@ Netron은 모델을 보는 데 유용한 도구입니다.
<script src="https://cdn.jsdelivr.net/npm/onnxruntime-web@1.9.0/dist/ort.min.js"></script>
```
> Onnx Runtime은 다양한 하드웨어 플랫폼에서 Onnx 모델을 실행할 수 있도록 하며, 최적화와 API를 제공합니다.
> Onnx Runtime은 다양한 하드웨어 플랫폼에서 Onnx 모델을 실행할 수 있도록 최적화와 API를 제공합니다.
1. 런타임이 설정되면 이를 호출할 수 있습니다:
@ -287,33 +287,33 @@ Netron은 모델을 보는 데 유용한 도구입니다.
이 코드에서는 여러 가지 작업이 이루어집니다:
1. 380개의 가능한 값(1 또는 0)을 설정하고, 선택된 재료 체크박스에 따라 모델에 보내기 위해 `ingredients` 배열을 생성합니다.
2. 애플리케이션이 시작될 때 호출되는 `init` 함수에서 체크박스 배열을 생성하고 체크 여부를 확인합니다. 체크박스가 체크되면 `ingredients` 배열이 선택된 재료를 반영하도록 변경됩니다.
3. 체크박스가 체크되었는지 확인하는 `testCheckboxes` 함수를 생성합니다.
4. 버튼이 눌리면 `startInference` 함수를 사용하여 추론을 시작합니다. 체크박스가 체크되었으면 추론을 시작합니다.
1. 380개의 가능한 값(1 또는 0)을 설정하고, 선택된 재료 체크박스에 따라 모델에 추론을 위해 보낼 배열을 생성합니다.
2. 체크박스 배열을 생성하고 애플리케이션이 시작될 때 호출되는 `init` 함수에서 체크박스가 선택되었는지 확인하는 방법을 만듭니다. 체크박스가 선택되면 `ingredients` 배열이 선택된 재료를 반영하도록 변경됩니다.
3. 체크박스가 선택되었는지 확인하는 `testCheckboxes` 함수를 생성합니다.
4. 버튼이 눌리면 `startInference` 함수를 사용하여 추론을 시작합니다. 체크박스가 선택된 경우 추론을 시작합니다.
5. 추론 루틴에는 다음이 포함됩니다:
1. 모델을 비동기로 로드 설정
2. 모델에 보낼 텐서 구조 생성
3. 훈련 시 생성한 `float_input` 입력을 반영하는 'feeds' 생성(Netron을 사용하여 이름 확인 가능)
3. 훈련 시 생성한 모델의 `float_input` 입력을 반영하는 'feeds' 생성(Netron을 사용하여 이름을 확인할 수 있음)
4. 이 'feeds'를 모델에 보내고 응답을 기다림
## 애플리케이션 테스트하기
Visual Studio Code에서 index.html 파일이 있는 폴더에서 터미널 세션을 엽니다. [http-server](https://www.npmjs.com/package/http-server)가 전역적으로 설치되어 있는지 확인하고 프롬프트에서 `http-server`를 입력하세요. 로컬호스트가 열리며 웹 앱을 볼 수 있습니다. 다양한 재료를 기반으로 추천된 요리를 확인하세요:
![재료 웹 앱](../../../../translated_images/web-app.4c76450cabe20036f8ec6d5e05ccc0c1c064f0d8f2fe3304d3bcc0198f7dc139.ko.png)
![재료 웹 앱](../../../../4-Classification/4-Applied/images/web-app.png)
축하합니다! 몇 가지 필드가 있는 '추천' 웹 앱을 만들었습니다. 이 시스템을 확장하는 데 시간을 투자해 보세요!
축하합니다! 몇 가지 필드가 있는 '추천' 웹 앱을 만들었습니다. 이 시스템을 구축하는 데 시간을 더 투자해 보세요!
## 🚀도전 과제
웹 앱이 매우 간단하므로 [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) 데이터의 재료와 인덱스를 사용하여 계속 확장해 보세요. 어떤 맛 조합이 특정 국가 요리를 만드는 데 적합한지 알아보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/26/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
이 강의에서는 음식 재료 추천 시스템을 만드는 유용성에 대해 간단히 다뤘지만, 이 분야의 머신 러닝 응용 프로그램은 매우 풍부한 예제를 제공합니다. 이러한 시스템이 어떻게 구축되는지에 대해 더 읽어보세요:
이 강의에서는 음식 재료를 위한 추천 시스템을 만드는 유용성에 대해 간단히 다뤘지만, 이 분야의 머신 러닝 응용 프로그램은 예제가 매우 풍부합니다. 이러한 시스템이 어떻게 구축되는지에 대해 더 읽어보세요:
- https://www.sciencedirect.com/topics/computer-science/recommendation-engine
- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/

@ -1,115 +1,115 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ab69b161efd7a41d325ee28b29415d7",
"translation_date": "2025-09-03T23:01:47+00:00",
"original_hash": "730225ea274c9174fe688b21d421539d",
"translation_date": "2025-09-05T10:44:24+00:00",
"source_file": "5-Clustering/1-Visualize/README.md",
"language_code": "ko"
}
-->
# 클러스터링 소개
클러스터링은 데이터셋이 라벨링되지 않았거나 입력값이 미리 정의된 출력값과 연결되지 않은 상태를 가정하는 [비지도 학습](https://wikipedia.org/wiki/Unsupervised_learning)의 한 유형입니다. 다양한 알고리즘을 사용하여 라벨링되지 않은 데이터를 분류하고 데이터에서 감지된 패턴에 따라 그룹을 제공합니다.
클러스터링은 데이터셋이 라벨이 없거나 입력값이 미리 정의된 출력값과 매칭되지 않는다고 가정하는 [비지도 학습](https://wikipedia.org/wiki/Unsupervised_learning)의 한 유형입니다. 클러스터링은 다양한 알고리즘을 사용하여 라벨이 없는 데이터를 분류하고, 데이터에서 감지된 패턴에 따라 그룹을 제공합니다.
[![PSquare의 No One Like You](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "PSquare의 No One Like You")
> 🎥 위 이미지를 클릭하면 비디오를 볼 수 있습니다. 클러스터링을 활용한 머신 러닝을 공부하는 동안, 나이지리아 댄스홀 음악을 즐겨보세요. 이는 PSquare가 2014년에 발표한 높은 평가를 받은 곡입니다.
> 🎥 위 이미지를 클릭하면 영상을 볼 수 있습니다. 클러스터링을 활용한 머신러닝을 공부하는 동안, 나이지리아 댄스홀 트랙을 즐겨보세요. 이 곡은 PSquare가 2014년에 발표한 높은 평가를 받은 곡입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
### 소개
[클러스터링](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124)은 데이터 탐색에 매우 유용합니다. 나이지리아 청중들이 음악을 소비하는 방식에서 트렌드와 패턴을 발견할 수 있는지 살펴봅시다.
✅ 클러스터링의 활용 사례에 대해 잠시 생각해보세요. 현실 세계에서 클러스터링은 빨래 더미를 가족 구성원의 옷으로 분류해야 할 때 발생합니다 🧦👕👖🩲. 데이터 과학에서는 사용자의 선호도를 분석하거나 라벨링되지 않은 데이터셋의 특성을 결정하려고 할 때 클러스터링이 발생합니다. 클러스터링은 혼란을 이해하는 데 도움을 주는 방법으로, 마치 양말 서랍을 정리하는 것과 같습니다.
✅ 클러스터링의 활용 사례에 대해 잠시 생각해 보세요. 현실에서 클러스터링은 빨래 더미를 가족 구성원의 옷으로 분류해야 할 때마다 발생합니다 🧦👕👖🩲. 데이터 과학에서는 사용자의 선호도를 분석하거나 라벨이 없는 데이터셋의 특성을 결정하려고 할 때 클러스터링이 발생합니다. 클러스터링은 일종의 혼란 속에서 질서를 찾는 데 도움을 줍니다. 마치 양말 서랍을 정리하는 것처럼요.
[![ML 소개](https://img.youtube.com/vi/esmzYhuFnds/0.jpg)](https://youtu.be/esmzYhuFnds "클러스터링 소개")
> 🎥 위 이미지를 클릭하면 비디오를 볼 수 있습니다: MIT의 John Guttag가 클러스터링을 소개합니다.
> 🎥 위 이미지를 클릭하면 영상을 볼 수 있습니다: MIT의 John Guttag이 클러스터링을 소개합니다.
전문적인 환경에서는 클러스터링을 사용하여 시장 세분화와 같은 것을 결정할 수 있습니다. 예를 들어, 어떤 연령대가 어떤 아이템을 구매하는지 알아내는 것입니다. 또 다른 활용 사례는 이상 탐지로, 신용카드 거래 데이터셋에서 사기를 감지하는 데 사용할 수 있습니다. 또는 의료 스캔 데이터에서 종양을 식별하는 데 클러스터링을 사용할 수도 있습니다.
전문적인 환경에서 클러스터링은 시장 세분화, 예를 들어 어떤 연령대가 어떤 상품을 구매하는지 결정하는 데 사용될 수 있습니다. 또 다른 활용 사례로는 신용카드 거래 데이터셋에서 사기를 감지하는 이상 탐지가 있을 수 있습니다. 또는 의료 스캔 데이터에서 종양을 식별하는 데 클러스터링을 사용할 수도 있습니다.
✅ 은행, 전자상거래 또는 비즈니스 환경에서 '야생'에서 클러스터링을 접한 경험이 있는지 잠시 생각해보세요.
✅ 은행, 전자상거래, 또는 비즈니스 환경에서 클러스터링을 '자연스럽게' 접한 경험이 있는지 생각해 보세요.
> 🎓 흥미롭게도 클러스터 분석은 1930년대 인류학과 심리학 분야에서 시작되었습니다. 당시에는 어떻게 사용되었을지 상상해보세요.
> 🎓 흥미롭게도, 클러스터 분석은 1930년대 인류학과 심리학 분야에서 시작되었습니다. 당시에는 어떻게 사용되었을지 상상해 보세요.
검색 결과를 그룹화하는 데 사용할 수 있습니다. 예를 들어 쇼핑 링크, 이미지 또는 리뷰로 그룹화하는 것입니다. 클러스터링은 대규모 데이터셋을 축소하고 더 세부적인 분석을 수행하려는 경우에 유용하며, 이를 통해 다른 모델을 구축하기 전에 데이터에 대해 배울 수 있습니다.
한 클러스터링은 검색 결과를 그룹화하는 데 사용할 수 있습니다. 예를 들어 쇼핑 링크, 이미지, 리뷰 등을 그룹화하는 방식입니다. 클러스터링은 대규모 데이터셋을 줄이고 더 세부적인 분석을 수행하려는 경우에 유용하며, 다른 모델을 구축하기 전에 데이터를 학습하는 데 사용할 수 있습니다.
✅ 데이터가 클러스터로 정리되면 클러스터 ID를 할당할 수 있습니다. 이 기술은 데이터셋의 프라이버시를 보호할 때 유용합니다. 더 드러나는 식별 가능한 데이터 대신 클러스터 ID로 데이터 포인트를 참조할 수 있습니다. 클러스터 ID를 사용하여 클러스터의 다른 요소 대신 식별하는 이유를 생각해볼 수 있나요?
✅ 데이터가 클러스터로 정리되면 클러스터 ID를 할당할 수 있습니다. 이 기술은 데이터셋의 프라이버시를 보호하는 데 유용할 수 있습니다. 클러스터의 다른 식별 가능한 데이터 대신 클러스터 ID로 데이터 포인트를 참조할 수 있습니다. 클러스터 ID를 다른 요소 대신 사용하는 이유를 생각해 보세요.
클러스터링 기술에 대한 이해를 심화하려면 [Learn 모듈](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott)을 확인하세요.
클러스터링 기술에 대한 이해를 심화하려면 이 [학습 모듈](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott)을 확인하세요.
## 클러스터링 시작하기
[Scikit-learn은 다양한 방법](https://scikit-learn.org/stable/modules/clustering.html)을 제공하여 클러스터링을 수행할 수 있습니다. 선택한 방법은 사용 사례에 따라 달라집니다. 문서에 따르면 각 방법은 다양한 이점을 가지고 있습니다. Scikit-learn에서 지원하는 방법과 적합한 사용 사례를 간단히 정리한 표는 다음과 같습니다:
[Scikit-learn은 다양한 방법](https://scikit-learn.org/stable/modules/clustering.html)을 제공하여 클러스터링을 수행할 수 있습니다. 선택하는 방법은 사용 사례에 따라 다릅니다. 문서에 따르면, 각 방법은 다양한 이점을 가지고 있습니다. 아래는 Scikit-learn에서 지원하는 방법과 적합한 사용 사례를 간단히 정리한 표니다:
| 방법 이름 | 사용 사례 |
| 방법 이름 | 사용 사례 |
| :--------------------------- | :--------------------------------------------------------------------- |
| K-Means | 일반적인 목적, 귀납적 |
| Affinity propagation | 많은, 불균형 클러스터, 귀납적 |
| Mean-shift | 많은, 불균형 클러스터, 귀납적 |
| Spectral clustering | 적은, 균형 클러스터, 전이적 |
| Ward hierarchical clustering | 많은, 제된 클러스터, 전이적 |
| Agglomerative clustering | 많은, 제된, 비유클리드 거리, 전이적 |
| DBSCAN | 비평면 기하학, 불균형 클러스터, 전이적 |
| OPTICS | 비평면 기하학, 밀도 가변적인 불균형 클러스터, 전이적 |
| Gaussian mixtures | 평면 기하학, 귀납적 |
| BIRCH | 이상값이 있는 대규모 데이터셋, 귀납적 |
> 🎓 클러스터를 생성하는 방법은 데이터 포인트를 그룹으로 모으는 방식과 밀접한 관련이 있습니다. 몇 가지 용어를 살펴봅시다:
| Spectral clustering | 적은, 균형 잡힌 클러스터, 전이적 |
| Ward hierarchical clustering | 많은, 제된 클러스터, 전이적 |
| Agglomerative clustering | 많은, 제된, 비유클리드 거리, 전이적 |
| DBSCAN | 비평면 기하학, 불균형 클러스터, 전이적 |
| OPTICS | 비평면 기하학, 밀도 가변 불균형 클러스터, 전이적 |
| Gaussian mixtures | 평면 기하학, 귀납적 |
| BIRCH | 대규모 데이터셋, 이상치 포함, 귀납적 |
> 🎓 클러스터를 생성하는 방식은 데이터 포인트를 그룹으로 묶는 방식과 밀접한 관련이 있습니다. 몇 가지 용어를 살펴봅시다:
>
> 🎓 ['전이적' vs. '귀납적'](https://wikipedia.org/wiki/Transduction_(machine_learning))
>
> 전이적 추론은 특정 테스트 사례에 매핑된 관찰된 학습 사례에서 도출됩니다. 귀납적 추론은 일반적인 규칙에 매핑된 학습 사례에서 도출되며, 그런 다음 테스트 사례에 적용됩니다.
> 전이적 추론은 특정 테스트 사례와 매핑되는 관찰된 학습 사례에서 도출됩니다. 귀납적 추론은 일반적인 규칙으로 매핑되는 학습 사례에서 도출된 후 테스트 사례에 적용됩니다.
>
> 예: 데이터셋이 부분적으로 라벨링된 상태라고 가정해봅시다. 일부는 '레코드', 일부는 'CD', 일부는 공백입니다. 공백에 라벨을 제공하는 것이 당신의 작업입니다. 귀납적 접근법을 선택하면 '레코드'와 'CD'를 찾는 모델을 학습시키고, 라벨링되지 않은 데이터에 이러한 라벨을 적용합니다. 이 접근법은 실제로 '카세트'인 항목을 분류하는 데 어려움을 겪을 것입니다. 반면에 전이적 접근법은 유사한 항목을 그룹화한 다음 그룹에 라벨을 적용하여 이러한 미지의 데이터를 더 효과적으로 처리합니다. 이 경우 클러스터는 '둥근 음악 물건'과 '네모난 음악 물건'을 반영할 수 있습니다.
> 예: 데이터셋이 부분적으로만 라벨이 지정된 경우를 상상해 보세요. 일부는 '레코드', 일부는 'CD', 일부는 공백입니다. 공백에 라벨을 제공하는 것이 여러분의 작업입니다. 귀납적 접근 방식을 선택하면 '레코드'와 'CD'를 찾는 모델을 학습시키고, 라벨이 없는 데이터에 이 라벨을 적용합니다. 이 접근 방식은 실제로 '카세트'인 항목을 분류하는 데 어려움을 겪을 것입니다. 반면, 전이적 접근 방식은 유사한 항목을 그룹화한 다음 그룹에 라벨을 적용하여 이 미지의 데이터를 더 효과적으로 처리합니다. 이 경우 클러스터는 '둥근 음악 물건'과 '네모난 음악 물건'을 반영할 수 있습니다.
>
> 🎓 ['비평면' vs. '평면' 기하학](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
>
> 수학 용어에서 파생된 비평면 vs. 평면 기하학은 클러스터 내 점들 간의 거리를 '평면'([유클리드](https://wikipedia.org/wiki/Euclidean_geometry)) 또는 '비평면'(비유클리드) 기하학적 방법으로 측정하는 것을 의미합니다.
> 수학 용어에서 파생된 비평면 vs. 평면 기하학은 클러스터 내 점들 간의 거리를 측정하는 방법을 나타냅니다. 이는 '평면'([유클리드](https://wikipedia.org/wiki/Euclidean_geometry)) 또는 '비평면'(비유클리드) 기하학적 방법으로 측정니다.
>
>'평면'은 유클리드 기하학(일부는 '평면' 기하학으로 가르침)과 관련되며, '비평면'은 비유클리드 기하학과 관련됩니다. 기하학이 머신 러닝과 어떤 관련이 있을까요? 두 분야 모두 수학에 뿌리를 두고 있기 때문에 클러스터 내 점들 간의 거리를 측정하는 공통 방법이 필요하며, 데이터의 특성에 따라 '평면' 또는 '비평면' 방식으로 측정할 수 있습니다. [유클리드 거리](https://wikipedia.org/wiki/Euclidean_distance)는 두 점 사이의 선분 길이로 측정됩니다. [비유클리드 거리](https://wikipedia.org/wiki/Non-Euclidean_geometry)는 곡선을 따라 측정됩니다. 데이터가 시각화되었을 때 평면에 존재하지 않는 것처럼 보인다면, 이를 처리하기 위해 특수 알고리즘을 사용해야 할 수 있습니다.
>'평면'은 유클리드 기하학(일부는 '평면' 기하학으로 가르침)을 의미하며, '비평면'은 비유클리드 기하학을 의미합니다. 기하학이 머신러닝과 무슨 관련이 있을까요? 두 분야 모두 수학에 뿌리를 두고 있기 때문에, 클러스터 내 점들 간의 거리를 측정하는 공통 방법이 필요하며, 데이터의 특성에 따라 '평면' 또는 '비평면' 방식으로 측정할 수 있습니다. [유클리드 거리](https://wikipedia.org/wiki/Euclidean_distance)는 두 점 사이의 선분 길이로 측정됩니다. [비유클리드 거리](https://wikipedia.org/wiki/Non-Euclidean_geometry)는 곡선을 따라 측정됩니다. 데이터가 시각화되었을 때 평면에 존재하지 않는 것처럼 보인다면, 이를 처리하기 위해 특수 알고리즘이 필요할 수 있습니다.
>
![평면 vs 비평면 기하학 인포그래픽](../../../../translated_images/flat-nonflat.d1c8c6e2a96110c1d57fa0b72913f6aab3c245478524d25baf7f4a18efcde224.ko.png)
![평면 vs 비평면 기하학 인포그래픽](../../../../5-Clustering/1-Visualize/images/flat-nonflat.png)
> 인포그래픽 제공: [Dasani Madipalli](https://twitter.com/dasani_decoded)
>
> 🎓 ['거리'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
>
> 클러스터는 거리 행렬, 즉 점들 간의 거리로 정의됩니다. 이 거리는 몇 가지 방법으로 측정될 수 있습니다. 유클리드 클러스터는 점 값의 평균으로 정의되며, '중심점' 또는 중심을 포함합니다. 거리는 따라서 그 중심점까지의 거리로 측정됩니다. 비유클리드 거리는 '클러스트로이드', 즉 다른 점들에 가장 가까운 점으로 측정됩니다. 클러스트로이드는 다양한 방식으로 정의될 수 있습니다.
> 클러스터는 거리 행렬, 즉 점들 간의 거리로 정의됩니다. 이 거리는 여러 가지 방식으로 측정될 수 있습니다. 유클리드 클러스터는 점 값의 평균으로 정의되며, '중심점' 또는 중심을 포함합니다. 거리는 따라서 그 중심점까지의 거리로 측정됩니다. 비유클리드 거리는 '클러스트로이드', 즉 다른 점들에 가장 가까운 점으로 측정됩니다. 클러스트로이드는 다양한 방식으로 정의될 수 있습니다.
>
> 🎓 ['제약'](https://wikipedia.org/wiki/Constrained_clustering)
>
> [제약 클러스터링](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf)은 이 비지도 방법에 '반지도 학습'을 도입합니다. 점들 간의 관계는 '연결 불가' 또는 '연결 필수'로 표시되어 데이터셋에 일부 규칙이 강제됩니다.
> [제약 클러스터링](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf)은 이 비지도 학습 방법에 '반지도 학습'을 도입합니다. 점들 간의 관계는 '연결 불가' 또는 '연결 필수'로 표시되어 데이터셋에 일부 규칙이 강제됩니다.
>
>예: 알고리즘이 라벨링되지 않았거나 반라벨링된 데이터 배치에서 자유롭게 작동하도록 설정되면 생성된 클러스터는 품질이 낮을 수 있습니다. 위의 예에서 클러스터는 '둥근 음악 물건', '네모난 음악 물건', '삼각형 물건', '쿠키'를 그룹화할 수 있습니다. 일부 제약 조건이나 규칙("항목은 플라스틱으로 만들어져야 한다", "항목은 음악을 생할 수 있어야 한다")이 주어지면 알고리즘이 더 나은 선택을 하도록 도울 수 있습니다.
>예: 알고리즘이 라벨이 없거나 부분적으로 라벨이 지정된 데이터 배치에서 자유롭게 작동하도록 설정되면 생성된 클러스터의 품질이 낮을 수 있습니다. 위의 예에서 클러스터는 '둥근 음악 물건', '네모난 음악 물건', '삼각형 물건', '쿠키'를 그룹화할 수 있습니다. 일부 제약 조건, 즉 따라야 할 규칙("항목은 플라스틱으로 만들어져야 한다", "항목은 음악을 생할 수 있어야 한다")이 주어지면 알고리즘이 더 나은 선택을 할 수 있도록 도와줍니다.
>
> 🎓 '밀도'
>
> '노이즈가 많은' 데이터는 '밀도가 높다'고 간주됩니다. 각 클러스터 내 점들 간의 거리는 더 밀도가 높거나 낮은 것으로 판명될 수 있으며, 따라서 이러한 데이터는 적절한 클러스터링 방법으로 분석해야 합니다. [이 기사](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html)는 불균형 클러스터 밀도가 있는 노이즈 데이터셋을 탐색하기 위해 K-Means 클러스터링과 HDBSCAN 알고리즘을 사용하는 차이를 보여줍니다.
> '노이즈'가 많은 데이터는 '밀도가 높다'고 간주됩니다. 각 클러스터 내 점들 간의 거리는 더 밀도가 높거나 낮은 것으로 나타날 수 있으며, 따라서 이러한 데이터는 적절한 클러스터링 방법으로 분석해야 합니다. [이 기사](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html)는 불균형 클러스터 밀도를 가진 노이즈 데이터셋을 탐색하기 위해 K-Means 클러스터링과 HDBSCAN 알고리즘을 사용하는 차이를 보여줍니다.
## 클러스터링 알고리즘
클러스터링 알고리즘은 100개 이상 있으며, 사용은 데이터의 특성에 따라 달라집니다. 주요 알고리즘 몇 가지를 살펴봅시다:
100개 이상의 클러스터링 알고리즘이 있으며, 사용 여부는 데이터의 특성에 따라 달라집니다. 주요 알고리즘 몇 가지를 살펴봅시다:
- **계층적 클러스터링**. 객체가 멀리 떨어진 객체보다 가까운 객체와의 근접성에 따라 분류되면, 클러스터는 다른 객체와의 거리로 형성됩니다. Scikit-learn의 집계 클러스터링은 계층적입니다.
- **계층적 클러스터링**. 객체가 멀리 떨어진 객체보다 가까운 객체와의 근접성에 따라 분류되는 경우, 클러스터는 다른 객체와의 거리로 형성됩니다. Scikit-learn의 병합 클러스터링은 계층적입니다.
![계층적 클러스터링 인포그래픽](../../../../translated_images/hierarchical.bf59403aa43c8c47493bfdf1cc25230f26e45f4e38a3d62e8769cd324129ac15.ko.png)
![계층적 클러스터링 인포그래픽](../../../../5-Clustering/1-Visualize/images/hierarchical.png)
> 인포그래픽 제공: [Dasani Madipalli](https://twitter.com/dasani_decoded)
- **중심점 클러스터링**. 이 인기 있는 알고리즘은 'k', 즉 형성할 클러스터 수를 선택한 후, 알고리즘이 클러스터의 중심점을 결정하고 해당 점 주위에 데이터를 모읍니다. [K-평균 클러스터링](https://wikipedia.org/wiki/K-means_clustering)은 중심점 클러스터링의 인기 있는 버전입니다. 중심은 가장 가까운 평균에 의해 결정되며, 따라서 이름이 붙여졌습니다. 클러스터에서의 제곱 거리가 최소화됩니다.
![중심점 클러스터링 인포그래픽](../../../../translated_images/centroid.097fde836cf6c9187d0b2033e9f94441829f9d86f4f0b1604dd4b3d1931aee34.ko.png)
![중심점 클러스터링 인포그래픽](../../../../5-Clustering/1-Visualize/images/centroid.png)
> 인포그래픽 제공: [Dasani Madipalli](https://twitter.com/dasani_decoded)
- **분포 기반 클러스터링**. 통계 모델링에 기반하여, 분포 기반 클러스터링은 데이터 포인트가 클러스터에 속할 확률을 결정하고 이에 따라 할당합니다. 가우시안 혼합 방법 이 유형에 속합니다.
- **분포 기반 클러스터링**. 통계 모델링에 기반하여, 분포 기반 클러스터링은 데이터 포인트가 클러스터에 속할 확률을 결정하고 이에 따라 할당합니다. 가우시안 혼합 방법 이 유형에 속합니다.
- **밀도 기반 클러스터링**. 데이터 포인트는 밀도, 즉 서로 주위에 그룹화된 정도에 따라 클러스터에 할당됩니다. 그룹에서 멀리 떨어진 데이터 포인트는 이상값 또는 노이즈로 간주됩니다. DBSCAN, Mean-shift 및 OPTICS는 이 유형의 클러스터링에 속합니다.
- **밀도 기반 클러스터링**. 데이터 포인트는 밀도, 즉 서로 주위에 그룹화된 정도에 따라 클러스터에 할당됩니다. 그룹에서 멀리 떨어진 데이터 포인트는 이상치 또는 노이즈로 간주됩니다. DBSCAN, Mean-shift 및 OPTICS가 이 유형의 클러스터링에 속합니다.
- **그리드 기반 클러스터링**. 다차원 데이터셋의 경우, 그리드를 생성하고 데이터를 그리드의 셀 나누어 클러스터를 생성합니다.
- **그리드 기반 클러스터링**. 다차원 데이터셋의 경우, 그리드를 생성하고 데이터를 그리드의 셀 나누어 클러스터를 생성합니다.
## 습 - 데이터 클러스터링
## 습 - 데이터 클러스터링
클러스터링 기술은 적절한 시각화에 크게 도움을 받으므로, 음악 데이터를 시각화하는 것으로 시작해봅시다. 이 실습은 데이터의 특성에 가장 효과적으로 사용할 클러스터링 방법을 결정하는 데 도움을 줄 것입니다.
클러스터링 기술은 적절한 시각화에 크게 의존하므로, 음악 데이터를 시각화하는 것으로 시작해 봅시다. 이 연습은 이 데이터의 특성에 가장 효과적으로 사용할 클러스터링 방법을 결정하는 데 도움을 줄 것입니다.
1. 이 폴더의 [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) 파일을 엽니다.
@ -179,7 +179,7 @@ CO_OP_TRANSLATOR_METADATA:
df.isnull().sum()
```
좋아 보입니다:
잘 작동합니다:
```output
name 0
@ -218,9 +218,9 @@ CO_OP_TRANSLATOR_METADATA:
| 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 |
| max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 |
> 🤔 클러스터링은 라벨이 없는 데이터를 필요로 하지 않는 비지도 학습 방법인데, 왜 라벨이 있는 데이터를 보여주고 있을까요? 데이터 탐색 단계에서는 유용하지만, 클러스터링 알고리즘이 작동하는 데 필수적이지는 않습니다. 열 헤더를 제거하고 열 번호로 데이터를 참조해도 됩니다.
> 🤔 클러스터링은 레이블이 없는 데이터를 필요로 하지 않는 비지도 학습 방법인데, 왜 레이블이 있는 데이터를 보여주고 있을까요? 데이터 탐색 단계에서는 유용하지만, 클러스터링 알고리즘이 작동하는 데 필수적이지는 않습니다. 열 헤더를 제거하고 열 번호로 데이터를 참조해도 됩니다.
데이터의 일반적인 값을 살펴보세요. 인기(popularity)가 '0'일 수 있다는 점에 주목하세요. 이는 순위가 없는 곡을 나타냅니다. 이를 제거해 보겠습니다.
데이터의 일반적인 값을 살펴보세요. 인기(popularity)가 '0'일 수 있다는 점에 주목하세요. 이는 순위가 없는 곡을 나타냅니다. 이를 제거해 보겠습니다.
1. 바 플롯을 사용하여 가장 인기 있는 장르를 찾아보세요:
@ -234,11 +234,11 @@ CO_OP_TRANSLATOR_METADATA:
plt.title('Top genres',color = 'blue')
```
![most popular](../../../../translated_images/popular.9c48d84b3386705f98bf44e26e9655bee9eb7c849d73be65195e37895bfedb5d.ko.png)
![most popular](../../../../5-Clustering/1-Visualize/images/popular.png)
✅ 더 많은 상위 값을 보고 싶다면, 상위 `[:5]`를 더 큰 값으로 변경하거나 제거하여 모두 확인하세요.
참고로, 상위 장르가 'Missing'으로 표시되면 Spotify에서 이를 분류하지 않았다는 의미이므로 이를 제거합시다.
참고로, 상위 장르가 'Missing'으로 표시되면 Spotify에서 이를 분류하지 않았다는 의미입니다. 이를 제거해 보겠습니다.
1. 누락된 데이터를 필터링하여 제거하세요:
@ -253,9 +253,9 @@ CO_OP_TRANSLATOR_METADATA:
이제 장르를 다시 확인하세요:
![most popular](../../../../translated_images/all-genres.1d56ef06cefbfcd61183023834ed3cb891a5ee638a3ba5c924b3151bf80208d7.ko.png)
![most popular](../../../../5-Clustering/1-Visualize/images/all-genres.png)
1. 이 데이터셋에서 상위 세 장르가 압도적으로 많습니다. `afro dancehall`, `afropop`, `nigerian pop`에 집중하고, 데이터셋에서 인기 값이 0인 항목(데이터셋에서 인기가 분류되지 않았으며 우리의 목적에 맞지 않는 노이즈로 간주될 수 있음)을 제거하세요:
1. 상위 세 개의 장르가 이 데이터셋을 지배하고 있습니다. `afro dancehall`, `afropop`, `nigerian pop`에 집중하고, 데이터셋에서 인기 값이 0인 항목(데이터셋에서 인기가 분류되지 않아 우리의 목적에 방해가 되는 노이즈로 간주될 수 있음)을 제거하세요:
```python
df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
@ -275,21 +275,21 @@ CO_OP_TRANSLATOR_METADATA:
sns.heatmap(corrmat, vmax=.8, square=True)
```
![correlations](../../../../translated_images/correlation.a9356bb798f5eea51f47185968e1ebac5c078c92fce9931e28ccf0d7fab71c2b.ko.png)
![correlations](../../../../5-Clustering/1-Visualize/images/correlation.png)
`energy``loudness` 사이에만 강한 상관관계가 있으며, 이는 예상할 수 있는 결과입니다. 일반적으로 큰 소리의 음악은 에너지가 높기 때문입니다. 그 외에는 상관관계가 비교적 약합니다. 클러스터링 알고리즘이 이 데이터를 어떻게 처리할지 흥미로울 것입니다.
`energy``loudness` 사이에만 강한 상관관계가 있습니다. 이는 시끄러운 음악이 일반적으로 매우 에너지가 넘친다는 점에서 놀랍지 않습니다. 그 외에는 상관관계가 비교적 약합니다. 이 데이터에서 클러스터링 알고리즘이 무엇을 발견할 수 있을지 흥미로울 것입니다.
> 🎓 상관관계가 인과관계를 의미하지 않는다는 점을 기억하세요! 우리는 상관관계의 증거는 있지만 인과관계의 증거는 없습니다. [재미있는 웹사이트](https://tylervigen.com/spurious-correlations)는 이 점을 강조하는 시각 자료를 제공합니다.
> 🎓 상관관계가 인과관계를 의미하지 않는다는 점을 기억하세요! 우리는 상관관계의 증거는 있지만 인과관계의 증거는 없습니다. [재미있는 웹사이트](https://tylervigen.com/spurious-correlations)는 이 점을 강조하는 시각 자료를 제공합니다.
이 데이터셋에서 곡의 인기도와 춤추기 쉬운 정도(danceability)에 대한 수렴이 있나요? FacetGrid를 보면 장르에 상관없이 동심원이 나타나는 것을 확인할 수 있습니다. 나이지리아의 취향이 이 장르에서 특정 수준의 춤추기 쉬운 정도로 수렴하는 것일까요?
이 데이터셋에서 곡의 인기도와 춤추기 쉬움(danceability)에 대한 인식이 수렴하는 경향이 있나요? FacetGrid를 보면 장르에 상관없이 동심원이 나타나는 것을 확인할 수 있습니다. 나이지리아의 취향이 이 장르에서 특정 수준의 춤추기 쉬움에 수렴하는 것일까요?
✅ 다른 데이터 포인트(예: energy, loudness, speechiness)와 더 많은 음악 장르를 시도해 보세요. 무엇을 발견할 수 있나요? `df.describe()` 테이블을 살펴보고 데이터 포인트의 일반적인 분포를 확인하세요.
✅ 다른 데이터 포인트(energy, loudness, speechiness)와 더 많은 또는 다른 음악 장르를 시도해 보세요. 무엇을 발견할 수 있나요? `df.describe()` 테이블을 살펴보고 데이터 포인트의 일반적인 분포를 확인하세요.
### 연습 - 데이터 분포
이 세 장르가 인기도와 춤추기 쉬운 정도에 대한 인식에서 유의미하게 다른가요?
이 세 장르가 인기도에 따른 춤추기 쉬움의 인식에서 유의미하게 다른가요?
1. 상위 세 장르의 데이터 분포를 주어진 x축과 y축에 따라 조사하세요.
1. 상위 세 장르의 데이터 분포를 주어진 x축과 y축에 따라 인기도와 춤추기 쉬움에 대해 조사하세요.
```python
sns.set_theme(style="ticks")
@ -301,13 +301,13 @@ CO_OP_TRANSLATOR_METADATA:
)
```
동심원이 일반적인 수렴점을 중심으로 나타나는 것을 발견할 수 있습니다. 이는 데이터 포인트의 분포를 보여줍니다.
동심원이 일반적인 수렴점을 중심으로 나타나는 것을 발견할 수 있습니다. 이는 데이터 포인트의 분포를 보여줍니다.
> 🎓 이 예제는 연속 확률 밀도 곡선을 사용하여 데이터를 나타내는 KDE(커널 밀도 추정) 그래프를 사용합니다. 이는 여러 분포를 다룰 때 데이터를 해석하는 데 유용합니다.
> 🎓 이 예제는 연속적인 확률 밀도 곡선을 사용하여 데이터를 나타내는 KDE(커널 밀도 추정) 그래프를 사용합니다. 이는 여러 분포를 다룰 때 데이터를 해석할 수 있게 해줍니다.
일반적으로 세 장르는 인기도와 춤추기 쉬운 정도 측면에서 느슨하게 정렬됩니다. 이 느슨하게 정렬된 데이터에서 클러스터를 결정하는 것은 도전 과제가 될 것입니다:
일반적으로 세 장르는 인기도와 춤추기 쉬 측면에서 느슨하게 정렬됩니다. 이 느슨하게 정렬된 데이터에서 클러스터를 결정하는 것은 도전 과제가 될 것입니다:
![distribution](../../../../translated_images/distribution.9be11df42356ca958dc8e06e87865e09d77cab78f94fe4fea8a1e6796c64dc4b.ko.png)
![distribution](../../../../5-Clustering/1-Visualize/images/distribution.png)
1. 산점도를 생성하세요:
@ -319,21 +319,21 @@ CO_OP_TRANSLATOR_METADATA:
동일한 축의 산점도는 유사한 수렴 패턴을 보여줍니다.
![Facetgrid](../../../../translated_images/facetgrid.9b2e65ce707eba1f983b7cdfed5d952e60f385947afa3011df6e3cc7d200eb5b.ko.png)
![Facetgrid](../../../../5-Clustering/1-Visualize/images/facetgrid.png)
일반적으로 클러스터링을 위해 산점도를 사용하여 데이터 클러스터를 표시할 수 있으므로 이러한 유형의 시각화를 마스터하는 것이 매우 유용합니다. 다음 강의에서는 이 필터링된 데이터를 사용하여 k-means 클러스터링을 통해 흥미로운 방식으로 겹치는 그룹을 발견할 것입니다.
일반적으로 클러스터링을 위해 산점도를 사용하여 데이터 클러스터를 보여줄 수 있으므로, 이러한 시각화 유형을 숙달하는 것이 매우 유용합니다. 다음 강의에서는 이 필터링된 데이터를 사용하여 k-means 클러스터링을 통해 흥미로운 방식으로 겹치는 그룹을 발견해 보겠습니다.
---
## 🚀도전 과제
다음 강의를 준비하면서, 프로덕션 환경에서 발견하고 사용할 수 있는 다양한 클러스터링 알고리즘에 대한 차트를 만들어 보세요. 클러스터링이 해결하려는 문제는 무엇인가요?
다음 강의를 준비하, 프로덕션 환경에서 발견하고 사용할 수 있는 다양한 클러스터링 알고리즘에 대한 차트를 만들어 보세요. 클러스터링이 해결하려는 문제는 무엇인가요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
클러스터링 알고리즘을 적용하기 전에, 데이터셋의 특성을 이해하는 것이 좋습니다. 이 주제에 대해 더 알아보세요 [여기](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html).
클러스터링 알고리즘을 적용하기 전에, 배운 것처럼 데이터셋의 특성을 이해하는 것이 좋습니다. 이 주제에 대해 더 알아보세요 [여기](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html).
[이 유용한 기사](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/)는 다양한 데이터 모양에 따라 다양한 클러스터링 알고리즘이 어떻게 작동하는지 설명합니다.
@ -344,4 +344,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문 번역가에 의한 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 신뢰할 수 있는 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,19 +1,19 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "085d571097d201810720df4cd379f8c2",
"translation_date": "2025-09-03T23:10:55+00:00",
"original_hash": "7cdd17338d9bbd7e2171c2cd462eb081",
"translation_date": "2025-09-05T10:45:29+00:00",
"source_file": "5-Clustering/2-K-Means/README.md",
"language_code": "ko"
}
-->
# K-Means 클러스터링
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
이 강의에서는 Scikit-learn과 이전에 가져온 나이지리아 음악 데이터셋을 사용하여 클러스터를 생성하는 방법을 배웁니다. 우리는 클러스터링을 위한 K-Means의 기본을 다룰 것입니다. 이전 강의에서 배운 것처럼 클러스터를 작업하는 방법은 다양하며, 사용하는 방법은 데이터에 따라 다릅니다. K-Means는 가장 일반적인 클러스터링 기법이므로 이를 시도해 보겠습니다. 시작해봅시다!
강의에서는 Scikit-learn과 이전에 가져온 나이지리아 음악 데이터셋을 사용하여 클러스터를 만드는 방법을 배웁니다. K-Means를 사용한 클러스터링의 기본 개념을 다룰 것입니다. 이전 강의에서 배운 것처럼 클러스터를 다루는 방법은 여러 가지가 있으며, 사용하는 방법은 데이터에 따라 달라집니다. 이번에는 가장 일반적인 클러스터링 기법인 K-Means를 시도해 보겠습니다. 시작해볼까요?
배울 용어:
이번 강의에서 배우게 될 용어:
- 실루엣 점수
- 엘보우 방법
@ -22,30 +22,30 @@ CO_OP_TRANSLATOR_METADATA:
## 소개
[K-Means 클러스터링](https://wikipedia.org/wiki/K-means_clustering)은 신호 처리 분야에서 유래된 방법입니다. 이 방법은 데이터 그룹을 'k'개의 클러스터로 나누고 분할하는 데 사용됩니다. 각 관측값은 주어진 데이터 포인트를 가장 가까운 '평균'(클러스터의 중심점)에 그룹화하는 역할을 합니다.
[K-Means 클러스터링](https://wikipedia.org/wiki/K-means_clustering)은 신호 처리 분야에서 유래한 방법으로, 데이터를 'k'개의 클러스터로 나누고 분할하는 데 사용됩니다. 각 관측값은 주어진 데이터 포인트를 가장 가까운 '평균값' 또는 클러스터의 중심점에 그룹화하는 역할을 합니다.
클러스터는 [보로노이 다이어그램](https://wikipedia.org/wiki/Voronoi_diagram)으로 시각화할 수 있으며, 여기에는 점(또는 '씨앗')과 해당 영역이 포함됩니다.
클러스터는 [보로노이 다이어그램](https://wikipedia.org/wiki/Voronoi_diagram)으로 시각화할 수 있으며, 여기에는 점(또는 '시드')과 해당 영역이 포함됩니다.
![voronoi diagram](../../../../translated_images/voronoi.1dc1613fb0439b9564615eca8df47a4bcd1ce06217e7e72325d2406ef2180795.ko.png)
![voronoi diagram](../../../../5-Clustering/2-K-Means/images/voronoi.png)
> [Jen Looper](https://twitter.com/jenlooper)의 인포그래픽
> 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
K-Means 클러스터링 프로세스는 [세 단계로 실행됩니다](https://scikit-learn.org/stable/modules/clustering.html#k-means):
K-Means 클러스터링 과정은 [세 단계로 실행됩니다](https://scikit-learn.org/stable/modules/clustering.html#k-means):
1. 알고리즘은 데이터셋에서 샘플링하여 k개의 중심점을 선택합니다. 이후 반복적으로:
1. 알고리즘이 데이터셋에서 k개의 중심점을 선택합니다. 이후 반복적으로 다음을 수행합니다:
1. 각 샘플을 가장 가까운 중심점에 할당합니다.
2. 이전 중심점에 할당된 모든 샘플의 평균값을 계산하여 새로운 중심점을 생성합니다.
3. 새로운 중심점과 이전 중심점 간의 차이를 계산하고 중심점이 안정화될 때까지 반복합니다.
3. 새로운 중심점과 이전 중심점 간의 차이를 계산하고, 중심점이 안정화될 때까지 반복합니다.
K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다는 점입니다. 다행히도 '엘보우 방법'을 사용하면 'k'의 좋은 시작 값을 추정할 수 있습니다. 곧 시도해볼 것입니다.
K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 미리 설정해야 한다는 점입니다. 다행히도 '엘보우 방법'을 사용하면 'k'의 적절한 시작 값을 추정할 수 있습니다. 곧 이를 시도해볼 것입니다.
## 전제 조건
## 사전 준비
이 강의에서는 이전 강의에서 데이터 가져오기와 초기 정리를 수행한 [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/notebook.ipynb) 파일을 사용합니다.
강의에서는 이전 강의에서 데이터 가져오기와 초기 정리를 완료한 [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/notebook.ipynb) 파일을 사용합니다.
## 실습 - 준비
## 실습 - 준비 단계
노래 데이터를 다시 살펴보세요.
우선, 노래 데이터셋을 다시 살펴보세요.
1. 각 열에 대해 `boxplot()`을 호출하여 박스플롯을 생성하세요:
@ -91,11 +91,11 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
이 데이터는 약간 노이즈가 있습니다. 각 열을 박스플롯으로 관찰하면 이상치(outlier)를 확인할 수 있습니다.
![outliers](../../../../translated_images/boxplots.8228c29dabd0f29227dd38624231a175f411f1d8d4d7c012cb770e00e4fdf8b6.ko.png)
![outliers](../../../../5-Clustering/2-K-Means/images/boxplots.png)
데이터셋을 살펴보고 이러한 이상치를 제거할 수도 있지만, 그렇게 하면 데이터가 너무 축소될 수 있습니다.
1. 클러스터링 실습에 사용할 열을 선택하세요. 범위가 비슷한 열을 선택하고 `artist_top_genre` 열을 숫자 데이터로 인코딩하세요:
1. 클러스터링 실습에 사용할 열을 선택하세요. 비슷한 범위를 가진 열을 선택하고 `artist_top_genre` 열을 숫자 데이터로 인코딩하세요:
```python
from sklearn.preprocessing import LabelEncoder
@ -110,7 +110,7 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
y = le.transform(y)
```
1. 이제 몇 개의 클러스터를 목표로 할지 선택해야 합니다. 데이터셋에서 추출한 3개의 노래 장르가 있으므로 3개를 시도해봅시다:
1. 이제 몇 개의 클러스터를 목표로 할지 선택해야 합니다. 데이터셋에서 3개의 노래 장르를 추출했으므로, 3개를 시도해봅시다:
```python
from sklearn.cluster import KMeans
@ -127,7 +127,7 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
y_cluster_kmeans
```
데이터프레임의 각 행에 대해 예측된 클러스터(0, 1, 또는 2)가 포함된 배열이 출력됩니다.
데이터프레임의 각 행에 대해 예측된 클러스터(0, 1, 2)가 포함된 배열이 출력됩니다.
1. 이 배열을 사용하여 '실루엣 점수'를 계산하세요:
@ -139,9 +139,9 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
## 실루엣 점수
실루엣 점수가 1에 가까운지 확인하세요. 이 점수는 -1에서 1까지 변하며, 점수가 1이면 클러스터가 밀집되어 있고 다른 클러스터와 잘 분리되어 있음을 나타냅니다. 0에 가까운 값은 클러스터가 겹쳐져 있고 샘플이 이웃 클러스터의 경계에 매우 가까이 있음을 나타냅니다. [(출처)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam)
실루엣 점수가 1에 가까운지 확인하세요. 이 점수는 -1에서 1 사이의 값을 가지며, 점수가 1에 가까울수록 클러스터가 밀집되어 있고 다른 클러스터와 잘 분리되어 있음을 나타냅니다. 0에 가까운 값은 클러스터가 겹쳐져 있고 샘플이 이웃 클러스터의 경계에 매우 가까이 있음을 나타냅니다. [(출처)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam)
우리의 점수는 **0.53**으로 중간 정도입니다. 이는 데이터가 이 유형의 클러스터링에 특히 적합하지 않음을 나타내지만 계속 진행해봅시다.
우리의 점수는 **0.53**으로, 중간 정도입니다. 이는 데이터가 이 유형의 클러스터링에 특히 적합하지 않음을 나타내지만, 계속 진행해봅시다.
### 실습 - 모델 구축
@ -160,15 +160,15 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
여기에는 설명이 필요한 몇 가지 부분이 있습니다.
> 🎓 range: 클러스터링 프로세스의 반복 횟수
> 🎓 range: 클러스터링 프로세스의 반복 횟수입니다.
> 🎓 random_state: "중심점 초기화를 위한 난수 생성 결정" [출처](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)
> 🎓 random_state: "중심점 초기화를 위한 난수 생성기를 결정합니다." [출처](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)
> 🎓 WCSS: "클러스터 내 제곱합"은 클러스터 중심점에서 클러스터 내 모든 점의 평균 제곱 거리를 측정합니다. [출처](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce)
> 🎓 WCSS: "클러스터 내 제곱합"으로, 클러스터 중심점에서 모든 점까지의 평균 제곱 거리를 측정합니다. [출처](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce)
> 🎓 관성: K-Means 알고리즘은 '관성'을 최소화하도록 중심점을 선택하려고 시도합니다. 관성은 "클러스터가 내부적으로 얼마나 일관성이 있는지를 측정하는 값"입니다. [출처](https://scikit-learn.org/stable/modules/clustering.html). 이 값은 각 반복에서 wcss 변수에 추가됩니다.
> 🎓 관성(Inertia): K-Means 알고리즘은 '관성'을 최소화하도록 중심점을 선택하려고 시도합니다. 관성은 클러스터가 내부적으로 얼마나 일관성 있는지를 측정합니다. [출처](https://scikit-learn.org/stable/modules/clustering.html). 이 값은 각 반복에서 wcss 변수에 추가됩니다.
> 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means)에서는 'k-means++' 최적화를 사용할 수 있습니다. 이는 "중심점이 일반적으로 서로 멀리 떨어지도록 초기화하여 무작위 초기화보다 더 나은 결과를 도출할 가능성이 높습니다."
> 🎓 k-means++: [Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html#k-means)에서는 'k-means++' 최적화를 사용할 수 있습니다. 이는 중심점이 서로 멀리 떨어지도록 초기화하여 무작위 초기화보다 더 나은 결과를 얻을 가능성이 높습니다.
### 엘보우 방법
@ -185,13 +185,13 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
plt.show()
```
이전 단계에서 생성한 `wcss` 변수를 사용하여 엘보우의 '굽힘'을 나타내는 차트를 생성하세요. 이는 최적의 클러스터 수를 나타냅니다. 아마도 **3**일지도 모릅니다!
이전 단계에서 생성한 `wcss` 변수를 사용하여 '엘보우'의 꺾이는 지점을 나타내는 차트를 생성하세요. 이 지점이 최적의 클러스터 수를 나타냅니다. 아마도 **3개**일 것입니다!
![elbow method](../../../../translated_images/elbow.72676169eed744ff03677e71334a16c6b8f751e9e716e3d7f40dd7cdef674cca.ko.png)
![elbow method](../../../../5-Clustering/2-K-Means/images/elbow.png)
## 실습 - 클러스터 표시
1. 이번에는 3개의 클러스터를 설정하고 클러스터를 산점도로 표시하세요:
1. 이번에는 3개의 클러스터를 설정하고, 클러스터를 산점도로 표시하세요:
```python
from sklearn.cluster import KMeans
@ -218,42 +218,42 @@ K-Means의 단점 중 하나는 'k', 즉 중심점의 수를 설정해야 한다
이 모델의 정확도는 그다지 좋지 않으며, 클러스터의 모양이 그 이유를 암시합니다.
![clusters](../../../../translated_images/clusters.b635354640d8e4fd4a49ef545495518e7be76172c97c13bd748f5b79f171f69a.ko.png)
![clusters](../../../../5-Clustering/2-K-Means/images/clusters.png)
이 데이터는 너무 불균형적이고, 상관관계가 적으며, 열 값 간의 분산이 너무 커서 클러스터링이 잘 이루어지지 않습니다. 사실, 형성된 클러스터는 우리가 위에서 정의한 3개의 장르 범주에 의해 크게 영향을 받거나 왜곡되었을 가능성이 높습니다. 이것은 학습 과정이었습니다!
이 데이터는 너무 불균형하고, 상관관계가 적으며, 열 값 간의 분산이 너무 커서 잘 클러스터링되지 않습니다. 사실, 형성된 클러스터는 우리가 위에서 정의한 세 가지 장르 카테고리에 의해 크게 영향을 받거나 왜곡되었을 가능성이 높습니다. 이것은 학습 과정의 일부였습니다!
Scikit-learn 문서에서는 이 모델처럼 클러스터가 잘 구분되지 않은 경우 '분산' 문제가 있다고 설명합니다:
![problem models](../../../../translated_images/problems.f7fb539ccd80608e1f35c319cf5e3ad1809faa3c08537aead8018c6b5ba2e33a.ko.png)
> Scikit-learn의 인포그래픽
![problem models](../../../../5-Clustering/2-K-Means/images/problems.png)
> 인포그래픽: Scikit-learn
## 분산
분산은 "평균에서의 제곱 차이의 평균"으로 정의됩니다 [(출처)](https://www.mathsisfun.com/data/standard-deviation.html). 이 클러스터링 문제의 맥락에서 이는 데이터셋의 숫자가 평균에서 너무 많이 벗어나는 경향을 나타냅니다.
분산은 "평균으로부터의 제곱 차이의 평균"으로 정의됩니다 [(출처)](https://www.mathsisfun.com/data/standard-deviation.html). 이 클러스터링 문제의 맥락에서, 이는 데이터셋의 숫자가 평균에서 너무 많이 벗어나는 경향이 있음을 나타냅니다.
✅ 이 문제를 해결할 방법을 생각해볼 좋은 시점입니다. 데이터를 조금 더 조정할까요? 다른 열을 사용할까요? 다른 알고리즘을 사용할까요? 힌트: 데이터를 [스케일링](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/)하여 정규화하고 다른 열을 테스트해보세요.
✅ 이 문제를 해결할 수 있는 모든 방법을 생각해볼 좋은 기회입니다. 데이터를 조금 더 조정해볼까요? 다른 열을 사용해볼까요? 다른 알고리즘을 사용해볼까요? 힌트: 데이터를 [스케일링](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/)하여 정규화하고 다른 열을 테스트해보세요.
> '[분산 계산기](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)'를 사용하여 개념을 더 이해해보세요.
> '[분산 계산기](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)'를 사용하여 개념을 조금 더 이해해보세요.
---
## 🚀도전 과제
이 노트북을 사용하여 매개변수를 조정하는 데 시간을 투자세요. 데이터를 더 정리(예: 이상치 제거)하여 모델의 정확도를 개선할 수 있나요? 특정 데이터 샘플에 더 많은 가중치를 부여할 수 있습니다. 더 나은 클러스터를 생성하기 위해 무엇을 할 수 있을까요?
이 노트북을 사용하여 매개변수를 조정하는 데 시간을 투자해보세요. 데이터를 더 정리(예: 이상치 제거)하여 모델의 정확도를 개선할 수 있나요? 특정 데이터 샘플에 더 많은 가중치를 부여할 수 있습니다. 더 나은 클러스터를 생성하기 위해 무엇을 할 수 있을까요?
힌트: 데이터를 스케일링해보세요. 노트북에 주석 처리된 코드가 있어 표준 스케일링을 추가하여 데이터 열이 범위 면에서 서로 더 비슷하게 보이도록 만들 수 있습니다. 실루엣 점수는 낮아지지만, 엘보우 그래프의 '굽힘'이 부드러워집니다. 이는 데이터를 스케일링하지 않으면 분산이 적은 데이터가 더 많은 가중치를 가지게 되는 문제 때문입니다. 이 문제에 대해 [여기](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226)에서 더 읽어보세요.
힌트: 데이터를 스케일링해보세요. 노트북에는 데이터 열이 범위 면에서 더 비슷해지도록 표준 스케일링을 추가하는 주석 처리된 코드가 있습니다. 데이터를 스케일링하지 않으면 분산이 적은 데이터가 더 큰 가중치를 가지게 됩니다. 이 문제에 대해 더 알아보려면 [여기](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226) 읽어보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
[K-Means 시뮬레이터](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/)를 살펴보세요. 이 도구를 사용하여 샘플 데이터 포인트를 시각화하고 중심점을 결정할 수 있습니다. 데이터의 무작위성, 클러스터 수 및 중심점 수를 편집할 수 있습니다. 데이터가 어떻게 그룹화될 수 있는지에 대한 아이디어를 얻는 데 도움이 되나요?
[K-Means 시뮬레이터](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/)를 살펴보세요. 이 도구를 사용하여 샘플 데이터 포인트를 시각화하고 중심점을 결정할 수 있습니다. 데이터의 무작위성, 클러스터 수, 중심점 수를 편집할 수 있습니다. 데이터가 어떻게 그룹화될 수 있는지 이해하는 데 도움이 되나요?
또한 Stanford의 [K-Means 핸드아웃](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html)을 살펴보세요.
또한, Stanford의 [K-Means 핸드아웃](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html)을 살펴보세요.
## 과제
[다른 클러스터링 방법을 시도해보세요](assignment.md)
[다른 클러스터링 방법 시도하기](assignment.md)
---

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "89e923cf3e8bdff9662536e8bf9516e6",
"translation_date": "2025-09-04T00:46:48+00:00",
"original_hash": "1c2ec40cf55c98a028a359c27ef7e45a",
"translation_date": "2025-09-05T10:56:52+00:00",
"source_file": "6-NLP/1-Introduction-to-NLP/README.md",
"language_code": "ko"
}
@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
이 강의에서는 *계산 언어학*의 하위 분야인 *자연어 처리*의 간략한 역사와 중요한 개념을 다룹니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/31/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 소개
@ -21,35 +21,35 @@ CO_OP_TRANSLATOR_METADATA:
여러분은 다음을 배우게 됩니다:
- **언어의 개념**. 언어가 어떻게 발전했는지와 주요 연구 분야에 대해 알아봅니다.
- **정의와 개념**. 컴퓨터가 텍스트를 처리하는 방법, 구문 분석, 문법, 명사와 동사를 식별하는 방법에 대한 정의와 개념을 배우게 됩니다. 이 강의에서는 몇 가지 코딩 작업이 포함되어 있으며, 이후 강의에서 코딩을 배우게 될 중요한 개념이 소개됩니다.
- **언어의 개념**. 언어가 어떻게 발전했는지, 주요 연구 분야는 무엇이었는지에 대해 배웁니다.
- **정의와 개념**. 컴퓨터가 텍스트를 처리하는 방법, 구문 분석, 문법, 명사와 동사를 식별하는 방법에 대한 정의와 개념을 배우게 됩니다. 이 강의에서는 몇 가지 코딩 작업이 포함되어 있으며, 이후 강의에서 코딩을 배우게 될 몇 가지 중요한 개념이 소개됩니다.
## 계산 언어학
계산 언어학은 수십 년 동안 컴퓨터가 언어를 작업하고, 이해하고, 번역하고, 심지어 소통할 수 있는 방법을 연구하는 분야입니다. 자연어 처리(NLP)는 컴퓨터가 '자연어', 즉 인간의 언어를 처리하는 방법에 초점을 맞춘 관련 분야입니다.
계산 언어학은 컴퓨터가 언어를 작업하고, 이해하고, 번역하고, 심지어 의사소통할 수 있는 방법을 연구하는 수십 년간의 연구 및 개발 분야입니다. 자연어 처리(NLP)는 컴퓨터가 '자연어', 즉 인간의 언어를 처리하는 방법에 초점을 맞춘 관련 분야입니다.
### 예시 - 전화 음성 입력
전화로 타이핑 대신 음성을 입력하거나 가상 비서에게 질문을 한 적이 있다면, 여러분의 음성은 텍스트 형태로 변환된 후 여러분이 말한 언어에서 *구문 분석*됩니다. 감지된 키워드는 전화나 비서가 이해하고 실행할 수 있는 형식으로 처리됩니다.
![이해](../../../../translated_images/comprehension.619708fc5959b0f6a24ebffba2ad7b0625391a476141df65b43b59de24e45c6f.ko.png)
![이해](../../../../6-NLP/1-Introduction-to-NLP/images/comprehension.png)
> 실제 언어적 이해는 어렵습니다! 이미지 제공: [Jen Looper](https://twitter.com/jenlooper)
### 이 기술은 어떻게 가능할까요?
이 기술은 누군가가 이를 수행하는 컴퓨터 프로그램을 작성했기 때문에 가능합니다. 몇십 년 전, 일부 공상 과학 작가들은 사람들이 주로 컴퓨터와 대화하고 컴퓨터가 항상 그들이 의미하는 바를 정확히 이해할 것이라고 예측했습니다. 안타깝게도 이는 많은 사람들이 상상했던 것보다 더 어려운 문제로 밝혀졌으며, 오늘날에는 훨씬 더 잘 이해되는 문제이지만 문장의 의미를 이해하는 '완벽한' 자연어 처리를 달성하는 데는 여전히 상당한 어려움이 있습니다. 특히 유머를 이해하거나 문장에서 풍자와 같은 감정을 감지하는 것은 매우 어려운 문제입니다.
이 기술은 누군가가 이를 수행하는 컴퓨터 프로그램을 작성했기 때문에 가능합니다. 몇십 년 전, 일부 공상 과학 작가들은 사람들이 대부분 컴퓨터와 대화하고 컴퓨터가 항상 정확히 그들의 의도를 이해할 것이라고 예측했습니다. 하지만 이는 많은 사람들이 상상했던 것보다 더 어려운 문제로 밝혀졌습니다. 오늘날 이 문제는 훨씬 더 잘 이해되고 있지만, 문장의 의미를 이해하는 '완벽한' 자연어 처리를 달성하는 데는 여전히 상당한 어려움이 있습니다. 특히 유머를 이해하거나 문장에서 감정(예: 풍자)을 감지하는 것은 매우 어려운 문제입니다.
이 시점에서 학교 수업에서 문장의 문법 부분을 배운 기억이 떠오를 수도 있습니다. 일부 국가에서는 학생들이 문법과 언어학을 전용 과목으로 배우지만, 많은 국가에서는 이러한 주제가 언어 학습의 일부로 포함됩니다. 이는 초등학교에서 첫 번째 언어를 배우는 과정(읽고 쓰는 법 배우기)과 중등학교 또는 고등학교에서 두 번째 언어를 배우는 과정에서 이루어질 수 있습니다. 명사와 동사 또는 부사와 형용사를 구분하는 데 전문가가 아니더라도 걱정하지 마세요!
이 시점에서 학교에서 문장의 문법 부분을 배운 수업을 떠올릴 수도 있습니다. 일부 국가에서는 문법과 언어학을 전용 과목으로 가르치지만, 많은 국가에서는 이러한 주제를 언어 학습의 일부로 포함합니다. 이는 초등학교에서 첫 번째 언어를 배우는 과정(읽고 쓰는 법 배우기)과 중등학교 또는 고등학교에서 두 번째 언어를 배우는 과정에서 이루어질 수 있습니다. 명사와 동사, 부사와 형용사를 구분하는 데 전문가가 아니더라도 걱정하지 마세요!
*단순 현재 시제*와 *현재 진행형*의 차이를 구분하는 데 어려움을 겪는다면, 여러분은 혼자가 아닙니다. 이는 많은 사람들에게, 심지어 모국어를 사용하는 사람들에게도 어려운 일입니다. 좋은 소식은 컴퓨터가 공식적인 규칙을 적용하는 데 매우 능숙하다는 것이며, 여러분은 문장을 인간처럼 *구문 분석*할 수 있는 코드를 작성하는 방법을 배우게 될 것입니다. 이후에 살펴볼 더 큰 도전은 문장의 *의미**감정*을 이해하는 것입니다.
*단순 현재 시제*와 *현재 진행형*의 차이를 구분하는 데 어려움을 겪는다면, 여러분만 그런 것이 아닙니다. 이는 많은 사람들에게, 심지어 언어의 원어민에게도 어려운 일입니다. 좋은 소식은 컴퓨터가 형식적인 규칙을 적용하는 데 매우 능숙하다는 것입니다. 여러분은 문장을 인간만큼 잘 *구문 분석*할 수 있는 코드를 작성하는 방법을 배우게 될 것입니다. 이후에 문장의 *의미**감정*을 이해하는 더 큰 도전을 살펴보게 될 것입니다.
## 사전 요구 사항
이 강의를 위해 주요 요구 사항은 이 강의의 언어를 읽고 이해할 수 있는 능력입니다. 수학 문제나 방정식을 풀 필요는 없습니다. 원래 저자가 이 강의를 영어로 작성했지만, 다른 언어로 번역되었을 수도 있으므로 번역본을 읽고 있을 가능성도 있습니다. 여러 언어의 문법 규칙을 비교하기 위해 다양한 언어가 사용된 예제가 있습니다. 이러한 예제는 번역되지 않지만, 설명 텍스트는 번역되므로 의미는 명확할 것입니다.
이 강의의 주요 요구 사항은 강의의 언어를 읽고 이해할 수 있는 능력입니다. 수학 문제나 방정식을 풀 필요는 없습니다. 원래 저자가 이 강의를 영어로 작성했지만, 다른 언어로 번역되었을 수도 있으 번역본을 읽고 있을 가능성도 있습니다. 여러 언어의 문법 규칙을 비교하기 위해 다양한 언어가 사용된 예제가 있습니다. 이러한 예제는 번역되지 않지만, 설명 텍스트는 번역되므로 의미는 명확할 것입니다.
코딩 작업을 위해 Python을 사용하며, 예제는 Python 3.8을 사용합니다.
이 섹션에서 필요하고 사용할 내용은 다음과 같습니다:
이 섹션에서 필요한 것은 다음과 같습니다:
- **Python 3 이해**. Python 3 프로그래밍 언어 이해, 이 강의에서는 입력, 루프, 파일 읽기, 배열을 사용합니다.
- **Visual Studio Code + 확장 프로그램**. Visual Studio Code와 Python 확장 프로그램을 사용합니다. 원하는 Python IDE를 사용할 수도 있습니다.
@ -60,7 +60,7 @@ CO_OP_TRANSLATOR_METADATA:
python -m textblob.download_corpora
```
> 💡 팁: VS Code 환경에서 직접 Python을 실행할 수 있습니다. 자세한 내용은 [문서](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott)를 확인하세요.
> 💡 팁: VS Code 환경에서 Python을 직접 실행할 수 있습니다. 자세한 내용은 [문서](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott)를 확인하세요.
## 기계와 대화하기
@ -68,19 +68,19 @@ CO_OP_TRANSLATOR_METADATA:
### '튜링 테스트'
튜링은 1950년대에 *인공지능*을 연구하면서, 인간과 컴퓨터가 (타이핑된 대화로) 대화를 나누는 테스트를 제안했습니다. 이 테스트에서 인간은 자신이 대화하고 있는 상대가 인간인지 컴퓨터인지 확신할 수 없게 됩니다.
튜링은 1950년대에 *인공지능*을 연구하면서, 인간과 컴퓨터가 대화(타이핑을 통해)하는 테스트를 제안했습니다. 이 테스트에서 인간은 자신이 대화하고 있는 상대가 인간인지 컴퓨터인지 확신할 수 없게 됩니다.
만약 일정 시간 동안의 대화 후에 인간이 상대가 컴퓨터인지 아닌지를 판단할 수 없다면, 컴퓨터가 *생각*한다고 말할 수 있을까요?
### 영감 - '모방 게임'
이 아이디어는 *모방 게임*이라는 파티 게임에서 영감을 받았습니다. 이 게임에서 조사자는 방에 혼자 있고, 다른 방에 있는 두 사람 중 각각 남성과 여성의 성별을 결정해야 합니다. 조사자는 메모를 보낼 수 있으며, 작성된 답변이 신비한 사람의 성별을 드러내는 질문을 생각해야 합니다. 물론, 다른 방에 있는 플레이어들은 정직하게 답변하는 것처럼 보이면서도 조사자를 혼란스럽게 하거나 오도하려고 노력합니다.
이 아이디어는 *모방 게임*이라는 파티 게임에서 영감을 받았습니다. 이 게임에서 조사자는 방에 혼자 있고, 다른 방에 있는 두 사람이 각각 남성과 여성인지 판단해야 합니다. 조사자는 메모를 보낼 수 있으며, 작성된 답변이 신비한 사람의 성별을 드러내는 질문을 생각해야 합니다. 물론, 다른 방 플레이어들은 정직하게 답변하는 것처럼 보이면서도 조사자를 혼란스럽게 하거나 오도하려고 노력합니다.
### 엘리자 개발
1960년대 MIT의 과학자인 *조셉 와이젠바움*은 [*엘리자*](https://wikipedia.org/wiki/ELIZA)라는 컴퓨터 '치료사'를 개발했습니다. 엘리자는 인간에게 질문을 하고 인간의 답변을 이해하는 것처럼 보였습니다. 그러나 엘리자는 문장을 구문 분석하고 특정 문법 구조와 키워드를 식별하여 합리적인 답변을 제공할 수 있었지만, 문장을 *이해*한다고 말할 수는 없었습니다. 예를 들어, 엘리자에게 "**나는** <u>슬프다</u>"라는 형식의 문장이 주어지면, 문장의 시제를 변경하고 몇 가지 단어를 추가하여 "얼마나 오랫동안 **당신은** <u>슬펐나요</u>"라는 답변을 생성할 수 있었습니다.
1960년대 MIT의 과학자인 *조셉 와이젠바움*인간에게 질문을 하고 그들의 답변을 이해하는 것처럼 보이는 컴퓨터 '치료사' [*엘리자*](https://wikipedia.org/wiki/ELIZA)를 개발했습니다. 그러나 엘리자는 문장을 구문 분석하고 특정 문법 구조와 키워드를 식별하여 합리적인 답변을 제공할 수 있었지만, 문장을 *이해*한다고 말할 수는 없었습니다. 예를 들어, 엘리자에게 "**나는** <u>슬프다</u>"라는 형식의 문장이 주어지면, 문장의 시제를 변경하고 몇 가지 단어를 추가하여 "얼마나 오랫동안 **당신은** <u>슬펐나요</u>"라는 답변을 생성할 수 있었습니다.
답변은 엘리자가 문장을 이해하고 후속 질문을 하고 있는 것처럼 보이게 했지만, 실제로는 시제를 변경하고 몇 가지 단어를 추가한 것뿐이었습니다. 엘리자가 응답할 키워드를 식별할 수 없으면, 대신 여러 다른 문장에 적용될 수 있는 무작위 응답을 제공했습니다. 예를 들어, 사용자가 "**당신은** <u>자전거</u>입니다"라고 작성하면, 엘리자는 "얼마나 오랫동안 **나는** <u>자전거</u>였나요?"라고 응답할 수 있었으며, 더 합리적인 응답을 제공하지 못했습니다.
엘리자가 문장을 이해하고 후속 질문을 하는 것처럼 보이게 했지만, 실제로는 시제를 변경하고 몇 가지 단어를 추가한 것뿐이었습니다. 엘리자가 응답할 키워드를 식별할 수 없으면, 대신 여러 다른 문장에 적용될 수 있는 무작위 응답을 제공했습니다. 예를 들어, 사용자가 "**당신은** <u>자전거</u>입니다"라고 작성하면, 엘리자는 "얼마나 오랫동안 **나는** <u>자전거</u>였나요?"라고 응답할 수 있었으며, 이는 더 합리적인 응답이 아닙니다.
[![엘리자와 대화하기](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "엘리자와 대화하기")
@ -90,11 +90,11 @@ CO_OP_TRANSLATOR_METADATA:
## 연습 - 기본 대화형 봇 코딩하기
엘리자와 같은 대화형 봇은 사용자 입력을 유도하고 이해하고 지능적으로 응답하는 것처럼 보이는 프로그램입니다. 엘리자와 달리, 우리의 봇은 지능적인 대화를 하는 것처럼 보이게 하는 여러 규칙을 갖고 있지는 않을 것입니다. 대신, 우리의 봇은 단순한 대화에서 거의 모든 경우에 작동할 수 있는 무작위 응답을 통해 대화를 계속 이어가는 한 가지 능력만 가질 것입니다.
엘리자와 같은 대화형 봇은 사용자 입력을 유도하고 지능적으로 이해하고 응답하는 것처럼 보이는 프로그램입니다. 엘리자와 달리, 우리의 봇은 지능적인 대화를 하는 것처럼 보이게 하는 여러 규칙을 갖추고 있지는 않습니다. 대신, 우리의 봇은 단순한 대화에서 작동할 수 있는 무작위 응답을 통해 대화를 계속 이어가는 한 가지 능력만 갖추고 있습니다.
### 계획
대화형 봇을 구축할 때의 단계:
대화형 봇을 만들 때의 단계:
1. 사용자에게 봇과 상호작용하는 방법에 대한 지침을 출력합니다.
2. 루프를 시작합니다.
@ -106,9 +106,9 @@ CO_OP_TRANSLATOR_METADATA:
### 봇 만들기
이제 봇을 만들어봅시다. 몇 가지 문구를 정의하는 것으로 시작하겠습니다.
이제 봇을 만들어 봅시다. 몇 가지 문구를 정의하는 것부터 시작하겠습니다.
1. 다음과 같은 무작위 응답을 사용하는 Python에서 직접 봇을 만들어보세요:
1. 다음과 같은 무작위 응답을 사용하는 Python에서 직접 봇을 만들어 보세요:
```python
random_responses = ["That is quite interesting, please tell me more.",
@ -142,23 +142,23 @@ CO_OP_TRANSLATOR_METADATA:
It was nice talking to you, goodbye!
```
작업에 대한 하나의 가능한 솔루션은 [여기](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py)에 있습니다.
작업에 대한 가능한 솔루션은 [여기](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py)에 있습니다.
✅ 멈추고 생각해보기
1. 무작위 응답이 봇이 실제로 사용자를 이해한다고 생각하게 만들 수 있을까요?
2. 봇이 더 효과적이 되기 위해 필요한 기능은 무엇일까요?
3. 봇이 문장의 의미를 실제로 '이해'할 수 있다면, 대화에서 이전 문장의 의미를 '기억'해야 할까요?
3. 봇이 문장의 의미를 정말로 '이해'할 수 있다면, 대화에서 이전 문장의 의미를 '기억'해야 할까요?
---
## 🚀도전
위의 "멈추고 생각해보기" 요소 중 하나를 선택하여 코드로 구현하거나 의사 코드로 종이에 솔루션을 작성해보세요.
위의 "멈추고 생각해보기" 요소 중 하나를 선택하여 코드로 구현하거나 의사 코드로 해결책을 작성해보세요.
다음 강의에서는 자연어를 구문 분석하고 머신 러닝을 사용하는 여러 접근법에 대해 배우게 될 것입니다.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/32/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
@ -176,4 +176,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6534e145d52a3890590d27be75386e5d",
"translation_date": "2025-09-04T00:34:52+00:00",
"original_hash": "5f3cb462e3122e1afe7ab0050ccf2bd3",
"translation_date": "2025-09-05T10:55:03+00:00",
"source_file": "6-NLP/2-Tasks/README.md",
"language_code": "ko"
}
@ -11,9 +11,9 @@ CO_OP_TRANSLATOR_METADATA:
대부분의 *자연어 처리* 작업에서는 처리할 텍스트를 분해하고, 분석하며, 결과를 저장하거나 규칙 및 데이터 세트와 교차 참조해야 합니다. 이러한 작업을 통해 프로그래머는 텍스트에서 _의미_, _의도_, 또는 단순히 _단어 빈도_를 도출할 수 있습니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/33/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
텍스트를 처리하는 데 사용되는 일반적인 기술을 알아봅시다. 이러한 기술은 머신 러닝과 결합하여 대량의 텍스트를 효율적으로 분석할 수 있도록 도와줍니다. 그러나 ML을 이러한 작업에 적용하기 전에 NLP 전문가가 직면하는 문제를 이해해 봅시다.
텍스트를 처리하는 데 사용되는 일반적인 기술을 알아봅시다. 이러한 기술은 머신 러닝과 결합하여 대량의 텍스트를 효율적으로 분석할 수 있도록 도와줍니다. 하지만 ML을 이러한 작업에 적용하기 전에 NLP 전문가가 직면하는 문제를 이해해 봅시다.
## NLP의 일반적인 작업
@ -21,33 +21,33 @@ CO_OP_TRANSLATOR_METADATA:
### 토큰화
대부분의 NLP 알고리즘이 가장 먼저 해야 할 일은 텍스트를 토큰, 즉 단어로 분리하는 것입니다. 간단해 보이지만, 문장 부호와 다양한 언어의 단어 및 문장 구분자를 고려해야 하므로 까다로울 수 있습니다. 구분을 결정하기 위해 다양한 방법을 사용해야 할 수도 있습니다.
대부분의 NLP 알고리즘이 처음으로 수행해야 하는 작업은 텍스트를 토큰, 즉 단어로 분리하는 것입니다. 간단해 보이지만, 문장 부호와 다양한 언어의 단어 및 문장 구분자를 고려해야 하므로 까다로울 수 있습니다. 구분을 결정하기 위해 다양한 방법을 사용해야 할 수도 있습니다.
![토큰화](../../../../translated_images/tokenization.1641a160c66cd2d93d4524e8114e93158a9ce0eba3ecf117bae318e8a6ad3487.ko.png)
> **Pride and Prejudice**의 문장을 토큰화하는 과정. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
![토큰화](../../../../6-NLP/2-Tasks/images/tokenization.png)
> **Pride and Prejudice**의 문장을 토큰화한 모습. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
### 임베딩
[단어 임베딩](https://wikipedia.org/wiki/Word_embedding)은 텍스트 데이터를 숫자로 변환하는 방법입니다. 임베딩은 비슷한 의미를 가진 단어 또는 함께 사용되는 단어들이 서로 가까이 모이도록 수행됩니다.
![단어 임베딩](../../../../translated_images/embedding.2cf8953c4b3101d188c2f61a5de5b6f53caaa5ad4ed99236d42bc3b6bd6a1fe2.ko.png)
> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice**의 문장에 대한 단어 임베딩. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
![단어 임베딩](../../../../6-NLP/2-Tasks/images/embedding.png)
> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice**의 문장에 단어 임베딩. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
✅ [이 흥미로운 도구](https://projector.tensorflow.org/)를 사용하여 단어 임베딩을 실험해 보세요. 단어를 클릭하면 'toy'가 'disney', 'lego', 'playstation', 'console'과 같은 유사 단어 클러스터와 연결되는 것을 볼 수 있습니다.
✅ [이 흥미로운 도구](https://projector.tensorflow.org/)를 사용 단어 임베딩을 실험해 보세요. 단어를 클릭하면 'toy'가 'disney', 'lego', 'playstation', 'console'과 같은 유사 단어 클러스터와 연결되는 것을 볼 수 있습니다.
### 구문 분석 및 품사 태깅
토큰화된 각 단어는 명사, 동사, 형용사와 같은 품사로 태깅될 수 있습니다. 예를 들어, `the quick red fox jumped over the lazy brown dog`라는 문장은 fox = 명사, jumped = 동사로 품사 태깅될 수 있습니다.
토큰화된 각 단어는 명사, 동사, 형용사와 같은 품사로 태깅될 수 있습니다. 예를 들어, `the quick red fox jumped over the lazy brown dog`라는 문장은 fox = 명사, jumped = 동사로 태깅될 수 있습니다.
![구문 분석](../../../../translated_images/parse.d0c5bbe1106eae8fe7d60a183cd1736c8b6cec907f38000366535f84f3036101.ko.png)
![구문 분석](../../../../6-NLP/2-Tasks/images/parse.png)
> **Pride and Prejudice**의 문장을 구문 분석하는 과정. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
> **Pride and Prejudice**의 문장을 구문 분석한 모습. 인포그래픽: [Jen Looper](https://twitter.com/jenlooper)
구문 분석은 문장에서 어떤 단어들이 서로 관련되어 있는지 인식하는 과정입니다. 예를 들어, `the quick red fox jumped`는 형용사-명사-동사 시퀀스로 `lazy brown dog` 시퀀스와는 별개입니다.
구문 분석은 문장에서 어떤 단어들이 서로 관련이 있는지 인식하는 것입니다. 예를 들어, `the quick red fox jumped`는 형용사-명사-동사 시퀀스로 `lazy brown dog` 시퀀스와는 별개입니다.
### 단어 및 구문 빈도
대량의 텍스트를 분석할 때 유용한 절차는 관심 있는 모든 단어 또는 구문의 사전을 작성하고 그것이 얼마나 자주 나타나는지 기록하는 것입니다. 예를 들어, `the quick red fox jumped over the lazy brown dog`라는 문장에서 `the`의 단어 빈도는 2입니다.
대량의 텍스트를 분석할 때 유용한 절차는 관심 있는 모든 단어 또는 구문의 사전을 작성하고 그것이 나타나는 빈도를 기록하는 것입니다. 예를 들어, `the quick red fox jumped over the lazy brown dog`라는 구문에서 단어 'the'의 빈도는 2입니다.
다음은 단어 빈도를 계산하는 예제 텍스트입니다. 러디어드 키플링의 시 **The Winners**는 다음 구절을 포함합니다:
@ -60,34 +60,34 @@ Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
```
구문 빈도는 필요에 따라 대소문자를 구분하거나 구분하지 않을 수 있습니다. 예를 들어, `a friend`는 빈도가 2이고, `the`는 빈도가 6이며, `travels`는 빈도가 2입니다.
구문 빈도는 대소문자를 구분하거나 구분하지 않을 수 있습니다. 예를 들어, `a friend`의 빈도는 2이고, `the`는 6이며, `travels` 2입니다.
### N-그램
텍스트는 단일 단어(유니그램), 두 단어(바이그램), 세 단어(트라이그램) 또는 임의의 단어 수(n-그램)로 구성된 시퀀스로 분할될 수 있습니다.
예를 들어, `the quick red fox jumped over the lazy brown dog`를 n-그램 점수 2로 나누면 다음과 같은 n-그램이 생성됩니다:
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
이를 문장 위에 슬라이딩 박스로 시각화하면 더 쉽게 이해할 수 있습니다. 다음은 3단어 n-그램의 예입니다. 각 문장에서 n-그램은 굵게 표시됩니다:
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
예를 들어, `the quick red fox jumped over the lazy brown dog`를 n-그램 점수 2로 분할하면 다음과 같은 n-그램이 생성됩니다:
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
이를 문장 위에 슬라이딩 박스로 시각화하면 더 쉽게 이해할 수 있습니다. 다음은 3단어 n-그램의 예입니다. 각 문장에서 n-그램은 **굵게 표시**됩니다:
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
![n-그램 슬라이딩 윈도우](../../../../6-NLP/2-Tasks/images/n-grams.gif)
@ -97,37 +97,37 @@ He travels the fastest who travels alone.
대부분의 문장에는 주어 또는 목적어 역할을 하는 명사가 있습니다. 영어에서는 종종 'a', 'an', 'the'가 앞에 오는 것으로 식별할 수 있습니다. 문장의 의미를 이해하려고 할 때 '명사구를 추출'하는 것은 NLP에서 일반적인 작업입니다.
✅ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun."라는 문장에서 명사구를 식별할 수 있나요?
문장 "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun."에서 명사구를 식별할 수 있나요?
`the quick red fox jumped over the lazy brown dog`라는 문장에는 **quick red fox****lazy brown dog**라는 두 개의 명사구가 있습니다.
문장 `the quick red fox jumped over the lazy brown dog`에는 **quick red fox****lazy brown dog**라는 두 개의 명사구가 있습니다.
### 감정 분석
문장이나 텍스트는 *긍정적*인지 *부정적*인지 감정을 분석할 수 있습니다. 감정은 *극성**객관성/주관성*으로 측정됩니다. 극성은 -1.0에서 1.0(부정적에서 긍정적)까지, 객관성은 0.0에서 1.0(가장 객관적에서 가장 주관적)까지 측정됩니다.
✅ 나중에 머신 러닝을 사용하여 감정을 결정하는 다양한 방법을 배우겠지만, 한 가지 방법은 인간 전문가가 긍정적 또는 부정적으로 분류한 단어와 구문 목록을 사용하여 텍스트에 모델을 적용하고 극성 점수를 계산하는 것입니다. 이 방법이 어떤 상황에서는 잘 작동하고 다른 상황에서는 덜 작동하는 이유를 이해할 수 있나요?
✅ 나중에 머신 러닝을 사용하여 감정을 결정하는 다양한 방법을 배우겠지만, 한 가지 방법은 인간 전문가가 긍정적 또는 부정적으로 분류한 단어와 구문 목록을 사용하여 텍스트에 모델을 적용하고 극성 점수를 계산하는 것입니다. 이 방법이 어떤 상황에서는 잘 작동하고 다른 상황에서는 덜 효과적일 수 있다는 점을 이해할 수 있나요?
### 굴절
### 어형 변화
굴절은 단어를 단수형 또는 복수형으로 변환할 수 있도록 합니다.
어형 변화는 단어를 단수형 또는 복수형으로 변환할 수 있도록 합니다.
### 어 추출
### 표제어 추출
*어간*은 단어 집합의 기본 또는 중심 단어입니다. 예를 들어, *flew*, *flies*, *flying*어간은 동사 *fly*입니다.
*표제어*는 단어 집합의 기본 또는 중심 단어입니다. 예를 들어, *flew*, *flies*, *flying*표제어는 동사 *fly*입니다.
NLP 연구자에게 유용한 데이터베이스도 있습니다. 특히:
### WordNet
[WordNet](https://wordnet.princeton.edu/)은 다양한 언어의 모든 단어에 대한 동의어, 반의어 및 기타 세부 정보를 포함 데이터베이스입니다. 번역, 맞춤법 검사기 또는 언어 도구를 구축할 때 매우 유용합니다.
[WordNet](https://wordnet.princeton.edu/)은 다양한 언어의 모든 단어에 대한 동의어, 반의어 및 기타 세부 정보를 포함하는 데이터베이스입니다. 번역, 맞춤법 검사기 또는 언어 도구를 구축할 때 매우 유용합니다.
## NLP 라이브러리
다행히도 이러한 기술을 직접 구축할 필요는 없습니다. 자연어 처리나 머신 러닝에 전문적이지 않은 개발자도 접근할 수 있도록 훌륭한 Python 라이브러리가 제공됩니다. 다음 레슨에서는 이러한 라이브러리의 더 많은 예제를 다루겠지만, 여기서는 다음 작업에 도움이 되는 몇 가지 유용한 예제를 배웁니다.
다행히도 이러한 기술을 직접 구축할 필요는 없습니다. 자연어 처리나 머신 러닝에 전문적이지 않은 개발자도 접근할 수 있도록 훌륭한 Python 라이브러리가 제공됩니다. 다음 강의에서는 이러한 라이브러리의 더 많은 예제를 다루겠지만, 여기서는 다음 작업에 도움이 되는 몇 가지 유용한 예제를 배웁니다.
### 연습 - `TextBlob` 라이브러리 사용
TextBlob이라는 라이브러리를 사용해 봅시다. 이 라이브러리는 이러한 유형의 작업을 처리하는 데 유용한 API를 포함하고 있습니다. TextBlob은 "[NLTK](https://nltk.org)와 [pattern](https://github.com/clips/pattern)의 거대한 어깨 위에 서 있으며, 두 라이브러리와 잘 호환됩니다." API에 상당한 양의 머신 러닝이 포함되어 있습니다.
TextBlob이라는 라이브러리를 사용해 봅시다. 이 라이브러리는 이러한 유형의 작업을 처리하는 데 유용한 API를 포함하고 있습니다. TextBlob은 "[NLTK](https://nltk.org)와 [pattern](https://github.com/clips/pattern)의 거대한 어깨 위에 서 있으며, 두 라이브러리와 잘 호환됩니다." API에 상당한 양의 ML이 포함되어 있습니다.
> 참고: TextBlob에 대한 유용한 [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) 가이드가 제공되며, 경험 많은 Python 개발자에게 추천됩니다.
@ -147,24 +147,24 @@ TextBlob이라는 라이브러리를 사용해 봅시다. 이 라이브러리는
np = user_input_blob.noun_phrases
```
> 여기서 무슨 일이 일어나고 있나요? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor)는 "ConLL-2000 학습 코퍼스를 사용하여 청크 구문 분석으로 학습된 명사구 추출기"입니다. ConLL-2000은 2000년 Computational Natural Language Learning 컨퍼런스를 의미합니다. 매년 컨퍼런스는 어려운 NLP 문제를 해결하기 위한 워크숍을 개최했으며, 2000년에는 명사 청킹이 주제였습니다. 모델은 Wall Street Journal의 "섹션 15-18을 학습 데이터(211727 토큰)로, 섹션 20을 테스트 데이터(47377 토큰)로 사용하여" 학습되었습니다. 사용된 절차는 [여기](https://www.clips.uantwerpen.be/conll2000/chunking/)에서, 결과는 [여기](https://ifarm.nl/erikt/research/np-chunking.html)에서 확인할 수 있습니다.
> 여기서 무슨 일이 일어나고 있나요? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor)는 "ConLL-2000 학습 코퍼스를 사용해 청크 구문 분석을 수행하는 명사구 추출기"입니다. ConLL-2000은 2000년 Computational Natural Language Learning 컨퍼런스를 의미합니다. 매년 컨퍼런스는 어려운 NLP 문제를 해결하기 위한 워크숍을 개최했으며, 2000년에는 명사 청킹이 주제였습니다. 모델은 Wall Street Journal을 기반으로 학습되었으며, "섹션 15-18은 학습 데이터(211727 토큰)로, 섹션 20은 테스트 데이터(47377 토큰)로 사용되었습니다." 사용된 절차는 [여기](https://www.clips.uantwerpen.be/conll2000/chunking/)에서, 결과는 [여기](https://ifarm.nl/erikt/research/np-chunking.html)에서 확인할 수 있습니다.
### 챌린지 - NLP로 봇 개선하기
이전 레슨에서 매우 간단한 Q&A 봇을 만들었습니다. 이제 입력을 감정 분석하여 감정에 맞는 응답을 출력함으로써 Marvin을 조금 더 공감할 수 있도록 만들어 봅시다. 또한 `noun_phrase`를 식별하고 이에 대해 질문해야 합니다.
이전 강의에서 매우 간단한 Q&A 봇을 만들었습니다. 이제 입력을 분석하여 감정을 파악하고 이에 맞는 응답을 출력함으로써 Marvin을 조금 더 공감할 수 있도록 만들어 봅시다. 또한 `noun_phrase`를 식별하고 이에 대해 질문해야 합니다.
더 나은 대화형 봇을 구축할 때의 단계:
1. 사용자에게 봇과 상호작용하는 방법에 대한 지침 출력
2. 루프 시작
1. 사용자 입력 수락
2. 사용자가 종료를 요청하면 종료
3. 사용자 입력을 처리하고 적절한 감정 응답 결정
4. 감정에서 명사구가 감지되면 복수형으로 변환하고 해당 주제에 대해 추가 입력 요청
5. 응답 출력
3. 2단계로 다시 루프
1. 사용자에게 봇과 상호작용하는 방법에 대한 지침 출력
2. 루프 시작
1. 사용자 입력 수락
2. 사용자가 종료를 요청하면 종료
3. 사용자 입력을 처리하고 적절한 감정 응답 결정
4. 감정에서 명사구가 감지되면 복수형으로 변환하고 해당 주제에 대해 추가 입력 요청
5. 응답 출력
3. 2단계로 다시 루프
다음은 TextBlob을 사용하여 감정을 결정하는 코드 스니펫입니다. 감정 응답에는 네 가지 *그라디언트*만 있습니다(원한다면 더 추가할 수 있습니다):
다음은 TextBlob을 사용 감정을 결정하는 코드 스니펫입니다. 감정 응답에는 네 가지 *그라디언트*만 있습니다(원한다면 더 추가할 수 있습니다):
```python
if user_input_blob.polarity <= -0.5:
@ -200,9 +200,9 @@ It was nice talking to you, goodbye!
✅ 지식 점검
1. 공감하는 응답이 봇이 실제로 사용자를 이해한다고 '속일' 수 있다고 생각하나요?
2. 명사구를 식별하는 것이 봇을 더 '믿을 수 있게' 만들까요?
3. 문장에서 '명사구'를 추출하는 것이 왜 유용할까요?
1. 공감하는 응답이 봇이 실제로 사용자를 이해한다고 '속일' 수 있을까요?
2. 명사구를 식별하는 것이 봇을 더 '믿을 수 있게' 만들까요?
3. 문장에서 '명사구'를 추출하는 것이 왜 유용할까요?
---
@ -212,17 +212,17 @@ It was nice talking to you, goodbye!
이전 지식 점검에서 작업을 선택하여 구현해 보세요. 봇을 친구에게 테스트해 보세요. 친구를 속일 수 있나요? 봇을 더 '믿을 수 있게' 만들 수 있나요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/34/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
다음 몇 가지 레슨에서는 감정 분석에 대해 더 배울 것입니다. [KDNuggets](https://www.kdnuggets.com/tag/nlp)와 같은 기사에서 이 흥미로운 기술을 연구해 보세요.
다음 몇 강의에서는 감정 분석에 대해 더 배울 것입니다. [KDNuggets](https://www.kdnuggets.com/tag/nlp)와 같은 기사에서 이 흥미로운 기술을 연구해 보세요.
## 과제
[이 대답하도록 만들기](assignment.md)
[에게 대답하게 만들기](assignment.md)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.

@ -1,38 +1,38 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6396d5d8617572cd2ac1de74fb0deb22",
"translation_date": "2025-09-04T00:50:55+00:00",
"original_hash": "be03c8182982b87ced155e4e9d1438e8",
"translation_date": "2025-09-05T10:57:30+00:00",
"source_file": "6-NLP/3-Translation-Sentiment/README.md",
"language_code": "ko"
}
-->
# 기계 학습을 활용한 번역 및 감정 분석
이전 강의에서는 `TextBlob` 라이브러리를 사용하여 기본적인 NLP 작업(예: 명사구 추출)을 수행하는 간단한 봇을 만드는 방법을 배웠습니다. 컴퓨터 언어학에서 또 다른 중요한 과제는 문장을 한 언어에서 다른 언어로 정확하게 _번역_하는 것입니다.
이전 강의에서는 `TextBlob` 라이브러리를 사용하여 기본적인 NLP 작업(예: 명사구 추출)을 수행하는 간단한 봇을 만드는 방법을 배웠습니다. `TextBlob`은 기계 학습을 백그라운드에서 활용합니다. 계산 언어학에서 또 다른 중요한 과제는 문장을 한 언어에서 다른 언어로 정확하게 _번역_하는 것입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/35/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
번역은 수천 개의 언어가 존재하고 각 언어마다 문법 규칙이 매우 다를 수 있다는 점에서 매우 어려운 문제입니다. 한 가지 접근 방식은 영어와 같은 한 언어의 문법 규칙을 언어에 의존하지 않는 구조로 변환한 다음, 이를 다시 다른 언어로 변환하는 것입니다. 이 접근 방식은 다음 단계를 포함합니다:
번역은 매우 어려운 문제입니다. 전 세계에는 수천 개의 언어가 존재하며, 각 언어는 매우 다른 문법 규칙을 가질 수 있기 때문입니다. 한 가지 접근법은 영어와 같은 한 언어의 형식적 문법 규칙을 언어에 독립적인 구조로 변환한 다음, 이를 다시 다른 언어로 변환하는 것입니다. 이 접근법은 다음 단계를 포함합니다:
1. **식별**. 입력 언어의 단어를 명사, 동사 등으로 태깅합니다.
2. **번역 생성**. 대상 언어 형식으로 각 단어를 직접 번역합니다.
### 예문: 영어에서 아일랜드어로
'영어'에서 문장 _I feel happy_는 다음과 같은 순서로 세 단어로 구성됩니다:
'영어'에서 _I feel happy_라는 문장은 다음과 같은 순서를 가집니다:
- **주어** (I)
- **동사** (feel)
- **형용사** (happy)
하지만 '아일랜드어'에서는 같은 문장이 매우 다른 문법 구조를 가집니다. "*happy*"나 "*sad*"와 같은 감정은 *나에게 있다*는 방식으로 표현됩니다.
하지만 '아일랜드어'에서는 같은 문장이 매우 다른 문법 구조를 가집니다. "*happy*"나 "*sad*"와 같은 감정은 *당신 위에 있다*는 방식으로 표현됩니다.
영어 문장 `I feel happy`는 아일랜드어로 `Tá athas orm`입니다. 이를 *직역*하면 `Happy is upon me`가 됩니다.
아일랜드어 화자가 영어로 번역할 때는 `Happy is upon me`가 아니라 `I feel happy`라고 말니다. 이는 단어와 문장 구조가 다르더라도 문장의 의미를 이해하기 때문입니다.
아일랜드어 화자가 영어로 번역할 때는 `Happy is upon me`가 아니라 `I feel happy`라고 말할 것입니다. 이는 단어와 문장 구조가 다르더라도 문장의 의미를 이해하기 때문입니다.
아일랜드어 문장의 공식적인 순서는 다음과 같습니다:
아일랜드어 문장의 형식적 순서는 다음과 같습니다:
- **동사** (Tá 또는 is)
- **형용사** (athas, 또는 happy)
@ -42,7 +42,7 @@ CO_OP_TRANSLATOR_METADATA:
단순한 번역 프로그램은 문장 구조를 무시하고 단어만 번역할 수 있습니다.
✅ 성인이 되어 두 번째(또는 세 번째 이상의) 언어를 배운 적이 있다면, 처음에는 모국어로 생각한 후 개념을 단어 단위로 머릿속에서 번역하고, 그 번역을 말로 표현했을 가능성이 높습니다. 이는 단순한 번역 컴퓨터 프로그램이 하는 것과 비슷합니다. 유창함을 얻으려면 이 단계를 넘어서는 것이 중요합니다!
✅ 성인이 되어 두 번째(또는 세 번째 이상의) 언어를 배운 적이 있다면, 모국어로 생각한 후 개념을 단어 단위로 머릿속에서 번역하고, 번역한 내용을 말하는 방식으로 시작했을 가능성이 높습니다. 이는 단순한 번역 컴퓨터 프로그램이 하는 것과 비슷합니다. 유창함을 얻으려면 이 단계를 넘어서는 것이 중요합니다!
단순한 번역은 종종 잘못된(때로는 웃긴) 번역을 초래합니다. 예를 들어, `I feel happy`를 아일랜드어로 직역하면 `Mise bhraitheann athas`가 됩니다. 이는 문자 그대로 `me feel happy`를 의미하며, 올바른 아일랜드어 문장이 아닙니다. 영어와 아일랜드어는 서로 가까운 섬에서 사용되는 언어임에도 불구하고, 문법 구조가 매우 다릅니다.
@ -50,17 +50,17 @@ CO_OP_TRANSLATOR_METADATA:
### 기계 학습 접근법
지금까지 자연어 처리를 위한 공식 규칙 접근법에 대해 배웠습니다. 또 다른 접근법은 단어의 의미를 무시하고 _대신 기계 학습을 사용하여 패턴을 감지_하는 것입니다. 원본 언어와 대상 언어로 된 많은 텍스트(코퍼스)가 있다면, 이 방법은 번역에 효과적일 수 있습니다.
지금까지 자연어 처리를 위한 형식적 규칙 접근법에 대해 배웠습니다. 또 다른 접근법은 단어의 의미를 무시하고, _대신 기계 학습을 사용하여 패턴을 감지하는 것_입니다. 원본 언어와 대상 언어로 된 많은 텍스트(코퍼스 또는 코퍼라)가 있다면, 이 접근법은 번역에 효과적일 수 있습니다.
예를 들어, 1813년에 제인 오스틴이 쓴 유명한 영어 소설 *오만과 편견*을 생각해 봅시다. 영어 원본과 *프랑스어*로 된 인간 번역본을 참고하면, 한 언어에서 다른 언어로 _관용적으로_ 번역된 구문을 감지할 수 있습니다. 곧 이를 실습해 볼 것입니다.
예를 들어, 제인 오스틴이 1813년에 쓴 유명한 영어 소설 *오만과 편견*을 생각해 봅시다. 이 책의 영어 원본과 *프랑스어*로 된 인간 번역본을 비교하면, 한 언어의 구문이 다른 언어로 _관용적으로_ 번역된 것을 감지할 수 있습니다. 곧 이를 실습해 볼 것입니다.
예를 들어, 영어 문장 `I have no money`를 프랑스어로 직역하면 `Je n'ai pas de monnaie`가 될 수 있습니다. "Monnaie"는 프랑스어에서 '거스름돈'을 의미하는 'false cognate'로, 'money'와 동의어가 아닙니다. 인간 번역자가 더 나은 번역을 한다면 `Je n'ai pas d'argent`가 될 것입니다. 이는 '거스름돈'이 아니라 '돈이 없다'는 의미를 더 잘 전달합니다.
예를 들어, 영어 문장 `I have no money`를 프랑스어로 직역하면 `Je n'ai pas de monnaie`가 될 수 있습니다. "Monnaie"는 프랑스어에서 '거짓 친구'로, 'money'와 'monnaie'는 동의어가 아닙니다. 인간 번역자가 더 나은 번역을 한다면 `Je n'ai pas d'argent`가 될 것입니다. 이는 '돈이 없다'는 의미를 더 잘 전달하기 때문입니다(반면 'monnaie'는 '잔돈'을 의미합니다).
![monnaie](../../../../translated_images/monnaie.606c5fa8369d5c3b3031ef0713e2069485c87985dd475cd9056bdf4c76c1f4b8.ko.png)
![monnaie](../../../../6-NLP/3-Translation-Sentiment/images/monnaie.png)
> 이미지 제공: [Jen Looper](https://twitter.com/jenlooper)
충분한 인간 번역본을 기반으로 모델을 구축하면, ML 모델은 이전에 전문가가 번역한 텍스트에서 공통 패턴을 식별하여 번역 정확도를 향상시킬 수 있습니다.
충분한 인간 번역본을 기반으로 모델을 구축 ML 모델은 이전에 전문가가 번역한 텍스트에서 공통 패턴을 식별하여 번역 정확도를 향상시킬 수 있습니다.
### 실습 - 번역
@ -76,43 +76,43 @@ print(blob.translate(to="fr"))
```
`TextBlob`번역을 꽤 잘 수행합니다: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
`TextBlob`다음과 같은 번역을 제공합니다: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
1932년 V. Leconte와 Ch. Pressoir가 번역한 프랑스어 번역보다 TextBlob의 번역이 훨씬 정확하다고 주장할 수 있습니다:
사실, TextBlob의 번역은 1932년 V. Leconte와 Ch. Pressoir가 번역한 프랑스어 번역보다 훨씬 정확하다고 주장할 수 있습니다:
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
이 경우, ML에 기반한 번역이 원작자의 의도를 명확히 하기 위해 불필요하게 단어를 추가한 인간 번역자보다 더 나은 결과를 제공합니다.
이 경우, ML에 기반한 번역은 원작자의 의도를 불필요하게 왜곡한 인간 번역자보다 더 나은 결과를 제공합니다.
> TextBlob이 번역을 잘하는 이유는 무엇일까요? TextBlob은 Google 번역을 사용하며, 이는 수백만 개의 구문을 분석하여 작업에 가장 적합한 문자열을 예측할 수 있는 정교한 AI입니다. 여기에는 수작업이 전혀 포함되지 않으며, `blob.translate`를 사용하려면 인터넷 연결이 필요합니다.
> TextBlob이 번역을 잘하는 이유는 무엇일까요? TextBlob은 Google 번역을 백그라운드에서 사용합니다. Google 번역은 수백만 개의 구문을 분석하여 작업에 가장 적합한 문자열을 예측할 수 있는 정교한 AI입니다. 여기에는 수작업이 전혀 포함되지 않으며, `blob.translate`를 사용하려면 인터넷 연결이 필요합니다.
✅ 몇 가지 문장을 더 시도해 보세요. ML 번역과 인간 번역 중 어느 것이 더 나은가요? 어떤 경우에 더 나은가요?
## 감정 분석
기계 학습이 매우 효과적으로 작동할 수 있는 또 다른 영역은 감정 분석입니다. 비-ML 접근법으로 감정을 분석하려면 '긍정적' 또는 '부정적'인 단어와 구문을 식별합니다. 그런 다음, 새로운 텍스트를 주어진 경우, 긍정적, 부정적, 중립적 단어의 총 값을 계산하여 전체 감정을 식별합니다.
기계 학습이 매우 효과적으로 작동할 수 있는 또 다른 영역은 감정 분석입니다. 비-ML 접근법으로 감정을 분석하려면 '긍정적' 또는 '부정적'인 단어와 구문을 식별합니다. 그런 다음, 새로운 텍스트가 주어지면 긍정적, 부정적, 중립적 단어의 총합을 계산하여 전체 감정을 식별합니다.
이 접근법은 쉽게 속을 수 있습니다. 예를 들어, Marvin 과제에서 본 것처럼 `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road`라는 문장은 비꼬는 부정적 감정의 문장이지만, 간단한 알고리즘은 'great', 'wonderful', 'glad'를 긍정적으로, 'waste', 'lost', 'dark'를 부정적으로 감지합니다. 상반된 단어들로 인해 전체 감정이 왜곡됩니다.
✅ 인간 화자로서 우리가 비꼬는 표현을 어떻게 전달하는지 잠시 생각해 보세요. 억양이 큰 역할을 합니다. "Well, that film was awesome"이라는 문장을 다양한 방식으로 말해 보며, 목소리가 의미를 어떻게 전달하는지 알아보세요.
✅ 인간 화자로서 우리가 비꼬는 감정을 어떻게 전달하는지 잠시 생각해 보세요. 억양이 큰 역할을 합니다. "Well, that film was awesome"이라는 문장을 다양한 방식으로 말해 보며, 목소리가 의미를 어떻게 전달하는지 알아보세요.
### ML 접근법
ML 접근법은 부정적, 긍정적 텍스트(예: 트윗, 영화 리뷰 등)를 수동으로 수집하는 것입니다. 인간이 점수와 의견을 제공한 데이터를 기반으로 NLP 기술을 적용하여 패턴을 도출합니다(예: 긍정적 영화 리뷰에는 'Oscar worthy'라는 표현이 부정적 리뷰보다 더 자주 등장).
ML 접근법은 부정적이고 긍정적인 텍스트(예: 트윗, 영화 리뷰 등)를 수집하는 것입니다. 여기서 인간이 점수와 의견을 작성합니다. 그런 다음 NLP 기술을 적용하여 패턴을 도출합니다(예: 긍정적인 영화 리뷰에는 'Oscar worthy'라는 구문이 부정적인 리뷰보다 더 자주 나타남).
> ⚖️ **예시**: 정치인의 사무실에서 새로운 법안에 대한 찬반 의견을 담은 이메일을 분류하는 작업을 맡았다고 가정해 봅시다. 이메일이 많다면, 모든 이메일을 읽는 것이 부담스러울 수 있습니다. 봇이 이메일을 읽고 찬성 또는 반대 쪽으로 분류해 준다면 얼마나 좋을까요?
> ⚖️ **예시**: 정치인의 사무실에서 새로운 법안에 대한 찬반 의견을 담은 이메일을 분류하는 작업을 맡았다고 가정해 봅시다. 이메일이 많다면 모든 이메일을 읽는 것이 부담스러울 수 있습니다. 봇이 이메일을 읽고 찬성과 반대 그룹으로 분류해 준다면 얼마나 좋을까요?
>
> 이를 달성하는 한 가지 방법은 기계 학습을 사용하는 것입니다. 모델을 일부 찬성 이메일과 일부 반대 이메일로 훈련시킵니다. 모델은 특정 단어 패턴이 찬성 또는 반대 이메일에 더 자주 나타나는 경향이 있음을 학습합니다. 그런 다음, 훈련에 사용되지 않은 이메일로 테스트하여 모델이 동일한 결론에 도달하는지 확인합니다. 모델의 정확성에 만족하면, 이후 이메일을 읽지 않고도 처리할 수 있습니다.
> 이를 달성하는 한 가지 방법은 기계 학습을 사용하는 것입니다. 모델을 일부 찬성 이메일과 일부 반대 이메일로 훈련시킵니다. 모델은 특정 단어 패턴이 찬성 또는 반대 이메일에 더 자주 나타나는 경향이 있음을 학습합니다. 그런 다음, 훈련에 사용되지 않은 이메일로 테스트하여 모델이 동일한 결론에 도달하는지 확인합니다. 모델의 정확성에 만족하면, 이후 이메일을 읽지 않고도 처리할 수 있습니다.
✅ 이전 강의에서 사용한 프로세스와 유사한 점이 있나요?
## 실습 - 감정 문장
감정은 -1에서 1까지의 *극성*으로 측정됩니다. -1은 가장 부정적인 감정, 1은 가장 긍정적인 감정을 나타냅니다. 감정은 또한 0(객관적)에서 1(주관적)까지의 점수로 측정됩니다.
감정은 -1에서 1까지의 *극성*으로 측정됩니다. -1은 가장 부정적인 감정, 1은 가장 긍정적인 감정을 나타냅니다. 감정은 또한 0에서 1까지의 점수로 객관성(0)과 주관성(1)을 측정합니다.
제인 오스틴의 *오만과 편견*을 다시 살펴보세요. 텍스트는 [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm)에서 확인할 수 있습니다. 아래 샘플은 책의 첫 문장과 마지막 문장의 감정을 분석하고, 감정 극성과 주관성/객관성 점수를 표시하는 짧은 프로그램을 보여줍니다.
제인 오스틴의 *오만과 편견*을 다시 살펴보세요. 텍스트는 [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm)에서 확인할 수 있습니다. 아래 샘플은 책의 첫 문장과 마지막 문장의 감정을 분석하고, 감정 극성과 주관성/객관성 점수를 표시하는 짧은 프로그램을 보여줍니다.
다음 작업에서 `TextBlob` 라이브러리를 사용하여 `sentiment`를 결정하세요(직접 감정 계산기를 작성할 필요는 없습니다).
다음 작업에서 `TextBlob` 라이브러리를 사용하여 `sentiment`를 결정하세요(직접 감정 계산기를 작성할 필요는 없습니다).
```python
from textblob import TextBlob
@ -149,8 +149,8 @@ Darcy, as well as Elizabeth, really loved them; and they were
2. Python에서 파일을 열고 내용을 문자열로 추출합니다.
3. 책 문자열을 사용하여 TextBlob을 생성합니다.
4. 책의 각 문장을 루프에서 분석합니다.
1. 극성이 1 또는 -1인 경우, 문장을 긍정적 또는 부정적 메시지의 배열 또는 목록에 저장합니다.
5. 마지막으로, 긍정적 문장과 부정적 문장을 각각 출력하고 개수를 표시합니다.
1. 극성이 1 또는 -1인 경우, 문장을 긍정적 또는 부정적 메시지의 배열 또는 리스트에 저장합니다.
5. 마지막에 모든 긍정적 문장과 부정적 문장(별도로) 및 각 문장의 수를 출력합니다.
다음은 샘플 [솔루션](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb)입니다.
@ -158,7 +158,7 @@ Darcy, as well as Elizabeth, really loved them; and they were
1. 감정은 문장에서 사용된 단어를 기반으로 하지만, 코드가 단어를 *이해*하나요?
2. 감정 극성이 정확하다고 생각하나요? 즉, 점수에 *동의*하나요?
1. 특히, 다음 문장의 절대 **긍정적** 극성에 동의하나요?
1. 특히, 다음 문장의 절대 **긍정적** 극성에 동의하나요, 아니면 동의하지 않나요?
* “What an excellent father you have, girls!” said she, when the door was shut.
* “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
* How wonderfully these sort of things occur!
@ -167,17 +167,17 @@ Darcy, as well as Elizabeth, really loved them; and they were
* “This is delightful indeed!
* I am so happy!
* Your idea of the ponies is delightful.
2. 다음 세 문장은 절대적으로 긍정적인 감정으로 점수가 매겨졌지만, 자세히 읽어보면 긍정적인 문장이 아닙니다. 감정 분석이 왜 긍정적이라고 판단했을까요?
2. 다음 3개의 문장은 절대 긍정적 감정으로 점수가 매겨졌지만, 자세히 읽어보면 긍정적인 문장이 아닙니다. 감정 분석이 왜 이 문장을 긍정적으로 판단했을까요?
* Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
* If I could but see you as happy!
* Our distress, my dear Lizzy, is very great.
3. 다음 문장의 절대 **부정적** 극성에 동의하나요?
3. 다음 문장의 절대 **부정적** 극성에 동의하나요, 아니면 동의하지 않나요?
- Everybody is disgusted with his pride.
- “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful.
- The pause was to Elizabeths feelings dreadful.
- It would be dreadful!
✅ 제인 오스틴의 팬이라면 그녀가 종종 책을 통해 영국 섭정 시대의 더 우스꽝스러운 측면을 비판한다는 것을 이해할 것입니다. *오만과 편견*의 주인공 엘리자베스 베넷은 예리한 사회 관찰자(작가와 마찬가지)이며, 그녀의 언어는 종종 매우 미묘합니다. 심지어 이야기의 사랑스러운 상대인 Mr. Darcy조차도 엘리자베스의 장난스럽고 놀리는 언어 사용을 언급합니다: "나는 당신이 가끔 자신의 의견이 아닌 의견을 즐겁게 표현하는 것을 좋아한다는 것을 알 만큼 충분히 오래 당신을 알고 있습니다."
✅ 제인 오스틴의 팬이라면 그녀가 종종 책을 통해 영국 섭정 시대 사회의 더 우스꽝스러운 측면을 비판한다는 것을 이해할 것입니다. *오만과 편견*의 주인공 엘리자베스 베넷은 예리한 사회 관찰자(작가와 마찬가지)이며, 그녀의 언어는 종종 매우 미묘합니다. 심지어 이야기의 사랑스러운 상대인 Mr. Darcy조차도 엘리자베스의 장난스럽고 놀리는 언어 사용을 언급합니다: "나는 당신이 때때로 자신의 의견이 아닌 의견을 즐겁게 표현하는 것을 즐긴다는 것을 알 만큼 충분히 오래 당신을 알고 있습니다."
---
@ -185,10 +185,10 @@ Darcy, as well as Elizabeth, really loved them; and they were
사용자 입력에서 다른 특징을 추출하여 Marvin을 더 개선할 수 있나요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/36/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
텍스트에서 감정을 추출하는 방법은 여러 가지가 있습니다. 이 기술을 활용할 수 있는 비즈니스 응용 프로그램을 생각해 보세요. 또한, 이 기술이 어떻게 잘못될 수 있는지에 대해서도 고민해 보세요. 감정을 분석하는 정교한 기업용 시스템에 대해 더 알아보세요. 예를 들어 [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott)와 같은 시스템이 있습니다. 위의 '오만과 편견' 문장 중 일부를 테스트해 보고, 미묘한 뉘앙스를 감지할 수 있는지 확인해 보세요.
텍스트에서 감정을 추출하는 방법은 여러 가지가 있습니다. 이 기술을 활용할 수 있는 비즈니스 응용 프로그램에 대해 생각해 보세요. 또한 이 기술이 어떻게 잘못될 수 있는지에 대해서도 고민해 보세요. 감정을 분석하는 정교한 기업용 시스템에 대해 더 알아보세요, 예를 들어 [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott). 위의 '오만과 편견' 문장 중 일부를 테스트해 보고, 미묘한 뉘앙스를 감지할 수 있는지 확인해 보세요.
## 과제
@ -197,4 +197,4 @@ Darcy, as well as Elizabeth, really loved them; and they were
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3c4738bb0836dd838c552ab9cab7e09d",
"translation_date": "2025-09-04T00:39:58+00:00",
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
"translation_date": "2025-09-05T10:55:43+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "ko"
}
@ -11,33 +11,33 @@ CO_OP_TRANSLATOR_METADATA:
이 섹션에서는 이전 강의에서 배운 기술을 활용하여 대규모 데이터셋에 대한 탐색적 데이터 분석을 수행합니다. 다양한 열의 유용성을 충분히 이해한 후, 다음을 배우게 됩니다:
- 불필요한 열 제거하는 방법
- 불필요한 열 제거 방법
- 기존 열을 기반으로 새로운 데이터를 계산하는 방법
- 최종 과제에서 사용할 결과 데이터셋 저장하는 방법
- 최종 과제에서 사용할 결과 데이터셋 저장 방법
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/37/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
### 소개
지금까지 텍스트 데이터가 숫자 데이터와는 매우 다르다는 점을 배웠습니다. 사람이 작성하거나 말한 텍스트는 패턴, 빈도, 감정, 의미를 분석할 수 있습니다. 이번 강의에서는 실제 데이터셋과 실제 과제를 다룹니다: **[유럽의 515K 호텔 리뷰 데이터](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**. 이 데이터는 [CC0: 퍼블릭 도메인 라이선스](https://creativecommons.org/publicdomain/zero/1.0/)를 포함하며, Booking.com에서 공개 소스를 통해 수집되었습니다. 데이터셋의 제작자는 Jiashen Liu입니다.
지금까지 텍스트 데이터가 숫자형 데이터와는 매우 다르다는 것을 배웠습니다. 사람이 작성하거나 말한 텍스트는 패턴, 빈도, 감정 및 의미를 분석할 수 있습니다. 이번 강의에서는 실제 데이터셋과 실제 과제를 다룹니다: **[유럽의 515K 호텔 리뷰 데이터](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**. 이 데이터는 [CC0: 퍼블릭 도메인 라이선스](https://creativecommons.org/publicdomain/zero/1.0/)를 포함하며, Booking.com에서 공개 소스를 통해 수집되었습니다. 데이터셋의 제작자는 Jiashen Liu입니다.
### 준비 사항
### 준비
다음이 필요합니다:
필요한 사항:
* Python 3로 실행 가능한 .ipynb 노트북
* Python 3을 사용하여 .ipynb 노트북 실행 가능
* pandas
* NLTK, [로컬 설치 필요](https://www.nltk.org/install.html)
* Kaggle에서 제공되는 데이터셋 [유럽의 515K 호텔 리뷰 데이터](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). 압축 해제 시 약 230MB입니다. 이 NLP 강의와 관련된 루트 `/data` 폴더에 다운로드하세요.
* NLTK, [로컬 설치 필요](https://www.nltk.org/install.html)
* Kaggle에서 제공되는 데이터셋 [유럽의 515K 호텔 리뷰 데이터](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). 압축 해제 시 약 230MB. 이 NLP 강의와 관련된 루트 `/data` 폴더에 다운로드하세요.
## 탐색적 데이터 분석
번 과제에서는 감정 분석과 게스트 리뷰 점수를 활용하여 호텔 추천 봇을 구축한다고 가정합니다. 사용하게 될 데이터셋에는 6개 도시의 1493개 호텔에 대한 리뷰가 포함되어 있습니다.
과제는 감정 분석과 고객 리뷰 점수를 활용하여 호텔 추천 봇을 구축하는 것을 목표로 합니다. 사용하게 될 데이터셋은 6개 도시의 1493개 호텔에 대한 리뷰를 포함하고 있습니다.
Python, 호텔 리뷰 데이터셋, NLTK의 감정 분석을 사용하여 다음을 알아낼 수 있습니다:
Python, 호텔 리뷰 데이터셋, 그리고 NLTK의 감정 분석을 사용하여 다음을 알아낼 수 있습니다:
* 리뷰에서 가장 자주 사용되는 단어와 구문은 무엇인가요?
* 호텔을 설명하는 공식 *태그*가 리뷰 점수와 상관관계가 있나요? (예: 특정 호텔에 대해 *어린 자녀를 동반한 가족*의 리뷰가 *혼자 여행하는 사람*보다 더 부정적인가요? 이는 해당 호텔이 *혼자 여행하는 사람*에게 더 적합하다는 것을 나타낼 수 있습니다.)
* 리뷰에서 가장 자주 사용되는 단어와 구 무엇인가요?
* 호텔을 설명하는 공식 *태그*가 리뷰 점수와 상관관계가 있나요? (예: 특정 호텔에 대해 *어린 자녀를 동반한 가족**혼자 여행하는 사람*보다 더 부정적인 리뷰를 남겼다면, 이 호텔이 *혼자 여행하는 사람*에게 더 적합하다는 것을 나타낼 수 있을까요?)
* NLTK 감정 점수가 호텔 리뷰어의 숫자 점수와 '일치'하나요?
#### 데이터셋
@ -52,74 +52,74 @@ Python, 호텔 리뷰 데이터셋, NLTK의 감정 분석을 사용하여 다음
##### 호텔 관련 열
* `Hotel_Name`, `Hotel_Address`, `lat` (위도), `lng` (경도)
* *lat**lng*를 사용하여 Python으로 호텔 위치를 지도에 표시할 수 있습니다 (예: 부정적/긍정적 리뷰에 따라 색상 코딩)
* *lat**lng*를 사용하여 Python으로 호텔 위치를 표시하는 지도를 그릴 수 있습니다 (부정적 및 긍정적 리뷰에 따라 색상을 구분할 수도 있음)
* Hotel_Address는 명확히 유용하지 않으므로, 더 쉽게 정렬 및 검색할 수 있도록 국가로 대체할 가능성이 있습니다.
**호텔 메타 리뷰 열**
* `Average_Score`
* 데이터셋 제작자에 따르면, 이 열은 *지난 1년 동안의 최신 댓글을 기반으로 계산된 호텔의 평균 점수*를 나타냅니다. 이는 다소 특이한 점수 계산 방식으로 보이지만, 현재로서는 그대로 받아들일 수 있습니다.
* 데이터셋 제작자에 따르면, 이 열은 *지난 1년 동안의 최신 댓글을 기반으로 계산된 호텔의 평균 점수*를 나타냅니다. 이는 다소 특이한 계산 방식이지만, 현재로서는 데이터를 그대로 받아들여야 할 것 같습니다.
✅ 이 데이터의 다른 열을 기반으로 평균 점수를 계산할 다른 방법이 떠오르나요?
✅ 이 데이터의 다른 열을 기반으로 평균 점수를 계산할 다른 방법을 생각할 수 있나요?
* `Total_Number_of_Reviews`
* 이 호텔이 받은 총 리뷰 수를 나타냅니다. (코드를 작성하지 않고는 이 값이 데이터셋의 리뷰를 의미하는지 명확하지 않습니다.)
* 이 호텔이 받은 총 리뷰 수 - 데이터셋의 리뷰를 참조하는지 여부는 코드 작성 없이 명확하지 않습니다.
* `Additional_Number_of_Scoring`
* 리뷰어가 긍정적 또는 부정적 리뷰를 작성하지 않고 점수만 긴 경우를 의미합니다.
* 리뷰어가 긍정적 또는 부정적 리뷰를 작성하지 않고 점수만 긴 경우를 의미합니다.
**리뷰 관련 열**
- `Reviewer_Score`
- 소수점 이하 한 자리까지 표현된 숫자 값으로, 최소 2.5에서 최대 10 사이입니다.
- 왜 2.5가 최저 점수인지에 대한 설명은 없습니다.
- 소수점 한 자리까지 표시되는 숫자 값으로, 최소값 2.5에서 최대값 10 사이입니다.
- 왜 2.5가 가능한 최저 점수인지 설명되어 있지 않습니다.
- `Negative_Review`
- 리뷰어가 아무것도 작성하지 않은 경우, 이 필드는 "**No Negative**"로 채워집니다.
- 리뷰어가 아무것도 작성하지 않은 경우, 이 필드는 "**No Negative**"로 표시됩니다.
- 리뷰어가 부정적 리뷰 열에 긍정적 리뷰를 작성할 수도 있습니다 (예: "이 호텔에 나쁜 점은 없습니다").
- `Review_Total_Negative_Word_Counts`
- 부정적 단어 수가 많을수록 점수가 낮아질 가능성이 높습니다 (감정 분석을 확인하지 않은 상태에서).
- 부정적 단어 수가 많을수록 점수가 낮아집니다 (감정 분석을 확인하지 않은 경우).
- `Positive_Review`
- 리뷰어가 아무것도 작성하지 않은 경우, 이 필드는 "**No Positive**"로 채워집니다.
- 리뷰어가 아무것도 작성하지 않은 경우, 이 필드는 "**No Positive**"로 표시됩니다.
- 리뷰어가 긍정적 리뷰 열에 부정적 리뷰를 작성할 수도 있습니다 (예: "이 호텔에는 좋은 점이 전혀 없습니다").
- `Review_Total_Positive_Word_Counts`
- 긍정적 단어 수가 많을수록 점수가 높아질 가능성이 높습니다 (감정 분석을 확인하지 않은 상태에서).
- `Review_Date` `days_since_review`
- 리뷰의 신선도 또는 오래됨을 측정할 수 있습니다 (예: 오래된 리뷰는 호텔 관리가 변경되었거나, 리노베이션이 이루어졌거나, 수영장이 추가되었기 때문에 정확하지 않을 수 있음).
- 긍정적 단어 수가 많을수록 점수가 높아집니다 (감정 분석을 확인하지 않은 경우).
- `Review_Date` `days_since_review`
- 리뷰의 신선도 또는 오래됨을 측정할 수 있습니다 (오래된 리뷰는 호텔 관리 변경, 리노베이션, 수영장 추가 등으로 인해 최신 리뷰만큼 정확하지 않을 수 있음).
- `Tags`
- 리뷰어가 자신을 설명하기 위해 선택할 수 있는 짧은 설명입니다 (예: 혼자 여행, 가족, 숙박 유형, 숙박 기간, 리뷰 제출 방식 등).
- 그러나 이러한 태그를 사용하는 데는 문제가 있습니다. 아래 섹션에서 유용성에 대해 논의합니다.
- 리뷰어가 선택할 수 있는 짧은 설명으로, 게스트 유형 (예: 혼자 또는 가족), 객실 유형, 숙박 기간, 리뷰 제출 방법 등을 나타냅니다.
- 불행히도, 이러한 태그를 사용하는 데는 문제가 있습니다. 아래 섹션에서 유용성에 대해 논의합니다.
**리뷰어 관련 열**
- `Total_Number_of_Reviews_Reviewer_Has_Given`
- 예를 들어, 리뷰를 많이 작성한 리뷰어(수백 개의 리뷰)가 긍정적 리뷰보다 부정적 리뷰를 더 자주 작성하는 경향이 있는지 확인할 수 있습니다. 그러나 특정 리뷰의 리뷰어는 고유 코드로 식별되지 않으므로 리뷰 세트와 연결할 수 없습니다. 100개 이상의 리뷰를 작성한 리뷰어는 30명 있지만, 이를 추천 모델에 어떻게 활용할 수 있을지는 불분명합니다.
- 예를 들어, 수백 개의 리뷰를 작성한 리뷰어가 긍정적 리뷰보다 부정적 리뷰를 남길 가능성이 더 높다는 것을 알 수 있다면, 추천 모델에서 이 요소를 고려할 수 있습니다. 그러나 특정 리뷰의 리뷰어는 고유 코드로 식별되지 않으므로 리뷰 세트와 연결할 수 없습니다. 100개 이상의 리뷰를 작성한 리뷰어는 30명 있지만, 추천 모델에 어떻게 도움이 될지 판단하기 어렵습니다.
- `Reviewer_Nationality`
- 일부 사람들은 특정 국적이 긍정적 또는 부정적 리뷰를 작성할 가능성이 더 높다고 생각할 수 있습니다. 하지만 이러한 견해를 모델에 반영할 때 주의해야 합니다. 이는 국가적(때로는 인종적) 고정관념일 수 있으며, 각 리뷰어는 자신의 경험을 바탕으로 리뷰를 작성한 개인입니다. 이전 호텔 숙박 경험, 이동 거리, 개인 성격 등 여러 요인을 통해 필터링되었을 수 있습니다. 국적이 리뷰 점수의 이유라고 단정 짓기는 어렵습니다.
- 일부 사람들은 특정 국적이 긍정적 또는 부정적 리뷰를 남길 가능성이 더 높다고 생각할 수 있습니다. 하지만 이러한 견해를 모델에 포함할 때 주의해야 합니다. 이는 국가적 (때로는 인종적) 고정관념이며, 각 리뷰어는 자신의 경험을 바탕으로 리뷰를 작성한 개인입니다. 이전 호텔 숙박 경험, 여행 거리, 개인 성격 등 여러 관점에서 필터링되었을 수 있습니다. 리뷰 점수가 국적 때문이라고 생각하는 것은 정당화하기 어렵습니다.
##### 예시
| Average Score | Total Number Reviews | Reviewer Score | Negative <br />Review | Positive Review | Tags |
| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
| 7.8 | 1945 | 2.5 | 이곳은 현재 호텔이 아니라 공사 현장입니다. 장거리 여행 후 휴식을 취하거나 방에서 작업하는 동안 아침 일찍부터 하루 종일 용납할 수 없는 공사 소음에 시달렸습니다. 사람들이 하루 종일 잭해머를 사용하며 인접한 방에서 작업했습니다. 방 교체를 요청했지만 조용한 방은 없었습니다. 설상가상으로 과도한 요금을 청구받았습니다. 이른 아침 비행기를 타야 했기 때문에 저녁에 체크아웃했으며 적절한 청구서를 받았습니다. 그러나 하루 후 호텔은 예약 가격을 초과하여 제 동의 없이 추가 요금을 청구했습니다. 끔찍한 곳입니다. 이곳을 예약하지 마세요. | 아무것도 없음. 끔찍한 곳. 멀리하세요. | 비즈니스 여행, 커플, 스탠다드 더블룸, 2박 숙박 |
| 7.8 | 1945 | 2.5 | 현재 이곳은 호텔이 아니라 공사 현장입니다. 긴 여행 후 휴식을 취하며 방에서 작업하는 동안 아침 일찍부터 하루 종일 용납할 수 없는 공사 소음에 시달렸습니다. 인접한 방에서 사람들이 하루 종일 작업했습니다. 즉, 잭해머를 사용했습니다. 방 변경을 요청했지만 조용한 방은 없었습니다. 상황을 더 악화시킨 것은 과도한 요금이 부과된 것입니다. 이른 아침 비행기로 떠나야 했기 때문에 저녁에 체크아웃했고 적절한 청구서를 받았습니다. 하루 후 호텔은 예약 가격을 초과하여 제 동의 없이 추가 요금을 부과했습니다. 끔찍한 곳입니다. 여기 예약하지 마세요. | 아무것도 없음 끔찍한 곳 멀리하세요 | 비즈니스 여행 커플 스탠다드 더블룸 2박 숙박 |
보시다시피, 이 손님은 호텔에서 매우 불쾌한 경험을 했습니다. 이 호텔은 평균 점수 7.8과 1945개의 리뷰를 가지고 있지만, 이 리뷰어는 2.5점을 주고 115단어로 부정적인 경험을 작성했습니다. Positive_Review 열에 아무것도 작성하지 않았다면 긍정적인 점이 없다고 추측할 수 있었겠지만, 7단어로 경고를 남겼습니다. 단어 수만 계산하고 단어의 의미나 감정을 고려하지 않는다면 리뷰어의 의도를 왜곡할 수 있습니다. 이상하게도, 2.5점이라는 점수는 혼란스럽습니다. 호텔 숙박이 그렇게 나빴다면 왜 점수를 아예 주지 않았을까요? 데이터셋을 자세히 조사해보면 최저 점수가 2.5이고 0이 아님을 알 수 있습니다. 최고 점수는 10입니다.
보시다시피, 이 손님은 호텔에서 행복한 숙박을 하지 못했습니다. 호텔은 7.8의 좋은 평균 점수와 1945개의 리뷰를 가지고 있지만, 이 리뷰어는 2.5를 주고 숙박의 부정적인 점에 대해 115단어를 작성했습니다. 긍정적 리뷰 열에 아무것도 작성하지 않았다면 긍정적인 점이 없다고 추측할 수 있지만, 경고의 7단어를 작성했습니다. 단어 수만 계산하고 단어의 의미나 감정을 고려하지 않으면 리뷰어의 의도를 왜곡할 수 있습니다. 이상하게도, 2.5라는 점수는 혼란스럽습니다. 호텔 숙박이 그렇게 나빴다면 왜 점수를 주었을까요? 데이터셋을 자세히 조사하면 가능한 최저 점수가 2.5이고 0이 아님을 알 수 있습니다. 가능한 최고 점수는 10입니다.
##### 태그
위에서 언급했듯이, 처음에는 `Tags`를 사용하여 데이터를 분류하는 것이 합리적으로 보입니다. 그러나 이 태그는 표준화되어 있지 않아 문제가 됩니다. 예를 들어, 특정 호텔에서는 *싱글룸*, *트윈룸*, *더블룸*이라는 옵션이 있지만, 다른 호텔에서는 *디럭스 싱글룸*, *클래식 퀸룸*, *이그제큐티브 킹룸*이라는 옵션이 있습니다. 이들은 같은 것을 의미할 수 있지만, 변형이 너무 많아 다음과 같은 선택지가 생깁니다:
위에서 언급했듯이, 처음에는 `Tags`를 사용하여 데이터를 분류하는 아이디어가 합리적으로 보입니다. 그러나 이 태그는 표준화되어 있지 않아, 특정 호텔에서는 *싱글룸*, *트윈룸*, *더블룸* 옵션이 있을 수 있지만, 다른 호텔에서는 *디럭스 싱글룸*, *클래식 퀸룸*, *이그제큐티브 킹룸* 옵션이 있을 수 있습니다. 이것들이 동일한 것일 수도 있지만, 변형이 너무 많아 선택지가 다음과 같이 됩니다:
1. 모든 용어를 단일 표준으로 변경하려고 시도합니다. 그러나 각 경우에 변환 경로가 명확하지 않아 매우 어렵습니다 (예: *클래식 싱글룸**싱글룸*으로 매핑되지만, *정원 또는 도시 전망이 있는 슈페리어 퀸룸*은 매핑하기 훨씬 어렵습니다).
1. 모든 용어를 단일 표준으로 변경하려고 시도하지만, 각 경우에 변환 경로가 명확하지 않아 매우 어렵습니다 (예: *클래식 싱글룸**싱글룸*으로 매핑되지만 *정원 또는 도시 전망이 있는 슈페리어 퀸룸*은 매핑하기 훨씬 어렵습니다).
1. NLP 접근 방식을 사용하여 *혼자*, *비즈니스 여행객*, *어린 자녀를 동반한 가족*과 같은 특정 용어의 빈도를 측정하고 이를 추천에 반영합니다.
태그는 일반적으로 (항상 그런 것은 아니지만) *여행 유형*, *게스트 유형*, *객실 유형*, *숙박 기간*, *리뷰 제출 방식*에 맞춰 5~6개의 쉼표로 구분된 값을 포함하는 단일 필드입니다. 그러나 일부 리뷰어가 각 필드를 채우지 않는 경우(빈칸으로 남겨두는 경우), 값이 항상 동일한 순서로 나타나지는 않습니다.
태그는 일반적으로 (항상 그런 것은 아니지만) *여행 유형*, *게스트 유형*, *객실 유형*, *숙박 기간*, *리뷰 제출 장치 유형*에 맞춰 5~6개의 쉼표로 구분된 값을 포함하는 단일 필드입니다. 그러나 일부 리뷰어가 각 필드를 채우지 않는 경우 (하나를 비워둘 수 있음), 값이 항상 동일한 순서로 나타나지는 않습니다.
예를 들어, *그룹 유형*을 살펴보겠습니다. 이 필드에는 `Tags` 열에서 1025개의 고유한 가능성이 있으며, 불행히도 이 중 일부만 그룹을 나타냅니다(일부는 객실 유형 등). *가족*을 언급하는 항목만 필터링하면 *패밀리룸* 유형 결과가 많이 포함됩니다. *with*라는 용어를 포함하면, 즉 *Family with* 값을 계산하면 결과가 더 나아지며, "어린 자녀를 동반한 가족" 또는 "나이 든 자녀를 동반한 가족"이라는 문구가 515,000개의 결과 중 80,000개 이상 포함됩니다.
예를 들어, *그룹 유형*을 살펴보면, `Tags` 열에서 이 필드에 1025개의 고유 가능성이 있으며, 불행히도 그중 일부만 그룹을 참조합니다 (일부는 객실 유형 등입니다). 가족을 언급하는 태그만 필터링하면 결과에 많은 *가족룸* 유형 결과가 포함됩니다. *with*라는 용어를 포함하여 *가족과 함께* 값을 계산하면 결과가 더 좋아지며, "어린 자녀를 동반한 가족" 또는 "나이 든 자녀를 동반한 가족"이라는 문구가 포함된 515,000개의 결과 중 80,000개 이상을 얻을 수 있습니다.
이는 태그 열이 완전히 쓸모없는 것은 아니지만, 유용하게 만들기 위해 약간의 작업이 필요함을 의미합니다.
따라서 태그 열이 완전히 쓸모없는 것은 아니지만, 유용하게 만들기 위해 약간의 작업이 필요합니다.
##### 평균 호텔 점수
##### 호텔 평균 점수
이 데이터셋에는 이해하기 어려운 이상점이나 불일치가 몇 가지 있지만, 모델을 구축할 때 이를 인지할 수 있도록 여기에 설명합니다. 이를 해결하면 토론 섹션에서 알려주세요!
데이터셋과 관련하여 몇 가지 이상하거나 불일치한 점이 있지만, 이를 명확히 하기 위해 여기서 설명합니다. 모델을 구축할 때 이를 인지하고 해결 방법을 찾으면 토론 섹션에서 알려주세요!
데이터셋에는 평균 점수와 리뷰 수와 관련된 다음 열이 포함되어 있습니다:
@ -129,23 +129,24 @@ Python, 호텔 리뷰 데이터셋, NLTK의 감정 분석을 사용하여 다음
4. Total_Number_of_Reviews
5. Reviewer_Score
이 데이터셋에서 가장 많은 리뷰를 보유한 호텔은 *Britannia International Hotel Canary Wharf*로, 515,000개의 리뷰 중 4789개를 차지합니다. 그러나 이 호텔의 `Total_Number_of_Reviews` 값은 9086입니다. 리뷰가 없는 점수가 훨씬 더 많다고 추측할 수 있으므로, `Additional_Number_of_Scoring` 열 값을 추가해야 할 수도 있습니다. 해당 값은 2682이며, 4789에 더하면 7471이 됩니다. 하지만 여전히 `Total_Number_of_Reviews`에서 1615가 부족합니다.
이 데이터셋에서 가장 많은 리뷰를 가진 호텔은 *Britannia International Hotel Canary Wharf*로, 515,000개 중 4789개의 리뷰를 가지고 있습니다. 그러나 이 호텔의 `Total_Number_of_Reviews` 값은 9086입니다. 많은 점수가 리뷰 없이 존재한다고 추측할 수 있으므로 `Additional_Number_of_Scoring` 열 값을 추가해야 할 것 같습니다. 해당 값은 2682이며, 이를 4789에 더하면 7471이 되지만 여전히 `Total_Number_of_Reviews` 값보다 1615 부족합니다.
`Average_Score` 열을 보면, 데이터셋의 리뷰 평균이라고 추측할 수 있지만, Kaggle 설명에 따르면 "*지난 1년 동안의 최신 댓글을 기반으로 계산된 호텔의 평균 점수*"라고 합니다. 이는 그다지 유용해 보이지 않지만, 데이터셋의 리뷰 점수를 기반으로 자체 평균을 계산할 수 있습니다. 같은 호텔을 예로 들면, 평균 호텔 점수는 7.1로 제공되지만, 데이터셋에서 계산된 점수(리뷰어 점수 평균)는 6.8입니다. 이는 비슷하지만 동일한 값은 아니며, `Additional_Number_of_Scoring` 리뷰에서 제공된 점수가 평균을 7.1로 증가시켰다고 추측할 수 있습니다. 그러나 이를 테스트하거나 증할 방법이 없으므로, `Average_Score`, `Additional_Number_of_Scoring`, `Total_Number_of_Reviews`신뢰하거나 사용하는 것은 어렵습니다.
`Average_Score` 열을 보면 데이터셋의 리뷰 평균이라고 추측할 수 있지만, Kaggle 설명에 따르면 "*지난 1년 동안의 최신 댓글을 기반으로 계산된 호텔의 평균 점수*"라고 합니다. 이는 그다지 유용하지 않아 보이지만, 데이터셋의 리뷰 점수를 기반으로 자체 평균을 계산할 수 있습니다. 동일한 호텔을 예로 들면, 호텔의 평균 점수는 7.1로 제공되지만 데이터셋 내 리뷰어 점수의 계산 평균은 6.8입니다. 이는 근접하지만 동일한 값은 아니며, `Additional_Number_of_Scoring` 리뷰에서 제공된 점수가 평균을 7.1로 증가시켰다고 추측할 수 있습니다. 그러나 이를 테스트하거나 증할 방법이 없으므로 `Average_Score`, `Additional_Number_of_Scoring`, `Total_Number_of_Reviews`사용할 수 없거나 신뢰하기 어렵습니다.
더 복잡한 점은, 두 번째로 리뷰 수가 많은 호텔의 계산된 평균 점수가 8.12이고 데이터셋의 `Average_Score`는 8.1입니다. 이 점수가 정확한 것은 우연일까요, 아니면 첫 번째 호텔의 데이터가 불일치한 것일까요?
이 호텔이 이상치일 가능성과 대부분의 값이 일치하지만 일부 값이 어떤 이유로 일치하지 않을 가능성을 고려하여, 데이터셋의 값을 탐색하고 올바른 사용 여부를 결정하기 위한 간단한 프로그램을 작성할 것입니다.
> 🚨 주의 사항
>
> 이 데이터셋을 작업할 때, 텍스트를 직접 읽거나 분석하지 않고 텍스트에서 무언가를 계산하는 코드를 작성하게 됩니다. 이것이 NLP의 본질이며, 사람이 직접 하지 않아도 의미나 감정을 해석하는 것입니다. 하지만 부정적인 리뷰를 읽게 될 가능성도 있습니다. 저는 여러분이 이를 읽지 않기를 권장합니다. 왜냐하면 읽을 필요가 없기 때문입니다. 일부 리뷰는 어리석거나 호텔과는 무관한 부정적인 리뷰일 수 있습니다. 예를 들어, "날씨가 좋지 않았다"는 호텔이나 누구도 통제할 수 없는 문제입니다. 하지만 리뷰에는 어두운 면도 있습니다. 때로는 부정적인 리뷰가 인종차별적, 성차별적, 또는 연령차별적일 수 있습니다. 이는 불행한 일이지만, 공개 웹사이트에서 스크랩된 데이터셋에서는 예상할 수 있는 일입니다. 일부 리뷰어는 불쾌하거나 불편하거나 마음이 상할 수 있는 리뷰를 남깁니다. 코드를 통해 감정을 측정하게 하고, 직접 읽고 마음이 상하지 않도록 하는 것이 좋습니다. 그렇다고 해도 이런 리뷰를 작성하는 사람은 소수에 불과하지만, 여전히 존재합니다.
더 복잡한 점은 리뷰 수가 두 번째로 많은 호텔의 계산 평균 점수가 8.12이고 데이터셋의 `Average_Score`는 8.1이라는 점입니다. 첫 번째 호텔이 불일치인지, 두 번째 호텔이 올바른 점수인지 우연인지 알 수 없습니다.
이 호텔이 이상치일 가능성이 있으며, 대부분의 값이 일치하지만 일부는 어떤 이유로 일치하지 않을 수 있다고 가정하고, 데이터셋의 값을 탐색하고 올바른 사용법 (또는 사용하지 않는 방법)을 결정하기 위해 다음에 짧은 프로그램을 작성할 것입니다.
> 🚨 주의 사항
>
> 이 데이터셋을 다룰 때, 텍스트를 직접 읽거나 분석하지 않고 텍스트에서 무언가를 계산하는 코드를 작성하게 됩니다. 이것이 바로 NLP의 본질로, 인간이 직접 하지 않아도 의미나 감정을 해석하는 것입니다. 하지만 부정적인 리뷰를 읽게 될 가능성도 있습니다. 저는 여러분이 이를 읽지 않기를 권합니다. 왜냐하면 그럴 필요가 없기 때문입니다. 일부 리뷰는 터무니없거나 관련성이 없는 부정적인 호텔 리뷰일 수 있습니다. 예를 들어, "날씨가 좋지 않았다"는 호텔이나 누구도 통제할 수 없는 문제입니다. 하지만 리뷰에는 어두운 면도 존재합니다. 때로는 부정적인 리뷰가 인종차별적, 성차별적, 혹은 연령차별적일 수 있습니다. 이는 공공 웹사이트에서 수집된 데이터셋에서 예상할 수 있는 불행한 현실입니다. 일부 리뷰어는 불쾌하거나 불편하며 마음을 상하게 할 수 있는 리뷰를 남기기도 합니다. 리뷰를 직접 읽고 마음이 상하기보다는 코드가 감정을 측정하도록 하는 것이 더 나을 것입니다. 그렇다고 해서 이런 리뷰를 작성하는 사람이 다수는 아니지만, 소수라도 존재한다는 사실은 변하지 않습니다.
## 연습 - 데이터 탐색
### 데이터 로드
### 데이터 불러오기
이제 데이터를 시각적으로 살펴보는 것은 충분하니, 코드를 작성하여 답을 찾아봅시다! 이 섹션에서는 pandas 라이브러리를 사용합니다. 첫 번째 과제는 CSV 데이터를 불러오고 읽을 수 있는지 확인하는 것입니다. pandas 라이브러리는 빠른 CSV 로더를 제공하며, 결과는 이전 강의에서처럼 데이터프레임에 저장됩니다. 우리가 불러올 CSV 파일은 50만 개 이상의 행과 17개의 열로 구성되어 있습니다. pandas는 데이터프레임과 상호작용할 수 있는 강력한 기능을 많이 제공하며, 각 행에 대해 연산을 수행할 수도 있습니다.
데이터를 시각적으로 충분히 살펴봤으니, 이제 코드를 작성하여 답을 찾아봅시다! 이 섹션에서는 pandas 라이브러리를 사용합니다. 첫 번째 작업은 CSV 데이터를 로드하고 읽을 수 있는지 확인하는 것입니다. pandas 라이브러리는 빠른 CSV 로더를 제공하며, 결과는 이전 강의에서처럼 데이터프레임에 저장됩니다. 우리가 로드할 CSV는 50만 개 이상의 행과 17개의 열을 포함하고 있습니다. pandas는 데이터프레임과 상호작용할 수 있는 강력한 방법을 많이 제공합니다. 여기에는 모든 행에 대해 작업을 수행할 수 있는 기능도 포함됩니다.
이제부터 이 강의에서는 코드 스니펫과 코드 설명, 그리고 결과에 대한 논의가 포함될 것입니다. 제공된 _notebook.ipynb_ 파일을 사용하여 코드를 작성하세요.
이제 사용할 데이터 파일을 로드해 봅시다:
우선 사용할 데이터 파일을 불러오는 것부터 시작해봅시다:
```python
# Load the hotel reviews from CSV
@ -160,50 +161,50 @@ end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
```
데이터가 로드되었으니, 이제 이를 기반으로 작업을 수행할 수 있습니다. 다음 부분을 위해 프로그램 상단에 이 코드를 유지하세요.
데이터를 불러왔으니, 이제 몇 가지 연산을 수행할 수 있습니다. 이 코드를 프로그램 상단에 유지하면서 다음 단계를 진행하세요.
## 데이터 탐색
이번 경우 데이터는 이미 *정리된 상태*입니다. 즉, 작업할 준비가 되어 있으며, 알고리즘이 영어 문자만 기대할 때 문제를 일으킬 수 있는 다른 언어의 문자가 포함되어 있지 않습니다.
이번 경우, 데이터는 이미 *정리(clean)* 되어 있습니다. 즉, 작업할 준비가 되어 있으며, 영어 문자만을 기대하는 알고리즘을 방해할 수 있는 다른 언어의 문자가 포함되어 있지 않습니다.
✅ 데이터가 NLP 기술을 적용하기 전에 초기 처리가 필요한 경우가 있을 수 있지만, 이번에는 그렇지 않습니다. 만약 처리해야 한다면, 비영어 문자를 어떻게 처리할 것인지 생각해 보세요.
✅ 데이터를 처리하기 전에 형식을 맞추는 초기 처리가 필요한 경우도 있지만, 이번에는 그렇지 않습니다. 만약 비영어 문자를 처리해야 한다면, 어떻게 처리할지 생각해보세요.
데이터가 로드된 후 코드를 사용하여 탐색할 수 있는지 확인하세요. `Negative_Review``Positive_Review` 열에 집중하고 싶을 수 있습니다. 이 열들은 NLP 알고리즘이 처리할 자연어 텍스트로 채워져 있습니다. 하지만 잠시 기다리세요! NLP와 감정 분석에 뛰어들기 전에, 아래 코드를 따라 데이터셋에 제공된 값이 pandas로 계산한 값과 일치하는지 확인하세요.
데이터를 불러온 후, 코드를 사용하여 데이터를 탐색할 수 있는지 확인하세요. `Negative_Review``Positive_Review` 열에 초점을 맞추고 싶을 수 있습니다. 이 열들은 NLP 알고리즘이 처리할 자연어 텍스트로 채워져 있습니다. 하지만 잠깐! NLP와 감정 분석에 뛰어들기 전에, 아래 코드를 따라 데이터셋에 주어진 값이 pandas로 계산한 값과 일치하는지 확인하세요.
## 데이터프레임 작업
## 데이터프레임 연산
이번 강의의 첫 번째 작업은 데이터프레임을 변경하지 않고 데이터를 검사하는 코드를 작성하여 다음 주장이 올바른지 확인하는 것입니다.
이번 강의의 첫 번째 과제는 데이터프레임을 변경하지 않고 데이터를 확인하는 코드를 작성하여 다음 주장이 맞는지 확인하는 것입니다.
> 많은 프로그래밍 작업과 마찬가지로, 이를 완료하는 방법은 여러 가지가 있지만, 가장 간단하고 이해하기 쉬운 방법으로 작업하는 것이 좋습니다. 특히 나중에 이 코드를 다시 볼 때 이해하기 쉬운 방법으로 작업하는 것이 중요합니다. 데이터프레임에는 종종 원하는 작업을 효율적으로 수행할 수 있는 포괄적인 API가 있습니다.
> 많은 프로그래밍 작업과 마찬가지로, 여러 가지 방법으로 작업을 완료할 수 있습니다. 하지만 가장 간단하고 쉬운 방법으로 작업하는 것이 좋습니다. 특히 나중에 이 코드를 다시 볼 때 이해하기 쉬운 방법이라면 더욱 그렇습니다. 데이터프레임의 경우, 종합적인 API가 제공되므로 원하는 작업을 효율적으로 수행할 방법이 있을 가능성이 높습니다.
다음 질문을 코딩 작업으로 간주하고, 솔루션을 보기 전에 답을 시도해 보세요.
다음 질문들을 코딩 과제로 간주하고, 솔루션을 보기 전에 스스로 답을 찾아보세요.
1. 방금 로드한 데이터프레임의 *shape*을 출력하세요 (shape는 행과 열의 수를 나타냅니다).
2. 리뷰어 국적 빈도수를 계산하세요:
1. `Reviewer_Nationality` 열에 대해 고유한 값이 몇 개인지, 그리고 그 값들이 무엇인지 확인하세요.
1. 방금 불러온 데이터프레임의 *shape* (행과 열의 수)을 출력하세요.
2. 리뷰어 국적에 대한 빈도수를 계산하세요:
1. `Reviewer_Nationality` 열에 몇 가지 고유 값이 있는지, 그리고 그 값들이 무엇인지 확인하세요.
2. 데이터셋에서 가장 흔한 리뷰어 국적은 무엇인지 (국가와 리뷰 수를 출력) 확인하세요.
3. 다음으로 가장 흔한 10개의 국적과 그 빈도수를 확인하세요.
3. 가장 흔한 10개의 리뷰어 국적에 대해 각 국적별로 가장 많이 리뷰된 호텔은 무엇인지 확인하세요.
4. 데이터셋에서 호텔별 리뷰 수를 계산하세요 (호텔의 빈도수).
5. 데이터셋의 각 호텔에 대해 모든 리뷰어 점수의 평균을 계산하여 `Calc_Average_Score`라는 새 열을 데이터프레임에 추가하세요. `Hotel_Name`, `Average_Score`, `Calc_Average_Score` 열을 출력하세요.
6. 호텔 중 `Average_Score``Calc_Average_Score`가 동일한 (소수점 첫째 자리까지 반올림) 호텔이 있는지 확인하세요.
1. Series(행)를 인수로 받아 값을 비교하고 값이 같지 않을 때 메시지를 출력하는 Python 함수를 작성해 보세요. 그런 다음 `.apply()` 메서드를 사용하여 모든 행을 함수로 처리하세요.
7. `Negative_Review` 열 값이 "No Negative"인 행이 몇 개인지 계산하고 출력하세요.
8. `Positive_Review` 열 값이 "No Positive"인 행이 몇 개인지 계산하고 출력하세요.
9. `Positive_Review` 열 값이 "No Positive"이고 `Negative_Review` 열 값이 "No Negative"인 행이 몇 개인지 계산하고 출력하세요.
3. 다음으로 많이 등장하는 10개의 국적과 그 빈도수를 확인하세요.
3. 가장 많이 리뷰된 호텔을 각 상위 10개 리뷰어 국적별로 확인하세요.
4. 데이터셋에서 호텔별 리뷰 수(호텔의 빈도수)를 계산하세요.
5. 데이터셋에 각 호텔의 `Average_Score` 열이 있지만, 각 호텔에 대한 모든 리뷰어 점수의 평균을 계산하여 새로운 열 `Calc_Average_Score`를 추가하세요.
6. `Average_Score``Calc_Average_Score`가 동일한 호텔이 있는지 확인하세요 (소수점 첫째 자리까지 반올림하여 비교).
1. Series(행)를 인자로 받아 값을 비교하고, 값이 같지 않을 때 메시지를 출력하는 Python 함수를 작성하세요. 그런 다음 `.apply()` 메서드를 사용하여 모든 행을 처리하세요.
7. `Negative_Review` 열 값이 "No Negative"인 행의 수를 계산하고 출력하세요.
8. `Positive_Review` 열 값이 "No Positive"인 행의 수를 계산하고 출력하세요.
9. `Positive_Review` 열 값이 "No Positive"이고 `Negative_Review` 열 값이 "No Negative"인 행의 수를 계산하고 출력하세요.
### 코드 답안
1. 방금 로드한 데이터프레임의 *shape*을 출력하세요 (shape는 행과 열의 수를 나타냅니다).
1. 방금 불러온 데이터프레임의 *shape* (행과 열의 수)을 출력하세요.
```python
print("The shape of the data (rows, cols) is " + str(df.shape))
> The shape of the data (rows, cols) is (515738, 17)
```
2. 리뷰어 국적 빈도수를 계산하세요:
2. 리뷰어 국적에 대한 빈도수를 계산하세요:
1. `Reviewer_Nationality` 열에 대해 고유한 값이 몇 개인지, 그리고 그 값들이 무엇인지 확인하세요.
1. `Reviewer_Nationality` 열에 몇 가지 고유 값이 있는지, 그리고 그 값들이 무엇인지 확인하세요.
2. 데이터셋에서 가장 흔한 리뷰어 국적은 무엇인지 (국가와 리뷰 수를 출력) 확인하세요.
```python
@ -228,7 +229,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Name: Reviewer_Nationality, Length: 227, dtype: int64
```
3. 다음으로 가장 흔한 10개의 국적과 그 빈도수를 확인하세요.
3. 다음으로 많이 등장하는 10개의 국적과 그 빈도수를 확인하세요.
```python
print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
@ -251,7 +252,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
France 7296
```
3. 가장 흔한 10개의 리뷰어 국적에 대해 각 국적별로 가장 많이 리뷰된 호텔은 무엇인지 확인하세요.
3. 가장 많이 리뷰된 호텔을 각 상위 10개 리뷰어 국적별로 확인하세요.
```python
# What was the most frequently reviewed hotel for the top 10 nationalities
@ -275,7 +276,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
```
4. 데이터셋에서 호텔별 리뷰 수를 계산하세요 (호텔의 빈도수).
4. 데이터셋에서 호텔별 리뷰 수(호텔의 빈도수)를 계산하세요.
```python
# First create a new dataframe based on the old one, removing the uneeded columns
@ -297,10 +298,10 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
| Mercure Paris Porte d Orleans | 110 | 10 |
| Hotel Wagner | 135 | 10 |
| Hotel Gallitzinberg | 173 | 8 |
데이터셋에서 계산된 결과가 `Total_Number_of_Reviews` 값과 일치하지 않는 것을 알 수 있습니다. 이 값이 호텔의 총 리뷰 수를 나타내지만, 모든 리뷰가 스크랩되지 않았거나 다른 계산이 이루어진 것일 수 있습니다. `Total_Number_of_Reviews`는 이러한 불확실성 때문에 모델에서 사용되지 않습니다.
5. 데이터셋의 각 호텔에 대해 모든 리뷰어 점수의 평균을 계산하여 `Calc_Average_Score`라는 새 열을 데이터프레임에 추가하세요. `Hotel_Name`, `Average_Score`, `Calc_Average_Score` 열을 출력하세요.
데이터셋에서 계산된 결과와 `Total_Number_of_Reviews` 값이 일치하지 않는 것을 알 수 있습니다. 이 값이 호텔의 총 리뷰 수를 나타내지만, 모든 리뷰가 스크랩되지 않았거나 다른 계산이 적용된 것일 수 있습니다. 이러한 불확실성 때문에 `Total_Number_of_Reviews`는 모델에서 사용되지 않습니다.
5. 데이터셋에 각 호텔의 `Average_Score` 열이 있지만, 각 호텔에 대한 모든 리뷰어 점수의 평균을 계산하여 새로운 열 `Calc_Average_Score`를 추가하세요. `Hotel_Name`, `Average_Score`, `Calc_Average_Score` 열을 출력하세요.
```python
# define a function that takes a row and performs some calculation with it
@ -322,29 +323,13 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
```
데이터셋 평균과 계산된 평균이 왜 때때로 다른지 궁금할 수 있습니다. 일부 값이 일치하지만 다른 값에 차이가 있는 이유를 알 수 없으므로, 이 경우 우리가 가진 리뷰 점수를 사용하여 평균을 직접 계산하는 것이 가장 안전합니다. 그렇다고 해도 차이는 일반적으로 매우 작습니다. 데이터셋 평균과 계산된 평균 간의 가장 큰 차이를 가진 호텔은 다음과 같습니다:
| Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name |
| :----------------------: | :-----------: | :----------------: | ------------------------------------------: |
| -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria |
| -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery |
| -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans |
| -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel |
| -0.5 | 7.0 | 7.5 | Hotel Royal Elys es |
| ... | ... | ... | ... |
| 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre |
| 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur |
| 0.9 | 6.8 | 5.9 | Villa Eugenie |
| 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux |
| 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar |
점수 차이가 1을 초과하는 호텔이 단 1개뿐이므로, 차이를 무시하고 계산된 평균 점수를 사용할 수 있을 것입니다.
데이터셋 평균과 계산된 평균이 다른 이유가 궁금할 수 있습니다. 일부 값이 일치하지만, 다른 값은 차이가 있는 이유를 알 수 없으므로, 이 경우 우리가 가진 리뷰 점수를 사용하여 평균을 직접 계산하는 것이 가장 안전합니다. 차이가 매우 작기 때문에, 계산된 평균 점수를 사용하는 것이 적절합니다.
6. `Negative_Review` 열 값이 "No Negative"인 행이 몇 개인지 계산하고 출력하세요.
6. `Negative_Review` 열 값이 "No Negative"인 행의 수를 계산하고 출력하세요.
7. `Positive_Review` 열 값이 "No Positive"인 행이 몇 개인지 계산하고 출력하세요.
7. `Positive_Review` 열 값이 "No Positive"인 행의 수를 계산하고 출력하세요.
8. `Positive_Review` 열 값이 "No Positive"이고 `Negative_Review` 열 값이 "No Negative"인 행이 몇 개인지 계산하고 출력하세요.
8. `Positive_Review` 열 값이 "No Positive"이고 `Negative_Review` 열 값이 "No Negative"인 행의 수를 계산하고 출력하세요.
```python
# with lambdas:
@ -368,7 +353,7 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
## 또 다른 방법
람다 없이 항목을 세고, 행을 세기 위해 sum을 사용하는 또 다른 방법:
람다를 사용하지 않고 항목을 세는 또 다른 방법은 sum을 사용하는 것입니다:
```python
# without lambdas (using a mixture of notations to show you can use both)
@ -391,20 +376,20 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Sum took 0.19 seconds
```
`Negative_Review``Positive_Review` 열 값이 각각 "No Negative"와 "No Positive"인 행이 127개 있다는 것을 알 수 있습니다. 이는 리뷰어가 호텔에 숫자 점수를 부여했지만 긍정적 또는 부정적 리뷰를 작성하지 않았다는 것을 의미합니다. 다행히도 이러한 행은 소수(515738개 중 127개, 약 0.02%)에 불과하므로, 모델이나 결과에 특정 방향으로 영향을 미치지 않을 것입니다. 하지만 리뷰가 없는 리뷰 데이터셋에 이러한 행이 있다는 것을 예상하지 못했을 수 있으므로, 데이터를 탐색하여 이러한 행을 발견하는 것이 중요합니다.
`Negative_Review``Positive_Review` 열 값이 각각 "No Negative"와 "No Positive"인 행이 127개 있다는 것을 알 수 있습니다. 이는 리뷰어가 호텔에 점수를 부여했지만, 긍정적이거나 부정적인 리뷰를 작성하지 않았다는 것을 의미합니다. 다행히도 이러한 행은 515,738개 중 127개(0.02%)로 매우 적기 때문에, 모델이나 결과에 큰 영향을 미치지 않을 것입니다. 하지만 리뷰 데이터셋에 리뷰가 없는 행이 포함되어 있다는 점은 예상치 못했을 수 있으므로, 데이터를 탐색하여 이러한 행을 발견하는 것이 중요합니다.
이제 데이터셋을 탐색했으니, 다음 강의에서는 데이터를 필터링하고 감정 분석을 추가할 것입니다.
---
## 🚀도전 과제
이번 강의는 이전 강의에서 본 것처럼, 데이터를 이해하고 작업을 수행하기 전에 데이터의 특성을 파악하는 것이 얼마나 중요한지 보여줍니다. 특히 텍스트 기반 데이터는 신중히 검토해야 합니다. 다양한 텍스트 중심 데이터셋을 탐색하 모델에 편향이나 왜곡된 감정을 도입할 수 있는 영역을 발견할 수 있는지 확인 보세요.
이번 강의는 이전 강의에서 본 것처럼, 데이터를 이해하고 특성을 파악하는 것이 얼마나 중요한지 보여줍니다. 특히 텍스트 기반 데이터는 신중히 검토해야 합니다. 다양한 텍스트 중심 데이터셋을 탐색하며, 모델에 편향이나 왜곡된 감정을 도입할 수 있는 영역을 발견해보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/38/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
[NLP 학습 경로](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott)를 통해 음성 및 텍스트 중심 모델을 구축할 때 사용할 도구를 알아보세요.
[NLP 학습 경로](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott)를 통해 음성 및 텍스트 중심 모델을 구축할 때 사용할 수 있는 도구를 알아보세요.
## 과제
@ -413,4 +398,4 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,20 +1,21 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a2aa4e9b91b9640db2c15363c4299d8b",
"translation_date": "2025-09-04T00:56:23+00:00",
"original_hash": "2c742993fe95d5bcbb2846eda3d442a1",
"translation_date": "2025-09-05T10:58:14+00:00",
"source_file": "6-NLP/5-Hotel-Reviews-2/README.md",
"language_code": "ko"
}
-->
# 호텔 리뷰를 활용한 감정 분석
데이터셋을 자세히 탐색한 후, 이제 열을 필터링하고 NLP 기술을 사용하여 호텔에 대한 새로운 통찰력을 얻을 때입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/39/)
데이터셋을 자세히 탐색한 후, 이제 열을 필터링하고 NLP 기술을 사용하여 호텔에 대한 새로운 인사이트를 얻을 때입니다.
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
### 필터링 및 감정 분석 작업
아마도 눈치채셨겠지만, 데이터셋에는 몇 가지 문제가 있습니다. 일부 열은 쓸모없는 정보로 채워져 있고, 다른 열은 부정확해 보입니다. 만약 정확하다면, 어떻게 계산되었는지 불분명하며, 여러분의 계산으로 독립적으로 검증할 수 없습니다.
아마도 눈치채셨겠지만, 데이터셋에는 몇 가지 문제가 있습니다. 일부 열은 쓸모없는 정보로 채워져 있고, 다른 열은 부정확해 보입니다. 만약 정확하다면, 그것이 어떻게 계산되었는지 불분명하며, 여러분의 계산으로 독립적으로 검증할 수 없습니다.
## 연습: 데이터 처리 조금 더 하기
@ -24,7 +25,7 @@ CO_OP_TRANSLATOR_METADATA:
1. `lat``lng` 삭제
2. `Hotel_Address` 값을 다음 값으로 대체 (주소에 도시와 국가 이름이 포함되어 있다면, 도시와 국가 이름만 남기세요).
2. `Hotel_Address` 값을 다음 값으로 대체하세요 (주소에 도시와 국가가 포함되어 있다면, 도시와 국가만 남기세요).
데이터셋에 포함된 도시와 국가는 다음과 같습니다:
@ -78,13 +79,13 @@ CO_OP_TRANSLATOR_METADATA:
2. 호텔 메타 리뷰 열 처리
1. `Additional_Number_of_Scoring` 삭제
1. `Additional_Number_of_Scoring` 삭제
1. `Total_Number_of_Reviews`를 데이터셋에 실제로 포함된 해당 호텔 리뷰 수로 대체
2. `Total_Number_of_Reviews`를 데이터셋에 실제로 포함된 호텔 리뷰 수로 대체
1. `Average_Score`를 직접 계산한 점수로 대체
3. `Average_Score`를 직접 계산한 점수로 대체
```python
```python
# Drop `Additional_Number_of_Scoring`
df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True)
# Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values
@ -104,29 +105,29 @@ CO_OP_TRANSLATOR_METADATA:
4. 리뷰어 열 처리
1. `Total_Number_of_Reviews_Reviewer_Has_Given` 삭제
1. `Total_Number_of_Reviews_Reviewer_Has_Given` 삭제
2. `Reviewer_Nationality`는 유지
2. `Reviewer_Nationality`는 유지
### 태그 열
`Tag` 열은 텍스트 형식의 리스트로 저장되어 있어 문제가 됩니다. 불행히도 이 열의 하위 섹션 순서와 개수가 항상 동일하지 않습니다. 사람이 올바른 관심 태그를 식별하기 어렵습니다. 왜냐하면 515,000개의 행과 1427개의 호텔이 있고, 각 리뷰어가 선택할 수 있는 옵션이 약간씩 다르기 때문입니다. 이럴 때 NLP가 빛을 발합니다. 텍스트를 스캔하여 가장 일반적인 구문을 찾고 이를 계산할 수 있습니다.
`Tag` 열은 텍스트 형식의 리스트로 저장되어 있어 문제가 됩니다. 불행히도 이 열의 하위 섹션 순서와 개수가 항상 동일하지 않습니다. 사람이 올바른 문구를 식별하기 어려운데, 이는 515,000개의 행과 1427개의 호텔이 있고, 각 리뷰어가 선택할 수 있는 옵션이 약간씩 다르기 때문입니다. 이럴 때 NLP가 유용합니다. 텍스트를 스캔하여 가장 일반적인 문구를 찾고, 이를 세어볼 수 있습니다.
불행히도 단어 하나보다는 다단어 구문(예: *Business trip*)에 관심이 있습니다. 이 많은 데이터(6762646 단어)에 대해 다단어 빈도 분포 알고리즘을 실행하면 엄청난 시간이 걸릴 수 있습니다. 하지만 데이터를 살펴보지 않고는 필요한 작업인지 판단하기 어렵습니다. 탐색적 데이터 분석이 유용한 이유입니다. 예를 들어 `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`와 같은 태그 샘플을 보면, 처리량을 크게 줄일 수 있는지 질문을 시작할 수 있습니다. 다행히도 가능합니다. 하지만 먼저 관심 태그를 확인하기 위해 몇 가지 단계를 따라야 합니다.
불행히도 단어 하나가 아닌 다단어 문구(예: *Business trip*)에 관심이 있습니다. 이처럼 많은 데이터(6762646 단어)에 대해 다단어 빈도 분포 알고리즘을 실행하면 엄청난 시간이 걸릴 수 있습니다. 하지만 데이터를 살펴보지 않고는 필요한 작업인지 판단하기 어렵습니다. 다행히도 탐색적 데이터 분석이 유용합니다. 예를 들어, `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`와 같은 태그 샘플을 보면, 처리해야 할 작업을 크게 줄일 수 있는지 질문을 던질 수 있습니다. 다행히도 가능합니다. 하지만 먼저 관심 있는 태그를 확인하기 위해 몇 가지 단계를 따라야 합니다.
### 태그 필터링
데이터셋의 목표는 감정을 추가하고 최종적으로 최고의 호텔을 선택하는 데 도움이 되는 열을 추가하는 것입니다(자신을 위해서든, 호텔 추천 봇을 만들라는 고객의 요청을 위해서든). 태그가 최종 데이터셋에서 유용한지 아닌지를 스스로 물어봐야 합니다. 다음은 한 가지 해석입니다(다른 이유로 데이터셋이 필요하다면 다른 태그가 포함/제외될 수 있습니다):
데이터셋의 목표는 감정을 추가하고 최종적으로 최고의 호텔을 선택하는 데 도움이 되는 열을 추가하는 것입니다(자신을 위해서든, 호텔 추천 봇을 만들라는 고객의 요청을 위해서든). 태그가 최종 데이터셋에서 유용한지 아닌지를 스스로 물어봐야 합니다. 다음은 한 가지 해석입니다(다른 이유로 데이터셋이 필요하다면 태그 선택이 달라질 수 있음):
1. 여행 유형은 관련이 있으므로 유지해야 합니다.
2. 게스트 그룹 유형은 중요하므로 유지해야 합니다.
3. 게스트가 머문 방, 스위트룸, 스튜디오 유형은 관련이 없습니다(모든 호텔은 기본적으로 동일한 방을 가지고 있음).
3. 게스트가 머문 방, 스위트룸, 스튜디오 유형은 관련이 없습니다(모든 호텔은 기본적으로 동일한 방을 제공함).
4. 리뷰가 제출된 기기는 관련이 없습니다.
5. 리뷰어가 머문 밤 수는 호텔을 더 좋아하는 것과 연관이 있을 수 있지만, 가능성이 낮고 아마도 관련이 없습니다.
5. 리뷰어가 머문 밤 수는 호텔을 더 좋아하는 경향과 연관이 있을 수 있지만, 가능성이 낮아 아마도 관련이 없습니다.
요약하자면, **두 가지 유형의 태그만 유지하고 나머지는 제거하세요**.
요약하자면, **두 가지 유형의 태그만 유지하고 나머지는 제거**하세요.
먼저, 태그를 더 나은 형식으로 만들기 전까지는 태그를 계산하지 않으려 합니다. 즉, 대괄호와 따옴표를 제거해야 합니다. 여러 방법이 있지만, 가장 빠른 방법을 선택해야 합니다. 많은 데이터를 처리하는 데 시간이 오래 걸릴 수 있기 때문입니다. 다행히도 pandas는 각 단계를 쉽게 수행할 수 있는 방법을 제공합니다.
우선, 태그를 더 나은 형식으로 만들기 전까지는 태그를 세지 않는 것이 좋습니다. 즉, 대괄호와 따옴표를 제거해야 합니다. 이를 수행하는 방법은 여러 가지가 있지만, 가장 빠른 방법을 선택해야 합니다. 다행히도 pandas는 각 단계를 쉽게 수행할 수 있는 방법을 제공합니다.
```Python
# Remove opening and closing brackets
@ -135,11 +136,11 @@ df.Tags = df.Tags.str.strip("[']")
df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
```
각 태그는 다음과 같이 변환됩니다: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`.
각 태그는 다음과 같은 형식이 됩니다: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`.
다음으로 문제가 발생합니다. 일부 리뷰 또는 행에는 5개의 열이 있고, 일부는 3개, 일부는 6개입니다. 이는 데이터셋 생성 방식의 결과이며 수정하기 어렵습니다. 각 문의 빈도 수를 얻고 싶지만, 리뷰마다 순서가 다르기 때문에 카운트가 정확하지 않을 수 있으며, 호텔이 받을 자격이 있는 태그를 받지 못할 수도 있습니다.
다음으로 문제가 발생합니다. 일부 리뷰(행)는 5개의 열을 가지고 있고, 일부는 3개, 일부는 6개입니다. 이는 데이터셋 생성 방식의 결과이며 수정하기 어렵습니다. 각 문의 빈도수를 얻고 싶지만, 리뷰마다 순서가 다르기 때문에 카운트가 정확하지 않을 수 있으며, 호텔이 받을 자격이 있는 태그를 받지 못할 수도 있습니다.
대신 이 다른 순서를 활용할 것입니다. 각 태그는 다단어 구문이지만 쉼표로 구분되어 있습니다! 가장 간단한 방법은 임시로 6개의 열을 생성하여 각 태그를 해당 순서에 맞는 열에 삽입하는 것입니다. 그런 다음 6개의 열을 하나의 큰 열로 병합하고 결과 열에서 `value_counts()` 메서드를 실행합니다. 이를 출력하면 2428개의 고유 태그가 있음을 확인할 수 있습니다. 다음은 작은 샘플입니다:
대신, 서로 다른 순서를 활용할 수 있습니다. 각 태그는 다단어 문구이지만 쉼표로 구분되어 있습니다! 가장 간단한 방법은 임시로 6개의 열을 생성하여 각 태그를 해당 순서에 맞는 열에 삽입하는 것입니다. 그런 다음 6개의 열을 하나의 큰 열로 병합하고 결과 열에서 `value_counts()` 메서드를 실행합니다. 이를 출력하면 2428개의 고유 태그가 있음을 확인할 수 있습니다. 다음은 작은 샘플입니다:
| Tag | Count |
| ------------------------------ | ------ |
@ -166,11 +167,11 @@ df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
| Superior Double or Twin Room | 13570 |
| 2 rooms | 12393 |
`Submitted from a mobile device`와 같은 일반적인 태그는 우리에게 아무런 도움이 되지 않으므로, 구문 발생 횟수를 계산하기 전에 제거하는 것이 현명할 수 있습니다. 하지만 작업이 매우 빠르기 때문에 그대로 두고 무시할 수 있습니다.
`Submitted from a mobile device`와 같은 일반적인 태그는 우리에게 아무런 도움이 되지 않으므로, 이를 제거하는 것이 현명할 수 있습니다. 하지만 매우 빠른 작업이므로 그대로 두고 무시할 수 있습니다.
### 숙박 기간 태그 제거
이 태그를 제거하는 것이 첫 번째 단계입니다. 고려해야 할 태그의 총 수를 약간 줄입니다. 데이터셋에서 태그를 제거하지는 않고, 리뷰 데이터셋에서 값을 계산/유지 대상으로 선택하지 않을 뿐입니다.
이 태그를 제거하는 것이 첫 번째 단계입니다. 고려해야 할 태그 수를 약간 줄여줍니다. 데이터셋에서 태그를 제거하는 것이 아니라, 리뷰 데이터셋에서 값으로 계산/유지하지 않기로 선택하는 것입니다.
| Length of stay | Count |
| ---------------- | ------ |
@ -185,7 +186,7 @@ df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
| Stayed 9 nights | 1293 |
| ... | ... |
방, 스위트룸, 스튜디오, 아파트 등 다양한 유형이 있습니다. 이들은 모두 대체로 동일한 의미를 가지며 관련이 없으므로 고려 대상에서 제거하세요.
방, 스위트룸, 스튜디오, 아파트 등 다양한 유형이 있습니다. 이들은 대체로 동일한 의미를 가지며 관련이 없으므로 고려 대상에서 제거하세요.
| Type of room | Count |
| ----------------------------- | ----- |
@ -211,9 +212,9 @@ df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
| Family with older children | 26349 |
| With a pet | 1405 |
`Travellers with friends``Group`과 거의 동일하다고 볼 수 있으며, 두 태그를 위와 같이 결합하는 것이 공정할 것입니다. 올바른 태그를 식별하는 코드는 [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb)에 있습니다.
`Travellers with friends``Group`과 거의 동일하다고 볼 수 있으며, 이를 결합하는 것이 공정할 것입니다. 위와 같이 결합하세요. 올바른 태그를 식별하는 코드는 [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb)에 있습니다.
최종 단계는 각 태그에 대해 새로운 열을 생성하는 것입니다. 그런 다음 각 리뷰 행에서 `Tag` 열이 새 열 중 하나와 일치하면 1을 추가하고, 그렇지 않으면 0을 추가합니다. 최종 결과는 비즈니스 vs 레저, 또는 애완동물 동반 여부 등으로 호텔을 선택한 리뷰어 수를 집계한 데이터가 됩니다.
마지막 단계는 각 태그에 대해 새로운 열을 생성하는 것입니다. 그런 다음 각 리뷰 행에서 `Tag` 열이 새 열 중 하나와 일치하면 1을 추가하고, 그렇지 않으면 0을 추가하세요. 최종 결과는 비즈니스 vs 레저, 또는 애완동물 동반 여부 등 호텔을 선택할 때 유용한 정보를 제공하는 리뷰어 선택 수의 집계가 될 것입니다.
```python
# Process the Tags into new columns
@ -249,7 +250,7 @@ df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False)
## 연습: 필터링된 데이터 로드 및 저장
이제 이전 섹션에서 저장한 필터링된 데이터셋을 로드하며, **원본 데이터셋이 아님**을 유의하세요.
이제 이전 섹션에서 저장한 필터링된 데이터셋을 로드해야 하며, **원본 데이터셋이 아닙니다**.
```python
import time
@ -274,11 +275,11 @@ df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False)
Negative 및 Positive 리뷰 열에서 감정 분석을 실행하면 시간이 오래 걸릴 수 있습니다. 빠른 CPU를 가진 강력한 테스트 노트북에서 테스트한 결과, 사용된 감정 라이브러리에 따라 12~14분이 걸렸습니다. 이는 (상대적으로) 긴 시간이므로 속도를 높일 수 있는지 조사할 가치가 있습니다.
불용어 제거는 첫 번째 단계입니다. 불용어는 문장의 감정에 영향을 주지 않는 일반적인 영어 단어입니다. 이를 제거하면 감정 분석이 더 빨리 실행되지만 정확도가 떨어지지 않습니다(불용어는 감정에 영향을 주지 않지만 분석 속도를 늦춥니다).
불용어 제거는 첫 번째 단계입니다. 불용어는 문장의 감정에 영향을 주지 않지만 분석 속도를 늦추므로 제거하면 감정 분석이 더 빨라질 수 있습니다. 불용어를 제거해도 정확도가 떨어지지 않습니다(불용어는 감정에 영향을 주지 않지만 속도를 늦춤).
가장 긴 부정 리뷰는 395단어였지만, 불용어를 제거한 후에는 195단어로 줄어듭니다.
불용어 제거는 또한 빠른 작업입니다. 515,000개의 행에서 2개의 리뷰 열에서 불용어를 제거하는 데 테스트 장치에서 3.3초가 걸렸습니다. CPU 속도, RAM, SSD 여부 등 여러 요인에 따라 시간이 약간 더 걸리거나 덜 걸릴 수 있습니다. 작업이 상대적으로 짧기 때문에 감정 분석 시간을 개선한다면 수행할 가치가 있습니다.
불용어 제거는 또한 빠른 작업입니다. 515,000개의 행에서 2개의 리뷰 열 불용어를 제거하는 데 테스트 장치에서 3.3초가 걸렸습니다. 장치의 CPU 속도, RAM, SSD 여부 등 여러 요인에 따라 시간이 약간 더 걸리거나 덜 걸릴 수 있습니다. 작업이 상대적으로 짧기 때문에 감정 분석 시간을 개선한다면 수행할 가치가 있습니다.
```python
from nltk.corpus import stopwords
@ -301,9 +302,9 @@ df.Positive_Review = df.Positive_Review.apply(remove_stopwords)
```
### 감정 분석 수행
이제 부정적 리뷰와 긍정적 리뷰 열에 대한 감정 분석을 계산하고, 결과를 두 개의 새로운 열에 저장해야 합니다. 감정 분석의 테스트는 동일한 리뷰에 대해 리뷰어가 준 점수와 비교하는 것입니다. 예를 들어, 감정 분석 결과 부정적 리뷰의 감정 점수가 1(매우 긍정적 감정)이고 긍정적 리뷰의 감정 점수도 1로 나왔지만, 리뷰어가 호텔에 최저 점수를 준 경우, 이는 리뷰 텍스트가 점수와 일치하지 않거나 감정 분석기가 감정을 제대로 인식하지 못했음을 의미합니다. 일부 감정 점수가 완전히 잘못될 수도 있으며, 이는 종종 설명 가능합니다. 예를 들어, 리뷰가 매우 풍자적일 수 있습니다. "난방이 없는 방에서 자는 게 정말 좋았어요" 같은 문장은 감정 분석기가 긍정적 감정으로 인식할 수 있지만, 사람이라면 이 문장이 풍자임을 알 수 있습니다.
NLTK는 학습할 수 있는 다양한 감정 분석기를 제공합니다. 이를 대체하여 감정 분석이 더 정확한지 덜 정확한지 확인할 수 있습니다. 여기서는 VADER 감정 분석을 사용합니다.
이제 부정 리뷰와 긍정 리뷰 열에 대해 감정 분석을 계산하고 결과를 2개의 새로운 열에 저장해야 합니다. 감정 테스트는 동일한 리뷰에 대한 리뷰어 점수와 비교하는 것입니다. 예를 들어, 감정 분석 결과 부정 리뷰의 감정이 1(매우 긍정적 감정)이고 긍정 리뷰의 감정이 1이라고 판단했지만 리뷰어가 호텔에 최저 점수를 준 경우, 리뷰 텍스트가 점수와 일치하지 않거나 감정 분석기가 감정을 올바르게 인식하지 못했을 가능성이 있습니다. 일부 감정 점수가 완전히 잘못될 것으로 예상되며, 이는 종종 설명 가능할 것입니다. 예를 들어, 리뷰가 매우 비꼬는 내용일 수 있습니다. "물론 난 난방이 없는 방에서 자는 게 정말 좋았어요"와 같은 경우, 감정 분석기는 이를 긍정적 감정으로 판단할 수 있지만, 인간이 읽으면 비꼬는 내용임을 알 수 있습니다.
NLTK는 학습을 위해 다양한 감정 분석기를 제공하며, 이를 교체하여 감정 분석이 더 정확하거나 덜 정확한지 확인할 수 있습니다. 여기서는 VADER 감정 분석을 사용합니다.
> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014.
@ -336,7 +337,7 @@ end = time.time()
print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds")
```
제 컴퓨터에서 약 120초가 소요되지만, 컴퓨터마다 다를 수 있습니다. 결과를 출력하여 감정이 리뷰와 일치하는지 확인하려면:
이 작업은 제 컴퓨터에서 약 120초가 소요되지만, 컴퓨터마다 다를 수 있습니다. 결과를 출력하여 감정이 리뷰와 일치하는지 확인하려면 다음을 실행하세요:
```python
df = df.sort_values(by=["Negative_Sentiment"], ascending=True)
@ -345,7 +346,7 @@ df = df.sort_values(by=["Positive_Sentiment"], ascending=True)
print(df[["Positive_Review", "Positive_Sentiment"]])
```
파일을 도전에 사용하기 전에 마지막으로 해야 할 일은 저장하는 것입니다! 또한, 새로 추가된 모든 열을 재정렬하여 작업하기 쉽게 만드는 것도 고려해야 합니다(사람이 보기 좋게 하기 위한 미적 변경입니다).
도전 과제서 파일을 사용하기 전에 마지막으로 해야 할 일은 저장하는 것입니다! 또한, 새로 추가한 모든 열을 재정렬하여 작업하기 쉽게 만드는 것도 고려해 보세요 (사람이 보기에는 단순히 미관상의 변화일 수 있습니다).
```python
# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)
@ -355,20 +356,20 @@ print("Saving results to Hotel_Reviews_NLP.csv")
df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
```
[분석 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb)의 전체 코드를 실행해야 합니다(먼저 [필터링 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb)을 실행하여 Hotel_Reviews_Filtered.csv 파일을 생성한 후).
[분석 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb)의 전체 코드를 실행해야 합니다 (먼저 [필터링 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb)을 실행하여 Hotel_Reviews_Filtered.csv 파일을 생성한 후).
요약하자면, 단계는 다음과 같습니다:
1. 원본 데이터셋 파일 **Hotel_Reviews.csv**는 이전 강의에서 [탐색 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb)을 사용 탐색되었습니다.
1. 원본 데이터셋 파일 **Hotel_Reviews.csv**는 이전 강의에서 [탐색 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb)을 사용하여 탐색되었습니다.
2. **Hotel_Reviews.csv**는 [필터링 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb)을 통해 필터링되어 **Hotel_Reviews_Filtered.csv**가 생성되었습니다.
3. **Hotel_Reviews_Filtered.csv**는 [감정 분석 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb)을 통해 처리되어 **Hotel_Reviews_NLP.csv**가 생성되었습니다.
4. 아래 NLP 도전 과제에서 **Hotel_Reviews_NLP.csv**를 사용합니다.
4. 아래 NLP 도전 과제에서 **Hotel_Reviews_NLP.csv**를 사용하세요.
### 결론
처음에는 열과 데이터가 있는 데이터셋을 가지고 있었지만, 모든 데이터를 확인하거나 사용할 수는 없었습니다. 데이터를 탐색하고, 필요 없는 데이터를 필터링하고, 태그를 유용한 것으로 변환하고, 자체 평균을 계산하고, 감정 열을 추가했으며, 자연어 텍스트를 처리하는 데 있어 흥미로운 점을 배웠기를 바랍니다.
처음 시작할 때는 열과 데이터가 포함된 데이터셋을 가지고 있었지만, 모든 데이터가 검증되거나 사용 가능한 것은 아니었습니다. 데이터를 탐색하고, 필요 없는 부분을 필터링하며, 태그를 유용한 형태로 변환하고, 직접 평균을 계산하고, 감정 열을 추가하면서 자연어 텍스트를 처리하는 데 대해 흥미로운 점들을 배웠기를 바랍니다.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/40/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 도전 과제
@ -376,7 +377,7 @@ df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
## 복습 및 자기 학습
[이 학습 모듈](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott)을 통해 텍스트에서 감정을 탐색하고 다양한 도구를 사용하는 방법을 더 배워보세요.
[이 학습 모듈](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott)을 통해 더 많은 내용을 배우고, 텍스트에서 감정을 탐색하기 위해 다양한 도구를 사용해 보세요.
## 과제
@ -385,4 +386,4 @@ df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문 번역가에 의한 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,41 +1,41 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "3150d40f36a77857316ecaed5f31e856",
"translation_date": "2025-09-03T22:48:25+00:00",
"original_hash": "662b509c39eee205687726636d0a8455",
"translation_date": "2025-09-05T10:43:16+00:00",
"source_file": "7-TimeSeries/1-Introduction/README.md",
"language_code": "ko"
}
-->
# 시계열 예측 소개
![스케치노트로 본 시계열 요약](../../../../translated_images/ml-timeseries.fb98d25f1013fc0c59090030080b5d1911ff336427bec31dbaf1ad08193812e9.ko.png)
![스케치노트로 본 시계열 요약](../../../../sketchnotes/ml-timeseries.png)
> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac)
이번 강의와 다음 강의에서는 시계열 예측에 대해 배워볼 것입니다. 시계열 예측은 머신러닝 과학자의 도구 중에서 흥미롭고 가치 있는 부분으로, 다른 주제들에 비해 덜 알려져 있습니다. 시계열 예측은 일종의 '수정구슬'과 같아서, 가격과 같은 변수의 과거 성과를 바탕으로 미래의 잠재적 가치를 예측할 수 있습니다.
이번 강의와 다음 강의에서는 시계열 예측에 대해 배워볼 것입니다. 시계열 예측은 머신러닝 과학자의 도구 중에서 흥미롭고 가치 있는 부분으로, 다른 주제들에 비해 덜 알려져 있습니다. 시계열 예측은 일종의 '수정 구슬'과 같아서, 가격과 같은 변수의 과거 성과를 기반으로 미래의 잠재적 가치를 예측할 수 있습니다.
[![시계열 예측 소개](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "시계열 예측 소개")
> 🎥 위 이미지를 클릭하면 시계열 예측에 대한 동영상을 볼 수 있습니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/41/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
시계열 예측은 가격 책정, 재고 관리, 공급망 문제와 같은 비즈니스 문제에 직접적으로 적용될 수 있어 실질적인 가치를 지닌 흥미로운 분야입니다. 딥러닝 기술이 더 나은 미래 성과를 예측하기 위해 점점 더 많이 사용되고 있지만, 시계열 예측은 여전히 고전적인 머신러닝 기술에 의해 크게 영향을 받는 분야입니다.
시계열 예측은 가격 책정, 재고 관리, 공급망 문제와 같은 비즈니스 문제에 직접적으로 적용될 수 있어 실질적인 가치를 지닌 흥미로운 분야입니다. 딥러닝 기술이 미래 성과를 더 잘 예측하기 위해 더 많은 통찰력을 제공하기 시작했지만, 시계열 예측은 여전히 고전적인 머신러닝 기술에 의해 크게 영향을 받는 분야입니다.
> 펜실베니아 주립대의 유용한 시계열 커리큘럼은 [여기](https://online.stat.psu.edu/stat510/lesson/1)에서 확인할 수 있습니다.
> 펜실베니아 주립대의 유용한 시계열 커리큘럼은 [여기](https://online.stat.psu.edu/stat510/lesson/1)에서 확인할 수 있습니다.
## 소개
스마트 주차 미터기를 관리한다고 가정해봅시다. 이 미터기는 시간이 지남에 따라 얼마나 자주 사용되었는지, 얼마나 오래 사용되었는지에 대한 데이터를 제공합니다.
스마트 주차 미터 배열을 관리한다고 가정해봅시다. 이 미터는 시간이 지남에 따라 얼마나 자주 사용되었는지, 얼마나 오래 사용되었는지에 대한 데이터를 제공합니다.
> 미터기의 과거 성과를 바탕으로 수요와 공급의 법칙에 따라 미래 가치를 예측할 수 있다면 어떨까요?
> 미터의 과거 성과를 기반으로 공급과 수요의 법칙에 따라 미래 가치를 예측할 수 있다면 어떨까요?
목표를 달성하기 위해 언제 행동해야 할지 정확히 예측하는 것은 시계열 예측으로 해결할 수 있는 도전 과제입니다. 사람들이 주차 공간을 찾는 바쁜 시간에 더 많은 요금을 부과하는 것은 기분 좋지 않을 수 있지만, 거리를 청소하기 위한 수익을 창출하는 확실한 방법이 될 것입니다!
목표를 달성하기 위해 언제 행동해야 할지 정확히 예측하는 것은 시계열 예측으로 해결할 수 있는 도전 과제입니다. 사람들이 주차 공간을 찾는 바쁜 시간에 더 많은 요금을 부과하는 것은 기분 좋지 않을 수 있지만, 거리를 청소하기 위한 수익을 창출하는 확실한 방법이 될 것입니다!
이제 시계열 알고리즘의 몇 가지 유형을 살펴보고 데이터를 정리하고 준비하는 노트북을 시작해봅시다. 분석할 데이터는 GEFCom2014 예측 대회에서 가져온 것으로, 2012년부터 2014년까지 3년간의 시간별 전력 사용량과 온도 값을 포함하고 있습니다. 전력 사용량과 온도의 과거 패턴을 바탕으로 전력 사용량의 미래 값을 예측할 수 있습니다.
이제 시계열 알고리즘의 유형을 탐구하고 데이터를 정리하고 준비하기 위한 노트북을 시작해봅시다. 여러분이 분석할 데이터는 GEFCom2014 예측 대회에서 가져온 것으로, 2012년부터 2014년까지 3년간의 시간별 전력 사용량과 온도 값을 포함하고 있습니다. 전력 사용량과 온도의 과거 패턴을 바탕으로 전력 사용량의 미래 값을 예측할 수 있습니다.
이 예제에서는 과거 사용량 데이터만을 사용하여 한 시간 앞을 예측하는 방법을 배울 것입니다. 시작하기 전에, 이 과정에서 어떤 일이 일어나는지 이해하는 것이 유용합니다.
이 예제에서는 과거 사용량 데이터만을 사용하여 한 시간 단위로 예측하는 방법을 배울 것입니다. 그러나 시작하기 전에, 이 과정에서 어떤 일이 일어나는지 이해하는 것이 유용합니다.
## 몇 가지 정의
@ -43,25 +43,25 @@ CO_OP_TRANSLATOR_METADATA:
🎓 **시계열**
수학에서 "시계열은 시간 순서로 나열되거나 그래프로 표시된 데이터 포인트의 시리즈입니다. 가장 일반적으로 시계열은 일정한 간격으로 연속적으로 측정된 데이터의 시퀀스입니다." 시계열의 예로는 [다우존스 산업평균지수](https://wikipedia.org/wiki/Time_series)의 일일 종가가 있습니다. 시계열 플롯과 통계 모델링은 신호 처리, 날씨 예측, 지진 예측 및 기타 이벤트가 발생하고 데이터 포인트가 시간에 따라 플롯될 수 있는 분야에서 자주 사용됩니다.
수학에서 "시계열은 시간 순서로 나열되거나 그래프로 표시된 데이터 포인트의 시리즈입니다. 가장 일반적으로 시계열은 일정한 간격으로 연속적으로 측정된 데이터의 시퀀스입니다." 시계열의 예로는 [다우존스 산업평균지수](https://wikipedia.org/wiki/Time_series)의 일일 종가가 있습니다. 시계열 플롯과 통계 모델링은 신호 처리, 날씨 예측, 지진 예측, 그리고 시간이 지나면서 데이터를 플롯할 수 있는 다른 분야에서 자주 사용됩니다.
🎓 **시계열 분석**
시계열 분석은 위에서 언급한 시계열 데이터를 분석하는 것입니다. 시계열 데이터는 '중단된 시계열'과 같이 중단 이벤트 전후의 시계열 진화 패턴을 감지하는 형태를 포함하여 다양한 형태를 취할 수 있습니다. 시계열에 필요한 분석 유형은 데이터의 특성에 따라 다릅니다. 시계열 데이터 자체는 숫자 또는 문자 시리즈 형태를 취할 수 있습니다.
시계열 분석은 위에서 언급한 시계열 데이터를 분석하는 것입니다. 시계열 데이터는 '중단된 시계열'과 같이 중단 이벤트 전후의 시계열 진화 패턴을 감지하는 것을 포함하여 다양한 형태를 취할 수 있습니다. 시계열에 필요한 분석 유형은 데이터의 특성에 따라 다릅니다. 시계열 데이터 자체는 숫자 또는 문자 시리즈 형태를 취할 수 있습니다.
분석은 주파수 도메인 및 시간 도메인, 선형 및 비선형 등 다양한 방법을 사용합니다. 이 유형의 데이터를 분석하는 다양한 방법에 대해 [더 알아보기](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm).
분석은 주파수 영역, 시간 영역, 선형 및 비선형 등 다양한 방법을 사용합니다. 이 유형의 데이터를 분석하는 다양한 방법에 대해 [더 알아보기](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm).
🎓 **시계열 예측**
시계열 예측은 과거에 수집된 데이터가 보여주는 패턴을 기반으로 미래 값을 예측하기 위해 모델을 사용하는 것입니다. 시계열 데이터를 탐색하기 위해 회귀 모델을 사용하는 것이 가능하지만, 시간 인덱스를 x 변수로 플롯하는 경우, 이러한 데이터는 특별한 유형의 모델을 사용하는 것이 가장 좋습니다.
시계열 예측은 과거에 수집된 데이터가 보여주는 패턴을 기반으로 미래 값을 예측하기 위해 모델을 사용하는 것입니다. 시계열 데이터를 탐색하기 위해 회귀 모델을 사용하는 것이 가능하지만, 시간 지수를 플롯의 x 변수로 사용하는 경우, 이러한 데이터는 특별한 유형의 모델을 사용하는 것이 가장 좋습니다.
시계열 데이터는 선형 회귀로 분석할 수 있는 데이터와 달리 순서가 있는 관측값 목록입니다. 가장 일반적인 모델은 ARIMA로, "자기회귀 통합 이동평균"을 의미하는 약어입니다.
시계열 데이터는 선형 회귀로 분석할 수 있는 데이터와 달리 순서가 있는 관측값 목록입니다. 가장 일반적인 모델은 ARIMA로, "자기회귀 통합 이동평균"을 의미니다.
[ARIMA 모델](https://online.stat.psu.edu/stat510/lesson/1/1.1)은 "현재 시계열 값을 과거 값과 과거 예측 오류와 관련짓습니다." 이러한 모델은 시간 도메인 데이터, 즉 시간이 지남에 따라 순서가 지정된 데이터를 분석하는 데 가장 적합합니다.
[ARIMA 모델](https://online.stat.psu.edu/stat510/lesson/1/1.1)은 "시리즈의 현재 값을 과거 값과 과거 예측 오류와 관련짓습니다." 이러한 모델은 시간 순서로 정렬된 데이터를 분석하는 데 가장 적합합니다.
> ARIMA 모델에는 여러 유형이 있으며, [여기](https://people.duke.edu/~rnau/411arim.htm)에서 배울 수 있습니다. 다음 강의에서 이에 대해 다룰 것입니다.
> ARIMA 모델에는 여러 유형이 있으며, [여기](https://people.duke.edu/~rnau/411arim.htm)에서 배울 수 있으며 다음 강의에서 다룰 것입니다.
다음 강의에서는 [단변량 시계열](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm)을 사용하여 ARIMA 모델을 구축할 것입니다. 단변량 시계열은 시간이 지남에 따라 값이 변하는 하나의 변수에 초점을 맞춥니다. 이러한 유형의 데이터의 예로는 마우나로아 관측소에서 월별 CO2 농도를 기록한 [이 데이터셋](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm)이 있습니다:
다음 강의에서는 [단변량 시계열](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm)을 사용하여 ARIMA 모델을 구축할 것입니다. 단변량 시계열은 시간이 지남에 따라 값이 변하는 하나의 변수에 초점을 맞춥니다. 이러한 유형의 데이터의 예로는 Mauna Loa Observatory에서 월별 CO2 농도를 기록한 [이 데이터셋](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm)이 있습니다:
| CO2 | YearMonth | Year | Month |
| :----: | :-------: | :---: | :---: |
@ -80,19 +80,19 @@ CO_OP_TRANSLATOR_METADATA:
✅ 이 데이터셋에서 시간이 지남에 따라 변하는 변수를 식별하세요.
## 시계열 데이터에서 고려해야 할 특성
## 시계열 데이터의 특성 고려하기
시계열 데이터를 살펴보면, 데이터를 더 잘 이해하기 위해 고려하고 완화해야 할 [특정 특성](https://online.stat.psu.edu/stat510/lesson/1/1.1)이 있음을 알 수 있습니다. 시계열 데이터를 분석하고자 하는 '신호'로 간주한다면, 이러한 특성은 '노이즈'로 생각할 수 있습니다. 통계적 기법을 사용하여 이러한 '노이즈'를 줄여야 할 때가 많습니다.
시계열 데이터를 살펴보면, [특정 특성](https://online.stat.psu.edu/stat510/lesson/1/1.1)을 가지고 있다는 것을 알 수 있습니다. 이러한 특성을 고려하고 완화하여 데이터의 패턴을 더 잘 이해할 수 있습니다. 시계열 데이터를 분석하려는 '신호'로 간주한다면, 이러한 특성은 '노이즈'로 생각할 수 있습니다. 통계적 기법을 사용하여 이러한 '노이즈'를 줄여야 할 때가 많습니다.
시계열 데이터를 다루기 위해 알아야 할 몇 가지 개념은 다음과 같습니다:
다음은 시계열 데이터를 다루기 위해 알아야 할 몇 가지 개념니다:
🎓 **추세**
추세는 시간에 따 측정 가능한 증가와 감소로 정의됩니다. [더 알아보기](https://machinelearningmastery.com/time-series-trends-in-python). 시계열의 맥락에서 추세를 사용하는 방법과 필요하다면 추세를 제거하는 방법에 대해 알아보세요.
추세는 시간에 따 측정 가능한 증가와 감소로 정의됩니다. [더 알아보기](https://machinelearningmastery.com/time-series-trends-in-python). 시계열의 맥락에서 추세를 사용하는 방법과 필요하다면 추세를 제거하는 방법에 대해 알아보세요.
🎓 **[계절성](https://machinelearningmastery.com/time-series-seasonality-with-python/)**
계절성은 예를 들어 휴일 판매 급증과 같이 주기적인 변동으로 정의됩니다. 데이터에서 계절성을 표시하는 다양한 유형의 플롯을 [살펴보세요](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm).
계절성은 주기적인 변동으로 정의됩니다. 예를 들어, 휴일 시즌의 판매량 증가가 이에 해당합니다. [여기](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm)에서 계절성을 데이터에서 표시하는 다양한 플롯 유형을 확인하세요.
🎓 **이상치**
@ -100,23 +100,23 @@ CO_OP_TRANSLATOR_METADATA:
🎓 **장기 주기**
계절성과는 독립적으로, 데이터는 1년 이상 지속되는 경제 침체와 같은 장기 주기를 나타낼 수 있습니다.
계절성과는 별개로, 데이터는 1년 이상 지속되는 경제 침체와 같은 장기 주기를 나타낼 수 있습니다.
🎓 **일정한 분산**
시간이 지남에 따라 일부 데이터는 일정한 변동을 나타냅니다. 예를 들어, 낮과 밤의 에너지 사용량.
시간이 지나면서 일부 데이터는 일정한 변동을 나타냅니다. 예를 들어, 낮과 밤의 에너지 사용량.
🎓 **급격한 변화**
데이터는 추가 분석이 필요한 급격한 변화를 나타낼 수 있습니다. 예를 들어, COVID로 인해 사업체가 갑자기 문을 닫으면서 데이터에 변화가 생겼습니다.
데이터는 추가 분석이 필요한 급격한 변화를 나타낼 수 있습니다. 예를 들어, COVID로 인해 사업체가 갑작스럽게 문을 닫으면서 데이터에 변화가 생겼습니다.
✅ [샘플 시계열 플롯](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python)은 몇 년 동안의 일일 게임 내 통화 사용량을 보여줍니다. 이 데이터에서 위에 나열된 특성 중 일부를 식별할 수 있나요?
✅ [샘플 시계열 플롯](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python)을 확인하세요. 몇 년 동안의 일일 게임 내 통화 사용량을 보여줍니다. 위에서 나열된 특성 중 어떤 것을 이 데이터에서 식별할 수 있나요?
![게임 내 통화 사용량](../../../../translated_images/currency.e7429812bfc8c6087b2d4c410faaa4aaa11b2fcaabf6f09549b8249c9fbdb641.ko.png)
![게임 내 통화 사용량](../../../../7-TimeSeries/1-Introduction/images/currency.png)
## 연습 - 전력 사용량 데이터 시작하기
과거 사용량을 바탕으로 미래 전력 사용량을 예측하는 시계열 모델을 만들어 봅시다.
이제 과거 사용량을 기반으로 미래 전력 사용량을 예측하는 시계열 모델을 만들어 봅시다.
> 이 예제의 데이터는 GEFCom2014 예측 대회에서 가져온 것입니다. 2012년부터 2014년까지 3년간의 시간별 전력 사용량과 온도 값을 포함하고 있습니다.
>
@ -141,7 +141,7 @@ CO_OP_TRANSLATOR_METADATA:
energy.head()
```
날짜와 사용량을 나타내는 두 개의 열이 있음을 알 수 있습니다:
두 개의 열이 날짜와 사용량을 나타내는 것을 볼 수 있습니다:
| | load |
| :-----------------: | :----: |
@ -160,9 +160,9 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![에너지 플롯](../../../../translated_images/energy-plot.5fdac3f397a910bc6070602e9e45bea8860d4c239354813fa8fc3c9d556f5bad.ko.png)
![에너지 플롯](../../../../7-TimeSeries/1-Introduction/images/energy-plot.png)
4. 2014년 7월 첫째 주를 `[시작 날짜]:[종료 날짜]` 패턴으로 `energy`에 입력하여 플롯하세요:
4. 이제 2014년 7월 첫째 주를 `[시작 날짜]:[종료 날짜]` 패턴으로 `energy`에 입력하여 플롯하세요:
```python
energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@ -171,23 +171,23 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![7월](../../../../translated_images/july-2014.9e1f7c318ec6d5b30b0d7e1e20be3643501f64a53f3d426d7c7d7b62addb335e.ko.png)
![7월](../../../../7-TimeSeries/1-Introduction/images/july-2014.png)
멋진 플롯입니다! 이러한 플롯을 살펴보고 위에 나열된 특성 중 일부를 확인할 수 있는지 보세요. 데이터를 시각화함으로써 무엇을 추론할 수 있을까요?
멋진 플롯입니다! 이러한 플롯을 살펴보고 위에서 나열된 특성 중 어떤 것을 확인할 수 있는지 살펴보세요. 데이터를 시각화함으로써 무엇을 추론할 수 있을까요?
다음 강의에서는 ARIMA 모델을 만들어 예측을 수행할 것입니다.
다음 강의에서는 ARIMA 모델을 만들어 예측을 생성할 것입니다.
---
## 🚀도전 과제
시계열 예측이 도움이 될 수 있는 모든 산업 및 연구 분야를 목록으로 만들어 보세요. 예술, 계량경제학, 생태학, 소매업, 산업, 금융 등에서 이러한 기술의 응용 사례를 생각해볼 수 있나요? 또 어디에서 사용할 수 있을까요?
시계열 예측이 도움이 될 수 있는 모든 산업 및 연구 분야를 목록으로 만들어 보세요. 예술, 계량경제학, 생태학, 소매업, 산업, 금융 등에서 이러한 기술의 응용 사례를 생각해볼 수 있나요? 또 다른 분야는 어디일까요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/42/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
여기서는 다루지 않지만, 신경망은 고전적인 시계열 예측 방법을 강화하는 데 때때로 사용됩니다. 이에 대해 [이 기사](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412)를 읽어보세요.
여기서는 다루지 않지만, 신경망은 때때로 고전적인 시계열 예측 방법을 강화하는 데 사용됩니다. 이에 대해 [이 기사](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412)를 읽어보세요.
## 과제
@ -196,4 +196,4 @@ CO_OP_TRANSLATOR_METADATA:
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,43 +1,43 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "2f400075e003e749fdb0d6b3b4787a99",
"translation_date": "2025-09-03T22:43:26+00:00",
"original_hash": "917dbf890db71a322f306050cb284749",
"translation_date": "2025-09-05T10:42:27+00:00",
"source_file": "7-TimeSeries/2-ARIMA/README.md",
"language_code": "ko"
}
-->
# ARIMA를 활용한 시계열 예측
이전 강의에서 시계열 예측에 대해 간단히 배우고 특정 기간 동안 전력 부하의 변동을 보여주는 데이터를 로드했습니다.
이전 강의에서 시계열 예측에 대해 간단히 배우고 특정 기간 동안 전력 부하의 변동을 보여주는 데이터를 로드했습니다.
[![ARIMA 소개](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA 소개")
> 🎥 위 이미지를 클릭하면 ARIMA 모델에 대한 간단한 소개 영상을 볼 수 있습니다. 예제는 R로 작성되었지만 개념은 보편적입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/43/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 소개
이번 강의에서는 [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)를 사용하여 모델을 구축하는 특정 방법을 알아봅니다. ARIMA 모델은 특히 [비정상성(non-stationarity)](https://wikipedia.org/wiki/Stationary_process)을 보는 데이터를 분석하는 데 적합합니다.
이번 강의에서는 [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)를 사용하여 모델을 구축하는 특정 방법을 배웁니다. ARIMA 모델은 특히 [비정상성(non-stationarity)](https://wikipedia.org/wiki/Stationary_process)을 보여주는 데이터를 분석하는 데 적합합니다.
## 일반적인 개념
ARIMA를 사용하려면 알아야 할 몇 가지 개념이 있습니다:
- 🎓 **정상성(Stationarity)**. 통계적 관점에서 정상성은 시간이 지나도 분포가 변하지 않는 데이터를 의미합니다. 반면, 비정상 데이터는 분석을 위해 변환해야 하는 트렌드로 인해 변동을 보입니다. 예를 들어 계절성은 데이터에 변동을 일으킬 수 있으며 '계절 차분(seasonal-differencing)' 과정을 통해 제거할 수 있습니다.
- 🎓 **정상성(Stationarity)**. 통계적 관점에서 정상성은 시간 이동 시 데이터의 분포가 변하지 않는 것을 의미합니다. 반면, 비정상 데이터는 분석을 위해 변환해야 하는 트렌드로 인해 변동을 보입니다. 예를 들어 계절성은 데이터에 변동을 유발할 수 있으며 '계절 차분(seasonal-differencing)' 과정을 통해 제거할 수 있습니다.
- 🎓 **[차분(Differencing)](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. 차분은 비정상 데이터를 정상 데이터로 변환하여 일정하지 않은 트렌드를 제거하는 과정을 의미합니다. "차분은 시계열의 수준 변화(trend와 계절성)를 제거하여 평균을 안정화합니다." [Shixiong et al의 논문](https://arxiv.org/abs/1904.07632)
- 🎓 **[차분(Differencing)](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. 차분은 비정상 데이터를 정상 데이터로 변환하여 일정하지 않은 트렌드를 제거하는 과정을 의미합니다. "차분은 시계열의 수준 변화, 즉 트렌드와 계절성을 제거하여 시계열의 평균을 안정화합니다." [Shixiong et al의 논문](https://arxiv.org/abs/1904.07632)
## 시계열에서의 ARIMA
ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고 예측하는 데 어떻게 도움이 되는지 알아봅시다.
- **AR - 자기회귀(AutoRegressive)**. 자기회귀 모델은 이름에서 알 수 있듯이 데이터의 이전 값을 분석하고 이에 대한 가정을 세우기 위해 '과거'를 살펴봅니다. 이러한 이전 값은 '시차(lags)'라고 불립니다. 예를 들어, 연필의 월별 판매 데이터를 보여주는 경우 각 월의 판매 총계는 데이터셋에서 '진화 변수(evolving variable)'로 간주됩니다. 이 모델은 "관심 있는 진화 변수가 자신의 시차(즉, 이전 값)에 대해 회귀된다는" 방식으로 구축됩니다. [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **AR - 자기회귀(AutoRegressive)**. 자기회귀 모델은 이름에서 알 수 있듯이 데이터의 이전 값을 분석하고 이에 대한 가정을 세우기 위해 '과거'를 살펴봅니다. 이러한 이전 값은 '시차(lags)'라고 불립니다. 예를 들어, 월별 연필 판매 데이터를 보여주는 경우 각 월의 판매 총계는 데이터셋에서 '진화 변수(evolving variable)'로 간주됩니다. 이 모델은 "관심 있는 진화 변수가 자신의 시차(즉, 이전) 값에 대해 회귀된다는" 방식으로 구축됩니다. [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
- **I - 적분(Integrated)**. 'ARMA' 모델과 달리 ARIMA의 'I'는 *[적분](https://wikipedia.org/wiki/Order_of_integration)* 측면을 나타냅니다. 비정상성을 제거하기 위해 차분 단계를 적용하여 데이터를 '적분'합니다.
- **MA - 이동 평균(Moving Average)**. [이동 평균](https://wikipedia.org/wiki/Moving-average_model) 측면은 현재 및 과거 시차 값을 관찰하여 출력 변수를 결정하는 것을 의미합니다.
- **MA - 이동 평균(Moving Average)**. [이동 평균](https://wikipedia.org/wiki/Moving-average_model) 측면은 현재 및 과거 시차 값을 관찰하여 결정되는 출력 변수를 나타냅니다.
결론: ARIMA는 시계열 데이터의 특별한 형태에 최대한 근접하게 모델을 맞추는 데 사용됩니다.
@ -92,7 +92,7 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
### 학습 및 테스트 데이터셋 생성
이제 데이터를 로드했으 학습 및 테스트 세트로 분리할 수 있습니다. 학습 세트에서 모델을 학습시킨 후, 테스트 세트를 사용하여 모델의 정확도를 평가합니다. 모델이 미래 시점의 정보를 얻지 않도록 테스트 세트가 학습 세트보다 나중의 기간을 포함해야 합니다.
이제 데이터를 로드했으므로 이를 학습 및 테스트 세트로 분리할 수 있습니다. 학습 세트에서 모델을 학습시킨 후, 테스트 세트를 사용하여 모델의 정확도를 평가합니다. 학습 세트가 테스트 세트보다 이전 기간을 포함하도록 설정하여 모델이 미래 기간의 정보를 얻지 않도록 해야 합니다.
1. 2014년 9월 1일부터 10월 31일까지의 두 달 기간을 학습 세트로 할당하세요. 테스트 세트는 2014년 11월 1일부터 12월 31일까지의 두 달 기간을 포함합니다:
@ -101,7 +101,7 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
test_start_dt = '2014-12-30 00:00:00'
```
이 데이터는 에너지의 일일 소비를 반영하므로 강한 계절 패턴이 있지만, 소비는 최근 며칠의 소비와 가장 유사합니다.
이 데이터는 에너지의 일일 소비를 반영하므로 강한 계절 패턴이 있지만 소비는 최근 며칠의 소비와 가장 유사합니다.
1. 차이를 시각화하세요:
@ -114,7 +114,7 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
plt.show()
```
![학습 및 테스트 데이터](../../../../translated_images/train-test.8928d14e5b91fc942f0ca9201b2d36c890ea7e98f7619fd94f75de3a4c2bacb9.ko.png)
![학습 및 테스트 데이터](../../../../7-TimeSeries/2-ARIMA/images/train-test.png)
따라서 데이터를 학습시키는 데 비교적 작은 시간 창을 사용하는 것이 충분할 것입니다.
@ -122,9 +122,9 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
### 학습을 위한 데이터 준비
이제 데이터를 필터링하고 스케일링하여 학습을 준비해야 합니다. 필요한 기간과 열만 포함하도록 원본 데이터를 필터링하고, 데이터를 0과 1 사이의 범위로 투영하 스케일링합니다.
이제 데이터를 필터링하고 스케일링하여 학습을 준비해야 합니다. 필요한 기간과 열만 포함하도록 원본 데이터를 필터링하고 데이터를 0과 1 사이의 범위로 투영하도록 스케일링합니다.
1. 원본 데이터셋을 필터링하여 각 세트에 필요한 기간과 'load' 열 및 날짜만 포함하세요:
1. 원본 데이터셋을 위에서 언급한 기간별 세트와 필요한 'load' 열 및 날짜만 포함하도록 필터링하세요:
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@ -157,11 +157,11 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
plt.show()
```
![원본](../../../../translated_images/original.b2b15efe0ce92b8745918f071dceec2231661bf49c8db6918e3ff4b3b0b183c2.ko.png)
![원본](../../../../7-TimeSeries/2-ARIMA/images/original.png)
> 원본 데이터
![스케일링된](../../../../translated_images/scaled.e35258ca5cd3d43f86d5175e584ba96b38d51501f234abf52e11f4fe2631e45f.ko.png)
![스케일링](../../../../7-TimeSeries/2-ARIMA/images/scaled.png)
> 스케일링된 데이터
@ -185,10 +185,10 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
> 🎓 이러한 매개변수는 무엇을 위한 것인가요? ARIMA 모델에는 시계열의 주요 측면(계절성, 트렌드, 노이즈)을 모델링하는 데 도움이 되는 3가지 매개변수가 있습니다:
`p`: 모델의 자기회귀 측면과 관련된 매개변수로, *과거* 값을 포함합니다.
`d`: 모델의 적분 부분과 관련된 매개변수로, 시계열에 적용할 *차분*의 양에 영향을 미칩니다.
`d`: 모델의 적분 부분과 관련된 매개변수로, 시계열에 적용할 *차분*의 양에 영향을 미칩니다. (🎓 차분 기억하시죠? 👆)
`q`: 모델의 이동 평균 부분과 관련된 매개변수입니다.
> 참고: 데이터에 계절적 측면이 있는 경우(이 데이터는 계절적 측면이 있음), 계절 ARIMA 모델(SARIMA)을 사용합니다. 이 경우 `p`, `d`, `q`와 동일한 연관성을 설명하지만 모델의 계절적 구성 요소에 해당하는 `P`, `D`, `Q` 매개변수를 사용해야 합니다.
> 참고: 데이터에 계절적 측면이 있는 경우(이 데이터는 계절적 측면을 가짐), 계절 ARIMA 모델(SARIMA)을 사용합니다. 이 경우 `p`, `d`, `q`와 동일한 연관성을 설명하지만 모델의 계절적 구성 요소에 해당하는 `P`, `D`, `Q` 매개변수를 사용해야 합니다.
1. 선호하는 horizon 값을 설정하세요. 3시간을 시도해봅시다:
@ -198,9 +198,9 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
print('Forecasting horizon:', HORIZON, 'hours')
```
ARIMA 모델의 매개변수 값을 선택하는 것은 주관적이고 시간이 많이 걸릴 수 있습니다. [`pyramid` 라이브러리](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html)의 `auto_arima()` 함수를 사용하는 것을 고려할 수 있습니다.
ARIMA 모델의 매개변수 값을 선택하는 것은 주관적이고 시간이 많이 걸릴 수 있으므로 [`pyramid` 라이브러리](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html)의 `auto_arima()` 함수를 사용하는 것을 고려할 수 있습니다.
1. 현재는 몇 가지 수동 선택을 시도하여 적합한 모델을 찾으세요.
1. 지금은 몇 가지 수동 선택을 시도하여 좋은 모델을 찾아보세요.
```python
order = (4, 1, 0)
@ -212,7 +212,7 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
print(results.summary())
```
결과 테이블이 출력됩니다.
결과 표가 출력됩니다.
첫 번째 모델을 구축했습니다! 이제 이를 평가하는 방법을 찾아야 합니다.
@ -220,15 +220,15 @@ ARIMA의 구성 요소를 분해하여 시계열 데이터를 모델링하고
모델을 평가하려면 이른바 `walk forward` 검증을 수행할 수 있습니다. 실제로 시계열 모델은 새로운 데이터가 제공될 때마다 재학습됩니다. 이를 통해 모델은 각 시간 단계에서 최상의 예측을 수행할 수 있습니다.
이 기술을 사용하여 시계열의 시작점에서 학습 데이터 세트로 모델을 학습시킵니다. 그런 다음 다음 시간 단계에 대한 예측을 수행합니다. 예측은 알려진 값과 비교하여 평가됩니다. 그런 다음 학습 세트 알려진 값을 포함하도록 확장되고 이 과정이 반복됩니다.
이 기술을 사용하여 시계열의 시작점에서 학습 데이터 세트로 모델을 학습시킵니다. 그런 다음 다음 시간 단계에 대한 예측을 수행합니다. 예측은 알려진 값과 비교하여 평가됩니다. 그런 다음 학습 세트 알려진 값을 포함하도록 확장되고 이 과정이 반복됩니다.
> 참고: 학습 세트 창을 고정하여 더 효율적으로 학습할 수 있습니다. 새로운 관측값을 학습 세트에 추가할 때마다 세트의 시작점에서 관측값을 제거하세요.
> 참고: 학습 세트 창을 고정하여 더 효율적으로 학습할 수 있도록 매번 학습 세트에 새로운 관측값을 추가할 때 세트의 시작점에서 관측값을 제거하세요.
이 과정은 모델이 실제로 어떻게 작동할지에 대한 더 강력한 추정을 제공합니다. 그러나 많은 모델을 생성해야 하는 계산 비용이 발생합니다. 데이터가 작거나 모델이 간단한 경우에는 허용되지만, 규모가 커지면 문제가 될 수 있습니다.
Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의 프로젝트에서도 권장됩니다.
1. 각 HORIZON 단계에 대 테스트 데이터 포인트를 생성하세요.
1. 각 HORIZON 단계에 대 테스트 데이터 포인트를 생성하세요.
```python
test_shifted = test.copy()
@ -250,7 +250,7 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
데이터는 horizon 포인트에 따라 수평으로 이동됩니다.
1. 테스트 데이터에 대해 이 슬라이딩 윈도우 접근 방식을 사용하여 테스트 데이터 길이 크기의 루프에서 예측을 수행하세요:
1. 테스트 데이터에 대해 이 슬라이딩 윈도우 접근법을 사용하여 예측을 수행하세요:
```python
%%time
@ -293,7 +293,7 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795]
```
1. 실제 부하와 예측값을 비교하세요:
1. 실제 load와 예측값을 비교하세요:
```python
eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)])
@ -313,14 +313,14 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
| 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 |
| 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 |
시간별 데이터의 예측값을 실제 부하와 비교하세요. 얼마나 정확한가요?
시간별 데이터의 예측값과 실제 load를 비교하세요. 얼마나 정확한가요?
### 모델 정확도 확인
모든 예측에 대해 평균 절대 백분율 오차(MAPE)를 테스트하여 모델의 정확도를 확인하세요.
> **🧮 수학을 보여주세요**
>
> ![MAPE](../../../../translated_images/mape.fd87bbaf4d346846df6af88b26bf6f0926bf9a5027816d5e23e1200866e3e8a4.ko.png)
> ![MAPE](../../../../7-TimeSeries/2-ARIMA/images/mape.png)
>
> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/)는 위의 공식으로 정의된 비율로 예측 정확도를 나타냅니다. 실제 값과 예측 값의 차이는 실제 값으로 나누어집니다.
> "이 계산에서 절대값은 모든 예측된 시점에 대해 합산되고, 적합된 점의 수 n으로 나누어집니다." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
@ -352,7 +352,7 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
낮은 숫자가 좋습니다: MAPE가 10이라면 예측이 10% 정도 벗어났다는 것을 의미합니다.
1. 하지만 항상 그렇듯이, 이런 정확도 측정은 시각적으로 보는 것이 더 쉽습니다. 이를 그래프로 그려봅시다:
1. 하지만 항상 그렇듯이, 이런 정확도 측정은 시각적으로 보는 것이 더 쉽습니다. 그래프를 그려봅시다:
```python
if(HORIZON == 1):
@ -380,9 +380,9 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
plt.show()
```
![시간 시계열 모델](../../../../translated_images/accuracy.2c47fe1bf15f44b3656651c84d5e2ba9b37cd929cd2aa8ab6cc3073f50570f4e.ko.png)
![시간 시계열 모델](../../../../7-TimeSeries/2-ARIMA/images/accuracy.png)
🏆 매우 훌륭한 그래프입니다. 정확도가 좋은 모델을 보여주고 있네요. 잘하셨습니다!
🏆 아주 멋진 그래프입니다. 정확도가 좋은 모델을 보여주네요. 잘하셨습니다!
---
@ -390,11 +390,11 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
시간 시계열 모델의 정확도를 테스트하는 다양한 방법을 탐구해보세요. 이번 강의에서는 MAPE에 대해 다뤘지만, 다른 방법도 있을까요? 이를 조사하고 주석을 달아보세요. 도움이 될 만한 문서는 [여기](https://otexts.com/fpp2/accuracy.html)에서 찾을 수 있습니다.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/44/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
이번 강의에서는 ARIMA를 사용한 시간 시계열 예측의 기본만 다룹니다. [이 저장소](https://microsoft.github.io/forecasting/)와 다양한 모델 유형을 탐구하여 시간 시계열 모델을 구축하는 다른 방법을 배우며 지식을 심화해보세요.
이번 강의에서는 ARIMA를 사용한 시간 시계열 예측의 기본만 다룹니다. 시간을 내어 [이 저장소](https://microsoft.github.io/forecasting/)와 다양한 모델 유형을 탐구하며 시간 시계열 모델을 구축하는 다른 방법을 배워보세요.
## 과제
@ -403,4 +403,4 @@ Walk-forward 검증은 시계열 모델 평가의 금표준이며, 여러분의
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 신뢰할 수 있는 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,39 +1,39 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "f80e513b3279869e7661e3190cc83076",
"translation_date": "2025-09-03T22:52:53+00:00",
"original_hash": "482bccabe1df958496ea71a3667995cd",
"translation_date": "2025-09-05T10:43:53+00:00",
"source_file": "7-TimeSeries/3-SVR/README.md",
"language_code": "ko"
}
-->
# 지원 벡터 회귀를 활용한 시계열 예측
# 서포트 벡터 회귀(Support Vector Regressor)를 활용한 시계열 예측
이전 강의에서는 ARIMA 모델을 사용하여 시계열 예측을 수행하는 방법을 배웠습니다. 이번에는 연속 데이터를 예측하는 데 사용되는 회귀 모델인 지원 벡터 회귀(Support Vector Regressor) 모델을 살펴보겠습니다.
이전 강의에서는 ARIMA 모델을 사용하여 시계열 예측을 수행하는 방법을 배웠습니다. 이번에는 연속 데이터를 예측하는 데 사용되는 회귀 모델인 서포트 벡터 회귀(Support Vector Regressor) 모델에 대해 알아보겠습니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/51/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 소개
이번 강의에서는 회귀를 위한 [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine) 모델, 즉 **SVR: Support Vector Regressor**를 구축하는 방법을 배웁니다.
이번 강의에서는 회귀를 위한 [**SVM**: **S**upport **V**ector **M**achine](https://en.wikipedia.org/wiki/Support-vector_machine), 즉 **SVR: Support Vector Regressor** 사용하여 모델을 구축하는 방법을 배웁니다.
### 시계열에서의 SVR [^1]
시계열 예측에서 SVR의 중요성을 이해하기 전에 알아야 할 몇 가지 중요한 개념이 있습니다:
- **회귀:** 주어진 입력 세트에서 연속 값을 예측하는 지도 학습 기법입니다. 이 기법은 특징 공간에서 최대한 많은 데이터 포인트를 포함하는 곡선(또는 선)을 맞추는 것을 목표로 합니다. [여기](https://en.wikipedia.org/wiki/Regression_analysis)를 클릭하여 더 많은 정보를 확인하세요.
- **지원 벡터 머신(SVM):** 분류, 회귀 및 이상치 탐지에 사용되는 지도 학습 모델의 한 유형입니다. 이 모델은 특징 공간에서 초평면으로 작동하며, 분류의 경우 경계로, 회귀의 경우 최적의 선으로 작동합니다. SVM에서는 일반적으로 커널 함수를 사용하여 데이터셋을 더 높은 차원의 공간으로 변환하여 쉽게 분리할 수 있도록 합니다. SVM에 대한 더 많은 정보는 [여기](https://en.wikipedia.org/wiki/Support-vector_machine)를 클릭하세요.
- **지원 벡터 회귀(SVR):** SVM의 한 유형으로, 최대한 많은 데이터 포인트를 포함하는 최적의 선(회귀의 경우 초평면)을 찾습니다.
- **회귀(Regression):** 주어진 입력값으로부터 연속적인 값을 예측하는 지도 학습 기법입니다. 특징 공간에서 최대한 많은 데이터 포인트를 포함하는 곡선(또는 직선)을 맞추는 것이 목표입니다. [여기](https://en.wikipedia.org/wiki/Regression_analysis)를 클릭하여 더 알아보세요.
- **서포트 벡터 머신(SVM):** 분류, 회귀 및 이상치 탐지에 사용되는 지도 학습 모델의 한 유형입니다. 이 모델은 특징 공간에서 초평면(hyperplane)으로 작동하며, 분류의 경우 경계로, 회귀의 경우 최적의 적합선으로 작동합니다. SVM에서는 일반적으로 커널 함수(Kernel function)를 사용하여 데이터셋을 더 높은 차원의 공간으로 변환하여 쉽게 분리할 수 있도록 합니다. SVM에 대한 자세한 내용은 [여기](https://en.wikipedia.org/wiki/Support-vector_machine)를 참고하세요.
- **서포트 벡터 회귀(SVR):** SVM의 한 유형으로, 최대한 많은 데이터 포인트를 포함하는 최적의 적합선(이 경우 SVM의 초평면)을 찾습니다.
### 왜 SVR인가? [^1]
지난 강의에서는 시계열 데이터를 예측하는 데 매우 성공적인 통계적 선형 방법인 ARIMA에 대해 배웠습니다. 하지만 많은 경우 시계열 데이터는 *비선형성*을 포함하고 있으며, 이는 선형 모델로는 매핑할 수 없습니다. 이러한 경우, 회귀 작업에서 데이터의 비선형성을 고려할 수 있는 SVM의 능력은 시계열 예측에서 SVR을 성공적으로 만듭니다.
이전 강의에서는 ARIMA에 대해 배웠습니다. ARIMA는 시계열 데이터를 예측하는 데 매우 성공적인 통계적 선형 방법입니다. 하지만 많은 경우 시계열 데이터는 *비선형성*을 가지며, 이는 선형 모델로는 설명할 수 없습니다. 이러한 경우, 데이터를 비선형적으로 고려할 수 있는 SVM의 능력은 SVR을 시계열 예측에서 성공적으로 만듭니다.
## 실습 - SVR 모델 구축하기
## 실습 - SVR 모델 구축
데이터 준비를 위한 초기 단계는 [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA) 강의와 동일합니다.
데이터 준비를 위한 초기 단계는 이전 강의의 [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA)와 동일합니다.
이 강의의 [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) 폴더를 열고 [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) 파일을 찾으세요. [^2]
강의의 [_/working_](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/3-SVR/working) 폴더를 열고 [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/7-TimeSeries/3-SVR/working/notebook.ipynb) 파일을 찾으세요.[^2]
1. 노트북을 실행하고 필요한 라이브러리를 가져옵니다: [^2]
@ -56,7 +56,7 @@ CO_OP_TRANSLATOR_METADATA:
from common.utils import load_data, mape
```
2. `/data/energy.csv` 파일에서 데이터를 Pandas 데이터프레임으로 로드하고 확인합니다: [^2]
2. `/data/energy.csv` 파일에서 데이터를 Pandas 데이터프레임으로 불러오고 확인합니다: [^2]
```python
energy = load_data('../../data')[['load']]
@ -71,15 +71,15 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![전체 데이터](../../../../translated_images/full-data.a82ec9957e580e976f651a4fc38f280b9229c6efdbe3cfe7c60abaa9486d2cbe.ko.png)
![전체 데이터](../../../../7-TimeSeries/3-SVR/images/full-data.png)
이제 SVR 모델을 구축해봅시다.
### 학습 및 테스트 데이터셋 생성
데이터가 로드되었으니 이를 학습 및 테스트 세트로 분리합니다. 그런 다음 SVR에 필요한 시계열 기반 데이터셋을 생성하기 위해 데이터를 재구성합니다. 학습 세트에서 모델을 학습시킨 후, 학습 세트, 테스트 세트, 전체 데이터셋에서 모델의 정확도를 평가하여 전체 성능을 확인합니다. 테스트 세트가 학습 세트보다 이후의 기간을 포함하도록 설정하여 모델이 미래 시점의 정보를 얻지 않도록 해야 합니다 [^2] (이를 *과적합*이라고 합니다).
데이터를 불러왔으니 이를 학습 및 테스트 세트로 나눕니다. 그런 다음 SVR에 필요한 시계열 기반 데이터셋을 생성하기 위해 데이터를 재구성합니다. 학습 세트에서 모델을 학습시킨 후, 학습 세트, 테스트 세트, 전체 데이터셋에서 모델의 정확도를 평가하여 전체 성능을 확인합니다. 테스트 세트는 학습 세트보다 이후 시점의 데이터를 포함해야 하며, 이는 모델이 미래 시점의 정보를 얻는 것을 방지하기 위함입니다[^2] (*과적합*이라고도 함).
1. 2014년 9월 1일부터 10월 31일까지의 두 달 기간을 학습 세트로 할당합니다. 테스트 세트는 2014년 11월 1일부터 12월 31일까지의 두 달 기간을 포함합니다: [^2]
1. 2014년 9월 1일부터 10월 31일까지 학습 세트로 할당합니다. 테스트 세트는 2014년 11월 1일부터 12월 31일까지의 데이터를 포함합니다: [^2]
```python
train_start_dt = '2014-11-01 00:00:00'
@ -97,13 +97,13 @@ CO_OP_TRANSLATOR_METADATA:
plt.show()
```
![학습 및 테스트 데이터](../../../../translated_images/train-test.ead0cecbfc341921d4875eccf25fed5eefbb860cdbb69cabcc2276c49e4b33e5.ko.png)
![학습 및 테스트 데이터](../../../../7-TimeSeries/3-SVR/images/train-test.png)
### 학습을 위한 데이터 준비
이제 데이터를 필터링하고 스케일링하여 학습을 위한 준비합니다. 데이터셋을 필요한 기간과 열만 포함하도록 필터링하고, 데이터를 0과 1 사이의 범위로 투영하여 스케일링합니다.
이제 데이터를 필터링하고 스케일링하여 학습을 준비합니다. 필요한 기간과 열만 포함하도록 데이터셋을 필터링하고, 데이터를 0과 1 사이의 범위로 투영하여 스케일링합니다.
1. 원본 데이터셋을 필터링하여 앞서 언급한 기간별 세트와 필요한 'load' 열 및 날짜만 포함합니다: [^2]
1. 원본 데이터셋을 필터링하여 위에서 언급한 기간과 필요한 'load' 열 및 날짜만 포함합니다: [^2]
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@ -117,23 +117,23 @@ CO_OP_TRANSLATOR_METADATA:
Training data shape: (1416, 1)
Test data shape: (48, 1)
```
2. 학습 데이터를 (0, 1) 범위로 스케일링합니다: [^2]
```python
scaler = MinMaxScaler()
train['load'] = scaler.fit_transform(train)
```
4. 이제 테스트 데이터를 스케일링합니다: [^2]
```python
test['load'] = scaler.transform(test)
```
### 시계열 데이터 생성 [^1]
### 시계열 데이터를 활용한 데이터 생성 [^1]
SVR을 위해 입력 데이터를 `[batch, timesteps]` 형태로 변환합니다. 따라서 기존 `train_data``test_data`를 재구성하여 새로운 차원을 추가합니다. 이 차원은 시계열을 나타냅니다.
SVR을 위해 입력 데이터를 `[batch, timesteps]` 형태로 변환합니다. 따라서 기존 `train_data``test_data`를 재구성하여 timesteps를 나타내는 새로운 차원을 추가합니다.
```python
# Converting to numpy arrays
@ -141,7 +141,7 @@ train_data = train.values
test_data = test.values
```
이 예제에서는 `timesteps = 5`로 설정합니다. 따라서 모델의 입력은 첫 4개의 시계열 데이터이고, 출력은 5번째 시계열 데이터가 됩니다.
이 예제에서는 `timesteps = 5`로 설정합니다. 따라서 모델의 입력은 첫 4개의 timestep 데이터이고, 출력은 5번째 timestep 데이터가 됩니다.
```python
timesteps=5
@ -186,13 +186,13 @@ print(x_test.shape, y_test.shape)
### SVR 구현 [^1]
이제 SVR을 구현할 시간입니다. 이 구현에 대해 더 읽고 싶다면 [이 문서](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html)를 참하세요. 구현 단계는 다음과 같습니다:
이제 SVR을 구현할 차례입니다. 이 구현에 대해 더 알고 싶다면 [이 문서](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html)를 참하세요. 구현 단계는 다음과 같습니다:
1. `SVR()`를 호출하고 커널, 감마, C, epsilon과 같은 하이퍼파라미터를 전달하여 모델 정의
2. `fit()` 함수를 호출하여 학습 데이터 준비
1. `SVR()`을 호출하고 커널, gamma, C, epsilon과 같은 하이퍼파라미터를 전달하여 모델 정의
2. `fit()` 함수를 호출하여 학습 데이터에 모델 준비
3. `predict()` 함수를 호출하여 예측 수행
이제 SVR 모델을 생성합니다. 여기서는 [RBF 커널](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel)을 사용하며, 하이퍼파라미터 감마, C, epsilon을 각각 0.5, 10, 0.05로 설정합니다.
이제 SVR 모델을 생성합니다. 여기서는 [RBF 커널](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel)을 사용하며, 하이퍼파라미터 gamma, C, epsilon을 각각 0.5, 10, 0.05로 설정합니다.
```python
model = SVR(kernel='rbf',gamma=0.5, C=10, epsilon = 0.05)
@ -222,13 +222,13 @@ print(y_train_pred.shape, y_test_pred.shape)
(1412, 1) (44, 1)
```
SVR을 구축했습니다! 이제 이를 평가해야 합니다.
SVR을 구축했습니다! 이제 이를 평가해봅시다.
### 모델 평가 [^1]
평가를 위해 먼저 데이터를 원래 스케일로 되돌립니다. 그런 다음 성능을 확인하기 위해 원본 및 예측 시계열 플롯을 그리고 MAPE 결과를 출력합니다.
평가를 위해 먼저 데이터를 원래 스케일로 되돌립니다. 그런 다음 성능을 확인하기 위해 원본 및 예측된 시계열 그래프를 그리고, MAPE 결과를 출력합니다.
예측 및 원본 출력 스케일 조정:
예측 및 원본 출력을 스케일 복원:
```python
# Scaling the predictions
@ -248,7 +248,7 @@ print(len(y_train), len(y_test))
#### 학습 및 테스트 데이터에서 모델 성능 확인 [^1]
데이터셋에서 타임스탬프를 추출하여 플롯의 x축에 표시합니다. 첫 ```timesteps-1``` 값을 첫 번째 출력의 입력으로 사용하므로 출력의 타임스탬프는 그 이후부터 시작됩니다.
데이터셋에서 타임스탬프를 추출하여 그래프의 x축에 표시합니다. 첫 번째 ```timesteps-1``` 값을 첫 출력의 입력으로 사용하므로, 출력의 타임스탬프는 그 이후부터 시작됩니다.
```python
train_timestamps = energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)].index[timesteps-1:]
@ -261,7 +261,7 @@ print(len(train_timestamps), len(test_timestamps))
1412 44
```
학습 데이터 예측 플롯:
학습 데이터 예측 그래프 그리기:
```python
plt.figure(figsize=(25,6))
@ -273,7 +273,7 @@ plt.title("Training data prediction")
plt.show()
```
![학습 데이터 예측](../../../../translated_images/train-data-predict.3c4ef4e78553104ffdd53d47a4c06414007947ea328e9261ddf48d3eafdefbbf.ko.png)
![학습 데이터 예측](../../../../7-TimeSeries/3-SVR/images/train-data-predict.png)
학습 데이터의 MAPE 출력:
@ -285,7 +285,7 @@ print('MAPE for training data: ', mape(y_train_pred, y_train)*100, '%')
MAPE for training data: 1.7195710200875551 %
```
테스트 데이터 예측 플롯:
테스트 데이터 예측 그래프 그리기:
```python
plt.figure(figsize=(10,3))
@ -296,7 +296,7 @@ plt.xlabel('Timestamp')
plt.show()
```
![테스트 데이터 예측](../../../../translated_images/test-data-predict.8afc47ee7e52874f514ebdda4a798647e9ecf44a97cc927c535246fcf7a28aa9.ko.png)
![테스트 데이터 예측](../../../../7-TimeSeries/3-SVR/images/test-data-predict.png)
테스트 데이터의 MAPE 출력:
@ -352,7 +352,7 @@ plt.xlabel('Timestamp')
plt.show()
```
![전체 데이터 예측](../../../../translated_images/full-data-predict.4f0fed16a131c8f3bcc57a3060039dc7f2f714a05b07b68c513e0fe7fb3d8964.ko.png)
![전체 데이터 예측](../../../../7-TimeSeries/3-SVR/images/full-data-predict.png)
```python
print('MAPE: ', mape(Y_pred, Y)*100, '%')
@ -362,32 +362,32 @@ print('MAPE: ', mape(Y_pred, Y)*100, '%')
MAPE: 2.0572089029888656 %
```
🏆 매우 훌륭한 플롯으로, 높은 정확도를 가진 모델을 보여줍니다. 잘하셨습니다!
🏆 정확도가 높은 모델을 보여주는 멋진 그래프입니다. 잘하셨습니다!
---
## 🚀도전 과제
- 모델을 생성할 때 하이퍼파라미터(감마, C, epsilon)를 조정하고 데이터를 평가하여 테스트 데이터에서 가장 좋은 결과를 제공하는 하이퍼파라미터 세트를 찾아보세요. 이러한 하이퍼파라미터에 대해 더 알고 싶다면 [여기](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel)를 참조하세요.
- 모델에 대해 다른 커널 함수를 사용하고 데이터셋에서 성능을 분석해보세요. 도움이 되는 문서는 [여기](https://scikit-learn.org/stable/modules/svm.html#kernel-functions)에서 찾을 수 있습니다.
- 모델이 예측을 위해 되돌아볼 수 있도록 `timesteps`의 다른 값을 사용해보세요.
- 모델을 생성할 때 하이퍼파라미터(gamma, C, epsilon)를 조정하고 데이터를 평가하여 테스트 데이터에서 가장 좋은 결과를 제공하는 하이퍼파라미터 세트를 찾아보세요. 이러한 하이퍼파라미터에 대해 더 알고 싶다면 [이 문서](https://scikit-learn.org/stable/modules/svm.html#parameters-of-the-rbf-kernel)를 참고하세요.
- 모델에 대해 다른 커널 함수를 사용하고 데이터셋에서의 성능을 분석해보세요. 유용한 문서는 [여기](https://scikit-learn.org/stable/modules/svm.html#kernel-functions)에서 확인할 수 있습니다.
- 모델이 예측을 위해 되돌아볼 수 있`timesteps`의 값을 다르게 설정해보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/52/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
이번 강의는 시계열 예측을 위한 SVR의 적용을 소개하기 위한 것이었습니다. SVR에 대해 더 읽고 싶다면 [이 블로그](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/)를 참조하세요. 이 [scikit-learn 문서](https://scikit-learn.org/stable/modules/svm.html)는 일반적인 SVM, [SVR](https://scikit-learn.org/stable/modules/svm.html#regression) 및 다른 구현 세부사항(예: 사용할 수 있는 다양한 [커널 함수](https://scikit-learn.org/stable/modules/svm.html#kernel-functions)와 그 매개변수)에 대한 더 포괄적인 설명을 제공합니다.
이번 강의에서는 시계열 예측을 위한 SVR의 적용을 소개했습니다. SVR에 대해 더 알고 싶다면 [이 블로그](https://www.analyticsvidhya.com/blog/2020/03/support-vector-regression-tutorial-for-machine-learning/)를 참고하세요. SVM에 대한 더 포괄적인 설명, [SVR](https://scikit-learn.org/stable/modules/svm.html#regression), 그리고 다른 구현 세부사항(예: 사용 가능한 [커널 함수](https://scikit-learn.org/stable/modules/svm.html#kernel-functions) 및 해당 매개변수)은 [scikit-learn 문서](https://scikit-learn.org/stable/modules/svm.html)에서 확인할 수 있습니다.
## 과제
[새로운 SVR 모델](assignment.md)
## 출처
## 크레딧
[^1]: 이 섹션의 텍스트, 코드 및 출력은 [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD)가 기여했습니다.
[^1]: 이 섹션의 텍스트, 코드 및 출력은 [@AnirbanMukherjeeXD](https://github.com/AnirbanMukherjeeXD)가 기여했습니다.
[^2]: 이 섹션의 텍스트, 코드 및 출력은 [ARIMA](https://github.com/microsoft/ML-For-Beginners/tree/main/7-TimeSeries/2-ARIMA)에서 가져왔습니다.
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,34 +1,34 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "0ffe994d1cc881bdeb49226a064116e5",
"translation_date": "2025-09-04T00:18:28+00:00",
"original_hash": "911efd5e595089000cb3c16fce1beab8",
"translation_date": "2025-09-05T10:53:41+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ko"
}
-->
# 강화 학습과 Q-러닝 소개
![기계 학습에서 강화 학습 요약을 스케치노트로 표현](../../../../translated_images/ml-reinforcement.94024374d63348dbb3571c343ca7ddabef72adac0b8086d47164b769ba3a8a1d.ko.png)
![기계 학습에서 강화 학습 요약을 스케치노트로 표현](../../../../sketchnotes/ml-reinforcement.png)
> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac)
강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태, 그리고 각 상태에서의 행동 집합. 특정 상태에서 행동을 실행하면 에이전트는 보상을 받습니다. 컴퓨터 게임 슈퍼 마리오를 다시 상상해 보세요. 당신은 마리오이고, 게임 레벨에서 절벽 가장자리 옆에 서 있습니다. 당신 위에는 동전이 있습니다. 당신이 마리오로서 특정 위치에 있는 게임 레벨에 있다는 것이 바로 당신의 상태입니다. 오른쪽으로 한 걸음 이동하는 행동은 절벽 아래로 떨어지게 만들고 낮은 점수를 받게 됩니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남을 수 있습니다. 이는 긍정적인 결과이며, 높은 점수를 받아야 합니다.
강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태, 그리고 각 상태에서의 행동 집합. 특정 상태에서 행동을 실행하면 에이전트는 보상을 받습니다. 컴퓨터 게임 슈퍼 마리오를 다시 상상해 보세요. 당신은 마리오이고, 게임 레벨에서 절벽 가장자리 옆에 서 있습니다. 위에는 동전이 있습니다. 당신이 마리오로서 특정 위치에 있는 게임 레벨에 있다는 것이 바로 당신의 상태입니다. 오른쪽으로 한 걸음 이동하는 행동은 절벽 아래로 떨어지게 되어 낮은 점수를 받게 됩니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남을 수 있습니다. 이는 긍정적인 결과이며, 높은 점수를 받아야 합니다.
강화 학습과 시뮬레이터(게임)를 사용하면 살아남고 최대한 많은 점수를 얻는 보상을 극대화하는 방법을 배울 수 있습니다.
강화 학습과 시뮬레이터(게임)를 사용하면 살아남고 최대한 많은 점수를 얻는 보상을 극대화하기 위해 게임을 플레이하는 방법을 배울 수 있습니다.
[![강화 학습 소개](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 위 이미지를 클릭하여 Dmitry가 강화 학습에 대해 설명하는 영상을 확인하세요.
> 🎥 위 이미지를 클릭하여 Dmitry가 강화 학습에 대해 설명하는 영상을 시청하세요.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/45/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 사전 준비 및 설정
이 강의에서는 Python으로 코드를 실험해 볼 것입니다. 이 강의의 Jupyter Notebook 코드를 컴퓨터 클라우드에서 실행할 수 있어야 합니다.
이 강의에서는 Python으로 코드를 실험해 볼 것입니다. 이 강의의 Jupyter Notebook 코드를 컴퓨터 또는 클라우드에서 실행할 수 있어야 합니다.
[강의 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb)을 열어 강의를 따라가며 실습을 진행하세요.
[강의 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb)을 열어 강의를 따라가며 실습을 진행하세요.
> **참고:** 클라우드에서 코드를 열 경우, 노트북 코드에서 사용되는 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) 파일도 가져와야 합니다. 해당 파일을 노트북과 동일한 디렉토리에 추가하세요.
> **참고:** 클라우드에서 코드를 열 경우, 노트북 코드에서 사용되는 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) 파일도 가져와야 합니다. 파일을 노트북과 동일한 디렉토리에 추가하세요.
## 소개
@ -40,14 +40,14 @@ CO_OP_TRANSLATOR_METADATA:
간단히 하기 위해, 피터의 세계를 `width` x `height` 크기의 정사각형 보드로 간주해 봅시다:
![피터의 환경](../../../../translated_images/environment.40ba3cb66256c93fa7e92f6f7214e1d1f588aafa97d266c11d108c5c5d101b6c.ko.png)
![피터의 환경](../../../../8-Reinforcement/1-QLearning/images/environment.png)
이 보드의 각 셀은 다음 중 하나일 수 있습니다:
* **땅**: 피터와 다른 생물이 걸을 수 있는 곳.
* **물**: 걸을 수 없는 곳.
* **땅**: 피터와 다른 생물이 걸을 수 있는 곳.
* **물**: 당연히 걸을 수 없는 곳.
* **나무** 또는 **풀**: 쉴 수 있는 장소.
* **사과**: 피터가 먹고 싶어하는 것.
* **사과**: 피터가 먹기 위해 찾고 싶어하는 것.
* **늑대**: 위험하며 피해야 하는 존재.
이 환경을 다루는 코드는 별도의 Python 모듈 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)에 포함되어 있습니다. 이 코드는 개념을 이해하는 데 중요하지 않으므로 모듈을 가져와 샘플 보드를 생성하는 데 사용합니다(코드 블록 1):
@ -65,11 +65,11 @@ m.plot()
## 행동과 정책
이 예제에서 피터의 목표는 늑대와 장애물을 피하면서 사과를 찾는 것입니다. 이를 위해 그는 사과를 찾을 때까지 걸어다닐 수 있습니다.
이 예제에서 피터의 목표는 늑대와 다른 장애물을 피하면서 사과를 찾는 것입니다. 이를 위해 그는 사과를 찾을 때까지 주변을 걸어다닐 수 있습니다.
따라서 어떤 위치에서든 그는 다음 행동 중 하나를 선택할 수 있습니다: 위, 아래, 왼쪽, 오른쪽.
따라서 그는 어떤 위치에서든 다음 행동 중 하나를 선택할 수 있습니다: 위, 아래, 왼쪽, 오른쪽.
이 행동을 사전으로 정의하고, 해당 좌표 변화에 매핑합니다. 예를 들어, 오른쪽으로 이동(`R`)은 `(1,0)`에 해당합니다(코드 블록 2):
이 행동을 사전으로 정의하고, 해당 좌표 변화에 매핑합니다. 예를 들어, 오른쪽으로 이동(`R`)은 `(1,0)`에 해당합니다(코드 블록 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
@ -78,7 +78,7 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
이 시나리오의 전략과 목표를 요약하면 다음과 같습니다:
- **전략**: 에이전트(피터)의 전략은 **정책**이라고 불리는 함수로 정의됩니다. 정책은 주어진 상태에서 행동을 반환합니다. 이 경우, 문제의 상태는 플레이어의 현재 위치를 포함한 보드로 표현됩니다.
- **전략**: 에이전트(피터)의 전략은 **정책**이라고 불리는 함수로 정의됩니다. 정책은 주어진 상태에서 행동을 반환합니다. 이 경우, 문제의 상태는 보드와 플레이어의 현재 위치로 표현됩니다.
- **목표**: 강화 학습의 목표는 문제를 효율적으로 해결할 수 있는 좋은 정책을 학습하는 것입니다. 하지만 기본적으로 가장 간단한 정책인 **랜덤 워크**를 고려해 봅시다.
@ -134,17 +134,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
평균 경로 길이가 약 30-40 단계로 나타나며, 이는 평균적으로 가장 가까운 사과까지의 거리가 약 5-6 단계인 점을 고려할 때 꽤 많은 단계입니다.
평균 경로 길이가 약 30-40 단계로 나타나는데, 이는 평균적으로 가장 가까운 사과까지의 거리가 약 5-6 단계인 점을 고려하면 꽤 많은 단계입니다.
랜덤 워크 동안 피터의 움직임을 확인할 수 있습니다:
또한 랜덤 워크 동안 피터의 움직임을 확인할 수 있습니다:
![피터의 랜덤 워크](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif)
## 보상 함수
정책을 더 지능적으로 만들기 위해 어떤 움직임이 다른 움직임보다 "더 나은지"를 이해해야 합니다. 이를 위해 목표를 정의해야 합니다.
정책을 더 똑똑하게 만들기 위해 어떤 움직임이 다른 움직임보다 "더 나은지"를 이해해야 합니다. 이를 위해 목표를 정의해야 합니다.
목표는 **보상 함수**로 정의될 수 있으며, 각 상태에 대해 점수 반환합니다. 숫자가 높을수록 보상이 더 좋습니다(코드 블록 5).
목표는 **보상 함수**로 정의될 수 있으며, 각 상태에 대해 점수 값을 반환합니다. 숫자가 높을수록 보상이 더 좋습니다(코드 블록 5).
```python
move_reward = -0.1
@ -163,39 +163,39 @@ def reward(m,pos=None):
return move_reward
```
보상 함수의 흥미로운 점은 대부분의 경우 *게임이 끝날 때* 실질적인 보상을 받는다는 것입니다. 이는 알고리즘이 긍정적인 보상으로 이어지는 "좋은" 단계를 기억하고 그 중요성을 높여야 하며, 나쁜 결과로 이어지는 모든 움직임은 억제해야 한다는 것을 의미합니다.
보상 함수의 흥미로운 점은 대부분의 경우 *게임이 끝날 때만 실질적인 보상을 받는다는 것*입니다. 이는 알고리즘이 긍정적인 보상으로 이어지는 "좋은" 단계를 기억하고 그 중요성을 높여야 하며, 나쁜 결과로 이어지는 모든 움직임은 억제해야 한다는 것을 의미합니다.
## Q-러닝
여기서 논의할 알고리즘은 **Q-러닝**이라고 합니다. 이 알고리즘에서 정책은 **Q-테이블**이라는 함수(또는 데이터 구조)로 정의됩니다. 이는 주어진 상태에서 각 행동의 "좋음"을 기록합니다.
Q-테이블은 종종 테이블 또는 다차원 배열로 표현하기 편리하기 때문에 이렇게 불립니다. 보드의 크기가 `width` x `height`인 경우, Q-테이블은 `width` x `height` x `len(actions)` 형태의 numpy 배열로 표현할 수 있습니다(코드 블록 6):
Q-테이블은 종종 테이블 또는 다차원 배열로 표현하기 편리하기 때문에 Q-테이블이라고 불립니다. 보드의 크기가 `width` x `height`인 경우, Q-테이블을 `width` x `height` x `len(actions)` 형태의 numpy 배열로 표현할 수 있습니다(코드 블록 6).
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
Q-테이블의 모든 값을 동일한 값으로 초기화합니다. 여기서는 0.25로 초기화합니다. 이는 모든 상태에서 모든 움직임이 동일하게 좋은 "랜덤 워크" 정책에 해당합니다. Q-테이블을 `plot` 함수에 전달하여 보드에서 테이블을 시각화할 수 있습니다: `m.plot(Q)`.
Q-테이블의 모든 값을 동일한 값으로 초기화합니다. 여기서는 0.25로 설정합니다. 이는 모든 상태에서 모든 움직임이 동일하게 좋은 "랜덤 워크" 정책에 해당합니다. Q-테이블을 `plot` 함수에 전달하여 보드에서 테이블을 시각화할 수 있습니다: `m.plot(Q)`.
![피터의 환경](../../../../translated_images/env_init.04e8f26d2d60089e128f21d22e5fef57d580e559f0d5937b06c689e5e7cdd438.ko.png)
![피터의 환경](../../../../8-Reinforcement/1-QLearning/images/env_init.png)
각 셀의 중앙에는 이동 방향을 나타내는 "화살표"가 있습니다. 모든 방향이 동일하기 때문에 점이 표시됩니다.
이제 시뮬레이션을 실행하고 환경을 탐색하며 Q-테이블 값을 더 나은 분포로 학습해야 합니다. 이를 통해 사과를 찾는 경로를 훨씬 더 빠르게 찾을 수 있습니다.
이제 시뮬레이션을 실행하고 환경을 탐색하며 Q-테이블 값을 더 나은 분포로 학습해야 합니다. 이를 통해 사과로 가는 경로를 훨씬 더 빠르게 찾을 수 있습니다.
## Q-러닝의 핵심: 벨만 방정식
움직이기 시작하면 각 행동은 해당 보상을 가지게 됩니다. 즉, 이론적으로 가장 높은 즉각적인 보상을 기반으로 다음 행동을 선택할 수 있습니다. 하지만 대부분의 상태에서는 움직임이 사과에 도달하는 목표를 달성하지 못하므로 어떤 방향이 더 나은지 즉시 결정할 수 없습니다.
> 즉각적인 결과가 중요한 것이 아니라, 시뮬레이션 끝에서 얻을 최종 결과가 중요하다는 점을 기억하세요.
> 중요한 것은 즉각적인 결과가 아니라 시뮬레이션 끝에서 얻을 최종 결과입니다.
이 지연된 보상을 고려하기 위해 **[동적 프로그래밍](https://en.wikipedia.org/wiki/Dynamic_programming)** 원칙을 사용해야 합니다. 이는 문제를 재귀적으로 생각할 수 있도록 합니다.
이 지연된 보상을 고려하기 위해 **[동적 프로그래밍](https://en.wikipedia.org/wiki/Dynamic_programming)** 원칙을 사용해야 합니다. 이는 문제를 재귀적으로 생각할 수 있도록 합니다.
현재 상태 *s*에 있다고 가정하고 다음 상태 *s'*로 이동하려고 합니다. 이렇게 하면 보상 함수로 정의된 즉각적인 보상 *r(s,a)*를 받게 되며, 추가적인 미래 보상도 받게 됩니다. Q-테이블이 각 행동의 "매력"을 올바르게 반영한다고 가정하면, 상태 *s'*에서 *Q(s',a')* 값이 최대인 행동 *a'*를 선택할 것입니다. 따라서 상태 *s*에서 얻을 수 있는 최상의 미래 보상은 `max`
현재 상태 *s*에 있다고 가정하고 다음 상태 *s'*로 이동하려고 합니다. 이렇게 하면 보상 함수로 정의된 즉각적인 보상 *r(s,a)*를 받게 되며, 추가로 미래 보상을 받게 됩니다. Q-테이블이 각 행동의 "매력"을 올바르게 반영한다고 가정하면, 상태 *s'*에서 *Q(s',a')* 값이 최대인 행동 *a'*를 선택할 것입니다. 따라서 상태 *s*에서 얻을 수 있는 최상의 미래 보상은 `max`
## 정책 확인하기
Q-Table은 각 상태에서 각 행동의 "매력도"를 나열하고 있으므로, 이를 사용하여 우리 세계에서 효율적인 탐색을 정의하는 것은 매우 간단합니다. 가장 간단한 경우, Q-Table 값이 가장 높은 행동을 선택하면 됩니다: (코드 블록 9)
Q-Table은 각 상태에서 각 행동의 "매력도"를 나열하고 있으므로, 이를 사용하여 우리 세계에서 효율적인 탐색을 정의하는 것은 비교적 간단합니다. 가장 간단한 경우, Q-Table 값이 가장 높은 행동을 선택하면 됩니다: (코드 블록 9)
```python
def qpolicy_strict(m):
@ -207,17 +207,17 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
> 위 코드를 여러 번 실행해보면, 가끔 코드가 "멈추는" 현상을 경험할 수 있습니다. 이 경우 노트북에서 STOP 버튼을 눌러 중단해야 합니다. 이는 두 상태가 최적의 Q-Value 관점에서 서로를 "가리키는" 상황이 발생할 수 있기 때문입니다. 이 경우 에이전트는 두 상태 사이를 무한히 이동하게 됩니다.
> 위 코드를 여러 번 실행해보면 가끔 "멈추는" 현상이 발생할 수 있으며, 이 경우 노트북에서 STOP 버튼을 눌러 중단해야 할 수도 있습니다. 이는 두 상태가 최적 Q-Value 관점에서 서로를 "가리키는" 상황이 발생할 때, 에이전트가 두 상태 사이를 무한히 이동하게 되는 경우 때문입니다.
## 🚀도전 과제
> **과제 1:** `walk` 함수를 수정하여 경로의 최대 길이를 특정 단계 수(예: 100)로 제한하고, 위 코드가 이 값을 반환하는 것을 확인하세요.
> **과제 1:** `walk` 함수를 수정하여 경로의 최대 길이를 특정 단계 수(예: 100)로 제한하고, 위 코드가 이 값을 반환하는 확인하세요.
> **과제 2:** `walk` 함수가 이전에 방문했던 장소로 다시 돌아가지 않도록 수정하세요. 이렇게 하면 `walk`가 루프에 빠지는 것을 방지할 수 있지만, 에이전트가 탈출할 수 없는 위치에 "갇히는" 상황은 여전히 발생할 수 있습니다.
> **과제 2:** `walk` 함수를 수정하여 이전에 방문했던 장소로 돌아가지 않도록 하세요. 이렇게 하면 `walk`가 루프에 빠지는 것을 방지할 수 있지만, 에이전트가 탈출할 수 없는 위치에 "갇히는" 상황은 여전히 발생할 수 있습니다.
## 탐색
더 나은 탐색 정책은 학습 중에 사용했던 정책으로, 탐색과 활용을 결합한 것입니다. 이 정책에서는 Q-Table 값에 비례하여 각 행동을 특정 확률로 선택합니다. 이 전략은 여전히 에이전트가 이미 탐색한 위치로 돌아가는 결과를 초래할 수 있지만, 아래 코드에서 볼 수 있듯이 목표 위치까지의 평균 경로가 매우 짧아지는 결과를 가져옵니다(참고로 `print_statistics`는 시뮬레이션을 100번 실행합니다): (코드 블록 10)
더 나은 탐색 정책은 우리가 학습 중에 사용했던 정책으로, 탐색과 활용을 결합한 것입니다. 이 정책에서는 Q-Table 값에 비례하여 각 행동을 특정 확률로 선택합니다. 이 전략은 여전히 에이전트가 이미 탐색한 위치로 돌아가는 결과를 초래할 수 있지만, 아래 코드에서 볼 수 있듯이 목표 위치까지의 평균 경로가 매우 짧아지는 결과를 가져옵니다(참고로 `print_statistics`는 시뮬레이션을 100번 실행합니다): (코드 블록 10)
```python
def qpolicy(m):
@ -229,23 +229,25 @@ def qpolicy(m):
print_statistics(qpolicy)
```
이 코드를 실행한 후, 이전보다 훨씬 짧은 평균 경로 길이를 얻을 수 있습니다. 이는 보통 3~6 범위에 속합니다.
이 코드를 실행한 후에는 이전보다 훨씬 짧은 평균 경로 길이를 얻을 수 있으며, 이는 대략 3-6 범위에 해당합니다.
## 학습 과정 조사
앞서 언급했듯이, 학습 과정은 문제 공간 구조에 대한 지식을 탐색하고 활용하는 균형입니다. 학습 결과(에이전트가 목표로 가는 짧은 경로를 찾는 능력)가 개선된 것을 확인했지만, 학습 과정 중 평균 경로 길이가 어떻게 변화하는지 관찰하는 것도 흥미롭습니다:
---
학습 내용을 요약하면 다음과 같습니다:
- **평균 경로 길이 증가**. 처음에는 평균 경로 길이가 증가니다. 이는 환경에 대해 아무것도 모를 때, 나쁜 상태(물이나 늑대)에 갇히기 쉽기 때문입니다. 더 많은 것을 배우고 이 지식을 활용하기 시작하면, 환경을 더 오래 탐색할 수 있지만, 여전히 사과가 어디에 있는지 잘 모르는 상태입니다.
- **평균 경로 길이 증가**. 처음에는 평균 경로 길이가 증가하는 것을 볼 수 있습니다. 이는 환경에 대해 아무것도 모를 때, 나쁜 상태(물이나 늑대)에 갇히기 쉽기 때문입니다. 더 많은 것을 배우고 이 지식을 활용하기 시작하면 환경을 더 오래 탐색할 수 있지만, 여전히 사과가 어디에 있는지 잘 모르는 상태입니다.
- **학습이 진행됨에 따라 경로 길이 감소**. 충분히 학습한 후에는 에이전트가 목표를 달성하기 쉬워지고, 경로 길이가 줄어들기 시작합니다. 하지만 여전히 탐색을 열어두고 있기 때문에, 종종 최적 경로에서 벗어나 새로운 옵션을 탐색하며 경로가 최적보다 길어지기도 합니다.
- **학습이 진행됨에 따라 경로 길이 감소**. 충분히 학습한 후에는 에이전트가 목표를 달성하기 쉬워지고, 경로 길이가 감소하기 시작합니다. 하지만 여전히 탐색을 열어두고 있기 때문에 최적 경로에서 벗어나 새로운 옵션을 탐색하며 경로가 최적보다 길어지는 경우도 있습니다.
- **경로 길이의 급격한 증가**. 그래프에서 관찰할 수 있는 또 다른 점은, 어느 순간 경로 길이가 급격히 증가한다는 것입니다. 이는 과정의 확률적 특성을 나타내며, Q-Table 계수를 새로운 값으로 덮어쓰면서 "망칠" 수 있음을 의미합니다. 이는 학습 후반부에 학습률을 줄여 Q-Table 값을 소폭으로만 조정하도록 함으로써 최소화할 수 있습니다.
- **경로 길이의 급격한 증가**. 그래프에서 관찰할 수 있는 또 다른 점은 어느 순간 경로 길이가 급격히 증가한다는 것입니다. 이는 과정의 확률적 특성을 나타내며, Q-Table 계수를 새로운 값으로 덮어쓰면서 "망치는" 경우가 발생할 수 있음을 의미합니다. 이를 최소화하려면 학습률을 줄이는 것이 이상적입니다(예: 학습 후반부에는 Q-Table 값을 소폭만 조정).
적으로, 학습 과정의 성공과 품질은 학습률, 학습률 감소, 할인 계수와 같은 매개변수에 크게 의존합니다. 이러한 매개변수는 **하이퍼파라미터**라고 불리며, 학습 중에 최적화**파라미터**(예: Q-Table 계수)와 구분됩니다. 최적의 하이퍼파라미터 값을 찾는 과정을 **하이퍼파라미터 최적화**라고 하며, 이는 별도의 주제로 다룰 가치가 있습니다.
적으로, 학습 과정의 성공과 품질은 학습률, 학습률 감소, 할인 계수와 같은 매개변수에 크게 의존한다는 점을 기억하는 것이 중요합니다. 이러한 매개변수는 **하이퍼파라미터**라고 불리며, 학습 중에 최적화**파라미터**(예: Q-Table 계수)와 구분됩니다. 최적의 하이퍼파라미터 값을 찾는 과정을 **하이퍼파라미터 최적화**라고 하며, 이는 별도의 주제로 다룰 가치가 있습니다.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 과제
[더 현실적인 세계](assignment.md)
@ -253,4 +255,4 @@ print_statistics(qpolicy)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서(원어로 작성된 문서)를 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,37 +1,19 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9660fbd80845c59c15715cb418cd6e23",
"translation_date": "2025-09-04T00:27:07+00:00",
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
"translation_date": "2025-09-05T10:54:20+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ko"
}
-->
# 카트폴 스케이팅
## 사전 준비
이전 강의에서 다룬 문제는 장난감 문제처럼 보일 수 있지만, 실제로는 현실 세계의 시나리오에도 적용될 수 있습니다. 체스나 바둑을 두는 것과 같은 많은 현실 문제도 이와 유사합니다. 왜냐하면 이들 역시 주어진 규칙과 **이산 상태**를 가진 보드 게임과 비슷하기 때문입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/47/)
## 소개
이번 강의에서는 **연속 상태**를 가진 문제에 Q-러닝 원리를 적용해 보겠습니다. 연속 상태란 하나 이상의 실수로 표현되는 상태를 의미합니다. 이번 강의에서 다룰 문제는 다음과 같습니다:
> **문제**: 피터가 늑대에게서 도망치려면 더 빨리 움직일 수 있어야 합니다. 이번 강의에서는 피터가 스케이트를 타는 법, 특히 균형을 유지하는 법을 Q-러닝을 통해 배우는 과정을 살펴보겠습니다.
![위대한 탈출!](../../../../translated_images/escape.18862db9930337e3fce23a9b6a76a06445f229dadea2268e12a6f0a1fde12115.ko.png)
> 피터와 친구들이 늑대에게서 도망치기 위해 창의력을 발휘합니다! 이미지 제공: [Jen Looper](https://twitter.com/jenlooper)
우리는 **카트폴(CartPole)** 문제로 알려진 균형 잡기 문제의 단순화된 버전을 사용할 것입니다. 카트폴 세계에서는 좌우로 움직일 수 있는 수평 슬라이더가 있으며, 목표는 슬라이더 위에 세워진 수직 막대를 균형 있게 유지하는 것입니다.
## 사전 요구 사항
이번 강의에서는 **OpenAI Gym**이라는 라이브러리를 사용하여 다양한 **환경**을 시뮬레이션할 것입니다. 이 코드는 로컬 환경(예: Visual Studio Code)에서 실행할 수 있으며, 이 경우 시뮬레이션이 새 창에서 열립니다. 온라인에서 코드를 실행할 경우, [여기](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)에 설명된 대로 코드를 약간 수정해야 할 수도 있습니다.
이번 강의에서는 **OpenAI Gym**이라는 라이브러리를 사용하여 다양한 **환경**을 시뮬레이션할 것입니다. 이 강의의 코드는 로컬 환경(예: Visual Studio Code)에서 실행할 수 있으며, 이 경우 시뮬레이션이 새 창에서 열립니다. 온라인으로 코드를 실행할 경우, [여기](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)에 설명된 대로 코드를 약간 수정해야 할 수도 있습니다.
## OpenAI Gym
이전 강의에서는 게임의 규칙과 상태가 우리가 정의한 `Board` 클래스에 의해 제공되었습니다. 이번에는 **시뮬레이션 환경**을 사용하여 균형 잡기 막대의 물리학을 시뮬레이션할 것입니다. 강화 학습 알고리즘을 훈련시키기 위한 가장 인기 있는 시뮬레이션 환경 중 하나는 [Gym](https://gym.openai.com/)으로, [OpenAI](https://openai.com/)에서 유지 관리합니다. 이 Gym을 사용하면 카트폴 시뮬레이션부터 아타리 게임까지 다양한 **환경**을 생성할 수 있습니다.
이전 강의에서는 게임의 규칙과 상태가 우리가 직접 정의한 `Board` 클래스에 의해 제공되었습니다. 이번에는 **시뮬레이션 환경**을 사용하여 균형 잡힌 막대의 물리학을 시뮬레이션할 것입니다. 강화 학습 알고리즘을 훈련하기 위한 가장 인기 있는 시뮬레이션 환경 중 하나는 [Gym](https://gym.openai.com/)이며, 이는 [OpenAI](https://openai.com/)에서 관리합니다. 이 Gym을 사용하면 카트폴 시뮬레이션부터 아타리 게임까지 다양한 **환경**을 생성할 수 있습니다.
> **참고**: OpenAI Gym에서 제공하는 다른 환경은 [여기](https://gym.openai.com/envs/#classic_control)에서 확인할 수 있습니다.
@ -47,15 +29,15 @@ import numpy as np
import random
```
## 연습 - 카트폴 환경 초기화
## 연습 - 카트폴 환경 초기화하기
카트폴 균형 문제를 다루기 위해서는 해당 환경을 초기화해야 합니다. 각 환경은 다음과 관됩니다:
카트폴 균형 문제를 다루기 위해서는 해당 환경을 초기화해야 합니다. 각 환경은 다음과 관됩니다:
- **관찰 공간(Observation space)**: 환경에서 얻는 정보의 구조를 정의합니다. 카트폴 문제에서는 막대의 위치, 속도 및 기타 값을 받습니다.
- **관찰 공간**: 환경에서 얻는 정보의 구조를 정의합니다. 카트폴 문제에서는 막대의 위치, 속도 및 기타 값을 받습니다.
- **행동 공간(Action space)**: 가능한 행동을 정의합니다. 우리의 경우 행동 공간은 이산적이며, **왼쪽**과 **오른쪽** 두 가지 행동으로 구성됩니다. (코드 블록 2)
- **행동 공간**: 가능한 행동을 정의합니다. 우리의 경우 행동 공간은 이산적이며, **왼쪽**과 **오른쪽** 두 가지 행동으로 구성됩니다. (코드 블록 2)
1. 초기화하려면 다음 코드를 입력하세요:
1. 초기화를 위해 다음 코드를 입력하세요:
```python
env = gym.make("CartPole-v1")
@ -68,7 +50,7 @@ import random
1. 아래 코드를 실행하고 결과를 확인하세요.
✅ 이 코드는 로컬 Python 설치 환경에서 실행하는 것이 권장됩니다! (코드 블록 3)
✅ 이 코드는 로컬 Python 설치에서 실행하는 것이 좋습니다! (코드 블록 3)
```python
env.reset()
@ -79,11 +61,11 @@ import random
env.close()
```
다음과 유사한 이미지를 볼 수 있을 것입니다:
다음과 유사한 이미지를 볼 수 있어야 합니다:
![균형을 잡지 못하는 카트폴](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif)
1. 시뮬레이션 중에는 행동을 결정하기 위해 관찰값을 얻어야 합니다. 실제로 `step` 함수는 현재 관찰값, 보상 함수, 시뮬레이션을 계속할 가치가 있는지 여부를 나타내는 `done` 플래그를 반환합니다: (코드 블록 4)
1. 시뮬레이션 중에는 행동을 결정하기 위해 관찰값을 얻어야 합니다. 실제로 `step` 함수는 현재 관찰값, 보상 함수, 시뮬레이션을 계속할 가치가 있는지 여부를 나타내는 완료 플래그를 반환합니다: (코드 블록 4)
```python
env.reset()
@ -96,7 +78,7 @@ import random
env.close()
```
노트북 출력에서 다음과 유사한 결과를 보게 될 것입니다:
노트북 출력에서 다음과 같은 결과를 볼 수 있습니다:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@ -115,7 +97,7 @@ import random
- 막대의 각도
- 막대의 회전 속도
1. 이러한 의 최소값과 최대값을 확인하세요: (코드 블록 5)
1. 이러한 숫자의 최소값과 최대값을 확인하세요: (코드 블록 5)
```python
print(env.observation_space.low)
@ -128,15 +110,15 @@ import random
## 상태 이산화
Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테이블을 구축해야 합니다. 이를 위해 상태는 **이산적**이어야 하며, 정확히 말하면 유한한 개수의 이산 값으로 구성되어야 합니다. 따라서 관찰값을 **이산화**하여 유한한 상태 집합으로 매핑해야 합니다.
Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테이블을 구축해야 합니다. 이를 위해 상태는 **이산적**이어야 하며, 더 정확히는 유한한 수의 이산 값으로 구성되어야 합니다. 따라서 관찰값을 **이산화**하여 유한한 상태 집합으로 매핑해야 합니다.
이를 수행하는 방법에는 몇 가지가 있습니다:
이를 수행하는 몇 가지 방법이 있습니다:
- **구간 나누기**: 특정 값의 범위를 알고 있다면, 이 범위를 여러 개의 **구간**으로 나누고, 값을 해당 구간 번호로 대체할 수 있습니다. 이는 numpy의 [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) 메서드를 사용하여 수행할 수 있습니다. 이 경우, 선택한 구간 수에 따라 상태 크기를 정확히 알 수 있습니다.
- **구간으로 나누기**: 특정 값의 범위를 알고 있다면 이 범위를 여러 **구간**으로 나누고, 해당 값이 속하는 구간 번호로 값을 대체할 수 있습니다. 이는 numpy의 [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) 메서드를 사용하여 수행할 수 있습니다. 이 경우 디지털화에 선택한 구간 수에 따라 상태 크기를 정확히 알 수 있습니다.
✅ 값을 특정 유한 범위(예: -20에서 20)로 선형 보간한 다음, 반올림하여 정수로 변환할 수도 있습니다. 이 방법은 상태 크기를 정확히 제어하기 어렵지만, 특히 입력 값의 정확한 범위를 모를 때 유용합니다. 예를 들어, 우리의 경우 관찰값 중 2개는 상한/하한이 정의되어 있지 않아 상태가 무한대로 증가할 수 있습니다.
✅ 값을 특정 유한 범위(예: -20에서 20)로 선형 보간한 다음, 반올림하여 정수로 변환할 수 있습니다. 이는 입력 값의 정확한 범위를 모를 경우 상태 크기에 대한 제어가 약간 줄어듭니다. 예를 들어, 우리의 경우 4개의 값 중 2개는 상한/하한이 정의되어 있지 않아 상태 수가 무한해질 수 있습니다.
이번 예제에서는 두 번째 접근 방식을 사용할 것입니다. 나중에 알게 되겠지만, 상한/하한이 정의되지 않은 값이라도 대부분 특정 유한 범위 내에서 값을 가지므로 극단적인 값의 상태는 매우 드뭅니다.
우리의 예제에서는 두 번째 접근법을 사용할 것입니다. 나중에 알 수 있듯이 상한/하한이 정의되지 않았음에도 불구하고, 이러한 값들은 특정 유한 범위를 벗어나는 경우가 드뭅니다. 따라서 극단적인 값의 상태는 매우 드물게 나타납니다.
1. 모델에서 관찰값을 받아 4개의 정수 값 튜플을 생성하는 함수는 다음과 같습니다: (코드 블록 6)
@ -145,7 +127,7 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
1. 구간을 사용하는 또 다른 이산화 방법을 탐색해 봅시다: (코드 블록 7)
1. 구간을 사용 또 다른 이산화 방법을 탐색해 봅시다: (코드 블록 7)
```python
def create_bins(i,num):
@ -163,7 +145,7 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
1. 짧은 시뮬레이션을 실행하고 이산화된 환경 값을 관찰해 봅시다. `discretize``discretize_bins`를 모두 시도해 보고 차이가 있는지 확인하세요.
`discretize_bins`는 0부터 시작하는 구간 번호를 반환합니다. 따라서 입력 변수 값이 0에 가까울 때, 중간 구간 번호(10)를 반환합니다. 반면, `discretize`는 출력 값의 범위를 신경 쓰지 않으므로 상태 값이 이동되지 않고, 0이 0에 해당합니다. (코드 블록 8)
`discretize_bins`는 0부터 시작하는 구간 번호를 반환합니다. 따라서 입력 변수 값이 0 근처일 경우 구간의 중간 값(10)을 반환합니다. `discretize`에서는 출력 값의 범위에 대해 신경 쓰지 않았기 때문에 값이 음수가 될 수 있으며, 0은 0에 해당합니다. (코드 블록 8)
```python
env.reset()
@ -177,15 +159,15 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
env.close()
```
✅ 환경 실행을 확인하려`env.render`로 시작하는 줄의 주석을 제하세요. 그렇지 않으면 백그라운드에서 실행할 수 있으며, 이 방식이 더 빠릅니다. Q-러닝 과정에서는 이 "보이지 않는" 실행 방식을 사용할 것입니다.
✅ 환경 실행을 보고 싶다`env.render`로 시작하는 줄의 주석을 제하세요. 그렇지 않으면 백그라운드에서 실행할 수 있으며, 이 방식이 더 빠릅니다. Q-Learning 과정에서는 이 "보이지 않는" 실행을 사용할 것입니다.
## Q-테이블 구조
이전 강의에서는 상태가 0에서 8까지의 숫자 쌍으로 간단히 표현되었기 때문에, Q-테이블을 8x8x2 형태의 numpy 텐서로 표현하는 것이 편리했습니다. 구간 이산화를 사용하는 경우, 상태 벡터의 크기도 알려져 있으므로 동일한 접근 방식을 사용할 수 있습니다. 예를 들어, 상태를 20x20x10x10x2 배열로 표현할 수 있습니다(여기서 2는 행동 공간의 차원이고, 첫 번째 차원은 관찰 공간의 각 매개변수에 대해 선택한 구간 수에 해당합니다).
이전 강의에서는 상태가 0에서 8까지의 숫자 쌍으로 간단했기 때문에 Q-테이블을 8x8x2 형태의 numpy 텐서로 표현하는 것이 편리했습니다. 구간 이산화를 사용하는 경우 상태 벡터의 크기도 알려져 있으므로 동일한 접근법을 사용하여 상태를 20x20x10x10x2 배열 형태로 표현할 수 있습니다(여기서 2는 행동 공간의 차원이며, 첫 번째 차원은 관찰 공간의 각 매개변수에 대해 선택한 구간 수에 해당합니다).
그러나 관찰 공간의 정확한 차원을 알 수 없는 경우도 있습니다. `discretize` 함수의 경우, 일부 원래 값이 제한되지 않기 때문에 상태가 특정 한계 내에 머무를 것이라고 확신할 수 없습니다. 따라서 약간 다른 접근 방식을 사용하여 Q-테이블을 딕셔너리로 표현할 것입니다.
하지만 관찰 공간의 정확한 차원이 알려지지 않은 경우도 있습니다. `discretize` 함수의 경우, 일부 원래 값이 제한되지 않았기 때문에 상태가 특정 한계 내에 유지된다는 것을 확신할 수 없습니다. 따라서 약간 다른 접근법을 사용하여 Q-테이블을 딕셔너리로 표현할 것입니다.
1. *(state, action)* 쌍을 딕셔너리 키로 사용하고, 값은 Q-테이블 항목 값을 나타냅니다. (코드 블록 9)
1. *(state, action)* 쌍을 딕셔너리 키로 사용하고, 값은 Q-테이블 항목 값에 해당합니다. (코드 블록 9)
```python
Q = {}
@ -195,11 +177,11 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
return [Q.get((state,a),0) for a in actions]
```
여기서 `qvalues()` 함수도 정의하며, 주어진 상태에 대해 가능한 모든 행동에 해당하는 Q-테이블 값을 반환합니다. Q-테이블에 항목이 없으면 기본값으로 0을 반환합니다.
여기서 `qvalues()`라는 함수를 정의하여 특정 상태에 대해 가능한 모든 행동에 해당하는 Q-테이블 값을 반환합니다. Q-테이블에 항목이 없으면 기본값으로 0을 반환합니다.
## Q-러닝 시작하기
## Q-Learning 시작하기
이제 피터가 균형을 잡는 법을 배우도록 준비가 되었습니다!
이제 피터에게 균형 잡는 법을 가르칠 준비가 되었습니다!
1. 먼저 몇 가지 하이퍼파라미터를 설정합시다: (코드 블록 10)
@ -210,23 +192,23 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
epsilon = 0.90
```
여기서 `alpha`**학습률**로, 각 단계에서 Q-테이블의 현재 값을 어느 정도 조정해야 할지를 정의합니다. 이전 강의에서는 1로 시작한 후 훈련 중에 `alpha`를 낮췄습니다. 이번 예제에서는 단순화를 위해 상수를 유지하며, 나중에 `alpha` 값을 조정해 볼 수 있습니다.
여기서 `alpha`**학습률**로, 각 단계에서 Q-테이블의 현재 값을 어느 정도 조정해야 할지를 정의합니다. 이전 강의에서는 1로 시작하여 훈련 중에 `alpha`를 낮은 값으로 줄였습니다. 이번 예제에서는 단순성을 위해 이를 일정하게 유지할 것이며, 나중에 `alpha` 값을 조정하는 실험을 할 수 있습니다.
`gamma`**할인 계수**로, 현재 보상보다 미래 보상을 얼마나 우선시해야 하는지를 나타냅니다.
`epsilon`**탐험/활용 계수**로, 탐험과 활용 중 어느 쪽을 선호해야 할지를 결정합니다. 알고리즘에서는 `epsilon` 비율만큼 Q-테이블 값을 기준으로 다음 행동을 선택하고, 나머지 경우에는 무작위 행동을 실행합니다. 이를 통해 이전에 탐색하지 않은 검색 공간 영역을 탐험할 수 있습니다.
`epsilon`**탐험/활용 계수**로, 탐험을 선호할지 활용을 선호할지를 결정합니다. 알고리즘에서는 `epsilon` 비율만큼 Q-테이블 값을 기준으로 다음 행동을 선택하고, 나머지 경우에는 무작위 행동을 실행합니다. 이를 통해 이전에 탐색하지 않은 검색 공간 영역을 탐험할 수 있습니다.
✅ 균형 잡기 관점에서 보면, 무작위 행동(탐험)은 잘못된 방향으로의 무작위 펀치처럼 작용하며, 막대는 이러한 "실수"에서 균형을 회복하는 법을 배워야 합니다.
✅ 균형을 잡는 관점에서 보면, 무작위 행동(탐험)은 잘못된 방향으로의 무작위 펀치처럼 작용하며, 막대는 이러한 "실수"에서 균형을 회복하는 법을 배워야 합니다.
### 알고리즘 개선
이전 강의의 알고리즘을 개선하기 위해 다음 두 가지를 추가할 수 있습니다:
이전 강의의 알고리즘을 두 가지 방식으로 개선할 수 있습니다:
- **평균 누적 보상 계산**: 여러 시뮬레이션에 걸쳐 평균 누적 보상을 계산합니다. 5000번의 반복마다 진행 상황을 출력하며, 해당 기간 동안 평균 누적 보상을 계산합니다. 평균 보상이 195점을 초과하면 문제를 해결한 것으로 간주할 수 있으며, 이는 요구 조건보다 높은 품질입니다.
- **평균 누적 보상 계산**: 여러 시뮬레이션에 걸쳐 평균 누적 보상을 계산합니다. 5000번의 반복마다 진행 상황을 출력하며, 해당 기간 동안 누적 보상의 평균을 계산합니다. 만약 195점 이상을 얻는다면 문제를 해결했다고 간주할 수 있으며, 요구된 품질보다 더 높은 품질로 해결한 것입니다.
- **최대 평균 누적 결과 계산**: `Qmax`를 계산하고, 해당 결과에 해당하는 Q-테이블을 저장합니다. 훈련을 실행하면 때때로 평균 누적 결과가 감소하기 시작하는 것을 알 수 있습니다. 이는 Q-테이블의 기존 학습 값을 더 나쁜 상황을 만드는 값으로 덮어쓸 수 있음을 의미합니다.
- **최대 평균 누적 결과 계산**: `Qmax`를 계산하고, 해당 결과에 해당하는 Q-테이블을 저장합니다. 훈련을 실행하면 평균 누적 결과가 때때로 감소하는 것을 알 수 있으며, 이는 상황을 악화시키는 값으로 이미 학습된 Q-테이블 값을 "파괴"할 수 있음을 의미합니다.
1. 각 시뮬레이션에서 누적 보상을 `rewards` 벡터에 수집하여 나중에 플로팅합니다. (코드 블록 11)
1. 각 시뮬레이션에서 누적 보상을 `rewards` 벡터에 수집하여 나중에 그래프를 그립니다. (코드 블록 11)
```python
def probs(v,eps=1e-4):
@ -267,25 +249,25 @@ Q-러닝에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테
cum_rewards=[]
```
이 결과에서 알 수 있는 점:
이 결과에서 다음을 알 수 있습니다:
- **목표에 근접**: 100번 이상의 연속 실행에서 평균 보상이 195에 도달하거나 이를 초과했을 가능성이 높습니다. 평균 보상이 더 낮더라도, 공식 기준에서는 100번의 실행만 요구되므로 목표를 달성했을 수 있습니다.
- **목표에 근접**: 100번 이상의 연속 실행에서 195 누적 보상을 얻는 목표에 매우 근접하거나 실제로 달성했을 수 있습니다! 더 작은 숫자를 얻더라도, 우리는 5000번의 실행에서 평균을 내기 때문에 공식 기준에서는 100번의 실행만 필요합니다.
- **보상이 감소하기 시작**: 때때로 보상이 감소하기 시작하는데, 이는 Q-테이블에서 이미 학습된 값을 더 나쁜 값으로 덮어쓸 수 있음을 의미합니다.
- **보상이 감소하기 시작**: 때때로 보상이 감소하기 시작하는데, 이는 상황을 악화시키는 값으로 이미 학습된 Q-테이블 값을 "파괴"할 수 있음을 의미합니다.
이 관찰은 훈련 진행 상황을 플로팅하면 더 명확히 보입니다.
이 관찰은 훈련 진행 상황을 그래프로 나타내면 더 명확하게 보입니다.
## 훈련 진행 상황 플로팅
## 훈련 진행 상황 그래프 그리기
훈련 중에 각 반복에서 누적 보상 값을 `rewards` 벡터에 수집했습니다. 이를 반복 횟수에 대해 플로팅하면 다음과 같습니다:
훈련 중에 각 반복에서 누적 보상 값을 `rewards` 벡터에 수집했습니다. 이를 반복 번호에 대해 그래프로 나타내면 다음과 같습니다:
```python
plt.plot(rewards)
```
![원시 진행 상황](../../../../translated_images/train_progress_raw.2adfdf2daea09c596fc786fa347a23e9aceffe1b463e2257d20a9505794823ec.ko.png)
![원시 진행 상황](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png)
이 그래프에서는 아무것도 알 수 없습니다. 이는 확률적 훈련 과정의 특성상 훈련 세션 길이가 크게 달라지기 때문입니다. 이 그래프를 더 잘 이해하려면, 예를 들어 100번의 실험에 대한 **이동 평균**을 계산할 수 있습니다. 이는 `np.convolve`를 사용하여 편리하게 수행할 수 있습니다: (코드 블록 12)
이 그래프에서는 아무것도 알 수 없습니다. 이는 확률적 훈련 과정의 특성상 훈련 세션 길이가 크게 변하기 때문입니다. 이 그래프를 더 이해하기 쉽게 만들기 위해, 예를 들어 100번의 실험에 대해 **이동 평균**을 계산할 수 있습니다. 이는 `np.convolve`를 사용하여 편리하게 수행할 수 있습니다: (코드 블록 12)
```python
def running_average(x,window):
@ -294,21 +276,21 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
![훈련 진행 상황](../../../../translated_images/train_progress_runav.c71694a8fa9ab35935aff6f109e5ecdfdbdf1b0ae265da49479a81b5fae8f0aa.ko.png)
![훈련 진행 상황](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png)
## 하이퍼파라미터 조정
학습을 더 안정적으로 만들기 위해 훈련 중에 일부 하이퍼파라미터를 조정하는 것이 좋습니다. 특히:
- **학습률(`alpha`)**: 초기에는 1에 가까운 값으로 시작한 후, 점차적으로 이 값을 줄일 수 있습니다. 시간이 지나면 Q-테이블에서 좋은 확률 값을 얻게 되며, 이 값을 완전히 덮어쓰지 않고 약간만 조정해야 합니다.
- **학습률** `alpha`의 경우, 1에 가까운 값으로 시작한 다음 점차적으로 이 값을 줄이는 것이 좋습니다. 시간이 지나면 Q-테이블에서 좋은 확률 값을 얻을 수 있으며, 이를 약간만 조정하고 새 값으로 완전히 덮어쓰지 않아야 합니다.
- **`epsilon` 증가**: 탐험을 줄이고 활용을 늘리기 위해 `epsilon`을 천천히 증가시키는 것이 좋습니다. 낮은 `epsilon` 값으로 시작하여 거의 1에 가까운 값으로 이동하는 것이 합리적일 수 있습니다.
> **Task 1**: 하이퍼파라미터 값을 조정해보고 더 높은 누적 보상을 얻을 수 있는지 확인하세요. 195 이상을 달성하고 있나요?
> **과제 2**: 문제를 공식적으로 해결하려면, 100번의 연속 실행에서 평균 보상이 195에 도달해야 합니다. 훈련 중에 이를 측정하고 문제를 공식적으로 해결했는지 확인하세요!
- **epsilon 증가**: `epsilon`을 천천히 증가시켜 탐험을 줄이고 활용을 늘리는 것이 좋습니다. 낮은 `epsilon` 값으로 시작하여 거의 1에 가까운 값으로 이동하는 것이 합리적일 수 있습니다.
> **작업 1**: 하이퍼파라미터 값을 조정해 보며 더 높은 누적 보상을 얻을 수 있는지 확인하세요. 195점을 넘기고 있나요?
> **과제 2**: 문제를 공식적으로 해결하려면 100번의 연속 실행에서 평균 보상이 195에 도달해야 합니다. 훈련 중에 이를 측정하고 문제를 공식적으로 해결했는지 확인하세요!
## 결과 확인하기
훈련된 모델이 실제로 어떻게 작동하는지 보는 것은 흥미로울 것입니다. 시뮬레이션을 실행하고 훈련 중과 동일한 행동 선택 전략을 따라가 봅시다. Q-Table의 확률 분포에 따라 샘플링합니다: (코드 블록 13)
훈련된 모델이 실제로 어떻게 작동하는지 보는 것은 흥미로울 것입니다. 시뮬레이션을 실행하고 훈련 중과 동일한 행동 선택 전략을 따라 Q-테이블의 확률 분포에 따라 샘플링해 봅시다: (코드 블록 13)
```python
obs = env.reset()
@ -330,22 +312,22 @@ env.close()
## 🚀도전
> **과제 3**: 여기서는 최종 Q-Table을 사용했지만, 이것이 최상의 결과를 내는 것은 아닐 수 있습니다. 우리가 `Qbest` 변수에 가장 성능이 좋은 Q-Table을 저장해 두었다는 것을 기억하세요! `Qbest``Q`로 복사하여 최상의 Q-Table을 사용해 동일한 예제를 실행해 보고 차이를 확인하세요.
> **과제 3**: 여기서는 최종 Q-테이블을 사용했지만, 이것이 최상의 결과를 제공하는 것은 아닐 수 있습니다. 우리가 가장 성능이 좋은 Q-테이블을 `Qbest` 변수에 저장했다는 것을 기억하세요! `Qbest``Q`로 복사하여 최상의 Q-테이블을 사용해 동일한 예제를 실행하고 차이를 확인해 보세요.
> **과제 4**: 여기서는 각 단계에서 최상의 행동을 선택하지 않고, 해당 확률 분포에 따라 샘플링했습니다. 항상 Q-Table 값이 가장 높은 최상의 행동을 선택하는 것이 더 합리적일까요? 이를 구현하려면 `np.argmax` 함수를 사용하여 Q-Table 값이 가장 높은 행동 번호를 찾을 수 있습니다. 이 전략을 구현하고 균형 잡기에 개선이 있는지 확인하세요.
> **과제 4**: 여기서는 각 단계에서 최상의 행동을 선택하지 않고, 해당 확률 분포에 따라 샘플링했습니다. 항상 Q-테이블 값이 가장 높은 최상의 행동을 선택하는 것이 더 합리적일까요? 이를 위해 `np.argmax` 함수를 사용하여 Q-테이블 값이 가장 높은 행동 번호를 찾을 수 있습니다. 이 전략을 구현하여 균형 잡기에 개선이 있는지 확인해 보세요.
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/48/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 과제
[Mountain Car 훈련하기](assignment.md)
## 결론
우리는 이제 에이전트가 게임의 원하는 상태를 정의하는 보상 함수만 제공받고, 색 공간을 지능적으로 탐색할 기회를 통해 좋은 결과를 얻는 방법을 배웠습니다. 우리는 Q-Learning 알고리즘을 이산 환경과 연속 환경에서 성공적으로 적용했으며, 이산 행동을 사용했습니다.
우리는 이제 에이전트가 게임의 원하는 상태를 정의하는 보상 함수만 제공받고, 색 공간을 지능적으로 탐색할 기회를 통해 좋은 결과를 얻는 방법을 배웠습니다. 우리는 Q-러닝 알고리즘을 이산적 환경과 연속적 환경에서 성공적으로 적용했으며, 이산 행동을 사용했습니다.
행동 상태도 연속적이고 관찰 공간이 훨씬 더 복잡한 상황, 예를 들어 Atari 게임 화면의 이미지를 다루는 경우를 공부하는 것도 중요합니다. 이러한 문제에서는 좋은 결과를 얻기 위해 종종 신경망과 같은 더 강력한 머신러닝 기술이 필요합니다. 이러한 더 고급 주제는 앞으로 진행될 고급 AI 과정에서 다룰 예정입니다.
행동 상태도 연속적이고 관찰 공간이 훨씬 더 복잡한 상황, 예를 들어 아타리 게임 화면의 이미지를 다루는 경우를 연구하는 것도 중요합니다. 이러한 문제에서는 종종 신경망과 같은 더 강력한 머신러닝 기술을 사용해야 좋은 결과를 얻을 수 있습니다. 이러한 더 고급 주제는 앞으로 진행될 고급 AI 과정에서 다룰 예정입니다.
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,22 +1,22 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "20f18ff565638be615df4174858e4a7f",
"translation_date": "2025-09-03T23:16:35+00:00",
"original_hash": "83320d6b6994909e35d830cebf214039",
"translation_date": "2025-09-05T10:45:58+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "ko"
}
-->
# 후속: 실제 세계에서의 머신 러닝
![실제 세계에서의 머신 러닝 요약 스케치노트](../../../../translated_images/ml-realworld.26ee2746716155771f8076598b6145e6533fe4a9e2e465ea745f46648cbf1b84.ko.png)
![실제 세계에서의 머신 러닝 요약 스케치노트](../../../../sketchnotes/ml-realworld.png)
> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac)
이 커리큘럼에서 여러분은 데이터를 학습용으로 준비하고 머신 러닝 모델을 만드는 다양한 방법을 배웠습니다. 회귀, 클러스터링, 분류, 자연어 처리, 시계열 모델 등 고전적인 모델을 연속적으로 구축해왔습니다. 축하합니다! 이제 여러분은 이러한 모델들이 실제로 어떤 용도로 사용되는지 궁금할 것입니다.
이 커리큘럼에서 여러분은 데이터를 학습 준비하고 머신 러닝 모델을 만드는 다양한 방법을 배웠습니다. 회귀, 클러스터링, 분류, 자연어 처리, 시계열 모델 등 고전적인 모델을 연속적으로 구축해왔습니다. 축하합니다! 이제 여러분은 이 모든 것이 무엇을 위한 것인지 궁금할 수도 있습니다... 이러한 모델들이 실제 세계에서 어떻게 활용될까요?
산업에서 AI에 대한 관심이 높아지고 있지만, 이는 주로 딥러닝을 활용하는 경우가 많습니다. 그럼에도 불구하고 고전적인 머신 러닝 모델은 여전히 가치 있는 응용 분야를 가지고 있습니다. 사실, 여러분은 이미 이러한 응용 분야를 사용하고 있을지도 모릅니다! 이번 레슨에서는 8개의 다양한 산업 및 주제 분야에서 이러한 모델들이 어떻게 애플리케이션을 더 성능 좋고, 신뢰할 수 있으며, 지능적이고, 사용자에게 가치 있게 만드는 데 사용되는지 탐구할 것입니다.
산업계에서는 주로 딥 러닝을 활용하는 AI에 많은 관심이 집중되고 있지만, 고전적인 머신 러닝 모델도 여전히 가치 있는 응용 사례를 제공합니다. 사실, 여러분은 이미 이러한 응용 사례를 사용하고 있을지도 모릅니다! 이번 레슨에서는 8개의 다양한 산업 및 주제 분야에서 이러한 모델들이 어떻게 애플리케이션을 더 성능 좋고, 신뢰할 수 있으며, 지능적이고, 사용자에게 가치 있게 만드는 데 사용되는지 탐구할 것입니다.
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/49/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 💰 금융
@ -26,14 +26,14 @@ CO_OP_TRANSLATOR_METADATA:
이 과정에서 [k-means 클러스터링](../../5-Clustering/2-K-Means/README.md)에 대해 배웠지만, 이를 신용카드 사기와 관련된 문제를 해결하는 데 어떻게 사용할 수 있을까요?
k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지 기술에서 유용하게 사용됩니다. 데이터 세트에 대한 관찰에서의 이상치 또는 편차는 신용카드가 정상적으로 사용되고 있는지 아니면 비정상적인 활동이 있는지를 알려줍니다. 아래 링크된 논문에서 보여지듯이, k-means 클러스터링 알고리즘을 사용하여 신용카드 데이터를 정렬하고 각 거래를 이상치 정도에 따라 클러스터에 할당할 수 있습니다. 그런 다음, 가장 위험한 클러스터를 평가하여 사기 거래와 합법적인 거래를 구분할 수 있습니다.
k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지 기술에서 유용하게 사용됩니다. 데이터 집합에 대한 관찰에서의 이상치 또는 편차는 신용카드가 정상적으로 사용되고 있는지 아니면 비정상적인 일이 발생하고 있는지를 알려줍니다. 아래 링크된 논문에서 볼 수 있듯이, k-means 클러스터링 알고리즘을 사용하여 신용카드 데이터를 정렬하고 각 거래를 이상치 정도에 따라 클러스터에 할당할 수 있습니다. 그런 다음, 가장 위험한 클러스터를 평가하여 사기 거래와 합법적인 거래를 구분할 수 있습니다.
[참고](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf)
### 자산 관리
자산 관리에서는 개인 또는 회사가 고객을 대신하여 투자를 관리합니다. 이들의 목표는 장기적으로 자산을 유지하고 성장시키는 것이므로, 성과가 좋은 투자를 선택하는 것이 중요합니다.
특정 투자 성과를 평가하는 한 가지 방법은 통계적 회귀를 사용하는 것입니다. [선형 회귀](../../2-Regression/1-Tools/README.md)는 펀드가 특정 벤치마크에 대해 어떻게 성과를 내는지 이해하는 데 유용한 도구입니다. 또한 회귀 결과가 통계적으로 유의미한지, 즉 고객의 투자에 얼마나 영향을 미칠지를 추론할 수 있습니다. 추가 위험 요소를 고려하여 다중 회귀를 사용하여 분석을 확장할 수도 있습니다. 특정 펀드에 대해 이 방법이 어떻게 작동하는지에 대한 예시는 아래 논문에서 확인할 수 있습니다.
특정 투자 성과를 평가하는 한 가지 방법은 통계적 회귀를 사용하는 것입니다. [선형 회귀](../../2-Regression/1-Tools/README.md)는 펀드가 특정 벤치마크에 대해 어떻게 성과를 내는지 이해하는 데 유용한 도구입니다. 또한 회귀 결과가 통계적으로 유의미한지, 즉 고객의 투자에 얼마나 영향을 미칠지를 추론할 수 있습니다. 추가 위험 요소를 고려하여 다중 회귀를 사용 분석을 확장할 수도 있습니다. 특정 펀드에 대해 이 방법이 어떻게 작동하는지에 대한 예시는 아래 논문에서 확인할 수 있습니다.
[참고](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/)
## 🎓 교육
@ -42,12 +42,12 @@ k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지
### 학생 행동 예측
온라인 공개 강좌 제공업체인 [Coursera](https://coursera.com)는 많은 엔지니어링 결정을 논의하는 훌륭한 기술 블로그를 운영합니다. 이 사례 연구에서, 그들은 낮은 NPS(Net Promoter Score) 평가와 강좌 유지 또는 중도 탈락 간의 상관관계를 탐구하기 위해 회귀선을 그렸습니다.
온라인 공개 강좌 제공업체인 [Coursera](https://coursera.com)는 많은 엔지니어링 결정을 논의하는 훌륭한 기술 블로그를 운영합니다. 이 사례 연구에서 낮은 NPS(Net Promoter Score) 평가와 강좌 유지 또는 중도 탈락 간의 상관관계를 탐구하기 위해 회귀선을 그렸습니다.
[참고](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a)
### 편향 완화
[Grammarly](https://grammarly.com)는 철자 및 문법 오류를 확인하는 글쓰기 도우미로, 제품 전반에 걸쳐 정교한 [자연어 처리 시스템](../../6-NLP/README.md)을 사용합니다. 그들은 기술 블로그에서 머신 러닝에서의 성별 편향을 어떻게 처리했는지에 대한 흥미로운 사례 연구를 발표했습니다. 이는 [공정성 소개 레슨](../../1-Introduction/3-fairness/README.md)에서 배운 내용과 관련이 있습니다.
맞춤법 및 문법 오류를 확인하는 글쓰기 도우미인 [Grammarly](https://grammarly.com)는 제품 전반에 걸쳐 정교한 [자연어 처리 시스템](../../6-NLP/README.md)을 사용합니다. 이들은 머신 러닝에서의 성별 편향을 다루는 방법에 대해 기술 블로그에 흥미로운 사례 연구를 게시했으며, 이는 [공정성 소개 레슨](../../1-Introduction/3-fairness/README.md)에서 배운 내용과 관련이 있습니다.
[참고](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
## 👜 소매
@ -56,12 +56,12 @@ k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지
### 고객 여정 개인화
가구와 같은 가정용품을 판매하는 Wayfair에서는 고객이 자신의 취향과 필요에 맞는 제품을 찾도록 돕는 것이 중요합니다. 이 기사에서 회사의 엔지니어들은 ML과 NLP를 사용하여 "고객에게 적합한 결과를 제공"하는 방법을 설명합니다. 특히, 들의 Query Intent Engine은 고객 리뷰에서 엔티티 추출, 분류기 학습, 자산 및 의견 추출, 감정 태깅을 사용하도록 설계되었습니다. 이는 온라인 소매에서 NLP가 작동하는 고전적인 사례입니다.
가구와 같은 가정용품을 판매하는 Wayfair에서는 고객이 자신의 취향과 필요에 맞는 제품을 찾도록 돕는 것이 중요합니다. 이 기사에서 회사의 엔지니어들은 ML과 NLP를 사용하여 "고객에게 적합한 결과를 제공"하는 방법을 설명합니다. 특히, 들의 Query Intent Engine은 고객 리뷰에서 엔티티 추출, 분류기 학습, 자산 및 의견 추출, 감정 태깅을 수행하도록 구축되었습니다. 이는 온라인 소매에서 NLP가 어떻게 작동하는지 보여주는 대표적인 사례입니다.
[참고](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
### 재고 관리
[StitchFix](https://stitchfix.com)와 같은 혁신적이고 민첩한 회사는 추천 및 재고 관리를 위해 ML을 많이 활용합니다. 그들의 스타일링 팀은 상품 팀과 협력합니다. 실제로 "한 데이터 과학자가 유전 알고리즘을 의류에 적용하여 오늘날 존재하지 않는 성공적인 의류를 예측했습니다. 이를 상품 팀에 제공하여 도구로 사용할 수 있게 했습니다."
[StitchFix](https://stitchfix.com)와 같은 혁신적이고 민첩한 회사는 추천 및 재고 관리를 위해 ML을 많이 활용합니다. 이들의 스타일링 팀은 상품 팀과 협력하며, "데이터 과학자 중 한 명이 유전 알고리즘을 의류에 적용하여 오늘날 존재하지 않는 성공적인 의류를 예측했습니다. 이를 상품 팀에 제공하여 도구로 사용할 수 있게 했습니다."
[참고](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/)
## 🏥 의료
@ -70,40 +70,38 @@ k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지
### 임상 시험 관리
임상 시험에서의 독성은 제약 회사들에게 주요 관심사입니다. 얼마나 많은 독성이 허용 가능한가요? 이 연구에서는 다양한 임상 시험 방법을 분석하여 임상 시험 결과를 예측할 확률을 예측하는 새로운 접근법을 개발했습니다. 특히, 랜덤 포레스트를 사용하여 그룹 간 약물을 구분할 수 있는 [분류기](../../4-Classification/README.md)를 생성했습니다.
임상 시험에서의 독성은 제약 회사들에게 주요 관심사입니다. 얼마나 많은 독성이 허용될 수 있을까요? 이 연구에서는 다양한 임상 시험 방법을 분석하여 임상 시험 결과를 예측할 수 있는 새로운 접근법을 개발했습니다. 특히, 랜덤 포레스트를 사용하여 그룹 간 약물을 구분할 수 있는 [분류기](../../4-Classification/README.md)를 생성했습니다.
[참고](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
### 병원 재입원 관리
병원 치료는 비용이 많이 들며, 특히 환자가 재입원해야 할 경우 더욱 그렇습니다. 이 논문에서는 [클러스터링](../../5-Clustering/README.md) 알고리즘을 사용하여 재입원 가능성을 예측하는 회사에 대해 논의합니다. 이러한 클러스터는 분석가들이 "공통 원인을 공유할 수 있는 재입원 그룹을 발견"하는 데 도움을 줍니다.
병원 치료는 비용이 많이 들며, 특히 환자가 재입원해야 할 경우 더욱 그렇습니다. 이 논문에서는 [클러스터링](../../5-Clustering/README.md) 알고리즘을 사용하여 재입원 가능성을 예측하는 회사에 대해 논의합니다. 이러한 클러스터는 분석가들이 "공통 원인을 공유할 수 있는 재입원 그룹을 발견"하는 데 도움을 줍니다.
[참고](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning)
### 질병 관리
최근 팬데믹은 머신 러닝이 질병 확산을 막는 데 어떻게 도움을 줄 수 있는지에 대한 많은 관심을 불러일으켰습니다. 이 기사에서는 ARIMA, 로지스틱 곡선, 선형 회귀, SARIMA의 사용을 확인할 수 있습니다. "이 연구는 바이러스 확산 속도를 계산하고 사망, 회복, 확진 사례를 예측하여 더 나은 준비와 생존을 돕기 위한 시도입니다."
최근 팬데믹은 머신 러닝이 질병 확산을 막는 데 어떻게 도움을 줄 수 있는지에 대한 관심을 크게 높였습니다. 이 기사에서는 ARIMA, 로지스틱 곡선, 선형 회귀, SARIMA의 사용 사례를 확인할 수 있습니다. "이 연구는 바이러스 확산 속도를 계산하고 사망, 회복, 확진 사례를 예측하여 더 나은 준비와 생존을 돕기 위한 시도입니다."
[참고](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/)
## 🌲 생태 및 친환경 기술
자연과 생태는 동물과 자연 간의 상호작용이 초점이 되는 민감한 시스템으로 구성됩니다. 이러한 시스템을 정확히 측정하고, 산불이나 동물 개체수 감소와 같은 일이 발생했을 때 적절히 대응하는 것이 중요합니다.
자연과 생태는 동물과 자연 간의 상호작용이 중요한 민감한 시스템으로 구성됩니다. 이러한 시스템을 정확히 측정하고, 산불이나 동물 개체수 감소와 같은 일이 발생했을 때 적절히 대응하는 것이 중요합니다.
### 산림 관리
이전 레슨에서 [강화 학습](../../8-Reinforcement/README.md)에 대해 배웠습니다. 이는 자연에서 패턴을 예측하는 데 매우 유용할 수 있습니다. 특히, 산불 및 침입종 확산과 같은 생태학적 문제를 추적하는 데 사용할 수 있습니다. 캐나다의 한 연구팀은 위성 이미지를 사용하여 산불 동역학 모델을 구축하기 위해 강화 학습을 사용했습니다. 혁신적인 "공간적 확산 과정(SSP)"을 사용하여 산불을 "풍경의 어느 셀에서든 에이전트"로 간주했습니다. "화재가 특정 위치에서 특정 시점에 취할 수 있는 행동 세트는 북쪽, 남쪽, 동쪽, 서쪽으로 확산하거나 확산하지 않는 것을 포함합니다."
이 접근법은 해당 마르코프 결정 과정(MDP)의 동역학이 즉각적인 산불 확산에 대한 알려진 함수라는 점에서 일반적인 RL 설정을 뒤집습니다. 아래 링크에서 이 그룹이 사용한 고전 알고리즘에 대해 자세히 읽어보세요.
이전 레슨에서 [강화 학습](../../8-Reinforcement/README.md)에 대해 배웠습니다. 이는 자연에서 패턴을 예측하는 데 매우 유용할 수 있습니다. 특히, 산불 및 침입종 확산과 같은 생태학적 문제를 추적하는 데 사용될 수 있습니다. 캐나다의 연구자들은 위성 이미지를 사용하여 산불 동역학 모델을 구축하기 위해 강화 학습을 사용했습니다. 혁신적인 "공간적 확산 과정(SSP)"을 사용하여 산불을 "풍경의 어느 셀에서든 에이전트"로 간주했습니다. "화재가 특정 위치에서 특정 시점에 취할 수 있는 행동 세트는 북쪽, 남쪽, 동쪽, 서쪽으로 확산하거나 확산하지 않는 것을 포함합니다."
[참고](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full)
### 동물의 움직임 감지
딥러닝은 동물 움직임을 시각적으로 추적하는 데 혁신을 가져왔지만(여기서 [북극곰 추적기](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott)를 직접 만들어볼 수 있습니다), 고전적인 ML은 여전히 이 작업에서 중요한 역할을 합니다.
러닝은 동물 움직임을 시각적으로 추적하는 데 혁신을 가져왔지만(여기서 [북극곰 추적기](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott)를 직접 만들어볼 수 있음), 고전적인 ML도 여전히 이 작업에서 중요한 역할을 합니다.
농장 동물의 움직임을 추적하는 센서와 IoT는 이러한 유형의 시각적 처리를 활용하지만, 더 기본적인 ML 기술은 데이터를 전처리하는 데 유용합니다. 예를 들어, 이 논문에서는 다양한 분류기 알고리즘을 사용하여 양의 자세를 모니터링하고 분석했습니다. 페이지 335에서 ROC 곡선을 확인할 수 있습니다.
농장 동물의 움직임을 추적하는 센서와 IoT는 이러한 유형의 시각적 처리를 활용하지만, 더 기본적인 ML 기술은 데이터를 전처리하는 데 유용합니다. 예를 들어, 이 논문에서는 다양한 분류기 알고리즘을 사용하여 양의 자세를 모니터링하고 분석했습니다. 페이지 335에서 ROC 곡선을 확인할 수 있습니다.
[참고](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf)
### ⚡️ 에너지 관리
[시계열 예측](../../7-TimeSeries/README.md)에 대한 레슨에서, 공급과 수요를 이해하여 도시의 수익을 창출하는 스마트 주차 미터 개념을 언급했습니다. 이 기사는 클러스터링, 회귀 및 시계열 예측을 결합하여 스마트 미터링을 기반으로 아일랜드의 미래 에너지 사용을 예측하는 방법을 자세히 설명합니다.
[시계열 예측](../../7-TimeSeries/README.md) 레슨에서 공급과 수요를 이해하여 도시의 수익을 창출하는 스마트 주차 미터 개념을 소개했습니다. 이 기사에서는 클러스터링, 회귀, 시계열 예측을 결합하여 스마트 미터링을 기반으로 아일랜드의 미래 에너지 사용을 예측하는 방법을 자세히 설명합니다.
[참고](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf)
## 💼 보험
@ -112,48 +110,48 @@ k-means 클러스터링은 **이상치 탐지**라는 신용카드 사기 탐지
### 변동성 관리
생명 보험 제공업체인 MetLife는 금융 모델에서 변동성을 분석하고 완화하는 방법을 공개적으로 공유합니다. 이 기사에서는 이진 및 서열 분류 시각화를 확인할 수 있습니다. 또한 예측 시각화도 발견할 수 있습니다.
생명 보험 제공업체인 MetLife는 금융 모델에서 변동성을 분석하고 완화하는 방법을 공개적으로 공유합니다. 이 기사에서는 이진 및 서열 분류 시각화를 확인할 수 있습니다. 또한 예측 시각화도 발견할 수 있습니다.
[참고](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
## 🎨 예술, 문화, 문학
예술 분야, 예를 들어 저널리즘에서는 많은 흥미로운 문제가 있습니다. 가짜 뉴스를 감지하는 것은 큰 문제로, 이는 사람들의 의견에 영향을 미치고 심지어 민주주의를 위협할 수 있음이 입증되었습니다. 박물관도 유물 간의 연결을 찾거나 자원 계획을 세우는 데 ML을 활용할 수 있습니다.
예술 분야, 예를 들어 저널리즘에서는 많은 흥미로운 문제가 있습니다. 가짜 뉴스를 감지하는 것은 사람들의 의견에 영향을 미치고 심지어 민주주의를 위협할 수 있다는 점에서 큰 문제입니다. 박물관도 유물 간의 연결을 찾거나 자원 계획을 개선하는 데 ML을 활용할 수 있습니다.
### 가짜 뉴스 감지
가짜 뉴스 감지 것은 오늘날 미디어에서 고양이와 쥐의 게임이 되었습니다. 이 기사에서 연구자들은 우리가 공부한 여러 ML 기술을 결합하여 시스템을 테스트하고 최적의 모델을 배포할 것을 제안합니다. "이 시스템은 데이터를 기반으로 특징을 추출하기 위해 자연어 처리를 사용하며, 그런 다음 이러한 특징은 Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), Logistic Regression(LR)과 같은 머신 러닝 분류기를 학습시키는 데 사용됩니다."
가짜 뉴스 감지는 오늘날 미디어에서 고양이와 쥐의 게임이 되었습니다. 이 기사에서는 우리가 공부한 여러 ML 기술을 결합하여 테스트하고 최적의 모델을 배포할 수 있는 시스템을 제안합니다. "이 시스템은 데이터를 기반으로 특징을 추출하기 위해 자연어 처리를 사용하며, 그런 다음 이러한 특징은 Naive Bayes, Support Vector Machine(SVM), Random Forest(RF), Stochastic Gradient Descent(SGD), Logistic Regression(LR)과 같은 머신 러닝 분류기를 학습시키는 데 사용됩니다."
[참고](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf)
이 기사는 다양한 ML 도메인을 결합하여 가짜 뉴스가 확산되고 실제 피해를 초래하는 것을 막는 데 도움이 되는 흥미로운 결과를 생성할 수 있음을 보여줍니다. 이 경우, COVID 치료에 대한 소문이 폭력적인 군중 행동을 유발한 것이 계기가 되었습니다.
이 기사는 다양한 ML 도메인을 결합하여 가짜 뉴스가 확산되고 실제 피해를 초래하는 것을 막는 데 도움을 줄 수 있는 흥미로운 결과를 생성할 수 있음을 보여줍니다. 이 경우, COVID 치료에 대한 소문이 폭력적인 군중 행동을 유발한 것이 계기가 되었습니다.
### 박물관 ML
박물관은 컬렉션을 디지털화하고 유물 간의 연결을 찾는 것이 기술 발전으로 인해 점점 더 쉬워지면서 AI 혁명의 최전선에 있습니다. [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.)와 같은 프로젝트는 바티칸 기록 보관소와 같은 접근할 수 없는 컬렉션의 신비를 풀어주는 데 도움을 주고 있습니다. 하지만 박물관의 비즈니스 측면도 ML 모델의 혜택을 받습니다.
박물관은 컬렉션을 디지털화하고 유물 간의 연결을 찾는 것이 기술 발전으로 인해 점점 더 쉬워지 AI 혁명의 최전선에 있습니다. [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.)와 같은 프로젝트는 바티칸 기록 보관소와 같은 접근하기 어려운 컬렉션의 비밀을 푸는 데 도움을 주고 있습니다. 하지만 박물관의 비즈니스 측면도 ML 모델의 혜택을 받습니다.
예를 들어, 시카고 아트 인스티튜트는 관객들이 무엇에 관심이 있는지, 언제 전시회를 방문할지를 예측하는 모델을 구축했습니다. 목표는 사용자가 박물관을 방문할 때마다 개별화되고 최적화된 방문 경험을 제공하는 것입니다. "2017 회계연도 동안, 이 모델은 참석 및 입장 예측에서 1% 이내의 정확도를 기록했습니다."라고 Andrew Simnick, 시카고 아트 인스티튜트의 수석 부사장이 말합니다.
예를 들어, 시카고 미술관은 관객들이 어떤 것에 관심을 가지며 언제 전시회를 방문할지를 예측하는 모델을 구축했습니다. 목표는 사용자가 박물관을 방문할 때마다 개별화되고 최적화된 방문 경험을 제공하는 것입니다. "2017 회계연도 동안, 이 모델은 관람객 수와 입장료를 1% 이내의 정확도로 예측했습니다."라고 시카고 미술관의 Andrew Simnick 부사장은 말합니다.
[참고](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices)
## 🏷 마케팅
### 고객 세분화
가장 효과적인 마케팅 전략은 다양한 그룹에 따라 고객을 다르게 타겟팅하는 것입니다. 이 기사에서는 차별화된 마케팅을 지원하기 위해 클러스터링 알고리즘의 사용에 대해 논의합니다. 차별화된 마케팅은 기업이 브랜드 인지도를 높이고, 더 많은 고객에게 도달하며, 더 많은 수익을 창출하는 데 도움을 줍니다.
가장 효과적인 마케팅 전략은 다양한 그룹에 따라 고객을 다르게 타겟팅하는 것입니다. 이 기사에서는 차별화된 마케팅을 지원하기 위해 클러스터링 알고리즘의 사용 사례를 논의합니다. 차별화된 마케팅은 기업이 브랜드 인지도를 높이고, 더 많은 고객에게 도달하며, 더 많은 수익을 창출할 수 있도록 돕습니다.
[참고](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/)
## 🚀 도전
다른 분야를 찾아보고, 이 커리큘럼에서 배운 기술 중 일부가 해당 분야에서 어떻게 활용되는지 알아보세요.
## 🚀 도전 과제
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/50/)
이 커리큘럼에서 배운 기술을 활용하는 또 다른 분야를 식별하고, 해당 분야가 ML을 어떻게 사용하는지 알아보세요.
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
Wayfair 데이터 과학 팀은 자사에서 ML을 어떻게 활용하는지에 대한 흥미로운 동영상을 여러 개 제공합니다. [한번 살펴보세요](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)!
Wayfair 데이터 과학 팀은 회사에서 머신러닝을 어떻게 활용하는지에 대한 흥미로운 영상들을 여러 개 가지고 있습니다. [한번 살펴보세요](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)!
## 과제
[ML 스캐빈저 헌트](assignment.md)
[머신러닝 스캐빈저 헌트](assignment.md)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,139 +1,139 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ba0f6e1019351351c8ee4c92867b6a0b",
"translation_date": "2025-09-03T23:21:34+00:00",
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
"translation_date": "2025-09-05T10:46:42+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "ko"
}
-->
# 후기: Responsible AI 대시보드 구성 요소를 활용한 머신러닝 모델 디버깅
# 후속: 책임 있는 AI 대시보드 구성 요소를 활용한 머신 러닝 모델 디버깅
## [강의 전 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 소개
머신러닝은 우리의 일상에 큰 영향을 미치고 있습니다. AI는 의료, 금융, 교육, 고용 등 개인과 사회에 중요한 영향을 미치는 시스템에 점점 더 많이 도입되고 있습니다. 예를 들어, 의료 진단이나 사기 탐지와 같은 일상적인 의사결정 작업에 시스템과 모델이 사용됩니다. 이처럼 AI의 발전과 빠른 채택은 사회적 기대의 변화와 규제의 증가를 불러오고 있습니다. 우리는 AI 시스템이 기대에 미치지 못하거나 새로운 문제를 드러내는 사례를 지속적으로 목격하고 있으며, 정부는 AI 솔루션을 규제하기 시작했습니다. 따라서 이러한 모델이 공정하고, 신뢰할 수 있으며, 포괄적이고, 투명하며, 책임 있는 결과를 제공하는지 분석하는 것이 중요합니다.
머신 러닝은 우리의 일상에 큰 영향을 미칩니다. AI는 의료, 금융, 교육, 고용 등 개인과 사회에 영향을 미치는 중요한 시스템에 점점 더 많이 사용되고 있습니다. 예를 들어, 시스템과 모델은 의료 진단이나 사기 탐지와 같은 일상적인 의사 결정 작업에 관여합니다. 이러한 AI의 발전과 빠른 채택은 사회적 기대의 변화와 이에 따른 규제의 증가로 이어지고 있습니다. 우리는 AI 시스템이 기대를 충족하지 못하는 사례를 지속적으로 목격하고 있으며, 새로운 과제를 드러내며 정부는 AI 솔루션을 규제하기 시작하고 있습니다. 따라서 이러한 모델이 공정하고, 신뢰할 수 있으며, 포괄적이고, 투명하며, 책임 있는 결과를 제공하는지 분석하는 것이 중요합니다.
이 커리큘럼에서는 모델이 Responsible AI 문제를 가지고 있는지 평가하는 데 사용할 수 있는 실용적인 도구를 살펴봅니다. 전통적인 머신러닝 디버깅 기법은 주로 집계된 정확도나 평균 오류 손실과 같은 정량적 계산에 기반합니다. 예를 들어, 모델을 구축하는 데 사용하는 데이터가 특정 인구통계(예: 인종, 성별, 정치적 견해, 종교 등)가 부족하거나 불균형적으로 대표된다면 어떤 일이 발생할 수 있을까요? 또는 모델의 출력이 특정 인구통계를 선호하도록 해석된다면 어떨까요? 이는 민감한 특성 그룹의 과대 또는 과소 대표를 초래하여 모델의 공정성, 포괄성 또는 신뢰성 문제를 야기할 수 있습니다. 또 다른 문제는 머신러닝 모델이 블랙박스로 간주되어 모델의 예측을 이끄는 요인을 이해하고 설명하기 어렵다는 점입니다. 이러한 문제는 데이터 과학자와 AI 개발자가 모델의 공정성이나 신뢰성을 평가하고 디버깅할 적절한 도구가 없을 때 직면하는 도전 과제입니다.
이 커리큘럼에서는 모델이 책임 있는 AI 문제를 가지고 있는지 평가할 수 있는 실용적인 도구를 살펴봅니다. 전통적인 머신 러닝 디버깅 기술은 주로 집계된 정확도나 평균 오류 손실과 같은 정량적 계산에 기반합니다. 예를 들어, 모델을 구축하는 데 사용하는 데이터가 특정 인구 통계(예: 인종, 성별, 정치적 견해, 종교 등)를 포함하지 않거나 불균형적으로 대표하는 경우 어떤 일이 발생할 수 있을지 상상해 보십시오. 또는 모델의 출력이 특정 인구 통계를 선호하도록 해석되는 경우는 어떨까요? 이는 민감한 특성 그룹의 과잉 또는 과소 대표를 초래하여 모델에서 공정성, 포괄성 또는 신뢰성 문제를 야기할 수 있습니다. 또 다른 문제는 머신 러닝 모델이 블랙박스로 간주되어 모델의 예측을 이끄는 요인을 이해하고 설명하기 어렵다는 점입니다. 이러한 모든 문제는 데이터 과학자와 AI 개발자가 모델의 공정성이나 신뢰성을 디버깅하고 평가할 적절한 도구가 없을 때 직면하는 도전 과제입니다.
이 강의에서는 다음을 통해 모델 디버깅하는 방법을 배웁니다:
이 강의에서는 다음을 통해 모델 디버깅 방법을 배웁니다:
- **오류 분석**: 데이터 분포에서 모델의 오류율이 높은 부분을 식별합니다.
- **모델 개요**: 다양한 데이터 코호트 간 비교 분석을 수행하여 모델 성능 지표의 격차를 발견합니다.
- **데이터 분석**: 데이터가 특정 인구통계를 과대 또는 과소 대표하여 모델이 특정 데이터를 선호하도록 왜곡될 수 있는 부분을 조사합니다.
- **특성 중요도**: 모델의 예측에 영향을 미치는 주요 특성을 전역 수준 또는 로컬 수준에서 이해합니다.
- **오류 분석**: 데이터 분포에서 모델의 오류율이 높은 영역을 식별합니다.
- **모델 개요**: 다양한 데이터 코호트 간 비교 분석을 수행하여 모델 성능 지표의 격차를 발견합니다.
- **데이터 분석**: 데이터가 특정 인구 통계를 선호하도록 모델을 왜곡할 수 있는 과잉 또는 과소 대표가 있는지 조사합니다.
- **특성 중요도**: 모델의 예측을 글로벌 또는 로컬 수준에서 이끄는 특성을 이해합니다.
## 사전 요구 사항
사전 요구 사항으로, [개발자를 위한 Responsible AI 도구](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)를 검토하세요.
사전 요구 사항으로 [개발자를 위한 책임 있는 AI 도구](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)를 검토하세요.
> ![Responsible AI 도구에 대한 GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
> ![책임 있는 AI 도구에 대한 GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif)
## 오류 분석
전통적인 모델 성능 지표는 주로 올바른 예측과 잘못된 예측을 기반으로 한 계산입니다. 예를 들어, 모델이 89%의 정확도를 가지며 오류 손실이 0.001인 경우 좋은 성능으로 간주될 수 있습니다. 그러나 오류는 데이터셋 전반에 균일하게 분포하지 않을 수 있습니다. 모델이 89%의 정확도를 기록했더라도 특정 데이터 영역에서 모델이 42%의 오류율을 보이는 경우를 발견할 수 있습니다. 특정 데이터 그룹에서 이러한 오류 패턴이 발생하면 공정성이나 신뢰성 문제로 이어질 수 있습니다. 따라서 모델이 잘 작동하는 영역과 그렇지 않은 영역을 이해하는 것이 중요합니다. 모델의 부정확성이 높은 데이터 영역은 중요한 데이터 인구통계일 수 있습니다.
전통적인 모델 성능 지표는 주로 올바른 예측과 잘못된 예측을 기반으로 계산됩니다. 예를 들어, 모델이 89%의 정확도를 가지며 오류 손실이 0.001인 경우 좋은 성능으로 간주될 수 있습니다. 그러나 오류는 데이터셋의 기본 분포에서 균일하게 분포되지 않을 수 있습니다. 모델이 89%의 정확도를 가지더라도 특정 데이터 영역에서 모델이 42%의 오류율을 보이는 경우를 발견할 수 있습니다. 특정 데이터 그룹에서 이러한 실패 패턴의 결과는 공정성 또는 신뢰성 문제로 이어질 수 있습니다. 모델이 잘 수행되는 영역과 그렇지 않은 영역을 이해하는 것이 중요합니다. 모델에서 부정확성이 높은 데이터 영역은 중요한 데이터 인구 통계로 판명될 수 있습니다.
![모델 오류 분석 및 디버깅](../../../../translated_images/ea-error-distribution.117452e1177c1dd84fab2369967a68bcde787c76c6ea7fdb92fcf15d1fce8206.ko.png)
![모델 오류 분석 및 디버깅](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png)
RAI 대시보드의 오류 분석 구성 요소는 트리 시각화를 통해 모델 오류가 다양한 코호트에 어떻게 분포되어 있는지 보여줍니다. 이를 통해 데이터셋에서 오류율이 높은 특성이나 영역을 식별하는 데 유용합니다. 모델의 부정확성이 주로 어디에서 발생하는지 확인함으로써 근본 원인을 조사할 수 있습니다. 또한 데이터를 코호트로 나누어 분석을 수행할 수 있습니다. 이러한 데이터 코호트는 특정 코호트에서 모델 성능이 좋은 이유와 다른 코호트에서 오류가 발생하는 이유를 파악하는 데 도움을 줍니다.
RAI 대시보드의 오류 분석 구성 요소는 트리 시각화를 통해 모델 실패가 다양한 코호트에 어떻게 분포되어 있는지 보여줍니다. 이는 데이터셋에서 오류율이 높은 특성이나 영역을 식별하는 데 유용합니다. 모델의 부정확성이 대부분 발생하는 위치를 확인함으로써 근본 원인을 조사하기 시작할 수 있습니다. 또한 데이터 코호트를 생성하여 분석을 수행할 수 있습니다. 이러한 데이터 코호트는 디버깅 과정에서 모델 성능이 한 코호트에서는 좋고 다른 코호트에서는 오류가 발생하는 이유를 결정하는 데 도움을 줍니다.
![오류 분석](../../../../translated_images/ea-error-cohort.6886209ea5d438c4daa8bfbf5ce3a7042586364dd3eccda4a4e3d05623ac702a.ko.png)
![오류 분석](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png)
트리 맵의 시각적 표시기는 문제 영역을 더 빠르게 찾을 수 있도록 도와줍니다. 예를 들어, 트리 노드의 빨간색 음영이 짙을수록 오류율이 높습니다.
트리 맵의 시각적 표시기는 문제 영역을 더 빠르게 찾는 데 도움을 줍니다. 예를 들어, 트리 노드의 빨간색이 더 짙을수록 오류율이 높습니다.
히트맵은 데이터셋 전체 또는 코호트에서 모델 오류의 기여 요인을 찾기 위해 하나 또는 두 개의 특성을 사용하여 오류율을 조사하는 또 다른 시각화 기능입니다.
히트맵은 전체 데이터셋 또는 코호트에서 모델 오류에 기여하는 요소를 찾기 위해 하나 또는 두 개의 특성을 사용하여 오류율을 조사할 수 있는 또 다른 시각화 기능입니다.
![오류 분석 히트맵](../../../../translated_images/ea-heatmap.8d27185e28cee3830c85e1b2e9df9d2d5e5c8c940f41678efdb68753f2f7e56c.ko.png)
![오류 분석 히트맵](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png)
오류 분석을 사용해야 할 때:
- 데이터셋 및 여러 입력 및 특성 차원에서 모델 오류가 어떻게 분포되어 있는지 깊이 이해하고자 할 때.
- 집계된 성능 지표를 세분화하여 오류가 있는 코호트를 자동으로 발견하고 이를 기반으로 목표 지향적인 완화 단계를 계획하고자 할 때.
* 데이터셋과 여러 입력 및 특성 차원에서 모델 실패가 어떻게 분포되어 있는지 깊이 이해합니다.
* 집계 성능 지표를 분해하여 오류가 있는 코호트를 자동으로 발견하고 목표로 하는 완화 단계를 알립니다.
## 모델 개요
머신러닝 모델의 성능을 평가하려면 모델의 행동을 전체적으로 이해해야 합니다. 이는 오류율, 정확도, 재현율, 정밀도, MAE(평균 절대 오차)와 같은 여러 지표를 검토하여 성능 지표 간의 격차를 발견함으로써 가능합니다. 하나의 성능 지표는 훌륭해 보일 수 있지만, 다른 지표에서 부정확성이 드러날 수 있습니다. 또한, 전체 데이터셋이나 코호트 간의 지표를 비교하면 모델이 잘 작동하는 영역과 그렇지 않은 영역을 파악하는 데 도움이 됩니다. 특히, 민감한 특성과 비민감한 특성(예: 환자의 인종, 성별, 나이) 간의 모델 성능을 비교하면 모델이 잠재적으로 불공정한 부분을 발견할 수 있습니다. 예를 들어, 민감한 특성을 가진 코호트에서 모델이 더 많은 오류를 보인다면, 이는 모델이 불공정할 가능성을 나타낼 수 있습니다.
머신 러닝 모델의 성능을 평가하려면 모델의 행동을 전체적으로 이해해야 합니다. 이는 오류율, 정확도, 재현율, 정밀도, MAE(평균 절대 오차)와 같은 여러 지표를 검토하여 성능 지표 간의 격차를 발견함으로써 가능합니다. 하나의 성능 지표는 훌륭해 보일 수 있지만 다른 지표에서 부정확성이 드러날 수 있습니다. 또한 전체 데이터셋 또는 코호트 간의 지표를 비교하여 모델이 잘 수행되는 영역과 그렇지 않은 영역을 밝히는 데 도움을 줍니다. 특히 민감한 특성과 비민감한 특성(예: 환자의 인종, 성별, 나이) 간의 모델 성능을 비교하여 모델이 가질 수 있는 잠재적 불공정성을 발견하는 데 중요합니다. 예를 들어, 민감한 특성을 가진 코호트에서 모델이 더 많은 오류를 보이는 경우, 이는 모델이 가질 수 있는 잠재적 불공정성을 드러낼 수 있습니다.
RAI 대시보드의 모델 개요 구성 요소는 데이터 코호트에서의 데이터 표현 성능 지표를 분석할 뿐만 아니라, 사용자가 서로 다른 코호트 간의 모델 행동을 비교할 수 있는 기능을 제공합니다.
RAI 대시보드의 모델 개요 구성 요소는 데이터 코호트에서 모델의 행동을 비교할 수 있는 기능을 제공할 뿐만 아니라 성능 지표를 분석하는 데 도움을 줍니다.
![RAI 대시보드의 데이터셋 코호트 - 모델 개요](../../../../translated_images/model-overview-dataset-cohorts.dfa463fb527a35a0afc01b7b012fc87bf2cad756763f3652bbd810cac5d6cf33.ko.png)
![RAI 대시보드의 데이터셋 코호트 - 모델 개요](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png)
이 구성 요소의 특성 기반 분석 기능은 사용자가 특정 특성 내의 데이터 하위 그룹을 세분화하여 세부적으로 이상치를 식별할 수 있도록 합니다. 예를 들어, 대시보드는 사용자가 선택한 특성(예: *"time_in_hospital < 3"* 또는 *"time_in_hospital >= 7"*)에 대해 자동으로 코호트를 생성하는 내장 지능을 제공합니다. 이를 통해 사용자는 더 큰 데이터 그룹에서 특정 특성을 분리하여 해당 특성이 모델의 부정확한 결과에 주요 영향을 미치는지 확인할 수 있습니다.
구성 요소의 특성 기반 분석 기능은 특정 특성 내에서 데이터 하위 그룹을 좁혀 세부적으로 이상 현상을 식별할 수 있도록 합니다. 예를 들어, 대시보드는 사용자가 선택한 특성(예: *"time_in_hospital < 3"* 또는 *"time_in_hospital >= 7"*)에 대해 자동으로 코호트를 생성하는 내장 지능을 가지고 있습니다. 이를 통해 사용자는 더 큰 데이터 그룹에서 특정 특성을 분리하여 모델의 오류 결과를 이끄는 주요 영향을 받는지 확인할 수 있습니다.
![RAI 대시보드의 특성 코호트 - 모델 개요](../../../../translated_images/model-overview-feature-cohorts.c5104d575ffd0c80b7ad8ede7703fab6166bfc6f9125dd395dcc4ace2f522f70.ko.png)
![RAI 대시보드의 특성 코호트 - 모델 개요](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png)
모델 개요 구성 요소는 두 가지 유형의 격차 지표를 지원합니다:
모델 개요 구성 요소는 두 가지 클래스의 격차 지표를 지원합니다:
**모델 성능의 격차**: 이 지표는 데이터 하위 그룹 간에 선택된 성능 지표 값의 격차(차이)를 계산합니다. 몇 가지 예는 다음과 같습니다:
**모델 성능의 격차**: 이러한 지표는 데이터 하위 그룹 간에 선택된 성능 지표 값의 격차(차이)를 계산합니다. 몇 가지 예는 다음과 같습니다:
- 정확도율의 격차
- 오류율의 격차
- 정밀도의 격차
- 재현율의 격차
- 평균 절대 오차(MAE)의 격차
* 정확도율의 격차
* 오류율의 격차
* 정밀도의 격차
* 재현율의 격차
* 평균 절대 오차(MAE)의 격차
**선택률의 격차**: 이 지표는 하위 그룹 간의 선택률(유리한 예측)의 차이를 포함합니다. 예를 들어, 대출 승인율의 격차가 이에 해당합니다. 선택률은 각 클래스에서 1로 분류된 데이터 포인트의 비율(이진 분류의 경우) 또는 예측 값의 분포(회귀의 경우)를 의미합니다.
**선택률의 격차**: 이 지표는 하위 그룹 간의 선택률(유리한 예측)의 차이를 포함합니다. 예를 들어, 대출 승인율의 격차가 이에 해당합니다. 선택률은 각 클래스에서 1로 분류된 데이터 포인트의 비율(이진 분류) 또는 예측 값의 분포(회귀)를 의미합니다.
## 데이터 분석
> "데이터를 충분히 괴롭히면, 원하는 답을 얻을 수 있다" - 로널드 코스
> "데이터를 충분히 고문하면, 원하는 어떤 결론도 얻을 수 있다" - 로널드 코스
이 말은 극단적으로 들릴 수 있지만, 데이터는 어떤 결론이든 지지하도록 조작될 수 있다는 점에서 사실입니다. 이러한 조작은 때로는 의도치 않게 발생하기도 합니다. 인간으로서 우리는 모두 편견을 가지고 있으며, 데이터를 다룰 때 자신이 편견을 도입하고 있는지 의식적으로 알기 어려운 경우가 많습니다. AI와 머신러닝에서 공정성을 보장하는 것은 여전히 복잡한 도전 과제입니다.
이 말은 극단적으로 들릴 수 있지만, 데이터는 어떤 결론 지지하도록 조작될 수 있다는 점에서 사실입니다. 이러한 조작은 때로는 의도치 않게 발생할 수 있습니다. 인간으로서 우리는 모두 편견을 가지고 있으며, 데이터를 다룰 때 편견을 의도적으로 도입하는지 알기 어려울 때가 많습니다. AI와 머신 러닝에서 공정성을 보장하는 것은 여전히 복잡한 과제입니다.
데이터는 전통적인 모델 성능 지표에서 큰 블라인드 스팟으로 작용합니다. 높은 정확도 점수를 가지고 있더라도, 이는 데이터셋에 내재된 편향을 항상 반영하지는 않습니다. 예를 들어, 한 회사의 임원직 데이터셋에 여성이 27%, 남성이 73%로 구성되어 있다면, 이 데이터를 기반으로 훈련된 구인 광고 AI 모델은 주로 남성 대상에게 고위직 채용 광고를 타겟팅할 가능성이 높습니다. 데이터의 이러한 불균형은 모델의 예측을 특정 성별에 유리하게 왜곡시켰습니다. 이는 AI 모델에 성별 편향이 존재하는 공정성 문제를 드러냅니다.
데이터는 전통적인 모델 성능 지표에서 큰 블라인드 스팟입니다. 높은 정확도 점수를 가질 수 있지만, 이는 데이터셋에 내재된 데이터 편향을 항상 반영하지는 않습니다. 예를 들어, 한 회사의 임원직에 있는 직원 데이터셋에서 여성은 27%, 남성은 73%인 경우, 이 데이터를 기반으로 훈련된 AI 모델은 주로 남성 대상에게 고위직 채용 광고를 타겟팅할 수 있습니다. 데이터의 이러한 불균형은 모델의 예측을 한 성별에 유리하게 왜곡시켰습니다. 이는 AI 모델에서 성별 편향이라는 공정성 문제를 드러냅니다.
RAI 대시보드의 데이터 분석 구성 요소는 데이터셋에서 과대 또는 과소 대표되는 영역을 식별하는 데 도움을 줍니다. 이를 통해 데이터 불균형이나 특정 데이터 그룹의 부족으로 인해 발생하는 오류와 공정성 문제의 근본 원인을 진단할 수 있습니다. 사용자는 예측 결과와 실제 결과, 오류 그룹, 특정 특성을 기반으로 데이터셋을 시각화할 수 있습니다. 때로는 과소 대표된 데이터 그룹을 발견함으로써 모델이 제대로 학습하지 못하고 있다는 사실을 알게 될 수도 있습니다. 데이터 편향이 있는 모델은 공정성 문제일 뿐만 아니라, 모델이 포괄적이거나 신뢰할 수 없음을 나타냅니다.
RAI 대시보드의 데이터 분석 구성 요소는 데이터셋에서 과잉 및 과소 대표가 있는 영역을 식별하는 데 도움을 줍니다. 데이터 불균형이나 특정 데이터 그룹의 대표 부족으로 인해 발생하는 오류와 공정성 문제의 근본 원인을 진단할 수 있습니다. 이를 통해 사용자는 예측 및 실제 결과, 오류 그룹, 특정 특성을 기반으로 데이터셋을 시각화할 수 있습니다. 때로는 대표되지 않은 데이터 그룹을 발견함으로써 모델이 잘 학습하지 못하고 높은 부정확성을 보이는 이유를 밝힐 수 있습니다. 데이터 편향이 있는 모델은 공정성 문제일 뿐만 아니라 모델이 포괄적이지 않거나 신뢰할 수 없음을 보여줍니다.
![RAI 대시보드의 데이터 분석 구성 요소](../../../../translated_images/dataanalysis-cover.8d6d0683a70a5c1e274e5a94b27a71137e3d0a3b707761d7170eb340dd07f11d.ko.png)
![RAI 대시보드의 데이터 분석 구성 요소](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png)
데이터 분석을 사용해야 할 때:
- 다양한 필터를 선택하여 데이터를 여러 차원(코호트)으로 나누어 데이터셋 통계를 탐색하고자 할 때.
- 데이터셋이 다양한 코호트와 특성 그룹에 걸쳐 어떻게 분포되어 있는지 이해하고자 할 때.
- 공정성, 오류 분석, 인과 관계(다른 대시보드 구성 요소에서 도출된)와 관련된 발견이 데이터셋의 분포로 인한 것인지 확인하고자 할 때.
- 대표성 문제, 레이블 노이즈, 특성 노이즈, 레이블 편향 등으로 인한 오류를 완화하기 위해 추가 데이터를 수집할 영역을 결정하고자 할 때.
* 다양한 필터를 선택하여 데이터를 다양한 차원(코호트라고도 함)으로 나누어 데이터셋 통계를 탐색합니다.
* 데이터셋의 분포를 다양한 코호트와 특성 그룹 간에 이해합니다.
* 공정성, 오류 분석, 인과 관계와 관련된 발견(다른 대시보드 구성 요소에서 도출된)이 데이터셋의 분포 결과인지 여부를 결정합니다.
* 대표성 문제, 라벨 노이즈, 특성 노이즈, 라벨 편향 및 유사한 요인으로 인해 발생하는 오류를 완화하기 위해 데이터를 추가로 수집할 영역을 결정합니다.
## 모델 해석 가능성
머신러닝 모델은 블랙박스로 간주되는 경우가 많습니다. 모델의 예측을 이끄는 주요 데이터 특성을 이해하는 것은 어려울 수 있습니다. 모델이 특정 예측을 내리는 이유를 투명하게 제공하는 것은 중요합니다. 예를 들어, AI 시스템이 당뇨병 환자가 30일 이내에 병원에 재입원할 위험이 있다고 예측한다면, 해당 예측을 뒷받침하는 데이터를 제공해야 합니다. 이러한 데이터 지표는 투명성을 제공하여 임상 나 병원이 잘-informed된 결정을 내릴 수 있도록 돕습니다. 또한, 개별 환자에 대한 모델의 예측 이유를 설명할 수 있는 것은 건강 규제와 관련된 책임성을 보장합니다. 사람들의 삶에 영향을 미치는 방식으로 머신러닝 모델을 사용할 때, 모델의 행동에 영향을 미치는 요인을 이해하고 설명하는 것이 중요합니다. 모델 해석 가능성과 설명 가능성은 다음과 같은 시나리오에서 질문에 답하는 데 도움을 줍니다:
머신 러닝 모델은 블랙박스처럼 작동하는 경향이 있습니다. 모델의 예측을 이끄는 주요 데이터 특성을 이해하는 것은 어려울 수 있습니다. 모델이 특정 예측을 내리는 이유에 대한 투명성을 제공하는 것이 중요합니다. 예를 들어, AI 시스템이 당뇨병 환자가 30일 이내에 병원에 재입원할 위험이 있다고 예측한다면, 예측을 뒷받침하는 데이터를 제공해야 합니다. 이러한 데이터 지표는 투명성을 제공하여 임상의나 병원이 잘-informed된 결정을 내릴 수 있도록 돕습니다. 또한, 개별 환자에 대한 모델의 예측 이유를 설명할 수 있는 것은 건강 규제와 관련하여 책임성을 제공합니다. 사람들의 삶에 영향을 미치는 방식으로 머신 러닝 모델을 사용할 때, 모델의 행동을 이끄는 요인을 이해하고 설명하는 것이 중요합니다. 모델의 설명 가능성과 해석 가능성은 다음과 같은 시나리오에서 질문에 답하는 데 도움을 줍니다:
- 모델 디버깅: 내 모델이 왜 이 오류를 발생시켰는가? 모델을 어떻게 개선할 수 있을까?
- 인간-AI 협업: 모델의 결정을 어떻게 이해하고 신뢰할 수 있을까?
- 규제 준수: 내 모델이 법적 요구 사항을 충족하는가?
* 모델 디버깅: 왜 내 모델이 이 실수를 했을까? 모델을 어떻게 개선할 수 있을까?
* 인간-AI 협업: 모델의 결정을 어떻게 이해하고 신뢰할 수 있을까?
* 규제 준수: 내 모델이 법적 요구 사항을 충족하는가?
RAI 대시보드의 특성 중요도 구성 요소는 모델이 예측을 내리는 방식을 디버깅하고 포괄적으로 이해하는 데 도움을 줍니다. 이는 머신러닝 전문가와 의사결정권자가 모델의 행동에 영향을 미치는 특성을 설명하고 규제 준수를 위해 증거를 제시하는 데 유용한 도구입니다. 사용자는 전역 및 로컬 설명을 탐색하여 모델의 예측에 영향을 미치는 특성을 검증할 수 있습니다. 전역 설명은 모델의 전체 예측에 영향을 미친 주요 특성을 나열합니다. 로컬 설명은 개별 사례에 대해 모델의 예측을 이끈 특성을 보여줍니다. 로컬 설명을 평가하는 기능은 특정 사례를 디버깅하거나 감사하여 모델이 정확하거나 부정확한 예측을 내린 이유를 더 잘 이해하고 해석하는 데 유용합니다.
RAI 대시보드의 특성 중요도 구성 요소는 모델이 예측을 내리는 방식을 디버깅하고 포괄적으로 이해하는 데 도움을 줍니다. 또한 머신 러닝 전문가와 의사 결정자가 모델의 행동에 영향을 미치는 특성을 규제 준수를 위해 설명하고 증거를 제시하는 데 유용한 도구입니다. 사용자는 글로벌 및 로컬 설명을 탐색하여 모델의 예측을 이끄는 특성을 검증할 수 있습니다. 글로벌 설명은 모델의 전체 예측에 영향을 미친 주요 특성을 나열합니다. 로컬 설명은 개별 사례에 대해 모델의 예측을 이끈 특성을 보여줍니다. 로컬 설명을 평가할 수 있는 기능은 특정 사례를 디버깅하거나 감사하는 데도 유용하며, 모델이 정확하거나 부정확한 예측을 내린 이유를 더 잘 이해하고 해석할 수 있습니다.
![RAI 대시보드의 특성 중요도 구성 요소](../../../../translated_images/9-feature-importance.cd3193b4bba3fd4bccd415f566c2437fb3298c4824a3dabbcab15270d783606e.ko.png)
![RAI 대시보드의 특성 중요도 구성 요소](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png)
- 전역 설명: 예를 들어, 당뇨병 병원 재입원 모델의 전체 행동에 영향을 미치는 특성은 무엇인가?
- 로컬 설명: 예를 들어, 60세 이상의 당뇨병 환자가 이전에 입원한 기록이 있는 경우, 병원에 30일 이내에 재입원할 것으로 예측된 이유는 무엇인가?
* 글로벌 설명: 예를 들어, 당뇨병 병원 재입원 모델의 전체 행동에 영향을 미치는 특성은 무엇인가?
* 로컬 설명: 예를 들어, 왜 60세 이상의 당뇨병 환자가 이전 입원 기록이 있는 경우 30일 이내에 병원에 재입원하거나 재입원하지 않을 것으로 예측되었는가?
다양한 코호트에서 모델의 성능을 조사하는 디버깅 과정에서, 특성 중요도는 특정 특성이 코호트 전반에서 모델의 예측에 어떤 수준의 영향을 미치는지 보여줍니다. 이는 모델의 부정확한 예측을 유도하는 특성의 영향 수준을 비교할 때 이상치를 드러내는 데 도움을 줍니다. 특성 중요도 구성 요소는 특정 특성 값이 모델의 결과에 긍정적 또는 부정적으로 영향을 미쳤는지 보여줄 수 있습니다. 예를 들어, 모델이 부정확한 예측을 내린 경우, 이 구성 요소는 예측을 유도한 특성 또는 특성 값을 세부적으로 조사하고 식별할 수 있는 기능을 제공합니다. 이러한 세부 수준은 디버깅뿐만 아니라 감사 상황에서 투명성과 책임성을 제공하는 데 유용합니다. 마지막으로, 이 구성 요소는 공정성 문제를 식별하는 데 도움을 줄 수 있습니다. 예를 들어, 민감한 특성(예: 인종 또는 성별)이 모델의 예측에 크게 영향을 미친다면, 이는 모델에 인종 또는 성별 편향이 있을 가능성을 나타낼 수 있습니다.
다양한 코호트에서 모델의 성능을 조사하는 디버깅 과정에서 특성 중요도는 코호트 간에 특성이 어떤 수준으로 영향을 미치는지 보여줍니다. 이는 모델의 부정확한 예측을 이끄는 특성의 영향 수준을 비교할 때 이상 현상을 드러내는 데 도움을 줍니다. 특성 중요도 구성 요소는 특성 값이 모델의 결과에 긍정적 또는 부정적으로 영향을 미친 정도를 보여줄 수 있습니다. 예를 들어, 모델이 부정확한 예측을 내린 경우, 구성 요소는 예측을 이끈 특성이나 특성 값을 세부적으로 조사하고 식별할 수 있는 기능을 제공합니다. 이러한 세부 수준은 디버깅뿐만 아니라 감사 상황에서 투명성과 책임성을 제공하는 데 도움을 줍니다. 마지막으로, 구성 요소는 공정성 문제를 식별하는 데 도움을 줄 수 있습니다. 예를 들어, 민감한 특성(예: 인종 또는 성별)이 모델의 예측을 이끄는 데 높은 영향을 미친다면, 이는 모델에 인종 또는 성별 편향이 있을 가능성을 나타낼 수 있습니다.
![특성 중요도](../../../../translated_images/9-features-influence.3ead3d3f68a84029f1e40d3eba82107445d3d3b6975d4682b23d8acc905da6d0.ko.png)
![특성 중요도](../../../../9-Real-World/2-Debugging-ML-Models/images/9-features-influence.png)
해석 가능성을 사용해야 할 때:
- 모델의 예측이 얼마나 신뢰할 수 있는지, 예측에 가장 중요한 특성이 무엇인지 이해하고자 할 때.
- 모델을 먼저 이해하고, 모델이 건강한 특성을 사용하는지 아니면 단순히 잘못된 상관관계를 사용하는지 식별하여 디버깅을 시작하고자 할 때.
- 모델이 민감한 특성이나 이와 높은 상관관계를 가진 특성을 기반으로 예측을 내리는지 이해하여 잠재적인 불공정성을 발견하고자 할 때.
- 로컬 설명을 생성하여 모델의 결과를 설명하고 사용자 신뢰를 구축하고자 할 때.
- AI 시스템의 규제 감사를 완료하여 모델을 검증하고 모델 결정이 인간에게 미치는 영향을 모니터링하고자 할 때.
* 모델의 예측이 얼마나 신뢰할 수 있는지 판단하기 위해 예측에 가장 중요한 특성을 이해합니다.
* 모델을 먼저 이해하고 모델이 건강한 특성을 사용하는지 아니면 단순히 잘못된 상관관계를 사용하는지 식별하여 디버깅 접근 방식을 취합니다.
* 모델이 민감한 특성이나 민감한 특성과 높은 상관관계를 가진 특성을 기반으로 예측을 내리는지 이해하여 잠재적 불공정성의 원인을 밝힙니다.
* 로컬 설명을 생성하여 결과를 설명함으로써 모델의 결정에 대한 사용자 신뢰를 구축합니다.
* AI 시스템의 규제 감사를 완료하여 모델을 검증하고 모델 결정이 인간에게 미치는 영향을 모니터링합니다.
## 결론
RAI 대시보드의 모든 구성 요소는 사회에 덜 해롭고 더 신뢰할 수 있는 머신러닝 모델을 구축하는 데 도움을 주는 실용적인 도구입니다. 이는 인권에 대한 위협을 예방하고, 특정 그룹을 생애 기회에서 차별하거나 배제하는 것을 방지하며, 신체적 또는 심리적 피해의 위험을 줄이는 데 기여합니다. 또한, 로컬 설명을 생성하여 모델의 결과를 설명함으로써 모델 결정에 대한 신뢰를 구축하는 데 도움을 줍니다. 잠재적인 해악은 다음과 같이 분류될 수 있습니다:
RAI 대시보드의 모든 구성 요소는 사회에 덜 해롭고 더 신뢰할 수 있는 머신 러닝 모델을 구축하는 데 도움을 주는 실용적인 도구입니다. 이는 인권 위협을 예방하고, 특정 그룹을 생애 기회에서 차별하거나 배제하는 것을 방지하며, 신체적 또는 심리적 손상의 위험을 줄이는 데 기여합니다. 또한 모델의 결정을 설명하는 로컬 설명을 생성하여 모델에 대한 신뢰를 구축하는 데 도움을 줍니다. 잠재적 해로움은 다음과 같이 분류될 수 있습니다:
- **할당**: 예를 들어, 특정 성별이나 인종이 다른 성별이나 인종보다 선호되는 경우.
- **서비스 품질**: 특정 시나리오에 맞춰 데이터를 훈련했지만, 실제 상황이 훨씬 더 복잡한 경우, 이는 성능이 낮은 서비스로 이어질 수 있습니다.
- **고정관념화**: 특정 그룹을 미리 정해진 속성과 연관시키는 경우.
- **하**: 특정 대상이나 사람을 부당하게 비판하고 낙인찍는 경우.
- **과도하거나 부족한 표현**. 특정 그룹이 특정 직업에서 보이지 않는다는 아이디어는, 그러한 상황을 계속 촉진하는 모든 서비스나 기능이 해를 끼치는 데 기여한다는 것을 의미합니다.
- **서비스 품질**: 특정 시나리오에 대해 데이터를 훈련했지만 현실은 훨씬 더 복잡한 경우, 이는 성능이 낮은 서비스를 초래합니다.
- **고정관념**: 특정 그룹을 미리 할당된 속성과 연관시키는 경우.
- **난**: 부당하게 비판하거나 특정 대상이나 사람을 낙인찍는 경우.
- **과도하거나 부족한 대표성**. 특정 그룹이 특정 직업에서 보이지 않는다는 개념이며, 이를 지속적으로 촉진하는 모든 서비스나 기능은 해를 끼치는 데 기여합니다.
### Azure RAI 대시보드
[Azure RAI 대시보드](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)는 Microsoft를 포함한 주요 학술 기관 및 조직에서 개발한 오픈 소스 도구를 기반으로 구축되었습니다. 이는 데이터 과학자와 AI 개발자가 모델의 동작을 더 잘 이해하고, AI 모델에서 발생할 수 있는 바람직하지 않은 문제를 발견하고 완화하는 데 중요한 역할을 합니다.
[Azure RAI 대시보드](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)는 Microsoft를 포함한 주요 학술 기관 및 조직에서 개발한 오픈 소스 도구를 기반으로 하며, 데이터 과학자와 AI 개발자가 모델의 동작을 더 잘 이해하고 AI 모델에서 발생하는 바람직하지 않은 문제를 발견하고 완화하는 데 도움을 줍니다.
- RAI 대시보드 [문서](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)를 확인하여 다양한 구성 요소를 사용하는 방법을 배워보세요.
@ -142,28 +142,28 @@ RAI 대시보드의 모든 구성 요소는 사회에 덜 해롭고 더 신뢰
---
## 🚀 도전
통계적 또는 데이터 편향이 처음부터 도입되지 않도록 하기 위해 우리는 다음을 수행해야 합니다:
통계적 또는 데이터 편향이 처음부터 도입되지 않도록 하기 위해 우리는 다음을 해야 합니다:
- 시스템 작업에 참여하는 사람들의 배경과 관점을 다양화하기
- 우리 사회의 다양성을 반영하는 데이터셋에 투자하기
- 편향이 발생했을 때 이를 감지하고 수정하는 더 나은 방법 개발하기
모델 구축 및 사용에서 불공정이 명백한 실제 시나리오를 생각해보세요. 우리가 또 무엇을 고려해야 할까요?
모델 구축 및 사용에서 불공정이 명백한 실제 시나리오를 생각해보세요. 우리가 또 무엇을 고려해야 할까요?
## [강의 후 퀴즈](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/)
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
## 복습 및 자기 학습
이 강의에서는 머신 러닝에서 책임 있는 AI를 통합하는 몇 가지 실용적인 도구를 배웠습니다.
강의에서는 머신러닝에서 책임 있는 AI를 통합하는 실용적인 도구를 배웠습니다.
이 워크숍을 시청하여 주제를 더 깊이 탐구하세요:
다음 워크숍을 시청하여 주제를 더 깊이 탐구해보세요:
- 책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션, Besmira Nushi와 Mehrnoosh Sameki
- 책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션 by Besmira Nushi와 Mehrnoosh Sameki
[![책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션")
> 🎥 위 이미지를 클릭하면 Besmira Nushi와 Mehrnoosh Sameki "책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션" 비디오를 볼 수 있습니다.
> 🎥 위 이미지를 클릭하면 Besmira Nushi와 Mehrnoosh Sameki가 발표한 "책임 있는 AI 대시보드: 실무에서 RAI를 운영화하기 위한 원스톱 솔루션" 비디오를 볼 수 있습니다.
책임 있는 AI와 더 신뢰할 수 있는 모델을 구축하는 방법에 대해 더 알아보려면 다음 자료를 참하세요:
책임 있는 AI와 더 신뢰할 수 있는 모델을 구축하는 방법에 대해 더 알아보려면 다음 자료를 참하세요:
- ML 모델 디버깅을 위한 Microsoft의 RAI 대시보드 도구: [책임 있는 AI 도구 리소스](https://aka.ms/rai-dashboard)
@ -171,13 +171,13 @@ RAI 대시보드의 모든 구성 요소는 사회에 덜 해롭고 더 신뢰
- Microsoft의 RAI 리소스 센터: [책임 있는 AI 리소스 Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsoft의 FATE 연구 그룹: [FATE: 공정성, 책임성, 투명성, AI 윤리 - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
- Microsoft의 FATE 연구 그룹: [FATE: 공정성, 책임성, 투명성, 윤리성 in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## 과제
[RAI 대시보드 탐색](assignment.md)
[RAI 대시보드 탐색하기](assignment.md)
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생할 수 있는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.

@ -1,8 +1,8 @@
<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "b79add6cc71cc7468fa23c9cf42f2327",
"translation_date": "2025-09-03T22:07:08+00:00",
"original_hash": "612aef7a03204260e940131b09691977",
"translation_date": "2025-09-05T10:36:43+00:00",
"source_file": "README.md",
"language_code": "ko"
}
@ -27,21 +27,21 @@ CO_OP_TRANSLATOR_METADATA:
[![Azure AI Discord](https://dcbadge.limes.pink/api/server/kzRShWzttr)](https://discord.gg/kzRShWzttr)
# 초보자를 위한 머신 러닝 - 커리큘럼
# 초보자를 위한 머신러닝 - 커리큘럼
> 🌍 세계 문화를 통해 머신 러닝을 탐구하며 세계를 여행하세요 🌍
> 🌍 세계 문화를 통해 머신러닝을 탐구하며 세계를 여행하세요 🌍
Microsoft의 클라우드 옹호자들**머신 러닝**에 관한 12주, 26강의 커리큘럼을 기쁘게 제공합니다. 이 커리큘럼에서는 주로 Scikit-learn 라이브러리를 사용하여 **클래식 머신 러닝**이라고 불리는 것을 배우며, [AI for Beginners 커리큘럼](https://aka.ms/ai4beginners)에서 다루는 딥 러닝은 제외합니다. 이 강의는 ['Data Science for Beginners' 커리큘럼](https://aka.ms/ds4beginners)과 함께 활용할 수 있습니다!
Microsoft의 클라우드 옹호자들**머신러닝**에 관한 12주, 26강의 커리큘럼을 제공합니다. 이 커리큘럼에서는 주로 Scikit-learn 라이브러리를 사용하여 **클래식 머신러닝**이라고 불리는 것을 배우며, [AI for Beginners 커리큘럼](https://aka.ms/ai4beginners)에서 다루는 딥러닝은 제외합니다. 이 강의는 ['Data Science for Beginners' 커리큘럼](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
**🎨 삽화가들에게도 감사** Tomomi Imura, Dasani Madipalli, Jen Looper
**🎨 일러스트레이터들에게도 감사** Tomomi Imura, Dasani Madipalli, Jen Looper
**🙏 Microsoft Student Ambassador 저자, 리뷰어, 콘텐츠 기여자들에게 특별히 감사드립니다** 특히 Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, Snigdha Agarwal
**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Gupta에게 R 강의에 대한 추가 감사!**
**🤩 Microsoft Student Ambassadors Eric Wanjau, Jasleen Sondhi, Vidushi Gupta에게 R 강의에 대한 추가 감사!**
# 시작하기
@ -51,7 +51,7 @@ Microsoft의 클라우드 옹호자들은 **머신 러닝**에 관한 12주, 26
> [이 과정에 대한 추가 리소스를 Microsoft Learn 컬렉션에서 찾으세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
**[학생들](https://aka.ms/student-page)**, 이 커리큘럼을 사용하려면 전체 저장소를 자신의 GitHub 계정으로 포크하고 혼자 또는 그룹으로 연습을 완료하세요:
**[학생들](https://aka.ms/student-page)**, 이 커리큘럼을 사용하려면 전체 저장소를 자신의 GitHub 계정으로 포크하고 혼자 또는 그룹과 함께 연습을 완료하세요:
- 강의 전 퀴즈로 시작하세요.
- 강의를 읽고 활동을 완료하며 각 지식 확인에서 멈추고 반성하세요.
@ -59,7 +59,7 @@ Microsoft의 클라우드 옹호자들은 **머신 러닝**에 관한 12주, 26
- 강의 후 퀴즈를 풀어보세요.
- 도전을 완료하세요.
- 과제를 완료하세요.
- 강의 그룹을 완료한 후 [토론 게시판](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) 모듈과 학습 경로를 따르기를 권장합니다.
@ -69,9 +69,9 @@ Microsoft의 클라우드 옹호자들은 **머신 러닝**에 관한 12주, 26
## 비디오 워크스루
일부 강의는 짧은 형식의 비디오로 제공됩니다. 이러한 비디오는 강의 내에서 인라인으로 찾을 수 있으며, [Microsoft Developer YouTube 채널의 ML for Beginners 재생 목록](https://aka.ms/ml-beginners-videos)에서 아래 이미지를 클릭하여 확인할 수 있습니다.
일부 강의는 짧은 형식의 비디오로 제공됩니다. 이 비디오는 강의 내에서 인라인으로 찾을 수 있으며, [Microsoft Developer YouTube 채널의 ML for Beginners 재생 목록](https://aka.ms/ml-beginners-videos)에서 아래 이미지를 클릭하여 확인할 수 있습니다.
[![ML for beginners banner](../../translated_images/ml-for-beginners-video-banner.63f694a100034bc6251134294459696e070a3a9a04632e9fe6a24aa0de4a7384.ko.png)](https://aka.ms/ml-beginners-videos)
[![ML for beginners banner](../../images/ml-for-beginners-video-banner.png)](https://aka.ms/ml-beginners-videos)
---
@ -87,70 +87,70 @@ Microsoft의 클라우드 옹호자들은 **머신 러닝**에 관한 12주, 26
## 교육 방법론
이 커리큘럼을 제작하면서 두 가지 교육 방법론을 선택했습니다: **프로젝트 기반** 학습과 **빈번한 퀴즈** 포함. 또한, 커리큘럼에 공통 **테마**를 포함하여 일관성을 유지했습니다.
이 커리큘럼을 제작하면서 두 가지 교육 방법론을 선택했습니다: **프로젝트 기반** 학습과 **빈번한 퀴즈**를 포함하는 것입니다. 또한, 이 커리큘럼은 공통 **테마**를 포함하여 일관성을 제공합니다.
프로젝트와 연계된 콘텐츠를 보장함으로써 학습 과정이 학생들에게 더 흥미롭고 개념의 유지력이 향상됩니다. 또한, 수업 전 저위험 퀴즈는 학생이 주제를 학습할 의도를 설정하게 하며, 수업 후 두 번째 퀴즈는 개념의 추가 유지력을 보장합니다. 이 커리큘럼은 유연하고 재미있게 설계되었으며 전체 또는 일부로 수강할 수 있습니다. 프로젝트는 작게 시작하여 12주 과정이 끝날 때 점점 복잡해집니다. 이 커리큘럼은 또한 ML의 실제 응용에 대한 후기를 포함하며, 이는 추가 학점으로 사용하거나 토론의 기초로 용할 수 있습니다.
프로젝트와 연계된 콘텐츠를 보장함으로써 학습 과정이 학생들에게 더 흥미롭고 개념의 유지력이 향상됩니다. 또한, 수업 전 저위험 퀴즈는 학생이 주제를 학습할 의도를 설정하며, 수업 후 두 번째 퀴즈는 개념의 추가 유지력을 보장합니다. 이 커리큘럼은 유연하고 재미있게 설계되었으며 전체 또는 일부로 학습할 수 있습니다. 프로젝트는 작게 시작하여 12주 과정이 끝날 때 점점 복잡해집니다. 이 커리큘럼은 또한 ML의 실제 응용에 대한 후기를 포함하며, 이는 추가 학점으로 사용하거나 토론의 기초로 용할 수 있습니다.
> [행동 강령](CODE_OF_CONDUCT.md), [기여](CONTRIBUTING.md), [번역](TRANSLATIONS.md) 지침을 확인하세요. 건설적인 피드백을 환영합니다!
> [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), [Translation](TRANSLATIONS.md) 지침을 확인하세요. 건설적인 피드백을 환영합니다!
## 각 강의에는 다음이 포함됩니다
- 선택적 스케치노트
- 선택적 보충 비디오
- 비디오 워크스루 (일부 강의만 해당)
- 강의 전 워밍업 퀴즈
- [강의 전 워밍업 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
- 작성된 강의
- 프로젝트 기반 강의의 경우, 프로젝트를 구축하는 단계별 가이드
- 지식 확인
- 도전 과제
- 보충 읽기 자료
- 과제
- 강의 후 퀴즈
- [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
> **언어에 대한 참고 사항**: 이 강의는 주로 Python으로 작성되었지만, 많은 강의가 R도 제공됩니다. R 강의를 완료하려면 `/solution` 폴더로 이동하여 R 강의를 찾으세요. 이들은 `.rmd` 확장자를 포함하며, 이는 `코드 청크`(R 또는 기타 언어)와 `YAML 헤더`(PDF와 같은 출력 형식을 안내)를 `Markdown 문서`에 포함하는 것을 나타냅니다. 따라서 데이터 과학을 위한 뛰어난 저작 프레임워크로 작동하며, 코드, 출력, 생각을 Markdown에 작성할 수 있도록 합니다. 또한, R Markdown 문서는 PDF, HTML, Word와 같은 출력 형식으로 렌더링할 수 있습니다.
> **언어에 대한 참고 사항**: 이 강의는 주로 Python으로 작성되었지만, 많은 강의가 R에서도 제공됩니다. R 강의를 완료하려면 `/solution` 폴더로 이동하여 R 강의를 찾으세요. 이 강의는 `.rmd` 확장자를 포함하며, 이는 `Markdown 문서``코드 청크`(R 또는 다른 언어)와 `YAML 헤더`(PDF와 같은 출력 형식을 안내)를 포함하는 **R Markdown** 파일을 나타냅니다. 따라서 코드, 출력, 생각을 Markdown에 작성할 수 있어 데이터 과학을 위한 훌륭한 저작 프레임워크로 작용합니다. 또한, R Markdown 문서는 PDF, HTML, Word와 같은 출력 형식으로 렌더링될 수 있습니다.
> **퀴즈에 대한 참고 사항**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 포함되어 있으며, 총 52개의 퀴즈가 각 3문제로 구성되어 있습니다. 강의 내에서 링크되어 있지만, `quiz-app` 폴더의 지침을 따라 로컬에서 실행하거나 Azure에 배포할 수 있습니다.
> **퀴즈에 대한 참고 사항**: 모든 퀴즈는 [Quiz App 폴더](../../quiz-app)에 포함되어 있으며, 총 52개의 퀴즈가 각 3개의 질문으로 구성되어 있습니다. 강의 내에서 링크되어 있지만, `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 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와 Jen |
| 05 | 회귀 분석 소개 | [Regression](2-Regression/README.md) | 회귀 모델을 위해 Python과 Scikit-learn 시작하기 |
| 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 | 머신 러닝 기술 | [Introduction](1-Introduction/README.md) | 머신 러닝 연구자들이 ML 모델을 구축할 때 사용하는 기술은 무엇일까요? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris와 Jen |
| 05 | 회귀 소개 | [Regression](2-Regression/README.md) | 회귀 모델을 위해 Python과 Scikit-learn을 시작해보세요 |
<ul><li>[Python](2-Regression/1-Tools/README.md)</li><li>[R](../../2-Regression/1-Tools/solution/R/lesson_1.html)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 06 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 머신러닝 준비를 위해 데이터 시각화 및 정리 | <ul><li>[Python](2-Regression/2-Data/README.md)</li><li>[R](../../2-Regression/2-Data/solution/R/lesson_2.html)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 07 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 선형 및 다항 회귀 모델 구축 | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](../../2-Regression/3-Linear/solution/R/lesson_3.html)</li></ul> | <ul><li>Jen and Dmitry</li><li>Eric Wanjau</li></ul> |
| 08 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 로지스틱 회귀 모델 구축 | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](../../2-Regression/4-Logistic/solution/R/lesson_4.html)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | 웹 앱 🔌 | [Web App](3-Web-App/README.md) | 학습된 모델을 사용하는 웹 앱 구축 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 분류 소개 | [Classification](4-Classification/README.md) | 데이터 정리, 준비 및 시각화; 분류 소개 | <ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 분류기 소개 | <ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 추가 분류기 | <ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | <ul><li>Jen and Cassie</li><li>Eric Wanjau</li></ul> |
| 13 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 모델을 사용하여 추천 웹 앱 구축 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 클러스터링 소개 | [Clustering](5-Clustering/README.md) | 데이터 정리, 준비 및 시각화; 클러스터링 소개 | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 15 | 나이지리아 음악 취향 탐구 🎧 | [Clustering](5-Clustering/README.md) | K-Means 클러스터링 방법 탐구 | <ul><li> [Python](5-Clustering/2-K-Means/README.md)</li><li>[R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 16 | 자연어 처리 소개 ☕️ | [Natural language processing](6-NLP/README.md) | 간단한 봇을 구축하며 NLP 기본 학습 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 일반적인 NLP 작업 ☕️ | [Natural language processing](6-NLP/README.md) | 언어 구조를 다룰 때 필요한 일반적인 작업을 이해하며 NLP 지식 심화 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 번역 및 감정 분석 ♥️ | [Natural language processing](6-NLP/README.md) | 제인 오스틴과 함께 번역 및 감정 분석 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 유럽의 로맨틱 호텔 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 유럽의 로맨틱 호텔 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 시계열 예측 소개 | [Time series](7-TimeSeries/README.md) | 시계열 예측 소개 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 세계 전력 사용 ⚡️ - ARIMA를 활용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | ARIMA를 활용한 시계열 예측 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 세계 전력 사용 ⚡️ - SVR을 활용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | 서포트 벡터 회귀를 활용한 시계열 예측 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 강화 학습 소개 | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning을 활용한 강화 학습 소개 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 피터가 늑대를 피하도록 도와주세요! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 강화 학습 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | 실제 머신러닝 시나리오 및 응용 | [ML in the Wild](9-Real-World/README.md) | 고전적인 머신러닝의 흥미롭고 유익한 실제 응용 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | RAI 대시보드를 활용한 ML 모델 디버깅 | [ML in the Wild](9-Real-World/README.md) | 책임 있는 AI 대시보드 구성 요소를 활용한 머신러닝 모델 디버깅 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [이 과정의 추가 리소스를 Microsoft Learn 컬렉션에서 확인하세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 오프라인 액세스
[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인에서 실행할 수 있습니다. 이 저장소를 포크하고, 로컬 머신에 [Docsify 설치](https://docsify.js.org/#/quickstart)를 완료한 후, 이 저장소의 루트 폴더에서 `docsify serve`를 입력하세요. 웹사이트는 localhost의 포트 3000에서 제공됩니다: `localhost:3000`.
| 06 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 머신 러닝 준비를 위해 데이터를 시각화하고 정리하세요 | <ul><li>[Python](2-Regression/2-Data/README.md)</li><li>[R](../../2-Regression/2-Data/solution/R/lesson_2.html)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 07 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 선형 및 다항 회귀 모델 구축하세요 | <ul><li>[Python](2-Regression/3-Linear/README.md)</li><li>[R](../../2-Regression/3-Linear/solution/R/lesson_3.html)</li></ul> | <ul><li>Jen Dmitry</li><li>Eric Wanjau</li></ul> |
| 08 | 북미 호박 가격 🎃 | [Regression](2-Regression/README.md) | 로지스틱 회귀 모델 구축하세요 | <ul><li>[Python](2-Regression/4-Logistic/README.md) </li><li>[R](../../2-Regression/4-Logistic/solution/R/lesson_4.html)</li></ul> | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 09 | 웹 앱 🔌 | [Web App](3-Web-App/README.md) | 학습된 모델을 활용할 웹 앱을 구축하세요 | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | 분류 소개 | [Classification](4-Classification/README.md) | 데이터를 정리, 준비, 시각화하고 분류를 소개합니다 | <ul><li> [Python](4-Classification/1-Introduction/README.md) </li><li>[R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | <ul><li>Jen Cassie</li><li>Eric Wanjau</li></ul> |
| 11 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 분류기 소개합니다 | <ul><li> [Python](4-Classification/2-Classifiers-1/README.md)</li><li>[R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | <ul><li>Jen Cassie</li><li>Eric Wanjau</li></ul> |
| 12 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 추가 분류기를 소개합니다 | <ul><li> [Python](4-Classification/3-Classifiers-2/README.md)</li><li>[R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | <ul><li>Jen Cassie</li><li>Eric Wanjau</li></ul> |
| 13 | 맛있는 아시아 및 인도 요리 🍜 | [Classification](4-Classification/README.md) | 모델을 사용하여 추천 웹 앱 구축하세요 | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | 클러스터링 소개 | [Clustering](5-Clustering/README.md) | 데이터를 정리, 준비, 시각화하고 클러스터링을 소개합니다 | <ul><li> [Python](5-Clustering/1-Visualize/README.md)</li><li>[R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 15 | 나이지리아 음악 취향 탐구 🎧 | [Clustering](5-Clustering/README.md) | K-Means 클러스터링 방법을 탐구합니다 | <ul><li> [Python](5-Clustering/2-K-Means/README.md)</li><li>[R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | <ul><li>Jen</li><li>Eric Wanjau</li></ul> |
| 16 | 자연어 처리 소개 ☕️ | [Natural language processing](6-NLP/README.md) | 간단한 봇을 구축하며 NLP의 기본을 배워보세요 | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | 일반적인 NLP 작업 ☕️ | [Natural language processing](6-NLP/README.md) | 언어 구조를 다룰 때 필요한 일반적인 작업을 이해하며 NLP 지식 심화합니다 | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | 번역 및 감정 분석 ♥️ | [Natural language processing](6-NLP/README.md) | 제인 오스틴의 작품을 활용한 번역 및 감정 분석 | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | 유럽의 로맨틱 호텔 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | 유럽의 로맨틱 호텔 ♥️ | [Natural language processing](6-NLP/README.md) | 호텔 리뷰를 활용한 감정 분석 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | 시계열 예측 소개 | [Time series](7-TimeSeries/README.md) | 시계열 예측 소개 | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ 세계 전력 사용 ⚡️ - ARIMA를 활용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | ARIMA를 활용한 시계열 예측 | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ 세계 전력 사용 ⚡️ - SVR을 활용한 시계열 예측 | [Time series](7-TimeSeries/README.md) | 서포트 벡터 회귀를 활용한 시계열 예측 | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | 강화 학습 소개 | [Reinforcement learning](8-Reinforcement/README.md) | Q-Learning을 활용한 강화 학습 소개 | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | 피터가 늑대를 피하도록 도와주세요! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | 강화 학습 Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Postscript | 실제 ML 시나리오 및 응용 | [ML in the Wild](9-Real-World/README.md) | 고전적인 머신 러닝의 흥미롭고 유익한 실제 응용 사례 | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | RAI 대시보드를 활용한 ML 모델 디버깅 | [ML in the Wild](9-Real-World/README.md) | 책임 있는 AI 대시보드 구성 요소를 활용한 머신 러닝 모델 디버깅 | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [이 과정의 추가 자료는 Microsoft Learn 컬렉션에서 확인하세요](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## 오프라인 접근
[Docsify](https://docsify.js.org/#/)를 사용하여 이 문서를 오프라인에서 실행할 수 있습니다. 이 저장소를 포크하고, 로컬 머신에 [Docsify 설치](https://docsify.js.org/#/quickstart)한 후, 이 저장소의 루트 폴더에서 `docsify serve`를 입력하세요. 웹사이트는 localhost의 포트 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)에서 찾을 수 있습니다.
## 🎒 다른 과정들
@ -174,4 +174,4 @@ Microsoft의 클라우드 옹호자들은 **머신 러닝**에 관한 12주, 26
---
**면책 조항**:
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
Loading…
Cancel
Save