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.
ML-For-Beginners/translations/hi/2-Regression/1-Tools/README.md

239 lines
31 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"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 के साथ रिग्रेशन मॉडल्स शुरू करें
![रिग्रेशन का स्केच नोट में सारांश](../../../../sketchnotes/ml-regression.png)
> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## परिचय
इन चार पाठों में, आप सीखेंगे कि रिग्रेशन मॉडल्स कैसे बनाए जाते हैं। हम जल्द ही चर्चा करेंगे कि इनका उपयोग किस लिए किया जाता है। लेकिन कुछ भी शुरू करने से पहले, सुनिश्चित करें कि आपके पास सही उपकरण हैं ताकि आप प्रक्रिया शुरू कर सकें!
इस पाठ में, आप सीखेंगे:
- अपने कंप्यूटर को स्थानीय मशीन लर्निंग कार्यों के लिए कॉन्फ़िगर करना।
- Jupyter नोटबुक्स के साथ काम करना।
- Scikit-learn का उपयोग करना, जिसमें इंस्टॉलेशन शामिल है।
- एक हैंड्स-ऑन अभ्यास के साथ लीनियर रिग्रेशन का अन्वेषण करना।
## इंस्टॉलेशन और कॉन्फ़िगरेशन
[![मशीन लर्निंग के लिए शुरुआती - अपने उपकरण सेटअप करें](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) भी उपलब्ध हैं।
हालांकि, 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) के बारे में जानकारी प्राप्त कर सकते हैं।
> Python के साथ सहज होने के लिए इस [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) संग्रह को देखें।
>
> [![Python को Visual Studio Code के साथ सेटअप करें](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python को Visual Studio Code के साथ सेटअप करें")
>
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप Python को VS Code में उपयोग करने की प्रक्रिया देख सकें।
3. **Scikit-learn इंस्टॉल करें**, [इन निर्देशों](https://scikit-learn.org/stable/install.html) का पालन करके। चूंकि आपको Python 3 का उपयोग सुनिश्चित करना है, इसलिए वर्चुअल एनवायरनमेंट का उपयोग करने की सिफारिश की जाती है। ध्यान दें, यदि आप इस लाइब्रेरी को M1 Mac पर इंस्टॉल कर रहे हैं, तो ऊपर दिए गए पृष्ठ पर विशेष निर्देश हैं।
4. **Jupyter Notebook इंस्टॉल करें**। आपको [Jupyter पैकेज](https://pypi.org/project/jupyter/) इंस्टॉल करना होगा।
## आपका मशीन लर्निंग लेखन वातावरण
आप **नोटबुक्स** का उपयोग करके Python कोड विकसित करेंगे और मशीन लर्निंग मॉडल बनाएंगे। यह प्रकार की फाइल डेटा वैज्ञानिकों के लिए एक सामान्य उपकरण है, और इन्हें उनके `.ipynb` एक्सटेंशन से पहचाना जा सकता है।
नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने और उसके आसपास नोट्स और दस्तावेज़ जोड़ने की अनुमति देते हैं, जो शोध-उन्मुख परियोजनाओं के लिए काफी उपयोगी है।
[![मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें")
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
### अभ्यास - नोटबुक के साथ काम करें
इस फ़ोल्डर में, आपको _notebook.ipynb_ नामक फाइल मिलेगी।
1. _notebook.ipynb_ को Visual Studio Code में खोलें।
एक Jupyter सर्वर Python 3+ के साथ शुरू होगा। आप नोटबुक के उन क्षेत्रों को पाएंगे जिन्हें `run` किया जा सकता है, यानी कोड के टुकड़े। आप कोड ब्लॉक को चलाने के लिए उस आइकन का चयन कर सकते हैं जो प्ले बटन जैसा दिखता है।
2. `md` आइकन का चयन करें और थोड़ा मार्कडाउन जोड़ें, और निम्नलिखित टेक्स्ट लिखें **# Welcome to your notebook**।
इसके बाद, कुछ Python कोड जोड़ें।
3. कोड ब्लॉक में **print('hello notebook')** टाइप करें।
4. कोड चलाने के लिए तीर का चयन करें।
आपको प्रिंट किया गया कथन दिखाई देना चाहिए:
```output
hello notebook
```
![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) प्रदान करता है।
उनकी [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) के अनुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है जो सुपरवाइज्ड और अनसुपरवाइज्ड लर्निंग का समर्थन करती है। यह मॉडल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडल चयन और मूल्यांकन, और कई अन्य उपयोगिताओं के लिए विभिन्न उपकरण भी प्रदान करती है।"
इस पाठ्यक्रम में, आप Scikit-learn और अन्य उपकरणों का उपयोग करके मशीन लर्निंग मॉडल बनाएंगे ताकि 'पारंपरिक मशीन लर्निंग' कार्यों को अंजाम दिया जा सके। हमने जानबूझकर न्यूरल नेटवर्क्स और डीप लर्निंग को शामिल नहीं किया है, क्योंकि इन्हें हमारे आगामी 'AI for Beginners' पाठ्यक्रम में बेहतर तरीके से कवर किया जाएगा।
Scikit-learn मॉडल्स को बनाना और उनका मूल्यांकन करना आसान बनाता है। यह मुख्य रूप से संख्यात्मक डेटा का उपयोग करता है और सीखने के उपकरण के रूप में उपयोग के लिए कई तैयार किए गए डेटासेट्स प्रदान करता है। इसमें छात्रों के लिए आज़माने के लिए प्री-बिल्ट मॉडल्स भी शामिल हैं। आइए पहले Scikit-learn के साथ प्रीपैकेज्ड डेटा को लोड करने और एक बिल्ट-इन एस्टीमेटर का उपयोग करके पहला मशीन लर्निंग मॉडल बनाने की प्रक्रिया का अन्वेषण करें।
## अभ्यास - आपका पहला Scikit-learn नोटबुक
> यह ट्यूटोरियल Scikit-learn की वेबसाइट पर [लीनियर रिग्रेशन उदाहरण](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) से प्रेरित है।
[![मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट")
> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
इस पाठ से संबंधित _notebook.ipynb_ फाइल में, सभी सेल्स को 'trash can' आइकन दबाकर साफ़ करें।
इस सेक्शन में, आप Scikit-learn में सीखने के उद्देश्यों के लिए बनाए गए एक छोटे से डायबिटीज डेटासेट के साथ काम करेंगे। कल्पना करें कि आप डायबिटीज रोगियों के लिए एक उपचार का परीक्षण करना चाहते हैं। मशीन लर्निंग मॉडल्स आपको यह निर्धारित करने में मदद कर सकते हैं कि कौन से रोगी उपचार के लिए बेहतर प्रतिक्रिया देंगे, चर के संयोजनों के आधार पर। यहां तक कि एक बहुत ही बुनियादी रिग्रेशन मॉडल, जब विज़ुअलाइज़ किया जाता है, तो चर के बारे में जानकारी दिखा सकता है जो आपको अपने सैद्धांतिक क्लिनिकल ट्रायल्स को व्यवस्थित करने में मदद कर सकता है।
✅ रिग्रेशन विधियों के कई प्रकार होते हैं, और आप कौन सा चुनते हैं यह उस उत्तर पर निर्भर करता है जिसे आप ढूंढ रहे हैं। यदि आप किसी दिए गए उम्र के व्यक्ति की संभावित ऊंचाई की भविष्यवाणी करना चाहते हैं, तो आप लीनियर रिग्रेशन का उपयोग करेंगे, क्योंकि आप एक **संख्यात्मक मान** की तलाश कर रहे हैं। यदि आप यह पता लगाना चाहते हैं कि किसी प्रकार के भोजन को शाकाहारी माना जाना चाहिए या नहीं, तो आप एक **श्रेणी असाइनमेंट** की तलाश कर रहे हैं, इसलिए आप लॉजिस्टिक रिग्रेशन का उपयोग करेंगे। आप बाद में लॉजिस्टिक रिग्रेशन के बारे में अधिक जानेंगे। डेटा से कुछ प्रश्न पूछने के बारे में सोचें, और इनमें से कौन सी विधि अधिक उपयुक्त होगी।
आइए इस कार्य को शुरू करें।
### लाइब्रेरीज़ इंपोर्ट करें
इस कार्य के लिए हम कुछ लाइब्रेरीज़ इंपोर्ट करेंगे:
- **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) लाइब्रेरी है।
अपने कार्यों में मदद के लिए कुछ लाइब्रेरीज़ इंपोर्ट करें।
1. निम्नलिखित कोड टाइप करके इंपोर्ट्स जोड़ें:
```python
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model, 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 फीचर वेरिएबल्स शामिल हैं, जिनमें से कुछ हैं:
- age: उम्र वर्षों में
- bmi: बॉडी मास इंडेक्स
- bp: औसत रक्तचाप
- s1 tc: टी-सेल्स (सफेद रक्त कोशिकाओं का एक प्रकार)
✅ इस डेटासेट में 'sex' की अवधारणा एक फीचर वेरिएबल के रूप में शामिल है, जो डायबिटीज के शोध के लिए महत्वपूर्ण है। कई मेडिकल डेटासेट्स में इस प्रकार का बाइनरी वर्गीकरण शामिल होता है। सोचें कि इस प्रकार की श्रेणियां आबादी के कुछ हिस्सों को उपचार से कैसे बाहर कर सकती हैं।
अब, X और y डेटा लोड करें।
> 🎓 याद रखें, यह सुपरवाइज्ड लर्निंग है, और हमें एक नामित 'y' टारगेट की आवश्यकता है।
एक नए कोड सेल में, डायबिटीज डेटासेट को `load_diabetes()` कॉल करके लोड करें। इनपुट `return_X_y=True` संकेत देता है कि `X` एक डेटा मैट्रिक्स होगा, और `y` रिग्रेशन टारगेट होगा।
1. डेटा मैट्रिक्स के आकार और इसके पहले तत्व को दिखाने के लिए कुछ प्रिंट कमांड जोड़ें:
```python
X, y = datasets.load_diabetes(return_X_y=True)
print(X.shape)
print(X[0])
```
जो प्रतिक्रिया आपको मिल रही है, वह एक ट्यूपल है। आप जो कर रहे हैं वह ट्यूपल के पहले दो मानों को क्रमशः `X` और `y` को असाइन करना है। [ट्यूपल्स](https://wikipedia.org/wiki/Tuple) के बारे में अधिक जानें।
आप देख सकते हैं कि इस डेटा में 442 आइटम हैं जो 10 तत्वों के एरे में आकारित हैं:
```text
(442, 10)
[ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
✅ डेटा और रिग्रेशन टारगेट के बीच संबंध के बारे में सोचें। लीनियर रिग्रेशन फीचर X और टारगेट वेरिएबल y के बीच संबंधों की भविष्यवाणी करता है। क्या आप डायबिटीज डेटासेट के लिए [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) को दस्तावेज़ में पा सकते हैं? यह डेटासेट क्या प्रदर्शित कर रहा है, टारगेट को देखते हुए?
2. इसके बाद, इस डेटासेट के एक हिस्से को प्लॉट करने के लिए चुनें, डेटासेट के तीसरे कॉलम का चयन करके। आप `:` ऑपरेटर का उपयोग करके सभी पंक्तियों का चयन कर सकते हैं, और फिर इंडेक्स (2) का उपयोग करके तीसरे कॉलम का चयन कर सकते हैं। आप डेटा को 2D एरे में आकार देने के लिए `reshape(n_rows, n_columns)` का उपयोग कर सकते हैं - जैसा कि प्लॉटिंग के लिए आवश्यक है। यदि पैरामीटर में से एक -1 है, तो संबंधित आयाम स्वचालित रूप से गणना किया जाता है।
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
✅ किसी भी समय, डेटा का आकार जांचने के लिए इसे प्रिंट करें।
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. अब आप अपने मॉडल को ट्रेन करने के लिए तैयार हैं! लीनियर रिग्रेशन मॉडल लोड करें और इसे अपने X और y ट्रेनिंग सेट्स के साथ `model.fit()` का उपयोग करके ट्रेन करें:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
`model.fit()` एक फ़ंक्शन है जिसे आप TensorFlow जैसी कई ML लाइब्रेरीज़ में देखेंगे।
5. फिर, टेस्ट डेटा का उपयोग करके एक प्रेडिक्शन बनाएं, `predict()` फ़ंक्शन का उपयोग करके। इसका उपयोग डेटा समूहों के बीच लाइन खींचने के लिए किया जाएगा।
```python
y_pred = model.predict(X_test)
```
6. अब डेटा को प्लॉट में दिखाने का समय है। Matplotlib इस कार्य के लिए एक बहुत उपयोगी टूल है। सभी X और y टेस्ट डेटा का एक स्कैटरप्लॉट बनाएं, और मॉडल के डेटा समूहों के बीच सबसे उपयुक्त स्थान पर एक लाइन खींचने के लिए प्रेडिक्शन का उपयोग करें।
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.xlabel('Scaled BMIs')
plt.ylabel('Disease Progression')
plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
plt.show()
```
![डायबिटीज के आसपास डेटा पॉइंट्स दिखाने वाला एक स्कैटरप्लॉट](../../../../2-Regression/1-Tools/images/scatterplot.png)
✅ यहां क्या हो रहा है, इस पर थोड़ा विचार करें। एक सीधी रेखा कई छोटे डेटा बिंदुओं के बीच से गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि इस रेखा का उपयोग करके आप यह अनुमान कैसे लगा सकते हैं कि एक नया, अनदेखा डेटा बिंदु प्लॉट के y अक्ष के संबंध में कहां फिट होगा? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें।
बधाई हो, आपने अपना पहला लीनियर रिग्रेशन मॉडल बनाया, इसके साथ एक भविष्यवाणी की, और इसे एक प्लॉट में प्रदर्शित किया!
---
## 🚀चुनौती
इस डेटा सेट से एक अलग वेरिएबल को प्लॉट करें। संकेत: इस लाइन को एडिट करें: `X = X[:,2]`। इस डेटा सेट के टारगेट को देखते हुए, आप डायबिटीज के एक बीमारी के रूप में प्रगति के बारे में क्या पता लगा सकते हैं?
## [पोस्ट-लेक्चर क्विज़](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) लें।
## असाइनमेंट
[एक अलग डेटा सेट](assignment.md)
---
**अस्वीकरण**:
यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।