مشین لرننگ میں درجہ بندی کے لیے Scikit-learn کے ساتھ شروعات کرنا

مشین لرننگ میں درجہ بندی کے لیے Scikit-learn کے ساتھ شروعات کرنا

ماخذ نوڈ: 1780638
مشین لرننگ میں درجہ بندی کے لیے Scikit-learn کے ساتھ شروعات کرنا
تصویر بذریعہ ایڈیٹر
 

Scikit-learn python میں بنائی گئی سب سے زیادہ استعمال ہونے والی مشین لرننگ لائبریریوں میں سے ایک ہے۔ اس کی مقبولیت کو اس کے آسان اور مستقل کوڈ کی ساخت سے منسوب کیا جا سکتا ہے جو کہ ابتدائی ڈویلپرز کے لیے دوستانہ ہے۔ نیز، تھرڈ پارٹی فنکشنلٹیز کو مربوط کرنے کے لیے لچک کے ساتھ ساتھ اعلیٰ سطح کی سپورٹ دستیاب ہے جو لائبریری کو مضبوط اور پیداوار کے لیے موزوں بناتی ہے۔ لائبریری میں درجہ بندی، ریگریشن، اور کلسٹرنگ کے لیے متعدد مشین لرننگ ماڈلز شامل ہیں۔ اس ٹیوٹوریل میں، ہم مختلف الگورتھم کے ذریعے ملٹی کلاس کی درجہ بندی کے مسئلے کو تلاش کریں گے۔ آئیے سیدھے اس میں غوطہ لگائیں اور اپنے اسکِٹ لرن ماڈلز بنائیں۔

pip install scikit-learn

ہم scikit-learn کے ڈیٹاسیٹس ماڈیول میں دستیاب "Wine" ڈیٹاسیٹ استعمال کریں گے۔ یہ ڈیٹا سیٹ کل 178 نمونوں اور 3 کلاسوں پر مشتمل ہے۔ ڈیٹاسیٹ پہلے سے ہی پہلے سے پروسیس شدہ ہے اور فیچر ویکٹرز میں تبدیل ہو چکا ہے اس لیے ہم اسے براہ راست اپنے ماڈلز کو تربیت دینے کے لیے استعمال کر سکتے ہیں۔

from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)

ہم 67% ڈیٹا ٹریننگ کے لیے اور باقی 33% ٹیسٹنگ کے لیے رکھیں گے۔

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)

 

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

model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))

 

آؤٹ پٹ

Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))

 

آؤٹ پٹ 

Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59

 

پیرامیٹر 'n_neighbours=2' کو تبدیل کرنے پر ہم درستگی کی قدر میں کمی کا مشاہدہ کرتے ہیں۔ لہذا، یہ ظاہر کرتا ہے کہ ڈیٹا کافی آسان ہے اور غور کرنے کے لیے ایک پڑوسی کے ساتھ بہتر سیکھنے کو حاصل کرتا ہے۔ 

آؤٹ پٹ 

Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))

 

آؤٹ پٹ

Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))

 

آؤٹ پٹ

Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))

 

آؤٹ پٹ


Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59

 

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

ماڈل درستگی تبصرے
لاجسٹک ریگریشن۔ 98.30٪ بڑی درستگی حاصل کرتا ہے۔ ماڈل ٹیسٹ ڈیٹاسیٹ پر اچھی طرح سے عام کرنے کے قابل ہے۔
K-قریب ترین پڑوسی 77.96٪ الگورتھم ڈیٹا کی نمائندگی کو اچھی طرح سے سیکھنے کے قابل نہیں ہے۔
بولی 100٪ ماڈل کم پیچیدہ ہے اس لیے یہ مکمل درستگی حاصل کرنے کے لیے ڈیٹا کو زیادہ فٹ کرتا ہے۔
فیصلہ کن درخت کی درجہ بندی کرنے والا 96.61٪ مہذب درستگی حاصل کرتا ہے۔
رینڈم فارسٹ کلاسیفائر 98.30٪ ایک جوڑ پر مبنی نقطہ نظر ہونے کے ناطے یہ فیصلے کے درخت سے بہتر کارکردگی کا مظاہرہ کرتا ہے۔ ہائپر پیرامیٹر ٹیوننگ کو انجام دینے سے یہ لاجسٹک ریگریشن کی طرح درستگی حاصل کرتا ہے۔

In this tutorial, we learned how to get started to build and train machine learning models in scikit-learn. We implemented and evaluated a few algorithms to get a basic idea about their performance. One can always adopt advanced strategies for feature engineering, hyperparameter tuning or training to improve performance. To read more about the functionalities that scikit-learn offers, head over to the official documentation - سکیٹ لرن کے ساتھ مشین لرننگ کا تعارف, سکیٹ لرن کے ساتھ ازگر میں مشین لرننگ.

 
 
یشا شاستری۔ ایک پرجوش AI ڈویلپر اور مصنف ہے جو Université de Montréal سے مشین لرننگ میں ماسٹرز کر رہا ہے۔ یشا ان چیلنجوں کو حل کرنے کے لیے ذمہ دار AI تکنیکوں کو دریافت کرنے کے لیے پرعزم ہے جو معاشرے کو فائدہ پہنچاتے ہیں اور اپنی تعلیم کو کمیونٹی کے ساتھ بانٹتے ہیں۔
 

ٹائم اسٹیمپ:

سے زیادہ KDnuggets