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/2-Classifiers-1
leestott c5aa7afabb
🌐 Update translations via Co-op Translator
11 months ago
..
solution 🌐 Update translations via Co-op Translator 11 months ago
README.md 🌐 Update translations via Co-op Translator 11 months ago
assignment.md 🌐 Update translations via Co-op Translator 11 months ago
notebook.ipynb 🌐 Update translations via Co-op Translator 11 months ago

README.md

کھانوں کے اقسام کی درجہ بندی 1

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

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

سبق سے پہلے کا کوئز

تیاری

یہ فرض کرتے ہوئے کہ آپ نے سبق 1 مکمل کر لیا ہے، اس بات کو یقینی بنائیں کہ cleaned_cuisines.csv فائل ان چار اسباق کے لیے روٹ /data فولڈر میں موجود ہو۔

مشق - قومی کھانے کی پیش گوئی کریں

  1. اس سبق کے notebook.ipynb فولڈر میں کام کرتے ہوئے، اس فائل کو Pandas لائبریری کے ساتھ درآمد کریں:

    import pandas as pd
    cuisines_df = pd.read_csv("../data/cleaned_cuisines.csv")
    cuisines_df.head()
    

    ڈیٹا کچھ اس طرح نظر آتا ہے:

Unnamed: 0 cuisine almond angelica anise anise_seed apple apple_brandy apricot armagnac ... whiskey white_bread white_wine whole_grain_wheat_flour wine wood yam yeast yogurt zucchini
0 0 indian 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
1 1 indian 1 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
2 2 indian 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
3 3 indian 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
4 4 indian 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 1 0
  1. اب مزید لائبریریاں درآمد کریں:

    from sklearn.linear_model import LogisticRegression
    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
    from sklearn.svm import SVC
    import numpy as np
    
  2. X اور y کوآرڈینیٹس کو دو ڈیٹا فریمز میں تقسیم کریں تاکہ تربیت کے لیے استعمال ہو سکیں۔ cuisine کو لیبلز ڈیٹا فریم کے طور پر استعمال کریں:

    cuisines_label_df = cuisines_df['cuisine']
    cuisines_label_df.head()
    

    یہ کچھ اس طرح نظر آئے گا:

    0    indian
    1    indian
    2    indian
    3    indian
    4    indian
    Name: cuisine, dtype: object
    
  3. Unnamed: 0 کالم اور cuisine کالم کو drop() کا استعمال کرتے ہوئے ہٹا دیں۔ باقی ڈیٹا کو تربیت کے قابل خصوصیات کے طور پر محفوظ کریں:

    cuisines_feature_df = cuisines_df.drop(['Unnamed: 0', 'cuisine'], axis=1)
    cuisines_feature_df.head()
    

    آپ کی خصوصیات کچھ اس طرح نظر آئیں گی:

almond angelica anise anise_seed apple apple_brandy apricot armagnac artemisia artichoke ... whiskey white_bread white_wine whole_grain_wheat_flour wine wood yam yeast yogurt zucchini
0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 1 0

اب آپ اپنے ماڈل کی تربیت کے لیے تیار ہیں!

اپنے درجہ بندی کرنے والے کا انتخاب کریں

اب جب کہ آپ کا ڈیٹا صاف اور تربیت کے لیے تیار ہے، آپ کو یہ فیصلہ کرنا ہوگا کہ اس کام کے لیے کون سا الگورتھم استعمال کرنا ہے۔

Scikit-learn درجہ بندی کو سپروائزڈ لرننگ کے تحت گروپ کرتا ہے، اور اس زمرے میں آپ کو درجہ بندی کے کئی طریقے ملیں گے۔ مختلف اقسام پہلی نظر میں کافی الجھن پیدا کر سکتی ہیں۔ درج ذیل طریقے درجہ بندی کی تکنیکوں کو شامل کرتے ہیں:

  • لکیری ماڈلز
  • سپورٹ ویکٹر مشینز
  • سٹوچاسٹک گریڈینٹ ڈیسنٹ
  • قریب ترین ہمسایہ
  • گاؤسیئن پروسیسز
  • فیصلہ کن درخت
  • مجموعی طریقے (ووٹنگ درجہ بندی کرنے والا)
  • ملٹی کلاس اور ملٹی آؤٹ پٹ الگورتھمز (ملٹی کلاس اور ملٹی لیبل درجہ بندی، ملٹی کلاس-ملٹی آؤٹ پٹ درجہ بندی)

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

کون سا درجہ بندی کرنے والا منتخب کریں؟

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

درجہ بندی کرنے والوں کا موازنہ

یہ گراف Scikit-learn کی دستاویزات سے تیار کیے گئے ہیں۔

AutoML اس مسئلے کو آسانی سے حل کرتا ہے، یہ موازنہ کلاؤڈ میں چلاتا ہے اور آپ کو آپ کے ڈیٹا کے لیے بہترین الگورتھم منتخب کرنے دیتا ہے۔ اسے یہاں آزمائیں

ایک بہتر طریقہ

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

ملٹی کلاس مسائل کے لیے چیٹ شیٹ

مائیکروسافٹ کے الگورتھم چیٹ شیٹ کا ایک حصہ، جو ملٹی کلاس درجہ بندی کے اختیارات کو تفصیل سے بیان کرتا ہے۔

اس چیٹ شیٹ کو ڈاؤن لوڈ کریں، پرنٹ کریں، اور اپنی دیوار پر لٹکا دیں!

استدلال

آئیے دیکھتے ہیں کہ ہم مختلف طریقوں کے بارے میں کیا استدلال کر سکتے ہیں، دی گئی حدود کے پیش نظر:

  • نیورل نیٹ ورکس بہت بھاری ہیں۔ ہمارے صاف لیکن کم سے کم ڈیٹا سیٹ کو دیکھتے ہوئے، اور یہ حقیقت کہ ہم نوٹ بکس کے ذریعے مقامی طور پر تربیت چلا رہے ہیں، نیورل نیٹ ورکس اس کام کے لیے بہت زیادہ ہیں۔
  • دو کلاس درجہ بندی کرنے والا نہیں۔ ہم دو کلاس درجہ بندی کرنے والا استعمال نہیں کرتے، لہذا یہ one-vs-all کو خارج کر دیتا ہے۔
  • فیصلہ کن درخت یا لاجسٹک ریگریشن کام کر سکتے ہیں۔ فیصلہ کن درخت یا ملٹی کلاس ڈیٹا کے لیے لاجسٹک ریگریشن کام کر سکتے ہیں۔
  • ملٹی کلاس بوسٹڈ فیصلہ کن درخت مختلف مسئلے کو حل کرتے ہیں۔ ملٹی کلاس بوسٹڈ فیصلہ کن درخت غیر پیرامیٹرک کاموں کے لیے سب سے زیادہ موزوں ہیں، جیسے کہ درجہ بندی بنانے کے لیے ڈیزائن کیے گئے کام، لہذا یہ ہمارے لیے مفید نہیں ہیں۔

Scikit-learn کا استعمال

ہم اپنے ڈیٹا کا تجزیہ کرنے کے لیے Scikit-learn کا استعمال کریں گے۔ تاہم، Scikit-learn میں لاجسٹک ریگریشن استعمال کرنے کے کئی طریقے ہیں۔ پاس کرنے کے لیے پیرامیٹرز پر ایک نظر ڈالیں۔

بنیادی طور پر دو اہم پیرامیٹرز ہیں - multi_class اور solver - جنہیں ہمیں لاجسٹک ریگریشن انجام دینے کے لیے Scikit-learn کو بتانا ہوگا۔ multi_class کی قدر ایک خاص رویہ لاگو کرتی ہے۔ solver کی قدر اس الگورتھم کو ظاہر کرتی ہے جو استعمال کیا جائے گا۔ تمام solvers کو تمام multi_class اقدار کے ساتھ جوڑا نہیں جا سکتا۔

دستاویزات کے مطابق، ملٹی کلاس کیس میں، تربیتی الگورتھم:

  • one-vs-rest (OvR) اسکیم کا استعمال کرتا ہے، اگر multi_class آپشن ovr پر سیٹ ہو۔
  • کراس-اینٹروپی نقصان کا استعمال کرتا ہے، اگر multi_class آپشن multinomial پر سیٹ ہو۔ (فی الحال multinomial آپشن صرف lbfgs, sag, saga اور newton-cg solvers کے ذریعے سپورٹ کیا جاتا ہے۔)

🎓 یہاں 'اسکیم' یا تو 'ovr' (one-vs-rest) یا 'multinomial' ہو سکتی ہے۔ چونکہ لاجسٹک ریگریشن بنیادی طور پر بائنری درجہ بندی کی حمایت کے لیے ڈیزائن کی گئی ہے، یہ اسکیمیں اسے ملٹی کلاس درجہ بندی کے کاموں کو بہتر طریقے سے ہینڈل کرنے کی اجازت دیتی ہیں۔ ماخذ

🎓 'solver' کو "اصلاحی مسئلے میں استعمال ہونے والے الگورتھم" کے طور پر بیان کیا گیا ہے۔ ماخذ

Scikit-learn یہ جدول پیش کرتا ہے تاکہ یہ وضاحت کی جا سکے کہ مختلف solvers مختلف قسم کے ڈیٹا ڈھانچوں کے چیلنجز کو کیسے ہینڈل کرتے ہیں:

solvers

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

ہم اپنی پہلی تربیتی کوشش کے لیے لاجسٹک ریگریشن پر توجہ مرکوز کر سکتے ہیں کیونکہ آپ نے حال ہی میں پچھلے سبق میں اس کے بارے میں سیکھا ہے۔ اپنے ڈیٹا کو تربیتی اور جانچنے والے گروپوں میں تقسیم کرنے کے لیے train_test_split() کو کال کریں:

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

مشق - لاجسٹک ریگریشن کا اطلاق کریں

چونکہ آپ ملٹی کلاس کیس استعمال کر رہے ہیں، آپ کو یہ منتخب کرنے کی ضرورت ہے کہ کون سی اسکیم استعمال کرنی ہے اور کون سا solver سیٹ کرنا ہے۔ لاجسٹک ریگریشن کو ملٹی کلاس سیٹنگ اور liblinear solver کے ساتھ تربیت دینے کے لیے استعمال کریں۔

  1. ایک لاجسٹک ریگریشن بنائیں جس میں multi_class کو ovr پر سیٹ کریں اور solver کو liblinear پر سیٹ کریں:

    lr = LogisticRegression(multi_class='ovr',solver='liblinear')
    model = lr.fit(X_train, np.ravel(y_train))
    
    accuracy = model.score(X_test, y_test)
    print ("Accuracy is {}".format(accuracy))
    

    ایک مختلف solver جیسے lbfgs کو آزمائیں، جو اکثر ڈیفالٹ کے طور پر سیٹ کیا جاتا ہے۔

نوٹ، جب ضرورت ہو تو اپنے ڈیٹا کو فلیٹ کرنے کے لیے Pandas کی ravel فنکشن استعمال کریں۔ درستگی 80% سے زیادہ اچھی ہے!

  1. آپ اس ماڈل کو ایک ڈیٹا کی قطار (#50) پر ٹیسٹ کرکے عمل میں دیکھ سکتے ہیں:

    print(f'ingredients: {X_test.iloc[50][X_test.iloc[50]!=0].keys()}')
    print(f'cuisine: {y_test.iloc[50]}')
    

    نتیجہ پرنٹ ہوتا ہے:

    ingredients: Index(['cilantro', 'onion', 'pea', 'potato', 'tomato', 'vegetable_oil'], dtype='object')
    cuisine: indian
    

    ایک مختلف قطار نمبر آزمائیں اور نتائج چیک کریں

  2. مزید گہرائی میں جا کر، آپ اس پیش گوئی کی درستگی چیک کر سکتے ہیں:

    test= X_test.iloc[50].values.reshape(-1, 1).T
    proba = model.predict_proba(test)
    classes = model.classes_
    resultdf = pd.DataFrame(data=proba, columns=classes)
    
    topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])
    topPrediction.head()
    

    نتیجہ پرنٹ ہوتا ہے - بھارتی کھانے کا اندازہ بہترین ہے، اچھی امکان کے ساتھ:

    0
    indian 0.715851
    chinese 0.229475
    japanese 0.029763
    korean 0.017277
    thai 0.007634

    کیا آپ وضاحت کر سکتے ہیں کہ ماڈل کو کیوں یقین ہے کہ یہ بھارتی کھانا ہے؟

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

    y_pred = model.predict(X_test)
    print(classification_report(y_test,y_pred))
    
    precision recall f1-score support
    chinese 0.73 0.71 0.72 229
    indian 0.91 0.93 0.92 254
    japanese 0.70 0.75 0.72 220
    korean 0.86 0.76 0.81 242
    thai 0.79 0.85 0.82 254
    accuracy 0.80 1199
    macro avg 0.80 0.80 0.80 1199
    weighted avg 0.80 0.80 0.80 1199

🚀چیلنج

اس سبق میں، آپ نے اپنے صاف شدہ ڈیٹا کا استعمال کرتے ہوئے ایک مشین لرننگ ماڈل بنایا جو اجزاء کی ایک سیریز کی بنیاد پر قومی کھانے کی پیش گوئی کر سکتا ہے۔ کچھ وقت نکال کر Scikit-learn کے فراہم کردہ مختلف اختیارات کو پڑھیں تاکہ ڈیٹا کو کلاسفائی کیا جا سکے۔ 'solver' کے تصور میں مزید گہرائی میں جائیں تاکہ سمجھ سکیں کہ پردے کے پیچھے کیا ہوتا ہے۔

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

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

لاجسٹک ریگریشن کے پیچھے ریاضی کو اس سبق میں مزید گہرائی سے پڑھیں۔

اسائنمنٹ

solvers کا مطالعہ کریں


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