ویرگول
ورودثبت نام
Mahdi Pakravan | مهدی پاکروان
Mahdi Pakravan | مهدی پاکروانهمون پسره که تو کلاس نمیفهمید ، روش نمیشد بگه میرفت به زبون خودش یاد میگرفت و به زبون خودش مینوشت تو ویرگول :)
Mahdi Pakravan | مهدی پاکروان
Mahdi Pakravan | مهدی پاکروان
خواندن ۲ دقیقه·۸ ماه پیش

یادگیری ماشین به زبان من ( مرحله ۹ - Feature Scaling مقیاس‌بندی ویژگی‌ها)

تا اینجای کار یاد گرفتیم ویژگی هامون رو مهندسی کنیم و دسته بندی کنیم و ...

اما حالا میخوام یک چیزی نشونتون بدم , در نهایت کدی که تو مقاله قبلی زدیم و مهندسی ویژگی انجام دادیم , اما میخوام یک چیزی نشونتون بدم :

نمودار توزیع داده ها قبل از مقیاس بندی ویژگی ها
نمودار توزیع داده ها قبل از مقیاس بندی ویژگی ها


دقت کنید مثلا رنج اعداد کلسترول بین ۱۶۰ تا ۲۳۰ ولی رنج اعداد Heart_Rate بین ۴۰ تا ۱۰۰ هستش .

خب این الان چه مشکلی داره ؟

ببینید , مدل هوش مصنوعی اگر داده های یک ویژگی خیلی بزرگ باشن و اون یکی ویژگی خیلی کوچیک باشه , جواب درستی نمیده . یعنی فکر میکنه اون ویژگی که عددش خیلی بزرگتره خیلی هم مهم تره در صورتی که برای ما این نتیجه اصلا مطلوب نیست.

مدل هوش مصنوعی ما دوست داره که همه چیز تو یک رنج باشه تا نتیجه بهتری بده

جلوتر که بریم دقیق تر متوجه میشوید که چرا باید Feature Scaling انجام بدیم .

مقیاس بندی ویژگی یا Feature Scaling
مقیاس بندی ویژگی یا Feature Scaling

همانطور که در تصویر بالا مشاهده میکنید توزیع داده ها به شکلی که سمت راست تصویر موجوده برای مدل های ماشین لرنینگ مطلوب تره .

پس توی ذهنتون بدونید که شکل توزیع داده ها قبل و بعد از Feature Scaling چقدر متفاوته .

برای انجام Feature Scaling تمام مراحل قبلی Data Preprocessingتون رو کامل کرده باشین و ستون های عددیتون رو انتخاب کرده باشین :

numeric_cols = df.select_dtypes(include=["int64", "float64"]).columns

حالا باید بر اساس الگوریتمی که میخواید ازش استفاده کنید (که در پست های بعدی در موردشون صحبت خواهیم کرد) داده هاتون رو مقایس پذیر کنید .

انواع روش های Feature Scaling

1-استاندارد سازی (StandardScalar)

هر ویژگی رو طوری تغییر می‌ده که میانگینش صفر و انحراف معیارش یک بشه.
هر ویژگی رو طوری تغییر می‌ده که میانگینش صفر و انحراف معیارش یک بشه.
scaler = StandardScaler() scaled_array = scaler.fit_transform(df[numeric_cols]) scaled_df = pd.DataFrame(scaled_array, columns=numeric_cols)

کجا استفاده میشه ؟

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

  • Logistic Regression

  • Linear Regression

  • SVM

  • Neural Networks


۲-مقیاس بندی به بازه ۰ و ۱ (MinMaxScalar)

داده‌ها رو به بازه‌ی دلخواه (پیش‌فرض 0 تا 1) می‌بره.
داده‌ها رو به بازه‌ی دلخواه (پیش‌فرض 0 تا 1) می‌بره.
`from sklearn.preprocessing import RobustScaler scaler = RobustScaler() X_scaled = scaler.fit_transform(X)

کی استفاده کنیم؟

وقتی داده‌ها پراکندگی خاصی ندارن

  • KNN

  • Neural Networks (در خیلی از موارد)

  • PCA (برای بهتر شدن عملکرد کاهش ابعاد)


۳-نرمال سازی سطری (Normalizer)

from sklearn.preprocessing import Normalizer scaler = Normalizer() X_scaled = scaler.fit_transform(X)

هر نمونه (ردیف) رو طوری تغییر می‌ده که طولش (norm) برابر با 1 بشه

کی استفاده کنیم؟

  • در مسائل بازیابی اطلاعات (IR) یا پردازش متن مثل TF-IDF یا Word Embedding

  • وقتی بردارها باید نرمال شده باشن

خلاصه :

از کدوم تکنیک مقیاس بندی ویژگی استفاده کنیم
از کدوم تکنیک مقیاس بندی ویژگی استفاده کنیم


این قسمت هم تموم شد , در قسمت بعدی به آخرین مرحله پیش پردازش داده ها (Data Preprocessing) میرسیم و بعد از اون میریم سراغ مدل های مختلف , Classification , Clustering و سایر ماجرا ...

هوش مصنوعییادگیری ماشین
۱
۰
Mahdi Pakravan | مهدی پاکروان
Mahdi Pakravan | مهدی پاکروان
همون پسره که تو کلاس نمیفهمید ، روش نمیشد بگه میرفت به زبون خودش یاد میگرفت و به زبون خودش مینوشت تو ویرگول :)
شاید از این پست‌ها خوشتان بیاید