سؤال: سلام آقای دکتر وقتتون بخیر باشه. آقای دکتر در جلسه ی 23 قسمت 3 دقیقه ی 11 ما اومدیم داده ها رو استاندارد کردیم ولی با روشی که تا الان استاندارد می کردیم متفاوته ؟ این روش چه تفاوتی با اون روش StandardScaler داره که بعدش فیت می کردیم و بعد transform. تو این ویدیو از یک روش دیگه استاندارد کردیم x_scaled = preprocessing.scale(x)؟ اینا با هم تفاوتی دارن؟

 

پاسخ: سلام سارا جان.

scale

یک دیتاست رو برای ما استاندارد میکنه ولی

StandardScaler

ویژگی‌های موجود در یک دیتاست رو. میتونی وارد بخش مستندسازی این دو بشی و توضیحات دقیق رو اونجا ببینی

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.scale.html

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

انتهای لینک اول یک اخطاری داره که خیلی مهمه. بهش خیلی دقت کن. میگه در حالت کلی اگر بلد نیستی تو مدلهات نباید از این تکنیک استفاده کنی چون باعث درز اطلاعات میشه

Warning 

Risk of data leak

Do not use scale unless you know what you are doing. A common mistake is to apply it to the entire data before splitting into training and test sets. This will bias the model evaluation because information would have leaked from the test set to the training set. In general, we recommend using StandardScaler within a Pipeline in order to prevent most risks of data leaking: pipe = make_pipeline(StandardScaler(), LogisticRegression()).