Sklearn.preprocessing
Sklearn.preprocessing: راهنمای جامع برای پیشپردازش دادهها در Scikit-learn
مقدمه
در دنیای یادگیری ماشین، دادهها نقش اساسی را ایفا میکنند. با این حال، دادههای خام اغلب ناقص، ناسازگار و یا در قالبی نامناسب برای الگوریتمهای یادگیری ماشین هستند. به همین دلیل، پیشپردازش دادهها یک گام حیاتی در هر پروژه یادگیری ماشین محسوب میشود. کتابخانه Scikit-learn در پایتون، مجموعهای قدرتمند از ابزارها را برای پیشپردازش دادهها ارائه میدهد که در ماژول `preprocessing` قرار دارند. این مقاله، یک راهنمای جامع برای مبتدیان در مورد `sklearn.preprocessing` است که به شما کمک میکند تا دادههای خود را به طور موثر برای مدلهای یادگیری ماشین آماده کنید.
چرا پیشپردازش دادهها مهم است؟
- **بهبود دقت مدل:** الگوریتمهای یادگیری ماشین به دادههای با کیفیت و سازگار نیاز دارند. پیشپردازش دادهها میتواند نویز را کاهش دهد، مقادیر گمشده را مدیریت کند و دادهها را در مقیاسی مناسب قرار دهد، که همگی منجر به بهبود دقت مدل میشوند.
- **تسریع زمان آموزش:** دادههای پیشپردازششده میتوانند فرآیند آموزش مدل را تسریع کنند، زیرا الگوریتمها نیازی به صرف زمان برای مقابله با دادههای نامناسب ندارند.
- **جلوگیری از Overfitting:** مقیاسبندی و نرمالسازی دادهها میتواند به جلوگیری از Overfitting (بیشبرازش) کمک کند، به خصوص در مدلهایی که به مقیاس دادهها حساس هستند.
- **بهبود قابلیت تفسیر:** دادههای پیشپردازششده اغلب قابلیت تفسیر بهتری دارند، زیرا نویز و ناسازگاریها حذف شدهاند.
ماژول `sklearn.preprocessing`
ماژول `preprocessing` در Scikit-learn شامل ابزارهای مختلفی برای انجام وظایف پیشپردازش دادهها است. در ادامه، برخی از مهمترین ابزارها و تکنیکهای موجود در این ماژول را بررسی میکنیم:
1. مقیاسبندی (Scaling)
مقیاسبندی دادهها به معنای تغییر دامنه مقادیر ویژگیها است. این کار میتواند به ویژه برای الگوریتمهایی که به فاصله بین نقاط داده حساس هستند (مانند K-Nearest Neighbors و Support Vector Machines) مفید باشد.
- **`MinMaxScaler`:** این مقیاسبندی، دادهها را به یک دامنه مشخص (معمولاً بین 0 و 1) تبدیل میکند. فرمول آن به صورت زیر است:
Template:Formula
- **`StandardScaler`:** این مقیاسبندی، دادهها را به گونهای تبدیل میکند که میانگین آنها 0 و انحراف معیار آنها 1 شود. این فرآیند به عنوان استانداردسازی نیز شناخته میشود. فرمول آن به صورت زیر است:
Template:Formula
- **`RobustScaler`:** این مقیاسبندی، در برابر دادههای پرت (Outliers) مقاومتر است. از میانه و چارک اول و سوم برای مقیاسبندی دادهها استفاده میکند.
- **`MaxAbsScaler`:** این مقیاسبندی، هر ویژگی را بر اساس مقدار مطلق حداکثر آن مقیاسبندی میکند.
- **`Normalizer`:** این مقیاسبندی، هر نمونه (ردیف) را به گونهای نرمال میکند که طول آن برابر با 1 شود.
2. تبدیلهای غیرخطی
- **`PowerTransformer`:** این تبدیل، دادهها را با استفاده از یک تبدیل توانی (Power Transform) نرمال میکند. این کار میتواند به کاهش چولگی (Skewness) دادهها کمک کند. دو نوع تبدیل توانی رایج عبارتند از `Yeo-Johnson` و `Box-Cox`.
- **`QuantileTransformer`:** این تبدیل، دادهها را به گونهای تبدیل میکند که توزیع آنها به یک توزیع یکنواخت نزدیک شود.
- **`PolynomialFeatures`:** این تبدیل، ویژگیهای چندجملهای را از ویژگیهای موجود ایجاد میکند. این کار میتواند به مدل کمک کند تا روابط پیچیدهتری را در دادهها یاد بگیرد.
3. مدیریت مقادیر گمشده (Missing Values)
- **`SimpleImputer`:** این ابزار، مقادیر گمشده را با استفاده از یک استراتژی ساده (مانند میانگین، میانه یا مقدار ثابت) جایگزین میکند.
- **`KNNImputer`:** این ابزار، مقادیر گمشده را با استفاده از الگوریتم K-Nearest Neighbors جایگزین میکند.
4. رمزگذاری دستهای (Categorical Encoding)
- **`OneHotEncoder`:** این رمزگذاری، هر مقدار دستهای را به یک بردار باینری تبدیل میکند. به عنوان مثال، اگر یک ویژگی دارای سه مقدار دستهای (A، B، C) باشد، `OneHotEncoder` سه ستون جدید ایجاد میکند که هر کدام نشاندهنده یکی از این مقادیر هستند.
- **`OrdinalEncoder`:** این رمزگذاری، مقادیر دستهای را به اعداد صحیح تبدیل میکند. این کار برای ویژگیهایی که دارای ترتیب ذاتی هستند (مانند "کوچک"، "متوسط"، "بزرگ") مناسب است.
- **`LabelEncoder`:** این رمزگذاری، برچسبها (Labels) را به اعداد صحیح تبدیل میکند. این کار معمولاً برای متغیر هدف (Target Variable) استفاده میشود.
5. جداسازی دادهها (Data Splitting)
- **`train_test_split`:** این ابزار، دادهها را به دو مجموعه تقسیم میکند: مجموعه آموزش (Training Set) و مجموعه آزمون (Test Set). مجموعه آموزش برای آموزش مدل استفاده میشود و مجموعه آزمون برای ارزیابی عملکرد مدل استفاده میشود. تقسیم دادهها یک گام ضروری در ارزیابی عملکرد مدل است.
مثال عملی
در اینجا یک مثال ساده از نحوه استفاده از `StandardScaler` برای مقیاسبندی دادهها آورده شده است:
```python import numpy as np from sklearn.preprocessing import StandardScaler
- دادههای نمونه
data = np.array([[1, 2], [3, 4], [5, 6]])
- ایجاد یک شی StandardScaler
scaler = StandardScaler()
- تناسب (Fit) مقیاسبندی با دادهها
scaler.fit(data)
- تبدیل (Transform) دادهها
scaled_data = scaler.transform(data)
- چاپ دادههای مقیاسبندیشده
print(scaled_data) ```
استراتژیهای پیشپردازش دادهها
انتخاب استراتژی مناسب برای پیشپردازش دادهها به نوع دادهها و الگوریتم یادگیری ماشین مورد استفاده بستگی دارد. در اینجا برخی از استراتژیهای رایج آورده شده است:
- **برای دادههای عددی:** مقیاسبندی (MinMaxScaler، StandardScaler، RobustScaler) و تبدیلهای غیرخطی (PowerTransformer، QuantileTransformer).
- **برای دادههای دستهای:** رمزگذاری دستهای (OneHotEncoder، OrdinalEncoder، LabelEncoder).
- **برای دادههای با مقادیر گمشده:** مدیریت مقادیر گمشده (SimpleImputer، KNNImputer).
تحلیل تکنیکال و حجم معاملات
در حوزه مالی، پیشپردازش دادهها نیز برای تحلیل تکنیکال و حجم معاملات حیاتی است. برای مثال:
- **نرمالسازی قیمت سهام:** برای مقایسه قیمت سهام مختلف، نرمالسازی قیمتها ضروری است.
- **محاسبه شاخصهای تکنیکال:** شاخصهای تکنیکال مانند میانگین متحرک (Moving Average) و شاخص قدرت نسبی (Relative Strength Index) نیازمند پیشپردازش دادههای قیمت و حجم هستند.
- **شناسایی الگوهای قیمتی:** پیشپردازش دادهها میتواند به شناسایی الگوهای قیمتی مانند سر و شانه (Head and Shoulders) و مثلثها (Triangles) کمک کند.
- **تحلیل حجم معاملات:** تحلیل حجم معاملات نیازمند پیشپردازش دادههای حجم برای شناسایی روندها و تغییرات در رفتار معاملهگران است.
- **استفاده از اندیکاتورهای حجم:** اندیکاتورهای حجم مانند On Balance Volume (OBV) و Accumulation/Distribution Line (A/D) نیازمند پیشپردازش دقیق دادههای حجم معاملات هستند.
پیوندهای مرتبط
- یادگیری ماشین
- پیشپردازش دادهها
- K-Nearest Neighbors
- Support Vector Machines
- تقسیم دادهها
- میانگین متحرک
- شاخص قدرت نسبی
- سر و شانه
- مثلثها
- On Balance Volume
- Accumulation/Distribution Line
- MinMaxScaler
- StandardScaler
- RobustScaler
- OneHotEncoder
- OrdinalEncoder
- SimpleImputer
- KNNImputer
- PowerTransformer
- QuantileTransformer
- PolynomialFeatures
- تحلیل تکنیکال
- تحلیل حجم معاملات
- دادههای پرت
- چولگی
- استانداردسازی
- نرمالسازی
- بیشبرازش
- توزیع یکنواخت
- متغیر هدف
جمعبندی
ماژول `sklearn.preprocessing` ابزارهای قدرتمندی را برای پیشپردازش دادهها در Scikit-learn ارائه میدهد. با استفاده از این ابزارها، میتوانید دادههای خود را به طور موثر برای مدلهای یادگیری ماشین آماده کنید و دقت و قابلیت اطمینان آنها را بهبود بخشید. درک صحیح از تکنیکهای پیشپردازش دادهها و انتخاب استراتژی مناسب، یک گام حیاتی در هر پروژه یادگیری ماشین است.
شروع معاملات الآن
ثبتنام در IQ Option (حداقل واریز $10) باز کردن حساب در Pocket Option (حداقل واریز $5)
به جامعه ما بپیوندید
در کانال تلگرام ما عضو شوید @strategybin و دسترسی پیدا کنید به: ✓ سیگنالهای معاملاتی روزانه ✓ تحلیلهای استراتژیک انحصاری ✓ هشدارهای مربوط به روند بازار ✓ مواد آموزشی برای مبتدیان