شروع کار با Scikit-learn برای طبقه بندی در یادگیری ماشین

شروع کار با Scikit-learn برای طبقه بندی در یادگیری ماشین

گره منبع: 1780638
شروع کار با Scikit-learn برای طبقه بندی در یادگیری ماشین
تصویر توسط ویرایشگر
 

Scikit-learn یکی از رایج ترین کتابخانه های یادگیری ماشینی است که در پایتون ساخته شده است. محبوبیت آن را می توان به ساختار کد آسان و سازگار آن نسبت داد که برای توسعه دهندگان مبتدی مناسب است. همچنین، سطح بالایی از پشتیبانی همراه با انعطاف پذیری برای یکپارچه سازی عملکردهای شخص ثالث وجود دارد که کتابخانه را قوی و مناسب برای تولید می کند. این کتابخانه شامل چندین مدل یادگیری ماشین برای طبقه بندی، رگرسیون و خوشه بندی است. در این آموزش، مشکل طبقه‌بندی چند کلاسه را از طریق الگوریتم‌های مختلف بررسی می‌کنیم. بیایید مستقیماً در آن غوطه ور شویم و مدل های یادگیری اسکیتی خود را بسازیم.

pip install scikit-learn

ما از مجموعه داده "Wine" موجود در ماژول مجموعه داده های 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_neighbors=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

 

در این الگوریتم، ما برخی از تنظیم هایپرپارامتر را برای دستیابی به بهترین دقت انجام دادیم. ما یک شبکه پارامتر متشکل از چندین مقدار برای انتخاب هر پارامتر تعریف کردیم. علاوه بر این، ما از الگوریتم CV جستجوی تصادفی برای جستجوی بهترین فضای پارامتر برای مدل استفاده کردیم. در نهایت پارامترهای به‌دست‌آمده را به طبقه‌بندی‌کننده وارد کرده و مدل را آموزش می‌دهیم. 

مدل دقت مشاهدات
رگرسیون منطقی ٪۱۰۰ به دقت بالایی می رسد. مدل قادر است به خوبی در مجموعه داده های آزمایشی تعمیم دهد.
K-نزدیکترین همسایه ها ٪۱۰۰ الگوریتم قادر به یادگیری نمایش داده ها نیست.
ساده لوح بیز ٪۱۰۰ مدل پیچیدگی کمتری دارد، از این رو برای به دست آوردن دقت مطلق، داده ها را بیش از حد برازش می دهد.
طبقه بندی درخت تصمیم ٪۱۰۰ به دقت مناسبی دست می یابد.
طبقه بندی جنگل تصادفی ٪۱۰۰ از آنجایی که یک رویکرد مبتنی بر گروه است، بهتر از Decision Tree عمل می کند. انجام تنظیم هایپرپارامتر باعث می شود که دقتی مشابه رگرسیون لجستیک داشته باشد.

در این آموزش، نحوه ساخت و آموزش مدل های یادگیری ماشینی را در scikit-learn یاد گرفتیم. ما چند الگوریتم را پیاده سازی و ارزیابی کردیم تا یک ایده اساسی در مورد عملکرد آنها بدست آوریم. همیشه می توان استراتژی های پیشرفته ای را برای مهندسی ویژگی، تنظیم هایپرپارامتر یا آموزش برای بهبود عملکرد اتخاذ کرد. برای مطالعه بیشتر در مورد عملکردهایی که scikit-learn ارائه می دهد، به اسناد رسمی مراجعه کنید - مقدمه ای بر یادگیری ماشینی با یادگیری اسکی, یادگیری ماشینی در پایتون با یادگیری scikit.

 
 
یشا شاستری یک توسعه دهنده و نویسنده پرشور هوش مصنوعی است که مدرک کارشناسی ارشد را در یادگیری ماشین از دانشگاه مونترال دنبال می کند. Yesha مشتاق کشف تکنیک های هوش مصنوعی مسئول برای حل چالش هایی است که به نفع جامعه است و آموخته های خود را با جامعه به اشتراک می گذارد.
 

تمبر زمان:

بیشتر از kdnuggets