14 KiB
کھانوں کی درجہ بندی 2
اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بندی کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بندی کنندہ کو دوسرے پر منتخب کرنے کے کیا اثرات ہو سکتے ہیں۔
لیکچر سے پہلے کا کوئز
پیشگی شرط
ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے پاس data
فولڈر میں ایک صاف شدہ ڈیٹاسیٹ موجود ہے جس کا نام cleaned_cuisines.csv ہے، جو اس 4-سبق والے فولڈر کے روٹ میں موجود ہے۔
تیاری
ہم نے آپ کے notebook.ipynb فائل کو صاف شدہ ڈیٹاسیٹ کے ساتھ لوڈ کیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کیا ہے، جو ماڈل بنانے کے عمل کے لیے تیار ہیں۔
ایک درجہ بندی کا نقشہ
پہلے، آپ نے مائیکروسافٹ کے چیٹ شیٹ کا استعمال کرتے ہوئے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات کے بارے میں سیکھا۔ Scikit-learn ایک مشابہ لیکن زیادہ تفصیلی چیٹ شیٹ پیش کرتا ہے جو آپ کے تخمینے (درجہ بندی کنندگان کے لیے ایک اور اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:
ٹپ: اس نقشے کو آن لائن دیکھیں اور راستے پر کلک کر کے دستاویزات پڑھیں۔
منصوبہ
یہ نقشہ اس وقت بہت مددگار ہوتا ہے جب آپ کو اپنے ڈیٹا کی واضح سمجھ ہو، کیونکہ آپ اس کے راستوں پر چل کر فیصلہ کر سکتے ہیں:
- ہمارے پاس >50 نمونے ہیں
- ہم ایک زمرہ کی پیش گوئی کرنا چاہتے ہیں
- ہمارے پاس لیبل شدہ ڈیٹا ہے
- ہمارے پاس 100K سے کم نمونے ہیں
- ✨ ہم ایک Linear SVC منتخب کر سکتے ہیں
- اگر یہ کام نہ کرے، چونکہ ہمارے پاس عددی ڈیٹا ہے
- ہم ✨ KNeighbors Classifier آزما سکتے ہیں
- اگر یہ کام نہ کرے، تو ✨ SVC اور ✨ Ensemble Classifiers آزمائیں
- ہم ✨ KNeighbors Classifier آزما سکتے ہیں
یہ ایک بہت مددگار راستہ ہے جس پر عمل کیا جا سکتا ہے۔
مشق - ڈیٹا کو تقسیم کریں
اس راستے پر عمل کرتے ہوئے، ہمیں کچھ لائبریریاں درآمد کرنی چاہئیں۔
-
مطلوبہ لائبریریاں درآمد کریں:
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
-
اپنے تربیتی اور ٹیسٹ ڈیٹا کو تقسیم کریں:
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 کا اطلاق کریں
ایک درجہ بندی کنندگان کی صف بنائیں۔ آپ اس صف میں بتدریج اضافہ کریں گے جب ہم ٹیسٹ کریں گے۔
-
Linear SVC سے شروع کریں:
C = 10 # Create different classifiers. classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) }
-
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 درجہ بندی کنندہ آزمائیں۔
-
اپنے درجہ بندی کنندگان کی صف میں ایک لائن شامل کریں (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 درجہ بندی کنندہ کے ساتھ تھوڑی بہتر درستگی حاصل کرنے کی کوشش کریں۔
-
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 کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔