Pycaret چیست؟ صفر تا صد اجرای یک پروژه عملی با کتابخانه Pycaret

کتابخانه pycaret چیست

فهرست مطالب

اگر زمان کافی نداشتیم ولی می‌خواستیم در کسری از ثانیه یک مدل یادگیری ماشین بسازیم، بهتر است یاد بگیریم PyCaret چیست.

PyCaret کتابخانه پایتونی بسیار مفیدی است که برای ایجاد هم‌زمان انواع مدل‌های یادگیری ماشین استفاده می‌شود. از مزایای مهم آن سرعت بالا و تعداد خطوط بسیار کم است که شما را از نوشتن کدهای طولانی و پی‌در‌پی نجات می‌دهد.

در این مقاله آموزشی سعی می‌کنیم صفر تا صد اجرای یک پروژه عملی را بررسی کنیم. کتابخانه Pycaret ابزار قوی و مناسبی است و ارزش آن جایی نمایان‌تر می‌شود که زمان کمی داشته باشیم؛ ولی به دنبال نتیجه خوب باشیم.

ابتدا معرفی اولیه از کتابخانه Pycaret خواهیم داشت، سپس نحوه نصب آن را یاد می‌گیریم و در ادامه از PyCaret برای ساخت مدل‌های یادگیری ماشین قابل تفسیر استفاده می‌کنیم.

PyCaret چیست و چرا باید از آن استفاده کنیم؟

اولین مدل یادگیری ماشین که به زبان پایتون برای یک مسابقه نوشتم، یک کد سنگین و پیچیده بود. هنوز هم خطوط زیادی از کد را که برای ساخت یک مدل کلی لازم بود به‌خاطر می‌آورم – برای حل کردن آن‌همه پیچیدگی به یک جادوگر احتیاج بود!

وقتی صحبت از ساخت مدل‌های یادگیری ماشین به‌خصوص در صنعت می‌شود، نوشتن کد مؤثر، رمز موفقیت است. به همین دلیل اکیداً توصیه می‌کنم از کتابخانه PyCaret استفاده کنید.

کاش PyCaret در روزهایی که تازه شروع به یادگیری ماشین کرده بودم در دسترسم بود! این کتابخانه فوق‌العاده انعطاف‌پذیر و مفید است که در ماه‌های اخیر همیشه از آن استفاده می‌کنم. کاملاً معتقدم هرکسی که آرزو دارد به‌عنوان یک متخصص علوم داده یا تحلیل اطلاعات موفق شود، استفاده از PyCaret  برایش سودمند خواهد بود.

مزایای Pycaret چیست؟

  1. PyCaret یک کتابخانه کم کد است که باعث کارایی بیشتر می‌شود و زمان کدنویسی را کاهش می‌دهد.
  2. این کتابخانه به شما در انجام پروژه‌های یادگیری ماشین مثل محاسبه مقادیر ازدست‌رفته، رمزگذاری داده‌های طبقه‌بندی‌شده، مهندسی ویژگی، تنظیم پارامتر یا ساخت مدل‌های کلی کمک می‌کند.

نصب کتابخانه Pycaret

نصب این کتابخانه ساده است کافی است با استفاده از pip آن را نصب کنیم. برای شروع، دستور زیر را در Jupyter Notebook  خود اجرا می‌کنیم:

				
					!pip install pycaret
				
			

هنوز منبع خوبی برای آموزش یادگیری ماشین پیدا نکردید؟ دوره آموزش رایگان یادگیری ماشین را رایگان در کانال یوتیوب دیتاهاب ببینید.

مثال کتابخانه PyCaret در یادگیری ماشین

در ادامه با حل یک مسئله طبقه‌بندی، با کتابخانه PyCaret بیشتر آشنا می‌شویم:

شرح مسئله و مجموعه‌داده

یک مجموعه‌داده بانکی با ویژگی‌هایی مانند سن مشتری، تجربه، درآمد، تحصیلات و اینکه آیا فرد کارت اعتباری دارد یا خیر، داریم. این بانک می‌خواهد یک مدل یادگیری ماشین برای شناسایی مشتریان بالقوه‌ای که با احتمال بالایی در آینده درخواست وام می‌دهند، ایجاد کند.

مجموعه‌داده شامل 5000 ردیف است و ما 4000 مورد را برای آموزش مدل خود و 1000 مورد دیگر را برای آزمایش مدل نگه داشته‌ایم.

با استفاده از کتابخانه Pandas مجموعه‌داده را می‌خوانیم:

				
					# importing pandas to read the CSV file
import pandas as pd
# read the data
data_classification = pd.read_csv('datasets/loan_train_data.csv')
# view the top rows of the data
data_classification.head()
				
			

خواندن داده در pandas پایتون

قبل از شروع پروژه یادگیری ماشین در PyCaret ، باید تنظیمات اولیه را انجام دهیم که دو مرحله دارد:

  1. واردکردن ماژول: بسته به نوع مسئله‌ای که می‌خواهید حل کنید، ابتدا باید ماژول را وارد کنید. در نسخه اول کتابخانه PyCaret، تعداد 6 ماژول مختلف موجود است که شامل رگرسیون، طبقه‌بندی، خوشه‌بندی، پردازش زبان طبیعی (NLP)، تشخیص ناهنجاری و استخراج قوانین انجمنی است.
  2. راه‌اندازی اولیه: در این مرحله، PyCaret کارهای اساسی پیش‌پردازش داده را انجام می‌دهد، مثل چشم‌پوشی از شناسه‌ها (id) و ستون‌های تاریخ، محاسبه مقادیر ازدست‌رفته، رمزگذاری متغیرهای categorical و تقسیم مجموعه‌داده به آزمون و آموزشی. وقتی تابع setup را اجرا می‌کنیم، ابتدا انواع داده‌ها را تأیید می‌کند و سپس اگر enter را فشار دهیم، محیطی برای ادامه کار ایجاد می‌شود.
				
					# import the classification module 
from pycaret import classification
# setup the environment 
classification_setup = classification.setup(data= data_classification, target='Personal Loan')
				
			

شروع کار با کتابخانه pycaret یادگیری ماشین

آموزش مدل یادگیری ماشین با کتابخانه PyCaret

آموزش یک مدل در کتابخانه PyCaret بسیار ساده است. کافی است از تابع create_model استفاده کنیم که این تابع فقط نام مدل را به عنوان پارامتر ورودی می‌گیرد. در اینجا، می خواهیم یک مدل درخت تصمیم‌ بسازیم که باید مخفف آن یعنی “dt” را به عنوان ورودی قرار دهیم (dt مخفف decision tree است). خروجی آن جدولی با امتیازات اعتبار متقابل k-fold است. در این جدول معیارهای ارزیابی رایجی‌ داریم که برای مدل‌های دسته‌بندی استفاده می‌شوند.

موارد زیر معیارهای ارزیابی مورداستفاده برای یادگیری بانظارت هستند:

  • طبقه‌بندی: Accuracy, AUC, Recall, Precision, F1, Kappa
  • رگرسیون: MAE، MSE ، RMSE ، R2 ، RMSLE ، MAPE
برای اختصارات بیشتر صفحه PyCaret را بررسی کنید.

				
					# build the decision tree model
classification_dt = classification.create_model('dt')

				
			

ساخت درخت تصمیم با کتابخانه pycaret

به همین ترتیب، برای آموزش مدل XGBoost ، فقط باید رشته “xgboost” را اضافه کنیم:

				
					# build the xgboost model
classification_xgb = classification.create_model('xgboost')
				
			

کد xgboost در pycaret یادگیری ماشین

تنظیم ابرپارامتر در کتابخانه Pycaret

به راحتی می‌توانیم پارامترهای مدل یادگیری ماشین را فقط با استفاده از تابع tune_model تنظیم کنیم که این تابع نیز فقط یک پارامتر می‌گیرد.

 کتابخانه PyCaret قابلیت‌های زیادی را برایمان فراهم می‌کند. به‌عنوان‌مثال، می‌توانیم تعداد folds را با استفاده از پارامتر fold در تابع tune_model تعریف کنیم، یا می‌توانیم تعداد تکرارها را با استفاده از پارامتر n_iter تغییر دهیم. افزایش پارامتر n_iter به‌وضوح باعث افزایش زمان آموزش می‌شود؛ اما در عوض عملکرد بهتری خواهد داشت.

در کد زیر یک مدل تنظیم شده CatBoost را یاد می‌گیریم:

				
					# build and tune the catboost model
tune_catboost = classification.tune_model('catboost')
				
			

مدل catboost در کتابخانه pycaret

ساخت مدل‌های گروهی با استفاده از PyCaret

مدل‌های گروهی در یادگیری ماشین تصمیمات چندین مدل را برای بهبود عملکرد کلی ترکیب می‌کنند. در کتابخانه PyCaret، فقط با یک خط کد می‌توانیم مدل‌های blending، boosting، bagging و stacking   ایجاد کنیم.

برای آشنایی با یادگیری گروهی مقاله روش های یادگیری جمعی را بخوانید.

ساخت مدل Boosting در پایتون با کتابخانه Pycaret

با کد زیر به راحتی یک مدل boosting آموزش می‌دهیم. خروجی این مدل نیز یک جدول است که امتیازات اعتبار متقابل k-fold را برای معیارهای ارزیابی نشان می دهد:

				
					# ensemble boosting
boosting = classification.ensemble_model(classification_dt, method= 'Boosting')
				
			

ساخت ensemble model در pycaret پایتون

مدل Blending در Pycaret

یکی دیگر از تکنیک‌های بسیار معروف دسته‌بندی، blending است. کافی است مدل‌هایی که ایجاد کرده‌ایم را در لیستی از تابع blend_models وارد کنیم:

				
					# Ensemble: blending
blender=classification.blend_models(estimator_list=[classification_dt, classification_xgb])
				
			

ترکیب و blending در pycaret

برای انجام اکثر کارها در کتابخانه Pycaret فقط باید یک خط کد بنویسیم. به همین سادگی...

اگر می‌خواهید درباره مدل‌های گروهی بیشتر بدانید، مقاله زیر را بخوانید:

A Comprehensive Guide to Ensemble Learning

مقایسه مدل‌ها در کتابخانه PyCaret

یکی از توابع مفید کتابخانه PyCaret، مقایسه مدل‌ها است. به جای اینکه مدل‌های مختلف را یکی‌یکی امتحان کنیم، از تابع مقایسه مدل‌ها استفاده می‌کنیم.این تابع معیارهای ارزیابی رایج برای همه مدل‌های موجود را آموزش داده و با هم مقایسه می‌کند.

این تابع فقط در ماژول‌های pycaret.classification و pycaret.regression قابل‌دسترس است:

				
					# compare performance of different classification models
classification.compare_models()
				
			

 

مثال مقایسه مدل های مختلف یادگیری ماشین با pycaret

چطور نتایج Pycaret در یادگیری ماشین را تحلیل کنیم؟

پس از آموزش مدل، گام بعدی تحلیل نتایج است. مخصوصاً از دیدگاه تجارت بسیار مفید است، تحلیل مدل در PyCaret بسیار ساده است. فقط با یک خط کد می‌توان کارهای زیر را انجام داد:

  1. نتایج مدل نمودار:

تحلیل عملکرد مدل در کتابخانه Pycaret به‌سادگی نوشتن plot_model است. می‌توانیم decision boundaries، منحنی precision-recall، منحنی اعتبارسنجی (validation) و غیره را رسم کنیم. برای نمایش مدل‌های خوشه‌بندی، می‌توانیم از elbow plot و silhouette plot استفاده کنیم. داده‌های متنی را می‌توانیم با word cloud، نمودارهای فرکانس bigram و trigram و غیره نشان دهیم.

  1. تفسیر نتایج:

 تفسیر نتایج مدل با تحلیل ویژگی‌های مهم آن، به اشکال‌زدایی مدل کمک می‌کند. این کار یک مرحله حیاتی در پروژه‌های یادگیری ماشین در صنعت است. در کتابخانه Pycaret، می‌توانیم با مقادیر SHAP و نمودار همبستگی به سادگی مدل تفسیر می‌شود.

رسم نتایج مدل در کتابخانه Pycaret

برای رسم نتایج مدل از مدل آموزش‌دیده به‌عنوان پارامتر استفاده کرده و نوع طرح موردنظر خود را رسم می‌کنیم. در ادامه منحنی  AUC-ROC  و Decision Boundary را ترسیم می‌کنیم:

				
					# AUC-ROC plot
classification.plot_model(classification_dt, plot='auc')

# Decision Boundary
classification.plot_model(classification_dt, plot='boundary')
				
			

رسم نمودار نتایج در pycaret پایتون

سپس منحنی Precision Recall و منحنی اعتبارسنجی مدل آموزش‌دیده را رسم می‌کنیم:

				
					# Precision Recall Curve
classification.plot_model(classification_dt, plot='pr')
# Validation Curve
classification.plot_model(classification_dt, plot='vc')
				
			

رسم نمودار دقت و اعتبارسنجی در pycaret

برای یادگیری پایتون و رسم نمودارهای حرفه‌ای با matplotlib، دوره آموزش رایگان پایتون را در کانال یوتیوب دیتاهاب مشاهده کنید.

نحوه ارزیابی مدل در Pycaret

اگر بخواهیم همه این تصویرها را به‌صورت یکجا رسم کنیم، کتابخانه PyCaret تابع شگفت‌انگیز evaluate_model را معرفی کرده است. در این تابع، فقط باید شی مدل را وارد کنیم و PyCaret یک پنجره ارتباطی ایجاد می‌کند تا مدل را از همه روش‌های ممکن بتوانیم مشاهده و تحلیل کنیم:

				
					# evaluate model
classification.evaluate_model(classification_dt)

				
			

چطور در Pycaret، مدل را تفسیر کنیم؟

تفسیر مدل‌های پیچیده در بیشتر پروژه‌های یادگیری ماشین بسیار مهم است. تحلیل آنچه که مدل فکر می‌کند مهم است؛ چون به ازبین‌بردن باگ‌های مدل کمک می‌کند. در PyCaret، این مرحله به‌سادگی نوشتن interpre_model برای به‌دست‌آوردن مقادیر Shapley ساده است.

برای آشنایی بیشتر با مقادیر Shapley  لینک زیر را بخوانید: A Unique Method for Machine Learning Interpretability: Game Theory & Shapley Values

				
					# interpret_model: SHAP
classification.interpret_model(classification_xgb)
				
			

 

تفسیر مدل در pycaret

با کد زیر نمودار همبستگی را رسم می‌کنیم:

				
					# interpret model : Correlation
classification.interpret_model(classification_xgb,plot='correlation')
				
			

 

نمودار correlation در مثال کتابخانه pycaret

زمان پیش‌بینی با Pycaret رسیده!

در اینجا، داده‌های مشاهده نشده را پیش‌بینی خواهیم کرد. کافی است مدل و مجموعه‌داده را وارد کنیم. کتابخانه Pycaret یک pipeline از تمام مراحل ایجاد می‌کند و داده‌های مشاهده نشده را به آن منتقل کرده و نتایج را ارائه می‌دهد.

کد زیر نشان می‌دهد چگونه می‌توان برچسب‌های داده‌های مشاهده نشده را پیش‌بینی کرد:

				
					# read the test data
test_data_classification = pd.read_csv('datasets/loan_test_data.csv')
# make predictions
predictions = classification.predict_model(classification_dt, data=test_data_classification)
# view the predictions
Predictions
				
			

 

مثال دسته بندی داده با کتابخانه pycaret

ذخیره و بارگذاری مدل در کتابخانه Pycaret

اکنون، هنگامی‌که مدل ساخته و تست شد، می‌توانیم با استفاده از تابع save_model آن را در فایل pickle ذخیره کنیم. مدل ذخیره شده و نام فایل را وارد می‌کنیم:

				
					# save the model
classification.save_model(classification_dt, 'decision_tree_1')
				
			

بعداً می‌توانیم این مدل را بارگیری کرده و برچسب‌های داده‌های مشاهده نشده را پیش‌بینی کنیم:

				
					# load model
dt_model = classification.load_model(model_name='decision_tree_1')
				
			

استفاده از PyCaret به‌شدت آسان است. به‌راحتی هرچه‌تمام‌تر، انواع مختلف مسائل را تنها با یک خط کد، پیاده‌سازی می‌کنیم و در کسری از ثانیه نتایج را به ما نشان می‌دهد. طبیعتاً Pycaret ابزاری قوی و مناسب است؛ ولی ارزش آن جایی نمایان‌تر می‌شود که زمان کمی داشته باشیم؛ ولی به دنبال نتیجه خوب باشیم.

مطالب بیشتر

chatgpt چیست

چت بات ChatGPT چیست؟

فهرست مطالب اگه میخوای به ساده‌ترین شکل ممکن بفهمی ChatGPT چیه، جای درستی اومدی! امروز

2 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

دیدگاهتان را بنویسید