You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
26 KiB
226 lines
26 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"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 का उपयोग करके एक रिग्रेशन मॉडल बनाएं: डेटा तैयार करें और विज़ुअलाइज़ करें
|
|
|
|

|
|
|
|
इन्फोग्राफिक: [दसानी मडिपल्ली](https://twitter.com/dasani_decoded)
|
|
|
|
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
|
|
|
|
## परिचय
|
|
|
|
अब जब आपके पास 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://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) से निकाला गया है, जिसे संयुक्त राज्य अमेरिका के कृषि विभाग द्वारा वितरित किया गया है।
|
|
|
|
### डेटा तैयार करना
|
|
|
|
यह डेटा सार्वजनिक डोमेन में है। इसे USDA वेबसाइट से कई अलग-अलग फ़ाइलों में, प्रत्येक शहर के लिए, डाउनलोड किया जा सकता है। बहुत अधिक अलग-अलग फ़ाइलों से बचने के लिए, हमने सभी शहरों के डेटा को एक स्प्रेडशीट में जोड़ दिया है, इस प्रकार हमने पहले ही डेटा को थोड़ा _तैयार_ कर लिया है। अब, आइए डेटा को करीब से देखें।
|
|
|
|
### कद्दू का डेटा - प्रारंभिक निष्कर्ष
|
|
|
|
आप इस डेटा के बारे में क्या नोटिस करते हैं? आपने पहले ही देखा है कि इसमें स्ट्रिंग्स, नंबर, खाली स्थान और अजीब मानों का मिश्रण है, जिसे आपको समझने की आवश्यकता है।
|
|
|
|
आप इस डेटा से कौन सा सवाल पूछ सकते हैं, रिग्रेशन तकनीक का उपयोग करके? उदाहरण के लिए, "किसी दिए गए महीने में बिक्री के लिए कद्दू की कीमत का अनुमान लगाएं।" डेटा को फिर से देखते हुए, आपको डेटा संरचना बनाने के लिए कुछ बदलाव करने होंगे जो इस कार्य के लिए आवश्यक है।
|
|
|
|
## अभ्यास - कद्दू के डेटा का विश्लेषण करें
|
|
|
|
आइए [Pandas](https://pandas.pydata.org/) का उपयोग करें, (जिसका नाम `Python Data Analysis` के लिए है) जो डेटा को आकार देने के लिए बहुत उपयोगी टूल है, इस कद्दू के डेटा का विश्लेषण और तैयारी करने के लिए।
|
|
|
|
### सबसे पहले, गायब तारीखों की जांच करें
|
|
|
|
आपको सबसे पहले गायब तारीखों की जांच करने के लिए कदम उठाने होंगे:
|
|
|
|
1. तारीखों को महीने के प्रारूप में बदलें (ये US तारीखें हैं, इसलिए प्रारूप `MM/DD/YYYY` है)।
|
|
2. महीने को एक नए कॉलम में निकालें।
|
|
|
|
Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें और स्प्रेडशीट को एक नए Pandas डेटा फ्रेम में आयात करें।
|
|
|
|
1. पहले पांच पंक्तियों को देखने के लिए `head()` फ़ंक्शन का उपयोग करें।
|
|
|
|
```python
|
|
import pandas as pd
|
|
pumpkins = pd.read_csv('../data/US-pumpkins.csv')
|
|
pumpkins.head()
|
|
```
|
|
|
|
✅ आप अंतिम पांच पंक्तियों को देखने के लिए कौन सा फ़ंक्शन उपयोग करेंगे?
|
|
|
|
1. वर्तमान डेटा फ्रेम में गायब डेटा की जांच करें:
|
|
|
|
```python
|
|
pumpkins.isnull().sum()
|
|
```
|
|
|
|
डेटा गायब है, लेकिन शायद यह वर्तमान कार्य के लिए मायने नहीं रखता।
|
|
|
|
1. अपने डेटा फ्रेम को काम करने में आसान बनाने के लिए, केवल उन कॉलमों का चयन करें जिनकी आपको आवश्यकता है, `loc` फ़ंक्शन का उपयोग करके जो मूल डेटा फ्रेम से पंक्तियों (पहले पैरामीटर के रूप में पास की गई) और कॉलमों (दूसरे पैरामीटर के रूप में पास की गई) का एक समूह निकालता है। नीचे दिए गए मामले में अभिव्यक्ति `:` का अर्थ है "सभी पंक्तियाँ।"
|
|
|
|
```python
|
|
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
|
|
pumpkins = pumpkins.loc[:, columns_to_select]
|
|
```
|
|
|
|
### दूसरा, कद्दू की औसत कीमत निर्धारित करें
|
|
|
|
सोचें कि किसी दिए गए महीने में कद्दू की औसत कीमत कैसे निर्धारित करें। इस कार्य के लिए आप कौन से कॉलम चुनेंगे? संकेत: आपको 3 कॉलम की आवश्यकता होगी।
|
|
|
|
समाधान: `Low Price` और `High Price` कॉलम का औसत लें और नए Price कॉलम को भरें, और Date कॉलम को केवल महीने दिखाने के लिए बदलें। सौभाग्य से, ऊपर की जांच के अनुसार, तारीखों या कीमतों के लिए कोई गायब डेटा नहीं है।
|
|
|
|
1. औसत की गणना करने के लिए, निम्नलिखित कोड जोड़ें:
|
|
|
|
```python
|
|
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
|
|
|
|
month = pd.DatetimeIndex(pumpkins['Date']).month
|
|
|
|
```
|
|
|
|
✅ आप `print(month)` का उपयोग करके किसी भी डेटा को जांचने के लिए प्रिंट कर सकते हैं।
|
|
|
|
2. अब, अपने परिवर्तित डेटा को एक नए Pandas डेटा फ्रेम में कॉपी करें:
|
|
|
|
```python
|
|
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
|
|
```
|
|
|
|
अपने डेटा फ्रेम को प्रिंट करने से आपको एक साफ, व्यवस्थित डेटा सेट दिखाई देगा, जिस पर आप अपना नया रिग्रेशन मॉडल बना सकते हैं।
|
|
|
|
### लेकिन रुको! यहाँ कुछ अजीब है
|
|
|
|
यदि आप `Package` कॉलम को देखें, तो कद्दू कई अलग-अलग कॉन्फ़िगरेशन में बेचे जाते हैं। कुछ '1 1/9 bushel' माप में बेचे जाते हैं, और कुछ '1/2 bushel' माप में, कुछ प्रति कद्दू, कुछ प्रति पाउंड, और कुछ बड़े बक्सों में अलग-अलग चौड़ाई के साथ।
|
|
|
|
> कद्दू को लगातार तौलना बहुत कठिन लगता है
|
|
|
|
मूल डेटा में गहराई से देखें, यह दिलचस्प है कि जिनका `Unit of Sale` 'EACH' या 'PER BIN' के बराबर है, उनके `Package` प्रकार प्रति इंच, प्रति बिन, या 'each' भी हैं। कद्दू को लगातार तौलना बहुत कठिन लगता है, इसलिए आइए उन्हें फ़िल्टर करें और केवल उन कद्दूओं का चयन करें जिनके `Package` कॉलम में 'bushel' शब्द है।
|
|
|
|
1. फ़ाइल के शीर्ष पर, प्रारंभिक .csv आयात के तहत एक फ़िल्टर जोड़ें:
|
|
|
|
```python
|
|
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
|
|
```
|
|
|
|
यदि आप अब डेटा प्रिंट करते हैं, तो आप देख सकते हैं कि आपको केवल लगभग 415 पंक्तियों का डेटा मिल रहा है जिसमें कद्दू बसल के अनुसार हैं।
|
|
|
|
### लेकिन रुको! एक और काम करना बाकी है
|
|
|
|
क्या आपने देखा कि बसल की मात्रा प्रति पंक्ति बदलती है? आपको मूल्य निर्धारण को सामान्य करना होगा ताकि आप बसल के अनुसार मूल्य दिखा सकें, इसलिए इसे मानकीकृत करने के लिए कुछ गणना करें।
|
|
|
|
1. नए_pumpkins डेटा फ्रेम बनाने वाले ब्लॉक के बाद ये लाइनें जोड़ें:
|
|
|
|
```python
|
|
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
|
|
|
|
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 पाउंड होता है।" यह सब काफी जटिल है! आइए बसल-से-पाउंड रूपांतरण करने की बजाय बसल के अनुसार मूल्य निर्धारण करें। हालांकि, कद्दू के बसल का यह अध्ययन यह दिखाता है कि आपके डेटा की प्रकृति को समझना कितना महत्वपूर्ण है!
|
|
|
|
अब, आप उनके बसल माप के आधार पर प्रति यूनिट मूल्य का विश्लेषण कर सकते हैं। यदि आप डेटा को एक बार फिर प्रिंट करते हैं, तो आप देख सकते हैं कि यह मानकीकृत है।
|
|
|
|
✅ क्या आपने देखा कि आधे बसल में बेचे जाने वाले कद्दू बहुत महंगे हैं? क्या आप इसका कारण पता लगा सकते हैं? संकेत: छोटे कद्दू बड़े कद्दू की तुलना में बहुत महंगे होते हैं, शायद इसलिए कि एक बड़े खोखले पाई कद्दू द्वारा लिए गए खाली स्थान को देखते हुए प्रति बसल उनमें बहुत अधिक होते हैं।
|
|
|
|
## विज़ुअलाइज़ेशन रणनीतियाँ
|
|
|
|
डेटा वैज्ञानिक का एक हिस्सा यह प्रदर्शित करना है कि वे जिस डेटा के साथ काम कर रहे हैं उसकी गुणवत्ता और प्रकृति क्या है। ऐसा करने के लिए, वे अक्सर दिलचस्प विज़ुअलाइज़ेशन, जैसे प्लॉट्स, ग्राफ़्स, और चार्ट्स बनाते हैं, जो डेटा के विभिन्न पहलुओं को दिखाते हैं। इस तरह, वे दृश्य रूप से उन संबंधों और अंतरालों को दिखा सकते हैं जिन्हें अन्यथा समझना कठिन होता है।
|
|
|
|
[](https://youtu.be/SbUkxH6IJo0 "शुरुआती के लिए ML - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें")
|
|
|
|
> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा को विज़ुअलाइज़ करने पर एक छोटा वीडियो देखने के लिए।
|
|
|
|
विज़ुअलाइज़ेशन यह निर्धारित करने में भी मदद कर सकते हैं कि डेटा के लिए कौन सी मशीन लर्निंग तकनीक सबसे उपयुक्त है। उदाहरण के लिए, एक स्कैटरप्लॉट जो एक रेखा का अनुसरण करता हुआ प्रतीत होता है, यह संकेत देता है कि डेटा एक रेखीय रिग्रेशन अभ्यास के लिए एक अच्छा उम्मीदवार है।
|
|
|
|
एक डेटा विज़ुअलाइज़ेशन लाइब्रेरी जो Jupyter नोटबुक्स में अच्छी तरह काम करती है वह है [Matplotlib](https://matplotlib.org/) (जिसे आपने पिछले पाठ में भी देखा था)।
|
|
|
|
> डेटा विज़ुअलाइज़ेशन के साथ अधिक अनुभव प्राप्त करें [इन ट्यूटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) में।
|
|
|
|
## अभ्यास - Matplotlib के साथ प्रयोग करें
|
|
|
|
नए डेटा फ्रेम को प्रदर्शित करने के लिए कुछ बुनियादी प्लॉट्स बनाने का प्रयास करें। एक बुनियादी लाइन प्लॉट क्या दिखाएगा?
|
|
|
|
1. फ़ाइल के शीर्ष पर Pandas आयात के तहत Matplotlib आयात करें:
|
|
|
|
```python
|
|
import matplotlib.pyplot as plt
|
|
```
|
|
|
|
1. पूरे नोटबुक को फिर से चलाएं ताकि यह ताज़ा हो जाए।
|
|
1. नोटबुक के नीचे एक सेल जोड़ें ताकि डेटा को एक बॉक्स के रूप में प्लॉट किया जा सके:
|
|
|
|
```python
|
|
price = new_pumpkins.Price
|
|
month = new_pumpkins.Month
|
|
plt.scatter(price, month)
|
|
plt.show()
|
|
```
|
|
|
|

|
|
|
|
क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ ऐसा है जो आपको आश्चर्यचकित करता है?
|
|
|
|
यह विशेष रूप से उपयोगी नहीं है क्योंकि यह केवल आपके डेटा को एक दिए गए महीने में बिंदुओं के फैलाव के रूप में प्रदर्शित करता है।
|
|
|
|
### इसे उपयोगी बनाएं
|
|
|
|
उपयोगी डेटा प्रदर्शित करने के लिए, आपको आमतौर पर डेटा को किसी न किसी तरह से समूहित करना होता है। आइए एक प्लॉट बनाएं जहां y अक्ष महीने दिखाए और डेटा वितरण को प्रदर्शित करे।
|
|
|
|
1. एक सेल जोड़ें ताकि एक समूहित बार चार्ट बनाया जा सके:
|
|
|
|
```python
|
|
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
|
|
plt.ylabel("Pumpkin Price")
|
|
```
|
|
|
|

|
|
|
|
यह एक अधिक उपयोगी डेटा विज़ुअलाइज़ेशन है! ऐसा लगता है कि कद्दू की सबसे अधिक कीमत सितंबर और अक्टूबर में होती है। क्या यह आपकी अपेक्षा के अनुरूप है? क्यों या क्यों नहीं?
|
|
|
|
---
|
|
|
|
## 🚀चुनौती
|
|
|
|
Matplotlib द्वारा प्रदान किए गए विभिन्न प्रकार के विज़ुअलाइज़ेशन का अन्वेषण करें। कौन से प्रकार रिग्रेशन समस्याओं के लिए सबसे उपयुक्त हैं?
|
|
|
|
## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
## समीक्षा और स्व-अध्ययन
|
|
|
|
डेटा को विज़ुअलाइज़ करने के कई तरीकों को देखें। उपलब्ध विभिन्न लाइब्रेरी की एक सूची बनाएं और नोट करें कि कौन सी लाइब्रेरी किस प्रकार के कार्यों के लिए सबसे अच्छी है, उदाहरण के लिए 2D विज़ुअलाइज़ेशन बनाम 3D विज़ुअलाइज़ेशन। आप क्या खोजते हैं?
|
|
|
|
## असाइनमेंट
|
|
|
|
[विज़ुअलाइज़ेशन का अन्वेषण](assignment.md)
|
|
|
|
---
|
|
|
|
**अस्वीकरण**:
|
|
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं। |