মেশিন লার্নিং-এ ক্লাসিফিকেশনের জন্য Scikit-learn দিয়ে শুরু করা

মেশিন লার্নিং-এ ক্লাসিফিকেশনের জন্য Scikit-learn দিয়ে শুরু করা

উত্স নোড: 1780638

মেশিন লার্নিং-এ ক্লাসিফিকেশনের জন্য Scikit-learn দিয়ে শুরু করা
সম্পাদক দ্বারা চিত্র
 

স্কিট-লার্ন হল পাইথনে নির্মিত সবচেয়ে বেশি ব্যবহৃত মেশিন-লার্নিং লাইব্রেরিগুলির মধ্যে একটি। এর জনপ্রিয়তা এর সহজ এবং সামঞ্জস্যপূর্ণ কোড কাঠামোর জন্য দায়ী করা যেতে পারে যা নতুন বিকাশকারীদের জন্য বন্ধুত্বপূর্ণ। এছাড়াও, তৃতীয় পক্ষের কার্যকারিতাগুলিকে একীভূত করার নমনীয়তার সাথে একটি উচ্চ স্তরের সমর্থন উপলব্ধ রয়েছে যা গ্রন্থাগারটিকে শক্তিশালী এবং উত্পাদনের জন্য উপযুক্ত করে তোলে। লাইব্রেরিতে শ্রেণিবিন্যাস, রিগ্রেশন এবং ক্লাস্টারিংয়ের জন্য একাধিক মেশিন লার্নিং মডেল রয়েছে। এই টিউটোরিয়ালে, আমরা বিভিন্ন অ্যালগরিদমের মাধ্যমে মাল্টিক্লাস শ্রেণীবিভাগের সমস্যা অন্বেষণ করব। আসুন সরাসরি এটিতে ডুব দেই এবং আমাদের স্কিট-লার্ন মডেলগুলি তৈরি করি।

pip install scikit-learn

আমরা স্কিট-লার্নের ডেটাসেট মডিউলে উপলব্ধ "ওয়াইন" ডেটাসেট ব্যবহার করব। এই ডেটাসেটে মোট 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% মহান নির্ভুলতা অর্জন. মডেল পরীক্ষার ডেটাসেটে ভালভাবে সাধারণীকরণ করতে সক্ষম।
কে-নিকটতম প্রতিবেশী 77.96% অ্যালগরিদম ডেটা উপস্থাপনা ভালভাবে শিখতে সক্ষম নয়।
নাইভ বয়েস 100% মডেলটি কম জটিল তাই এটি নিখুঁত নির্ভুলতা পাওয়ার জন্য ডেটাকে ওভারফিট করে।
ডিসিশন ট্রি ক্লাসিফায়ার 96.61% শালীন নির্ভুলতা অর্জন করে।
র্যান্ডম ফরেস্ট ক্লাসিফায়ার 98.30% একটি ensemble-ভিত্তিক পদ্ধতির হওয়ায় এটি ডিসিশন ট্রির চেয়ে ভালো পারফর্ম করে। হাইপারপ্যারামিটার টিউনিং করা এটি লজিস্টিক রিগ্রেশনের অনুরূপ নির্ভুলতা অর্জন করে।

এই টিউটোরিয়ালে, আমরা শিখেছি কিভাবে স্কিট-লার্নে মেশিন লার্নিং মডেল তৈরি এবং প্রশিক্ষণ শুরু করা যায়। আমরা তাদের কর্মক্ষমতা সম্পর্কে একটি প্রাথমিক ধারণা পেতে কয়েকটি অ্যালগরিদম বাস্তবায়ন এবং মূল্যায়ন করেছি। কেউ সবসময় ফিচার ইঞ্জিনিয়ারিং, হাইপারপ্যারামিটার টিউনিং বা কর্মক্ষমতা উন্নত করতে প্রশিক্ষণের জন্য উন্নত কৌশল গ্রহণ করতে পারে। স্কিট-লার্ন যে কার্যকারিতাগুলি অফার করে সে সম্পর্কে আরও পড়তে, অফিসিয়াল ডকুমেন্টেশনে যান - স্কিট-লার্নের সাথে মেশিন লার্নিং এর পরিচিতি, স্কিট-লার্ন সহ পাইথনে মেশিন লার্নিং.

 
 
ইয়েশা শাস্ত্রী একজন উত্সাহী AI বিকাশকারী এবং লেখক যিনি ইউনিভার্সিটি ডি মন্ট্রিল থেকে মেশিন লার্নিং-এ মাস্টার্স করছেন৷ ইয়েশা সমাজকে উপকৃত করে এমন চ্যালেঞ্জগুলি সমাধান করার জন্য দায়ী এআই কৌশলগুলি অন্বেষণ করতে আগ্রহী এবং সম্প্রদায়ের সাথে তার শিক্ষাগুলি ভাগ করে নেয়৷
 

সময় স্ট্যাম্প:

থেকে আরো কেডনুগেটস