برای ترشی کردن یک طبقهبندیکننده آموزشدیده در پایتون با استفاده از ماژول «ترشی»، میتوانیم چند مرحله ساده را دنبال کنیم. Pickling به ما این امکان را می دهد که یک شی را سریال کنیم و آن را در یک فایل ذخیره کنیم، که سپس می تواند بارگذاری شود و بعدا استفاده شود. این به ویژه زمانی مفید است که میخواهیم یک مدل یادگیری ماشین آموزشدیده، مانند طبقهبندیکننده رگرسیون را برای استفاده در آینده بدون نیاز به هر بار آموزش مجدد آن ذخیره کنیم.
ابتدا باید ماژول "pickle" را در اسکریپت پایتون خود وارد کنیم:
python import pickle
در مرحله بعد، ما باید طبقه بندی کننده خود را آموزش دهیم و مدل آموزش دیده را بدست آوریم. بیایید فرض کنیم قبلاً یک طبقهبندی کننده رگرسیون را آموزش دادهایم و آن را در متغیری به نام 'regression_model' ذخیره کردهایم.
برای ترشی کردن مدل آموزشدیده، میتوانیم از تابع ()pickle.dump استفاده کنیم. این تابع دو پارامتر دارد: شیء مورد نظر ما (در این مورد، طبقهبندیکننده آموزشدیده)، و شی فایلی که میخواهیم شیء ترشی را در آن ذخیره کنیم. ما می توانیم با استفاده از تابع 'open()' یک فایل را در حالت نوشتن باینری باز کنیم.
python with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file)
در کد بالا، فایلی به نام 'regression_model.pkl' را در حالت نوشتن باینری ('wb') باز می کنیم و آن را به عنوان پارامتر دوم به 'pickle.dump()' منتقل می کنیم. طبقه بندی آموزش دیده، ذخیره شده در متغیر 'regression_model'، ترشی شده و در فایل ذخیره می شود.
اکنون، ما با موفقیت طبقهبندیکننده آموزشدیده خود را ترشی کردیم. ما می توانیم هر زمان که به آن نیاز داشته باشیم با استفاده از تابع "pickle.load()" آن را دوباره در حافظه بارگذاری کنیم.
python with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file)
در کد بالا، فایل ترشی را در حالت خواندن باینری ('rb') باز می کنیم و آن را به عنوان پارامتر به 'pickle.load()' می دهیم. شیء ترشی در متغیر 'loaded_model' بارگذاری می شود، که می تواند برای پیش بینی یا هر عملیات دیگری استفاده شود.
در اینجا یک مثال کامل نشان می دهد که ترشی و بارگذاری یک طبقه بندی کننده رگرسیون آموزش دیده را نشان می دهد:
python import pickle from sklearn.linear_model import LinearRegression # Training the regression model X_train = [[1], [2], [3], [4], [5]] y_train = [2, 4, 6, 8, 10] regression_model = LinearRegression() regression_model.fit(X_train, y_train) # Pickling the trained model with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file) # Loading the pickled model with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file) # Using the loaded model for prediction X_test = [[6]] predicted_value = loaded_model.predict(X_test) print(predicted_value)
در مثال بالا، ابتدا یک مدل رگرسیون خطی ساده را با استفاده از کلاس 'LinearRegression' از ماژول 'sklearn.linear_model' آموزش می دهیم. سپس مدل آموزش دیده را در فایلی با نام 'regression_model.pkl' ترشی می کنیم. بعداً، مدل ترشی را از فایل بارگیری میکنیم و از آن برای پیشبینی مقدار ورودی آزمایشی «X_test» استفاده میکنیم.
با ترشی کردن و بارگذاری طبقهبندیکننده آموزشدیده، میتوانیم از مدل بدون نیاز به آموزش مجدد آن استفاده کنیم که میتواند مقدار قابل توجهی در زمان و منابع محاسباتی صرفهجویی کند.
سایر پرسش ها و پاسخ های اخیر در مورد یادگیری ماشین EITC/AI/MLP با پایتون:
- ماشین بردار پشتیبان (SVM) چیست؟
- آیا الگوریتم K نزدیکترین همسایه ها برای ساخت مدل های یادگیری ماشینی قابل آموزش مناسب است؟
- آیا الگوریتم آموزشی SVM معمولاً به عنوان یک طبقه بندی خطی باینری استفاده می شود؟
- آیا الگوریتم های رگرسیون می توانند با داده های پیوسته کار کنند؟
- آیا رگرسیون خطی به ویژه برای مقیاس بندی مناسب است؟
- چگونه Mean Shift dynamic Width به طور تطبیقی پارامتر پهنای باند را بر اساس چگالی نقاط داده تنظیم می کند؟
- هدف از تخصیص وزن به مجموعه ویژگی ها در اجرای پهنای باند پویا شیفت میانگین چیست؟
- چگونه مقدار شعاع جدید در رویکرد پهنای باند پویا تغییر میانگین تعیین می شود؟
- رویکرد پهنای باند پویا تغییر میانگین چگونه میتواند به درستی مرکزها را بدون کدگذاری سخت شعاع پیدا کند؟
- محدودیت استفاده از شعاع ثابت در الگوریتم تغییر میانگین چیست؟
سوالات و پاسخ های بیشتری را در آموزش ماشینی EITC/AI/MLP با پایتون مشاهده کنید