اس دوسرے درجہ بندی کے سبق میں، آپ عددی ڈیٹا کو درجہ بند کرنے کے مزید طریقے دریافت کریں گے۔ آپ یہ بھی سیکھیں گے کہ ایک درجہ بند کرنے والے کو دوسرے پر منتخب کرنے کے نتائج کیا ہوتے ہیں۔
ہم فرض کرتے ہیں کہ آپ نے پچھلے اسباق مکمل کر لیے ہیں اور آپ کے data فولڈر میں ایک صاف شدہ ڈیٹاسیٹ ہے جس کا نام cleaned_cuisines.csv ہے جو اس چار اسباق کے فولڈر کی جڑ میں موجود ہے۔
ہم نے آپ کی notebook.ipynb فائل میں صاف شدہ ڈیٹاسیٹ لوڈ کر لیا ہے اور اسے X اور y ڈیٹافریمز میں تقسیم کر دیا ہے، تاکہ ماڈل بنانے کے عمل کے لیے تیار ہو۔
پہلے آپ نے سیکھا کہ مائیکروسافٹ کے چیٹ شیٹ کی مدد سے ڈیٹا کو درجہ بندی کرنے کے مختلف اختیارات ہوتے ہیں۔ سکائکیٹ-لرن ایک مماثل، لیکن مزید مفصل چیٹ شیٹ پیش کرتا ہے جو آپ کو اپنے ایسٹی میٹرز (درجہ بندی کرنے والوں کے لیے دوسرا اصطلاح) کو مزید محدود کرنے میں مدد دے سکتا ہے:
Tip: اس نقشے کو آن لائن ملاحظہ کریں اور راہ پر کلک کر کے دستاویزات پڑھیں۔
یہ نقشہ بہت مددگار ہے جب آپ اپنے ڈیٹا کو اچھی طرح سمجھ چکے ہوں، کیونکہ آپ اس کے راستوں پر 'چل' کر فیصلہ کر سکتے ہیں:
- ہمارے پاس >50 نمونے ہیں
- ہم ایک زمرہ پیش گوئی کرنا چاہتے ہیں
- ہمارے پاس لیبل شدہ ڈیٹا موجود ہے
- ہمارے پاس 100K سے کم نمونے ہیں
- ✨ ہم ایک لینیئر 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_features_df, cuisines_label_df, test_size=0.3)
سپورٹ ویکٹر کلسٹرنگ (SVC) مشین لرننگ کی سپورٹ ویکٹر مشینوں کے خاندان کی ایک شاخ ہے (نیچے ان کے بارے میں مزید جانیں)۔ اس طریقے میں، آپ 'کرنل' منتخب کر سکتے ہیں جو لیبلز کو کلسٹر کرنے کا طریقہ فیصلہ کرتا ہے۔ 'C' پیرامیٹر سے مراد 'ریگولرائزیشن' ہے جو پیرامیٹرز کے اثر کو کنٹرول کرتا ہے۔ کرنل متعدد میں سے ایک ہو سکتا ہے کئی؛ یہاں ہم اسے 'linear' پر سیٹ کرتے ہیں تاکہ لینیئر SVC کا فائدہ اٹھایا جا سکے۔ probability کی ڈیفالٹ قدر 'false' ہے؛ یہاں ہم اسے 'true' کرتے ہیں تاکہ احتمال کے تخمینے حاصل کیے جا سکیں۔ ہم رینڈم اسٹیٹ کو '0' پر سیٹ کرتے ہیں تاکہ ڈیٹا کو ترتیب دے کر احتمال حاصل کیے جا سکیں۔
کلاسفیئرز کی ایک اری بنائیں۔ جیسے جیسے ہم تجربہ کریں گے، آپ اس اری میں مزید شامل کریں گے۔
-
ایک Linear SVC سے شروع کریں:
C = 10 # مختلف کلسیفائرز بنائیں۔ classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) }
-
اپنی ماڈل کی تربیت کریں اور رپورٹ پرنٹ کریں:
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 درجہ بند کرنے والا آزمانے کی کوشش کریں۔
-
اپنے کلاسفیئرز کی اری میں ایک لائن شامل کریں (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 "ٹریننگ مثالوں کو خلا میں نقاط پر نقشہ کرتے ہیں" تاکہ دو زمروں کے درمیان فاصلے کو زیادہ سے زیادہ کیا جا سکے۔ بعد کا ڈیٹا اس خلاء میں نقشہ کیا جاتا ہے تاکہ اس کی کٹیگری کی پیش گوئی کی جا سکے۔
چلیں سپورٹ ویکٹر کلاسفیئر کے ساتھ بہتر درستگی کی کوشش کرتے ہیں۔
-
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' آزماتے ہیں، خاص طور پر 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 کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستی کی کوشش کرتے ہیں، براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا نقائص ہو سکتے ہیں۔ اصل دستاویز اپنی مادری زبان میں ہی معتبر ماخذ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر نہیں ہوگی۔
