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/ur/4-Classification/3-Classifiers-2/README.md

242 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# کھانوں کے تصنیف کار 2
اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بند کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بند کرنے والے کو دوسرے پر منتخب کرنے کے نتائج کیا ہوتے ہیں۔
## [پری لیکچر کوئز](https://ff-quizzes.netlify.app/en/ml/)
### پیشگی ضرورت
ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے `data` فولڈر میں ایک صاف شدہ ڈیٹاسیٹ ہے جس کا نام _cleaned_cuisines.csv_ ہے جو اس چار اسباق کے فولڈر کی جڑ میں موجود ہے۔
### تیاری
ہم نے آپ کی _notebook.ipynb_ فائل میں صاف شدہ ڈیٹاسیٹ لوڈ کر لیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کر دیا ہے، تاکہ ماڈل بنانے کے عمل کے لیے تیار ہو۔
## ایک درجہ بندی کا نقشہ
پہلے آپ نے سیکھا کہ مائیکروسافٹ کے چیٹ شیٹ کی مدد سے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات ہوتے ہیں۔ سکائکیٹ-لرن ایک مماثل، لیکن مزید مفصل چیٹ شیٹ پیش کرتا ہے جو آپ کو اپنے ایسٹی میٹرز (درجہ بندی کرنے والوں کے لیے دوسرا اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:
![ML Map from Scikit-learn](../../../../translated_images/ur/map.e963a6a51349425a.webp)
> Tip: [اس نقشے کو آن لائن ملاحظہ کریں](https://scikit-learn.org/stable/tutorial/machine_learning_map/) اور راہ پر کلک کر کے دستاویزات پڑھیں۔
### منصوبہ
یہ نقشہ بہت مددگار ہے جب آپ اپنے ڈیٹا کو اچھی طرح سمجھ چکے ہوں، کیونکہ آپ اس کے راستوں پر 'چل' کر فیصلہ کر سکتے ہیں:
- ہمارے پاس >50 نمونے ہیں
- ہم ایک زمرہ پیش گوئی کرنا چاہتے ہیں
- ہمارے پاس لیبل شدہ ڈیٹا موجود ہے
- ہمارے پاس 100K سے کم نمونے ہیں
- ✨ ہم ایک لینیئر SVC منتخب کر سکتے ہیں
- اگر یہ کام نہیں کرتا، چونکہ ہمارے پاس عددی ڈیٹا ہے
- ہم ✨ KNeighbors Classifier آزما سکتے ہیں
- اگر یہ بھی کام نہ کرے، تو ✨ SVC اور ✨ Ensemble Classifiers آزمائیں
یہ ایک بہت مددگار راستہ ہے جس پر عمل کرنا چاہیے۔
## مشق - ڈیٹا کو تقسیم کریں
اس راستے کی پیروی کرتے ہوئے، ہمیں شروع میں کچھ لائبریریاں امپورٹ کرنی چاہئیں۔
1. ضروری لائبریریاں امپورٹ کریں:
```python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve
import numpy as np
```
1. اپنے ٹریننگ اور ٹیسٹ ڈیٹا کو تقسیم کریں:
```python
X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)
```
## لینیئر SVC درجہ بند کرنے والا
سپورٹ ویکٹر کلسٹرنگ (SVC) مشین لرننگ کی سپورٹ ویکٹر مشینوں کے خاندان کی ایک شاخ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ 'کرنل' منتخب کر سکتے ہیں جو لیبلز کو کلسٹر کرنے کا طریقہ فیصلہ کرتا ہے۔ 'C' پیرامیٹر سے مراد 'ریگولرائزیشن' ہے جو پیرامیٹرز کے اثر کو کنٹرول کرتا ہے۔ کرنل متعدد میں سے ایک ہو سکتا ہے [کئی](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC)؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ لینیئر SVC کا فائدہ اٹھایا جا سکے۔ probability کی ڈیفالٹ قدر 'false' ہے؛ یہاں ہم اسے 'true' کرتے ہیں تاکہ احتمال کے تخمینے حاصل کیے جا سکیں۔ ہم رینڈم اسٹیٹ کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو ترتیب دے کر احتمال حاصل کیے جا سکیں۔
### مشق - لینیئر SVC اپلائی کریں
کلاسفیئرز کی ایک اری بنائیں۔ جیسے جیسے ہم تجربہ کریں گے، آپ اس اری میں مزید شامل کریں گے۔
1. ایک Linear SVC سے شروع کریں:
```python
C = 10
# مختلف کلسیفائرز بنائیں۔
classifiers = {
'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
}
```
2. اپنی ماڈل کی تربیت کریں اور رپورٹ پرنٹ کریں:
```python
n_classifiers = len(classifiers)
for index, (name, classifier) in enumerate(classifiers.items()):
classifier.fit(X_train, np.ravel(y_train))
y_pred = classifier.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100))
print(classification_report(y_test,y_pred))
```
نتیجہ کافی اچھا ہے:
```output
Accuracy (train) for Linear SVC: 78.6%
precision recall f1-score support
chinese 0.71 0.67 0.69 242
indian 0.88 0.86 0.87 234
japanese 0.79 0.74 0.76 254
korean 0.85 0.81 0.83 242
thai 0.71 0.86 0.78 227
accuracy 0.79 1199
macro avg 0.79 0.79 0.79 1199
weighted avg 0.79 0.79 0.79 1199
```
## K-Neighbors درجہ بند کرنے والا
K-Neighbors مشین لرننگ کے "نیبرز" خاندان کا حصہ ہے، جو نگرانی شدہ اور غیر نگرانی شدہ دونوں طرح کی تعلیم کے لیے استعمال ہو سکتا ہے۔ اس طریقے میں، ایک پری ڈیفائن کردہ تعداد میں پوائنٹس بنائے جاتے ہیں اور ڈیٹا ان پوائنٹس کے گرد اکٹھا کیا جاتا ہے تاکہ متعلقہ لیبلز کی پیش گوئی ہو سکے۔
### مشق - K-Neighbors درجہ بند کرنے والا اپلائی کریں
پچھلا درجہ بند کرنے والا اچھا تھا اور ڈیٹا کے ساتھ اچھی طرح کام کرتا تھا، لیکن شاید ہم بہتر درستگی حاصل کر سکیں۔ K-Neighbors درجہ بند کرنے والا آزمانے کی کوشش کریں۔
1. اپنے کلاسفیئرز کی اری میں ایک لائن شامل کریں (Linear SVC آئٹم کے بعد کاما ڈالیں):
```python
'KNN classifier': KNeighborsClassifier(C),
```
نتیجہ تھوڑا کم ہے:
```output
Accuracy (train) for KNN classifier: 73.8%
precision recall f1-score support
chinese 0.64 0.67 0.66 242
indian 0.86 0.78 0.82 234
japanese 0.66 0.83 0.74 254
korean 0.94 0.58 0.72 242
thai 0.71 0.82 0.76 227
accuracy 0.74 1199
macro avg 0.76 0.74 0.74 1199
weighted avg 0.76 0.74 0.74 1199
```
✅ [K-Neighbors](https://scikit-learn.org/stable/modules/neighbors.html#neighbors) کے بارے میں جانیں
## سپورٹ ویکٹر کلاسفیئر
سپورٹ ویکٹر کلاسفیئر مشین لرننگ کے [سپورٹ ویکٹر مشین](https://wikipedia.org/wiki/Support-vector_machine) خاندان کا حصہ ہیں جو درجہ بندی اور ریگریشن کے کاموں کے لیے استعمال ہوتے ہیں۔ SVM "ٹریننگ مثالوں کو خلا میں نقاط پر نقشہ کرتے ہیں" تاکہ دو زمروں کے درمیان فاصلے کو زیادہ سے زیادہ کیا جا سکے۔ بعد کا ڈیٹا اس خلاء میں نقشہ کیا جاتا ہے تاکہ اس کی کٹیگری کی پیش گوئی کی جا سکے۔
### مشق - سپورٹ ویکٹر کلاسفیئر اپلائی کریں
چلیں سپورٹ ویکٹر کلاسفیئر کے ساتھ بہتر درستگی کی کوشش کرتے ہیں۔
1. K-Neighbors آئٹم کے بعد کاما لگائیں، پھر یہ لائن شامل کریں:
```python
'SVC': SVC(),
```
نتیجہ بہت اچھا ہے!
```output
Accuracy (train) for SVC: 83.2%
precision recall f1-score support
chinese 0.79 0.74 0.76 242
indian 0.88 0.90 0.89 234
japanese 0.87 0.81 0.84 254
korean 0.91 0.82 0.86 242
thai 0.74 0.90 0.81 227
accuracy 0.83 1199
macro avg 0.84 0.83 0.83 1199
weighted avg 0.84 0.83 0.83 1199
```
✅ [Support-Vectors](https://scikit-learn.org/stable/modules/svm.html#svm) کے بارے میں جانیں
## Ensemble Classifiers
چلیں اس راستے کو آخری حد تک آزماتے ہیں، اگرچہ پچھلا ٹیسٹ کافی اچھا تھا۔ آئیے کچھ 'Ensemble Classifiers' آزماتے ہیں، خاص طور پر Random Forest اور AdaBoost:
```python
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
```
نتیجہ بہت اچھا ہے، خاص طور پر Random Forest کے لیے:
```output
Accuracy (train) for RFST: 84.5%
precision recall f1-score support
chinese 0.80 0.77 0.78 242
indian 0.89 0.92 0.90 234
japanese 0.86 0.84 0.85 254
korean 0.88 0.83 0.85 242
thai 0.80 0.87 0.83 227
accuracy 0.84 1199
macro avg 0.85 0.85 0.84 1199
weighted avg 0.85 0.84 0.84 1199
Accuracy (train) for ADA: 72.4%
precision recall f1-score support
chinese 0.64 0.49 0.56 242
indian 0.91 0.83 0.87 234
japanese 0.68 0.69 0.69 254
korean 0.73 0.79 0.76 242
thai 0.67 0.83 0.74 227
accuracy 0.72 1199
macro avg 0.73 0.73 0.72 1199
weighted avg 0.73 0.72 0.72 1199
```
✅ [Ensemble Classifiers](https://scikit-learn.org/stable/modules/ensemble.html) کے بارے میں جانیں
مشین لرننگ کا یہ طریقہ "کئی بنیادی ایسٹی میٹرز کی پیش گوئیوں کو جوڑتا ہے" تاکہ ماڈل کے معیار کو بہتر بنایا جا سکے۔ ہمارے مثال میں، ہم نے 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) ایک کلاسفیئر کو ڈیٹاسیٹ پر فٹ کرتا ہے اور پھر اسی ڈیٹاسیٹ پر اس کلاسفیئر کی کاپیاں فٹ کرتا ہے۔ یہ غلط درجہ بند کردہ اشیاء کے وزن پر توجہ دیتا ہے اور اگلے کلاسفیئر کی فٹنگ کو درست کرنے کے لیے ایڈجسٹ کرتا ہے۔
---
## 🚀چیلنج
ان تمام تکنیکوں کے بہت سے پیرامیٹرز ہوتے ہیں جنہیں آپ ایڈجسٹ کر سکتے ہیں۔ ہر ایک کے ڈیفالٹ پیرامیٹرز پر تحقیق کریں اور غور کریں کہ ان پیرامیٹرز کی تبدیلی ماڈل کے معیار کو کیسے متاثر کرے گی۔
## [پوسٹ لیکچر کوئز](https://ff-quizzes.netlify.app/en/ml/)
## جائزہ اور خود مطالعہ
ان اسباق میں بہت سی اصطلاحات ہوتی ہیں، لہذا ایک منٹ نکال کر [اس فہرست](https://docs.microsoft.com/dotnet/machine-learning/resources/glossary?WT.mc_id=academic-77952-leestott) کا جائزہ لیں جس میں مفید اصطلاحات ہیں!
## اسائنمنٹ
[Parameter play](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**دستخطی دستبرداری**:
اس دستاویز کا ترجمہ AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا نقائص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر نہیں ہوگی۔
<!-- CO-OP TRANSLATOR DISCLAIMER END -->