مبدّل (Transformer) :

همانطوریکه قبلاً هم دیدیم، داده‌ها معمولاً قبل از اینکه به‌خوردِ یک مدل داده‌شوند، ابتدا دسخوش یکسری تبدیلات قرار‌میگیرند. این قضیه در Scikit-learn API ، در قالب یک متد به نام: " ()transformer " متجلی میشود که به ما این امکان را می‌دهد تا برخی از تکنیک‌های پیش‌پردازشی (preprocessing) را روی داده‌ها انجام دهیم.

این مِتد می‌تواند هم به عنوان نقطه‌ی شروعی برای تبدیل داده‌های ورودی مدل (این داده‌ها را قبلا با متغیرِ X_train معلوم کردیم) در نظرگرفته شود؛ و هم میتواند در طول روند تغذیه‌ی مدل، بمنظور ویرایش داده‌هایی که در خصوص أمر پیش‌بینی به مدل داده می‌شوند، مورد استفاده قرارگیرد. کاربرد دوم نقش خطیری در به‌دست‌آوردن نتایج دقیق بازی میکند؛ زیرا تضمین می‌کند که داده‌های جدید از همان رویه‌ی توزیع یکسانی که در خصوص داده‌هایِ آموزش استفاده شده است، پیروی می کنند.

در قطعه کد زیر، نمونه‌ای از یک مبدّل را مشاهده میکنید که مقادیر داده‌هایِ آموزش را استاندارد‌سازی میکند:


from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)

در خط اول از کد بالا، کلاس StandardScaler فراخوانی شده که نقش آن استانداردسازی داده‌هایی میباشد که به عنوان آرگومان دریافت می‌کند. در واقع، کلاس مذکور در حکم مبدّل ما میباشد که در خط دوم به آن عینیّت بخشیده‌ایم. در خط سوم نیز، داده‌هایِ آموزش را به کمک متد ()fit به مبدّل موردنظر اعمال کرده یا به اصطلاح فیت میکنیم(به عبارتی مبدّل را با داده‌های آموزش، تجهیز میکنیم). نهایتا هم در خط آخر به کمک متد ()transform ، عملیات تبدیل را به اتمام میرسانیم.

مزیت مبدّل در این است که فقط با یکبار اعمال کردن آن روی دیتاستِ آموزش، مقادیر مورداستفاده در روند تبدیل را ذخیره میکند؛ و میتواند با استفاده از آن مقادیر، پروسه‌ی تبدیل دیتاستِ آموزش را نیز با همان توزیع یکسان، به انجام برساند:


X_test = scaler.transform(X_test)

جمع‌بندی

ما در این قسمت و قسمت‌های قبلی، یکی از اصلی‌ترین بخش‌های scikit-learn را که API آن میباشد را مورد بحث قرار دادیم. این API از ساختار ثابتی پیروی می‌کند که استفاده از الگوریتم‌های یادگیری ماشین را برای افراد غیر متخصص آسان نیز می‌کند.
ما همچنین یادگرفتیم که اولین قدم در مدل‌سازی یک الگوریتم در scikit-learn، عینیت بخشیدن به مدل آن و سپس تجهیز این مدل توسط داده‌هایِ آموزش به کمک متد ()fit میباشد که در واقع در حکم estimator ماست. به دنبال آن و با به اتمام رسیدن آموزشِ مدل، ممکن است احساس نیازی به پیش‌بینی مقادیر جدید وجود داشته باشد که این أمر نیز به کمک متد ()predictor میسر میباشد.
علاوه بر اینها، scikit-learn دارای یک رابط مبدّلی نیز میباشد که به ما این امکان را میدهد تا در صورت نیاز، داده‌ها را دستخوش یکسری تبدیلات قرار داده و تکنیک‌های پیش‌پردازشی مفیدی را روی داده‌های آموزش، پیاده کنیم. این قضیه به‌نوبه‌ی خود این امکان را به ما میدهد که عملیات تبدیل داده‌های تست را هم با توزیع یکسانی نسبت به داده‌های آموزش انجام دهیم.