Skip to content

Latest commit

 

History

History
242 lines (163 loc) · 14.2 KB

File metadata and controls

242 lines (163 loc) · 14.2 KB

کھانوں کے تصنیف کار 2

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

پیشگی ضرورت

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

تیاری

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

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

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

ML Map from Scikit-learn

Tip: اس نقشے کو آن لائن ملاحظہ کریں اور راہ پر کلک کر کے دستاویزات پڑھیں۔

منصوبہ

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

  • ہمارے پاس >50 نمونے ہیں
  • ہم ایک زمرہ پیش گوئی کرنا چاہتے ہیں
  • ہمارے پاس لیبل شدہ ڈیٹا موجود ہے
  • ہمارے پاس 100K سے کم نمونے ہیں
  • ✨ ہم ایک لینیئر 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_features_df, cuisines_label_df, test_size=0.3)

لینیئر SVC درجہ بند کرنے والا

سپورٹ ویکٹر کلسٹرنگ (SVC) مشین لرننگ کی سپورٹ ویکٹر مشینوں کے خاندان کی ایک شاخ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ 'کرنل' منتخب کر سکتے ہیں جو لیبلز کو کلسٹر کرنے کا طریقہ فیصلہ کرتا ہے۔ 'C' پیرامیٹر سے مراد 'ریگولرائزیشن' ہے جو پیرامیٹرز کے اثر کو کنٹرول کرتا ہے۔ کرنل متعدد میں سے ایک ہو سکتا ہے کئی؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ لینیئر SVC کا فائدہ اٹھایا جا سکے۔ probability کی ڈیفالٹ قدر 'false' ہے؛ یہاں ہم اسے 'true' کرتے ہیں تاکہ احتمال کے تخمینے حاصل کیے جا سکیں۔ ہم رینڈم اسٹیٹ کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو ترتیب دے کر احتمال حاصل کیے جا سکیں۔

مشق - لینیئر SVC اپلائی کریں

کلاسفیئرز کی ایک اری بنائیں۔ جیسے جیسے ہم تجربہ کریں گے، آپ اس اری میں مزید شامل کریں گے۔

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

    C = 10
    # مختلف کلسیفائرز بنائیں۔
    classifiers = {
        'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
    }
  2. اپنی ماڈل کی تربیت کریں اور رپورٹ پرنٹ کریں:

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

سپورٹ ویکٹر کلاسفیئر

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

مشق - سپورٹ ویکٹر کلاسفیئر اپلائی کریں

چلیں سپورٹ ویکٹر کلاسفیئر کے ساتھ بہتر درستگی کی کوشش کرتے ہیں۔

  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 Classifiers

چلیں اس راستے کو آخری حد تک آزماتے ہیں، اگرچہ پچھلا ٹیسٹ کافی اچھا تھا۔ آئیے کچھ '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 ایک کلاسفیئر کو ڈیٹاسیٹ پر فٹ کرتا ہے اور پھر اسی ڈیٹاسیٹ پر اس کلاسفیئر کی کاپیاں فٹ کرتا ہے۔ یہ غلط درجہ بند کردہ اشیاء کے وزن پر توجہ دیتا ہے اور اگلے کلاسفیئر کی فٹنگ کو درست کرنے کے لیے ایڈجسٹ کرتا ہے۔


🚀چیلنج

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

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

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

اسائنمنٹ

Parameter play


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