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
leestott eaff2e5814
🌐 Update translations via Co-op Translator
2 weeks ago
..
solution 🌐 Update translations via Co-op Translator 3 weeks ago
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago
notebook.ipynb 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

کھانوں کی درجہ بندی 2

اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بندی کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بندی کنندہ کو دوسرے پر منتخب کرنے کے کیا اثرات ہو سکتے ہیں۔

لیکچر سے پہلے کا کوئز

پیشگی شرط

ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے پاس data فولڈر میں ایک صاف شدہ ڈیٹاسیٹ موجود ہے جس کا نام cleaned_cuisines.csv ہے، جو اس 4-سبق والے فولڈر کے روٹ میں موجود ہے۔

تیاری

ہم نے آپ کے notebook.ipynb فائل کو صاف شدہ ڈیٹاسیٹ کے ساتھ لوڈ کیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کیا ہے، جو ماڈل بنانے کے عمل کے لیے تیار ہیں۔

ایک درجہ بندی کا نقشہ

پہلے، آپ نے مائیکروسافٹ کے چیٹ شیٹ کا استعمال کرتے ہوئے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات کے بارے میں سیکھا۔ Scikit-learn ایک مشابہ لیکن زیادہ تفصیلی چیٹ شیٹ پیش کرتا ہے جو آپ کے تخمینے (درجہ بندی کنندگان کے لیے ایک اور اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:

Scikit-learn کا ML نقشہ

ٹپ: اس نقشے کو آن لائن دیکھیں اور راستے پر کلک کر کے دستاویزات پڑھیں۔

منصوبہ

یہ نقشہ اس وقت بہت مددگار ہوتا ہے جب آپ کو اپنے ڈیٹا کی واضح سمجھ ہو، کیونکہ آپ اس کے راستوں پر چل کر فیصلہ کر سکتے ہیں:

  • ہمارے پاس >50 نمونے ہیں
  • ہم ایک زمرہ کی پیش گوئی کرنا چاہتے ہیں
  • ہمارے پاس لیبل شدہ ڈیٹا ہے
  • ہمارے پاس 100K سے کم نمونے ہیں
  • ہم ایک Linear SVC منتخب کر سکتے ہیں
  • اگر یہ کام نہ کرے، چونکہ ہمارے پاس عددی ڈیٹا ہے
    • ہم KNeighbors Classifier آزما سکتے ہیں
      • اگر یہ کام نہ کرے، تو SVC اور Ensemble Classifiers آزمائیں

یہ ایک بہت مددگار راستہ ہے جس پر عمل کیا جا سکتا ہے۔

مشق - ڈیٹا کو تقسیم کریں

اس راستے پر عمل کرتے ہوئے، ہمیں کچھ لائبریریاں درآمد کرنی چاہئیں۔

  1. مطلوبہ لائبریریاں درآمد کریں:

    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
    
  2. اپنے تربیتی اور ٹیسٹ ڈیٹا کو تقسیم کریں:

    X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
    

Linear SVC درجہ بندی کنندہ

Support-Vector Clustering (SVC) مشین لرننگ تکنیکوں کے Support-Vector مشینز خاندان کا حصہ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ لیبلز کو کلسٹر کرنے کے لیے ایک 'kernel' منتخب کر سکتے ہیں۔ 'C' پیرامیٹر 'regularization' کو ظاہر کرتا ہے جو پیرامیٹرز کے اثر کو منظم کرتا ہے۔ kernel کئی میں سے ایک ہو سکتا ہے؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ Linear SVC کا فائدہ اٹھایا جا سکے۔ Probability ڈیفالٹ میں 'false' ہوتی ہے؛ یہاں ہم اسے 'true' پر سیٹ کرتے ہیں تاکہ probability estimates حاصل کر سکیں۔ ہم random state کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو شفل کر کے probabilities حاصل کی جا سکیں۔

مشق - Linear SVC کا اطلاق کریں

ایک درجہ بندی کنندگان کی صف بنائیں۔ آپ اس صف میں بتدریج اضافہ کریں گے جب ہم ٹیسٹ کریں گے۔

  1. Linear SVC سے شروع کریں:

    C = 10
    # Create different classifiers.
    classifiers = {
        'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
    }
    
  2. Linear SVC کا استعمال کرتے ہوئے اپنے ماڈل کو تربیت دیں اور رپورٹ پرنٹ کریں:

    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))
    

    نتیجہ کافی اچھا ہے:

    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 آئٹم کے بعد ایک کاما شامل کریں):

    'KNN classifier': KNeighborsClassifier(C),
    

    نتیجہ تھوڑا خراب ہے:

    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 کے بارے میں جانیں

Support Vector درجہ بندی کنندہ

Support-Vector درجہ بندی کنندگان مشین لرننگ کے Support-Vector Machine خاندان کا حصہ ہیں جو درجہ بندی اور ریگریشن کے کاموں کے لیے استعمال ہوتے ہیں۔ SVMs "تربیتی مثالوں کو خلا میں پوائنٹس پر نقشہ بناتے ہیں" تاکہ دو زمروں کے درمیان فاصلہ زیادہ سے زیادہ ہو۔ بعد میں ڈیٹا کو اس خلا میں نقشہ بنایا جاتا ہے تاکہ ان کے زمرے کی پیش گوئی کی جا سکے۔

مشق - Support Vector درجہ بندی کنندہ کا اطلاق کریں

Support Vector درجہ بندی کنندہ کے ساتھ تھوڑی بہتر درستگی حاصل کرنے کی کوشش کریں۔

  1. K-Neighbors آئٹم کے بعد ایک کاما شامل کریں، اور پھر یہ لائن شامل کریں:

    'SVC': SVC(),
    

    نتیجہ کافی اچھا ہے!

    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 کے بارے میں جانیں

Ensemble درجہ بندی کنندگان

چاہے پچھلا ٹیسٹ کافی اچھا تھا، آئیے راستے کے آخر تک چلتے ہیں۔ آئیے کچھ 'Ensemble Classifiers' آزمائیں، خاص طور پر Random Forest اور AdaBoost:

  'RFST': RandomForestClassifier(n_estimators=100),
  'ADA': AdaBoostClassifier(n_estimators=100)

نتیجہ بہت اچھا ہے، خاص طور پر Random Forest کے لیے:

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 کے بارے میں جانیں

مشین لرننگ کا یہ طریقہ "کئی بنیادی تخمینے کے پیش گوئیوں کو یکجا کرتا ہے" تاکہ ماڈل کے معیار کو بہتر بنایا جا سکے۔ ہمارے مثال میں، ہم نے Random Trees اور AdaBoost کا استعمال کیا۔

  • Random Forest، ایک اوسطی طریقہ، 'فیصلہ درختوں' کا ایک 'جنگل' بناتا ہے جس میں بے ترتیب پن شامل ہوتا ہے تاکہ اوورفٹنگ سے بچا جا سکے۔ n_estimators پیرامیٹر درختوں کی تعداد پر سیٹ کیا جاتا ہے۔

  • AdaBoost ایک ڈیٹاسیٹ پر درجہ بندی کنندہ کو فٹ کرتا ہے اور پھر اسی ڈیٹاسیٹ پر اس درجہ بندی کنندہ کی کاپیاں فٹ کرتا ہے۔ یہ غلط طور پر درجہ بند اشیاء کے وزن پر توجہ مرکوز کرتا ہے اور اگلے درجہ بندی کنندہ کے لیے فٹ کو ایڈجسٹ کرتا ہے تاکہ درستگی ہو۔


🚀چیلنج

ان میں سے ہر تکنیک کے پاس بہت سے پیرامیٹرز ہیں جنہیں آپ ایڈجسٹ کر سکتے ہیں۔ ہر ایک کے ڈیفالٹ پیرامیٹرز پر تحقیق کریں اور سوچیں کہ ان پیرامیٹرز کو ایڈجسٹ کرنے کا ماڈل کے معیار پر کیا اثر پڑے گا۔

لیکچر کے بعد کا کوئز

جائزہ اور خود مطالعہ

ان اسباق میں بہت زیادہ اصطلاحات ہیں، اس لیے ایک لمحہ نکال کر اس فہرست کا جائزہ لیں جو مفید اصطلاحات پر مشتمل ہے!

اسائنمنٹ

پیرامیٹر پلے


ڈسکلیمر:
یہ دستاویز AI ترجمہ سروس Co-op Translator کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔