מתי וכיצד להשתמש ב-StandardScaler?
כאשר התכונות של מערך הנתונים הנתון משתנות באופן משמעותי בטווחים שלהם או מתועדות ביחידות מדידה שונות, StandardScaler נכנס לתמונה.
הנתונים מותאמים לשונות של 1 לאחר הפחתת הממוצע ל-0 באמצעות StandardScaler. אבל בעת קביעת הממוצע האמפירי של הנתונים וסטיית התקן, לחריגים הקיימים בנתונים יש השפעה משמעותית שמקטינה את ספקטרום הערכים האופייניים.
אלגוריתמים רבים של למידת מכונה עשויים להיתקל בבעיות עקב שינויים אלה בתכונות ההתחלה. עבור אלגוריתמים שמחשבים מרחק, למשל, אם לאחד ממאפייני מערך הנתונים יש ערכים בעלי טווחים גדולים או שונים לחלוטין, התכונה המסוימת של מערך הנתונים תשלוט בחישוב המרחק.
פונקציית StandardScaler של sklearn מבוססת על התיאוריה שלמשתני מערך הנתונים שהערכים שלהם נמצאים בטווחים שונים אין תרומה שווה לפרמטרי ההתאמה ולתפקוד האימון של המודל ואף עלולים להוביל להטיה בתחזיות שנעשו עם אותו מודל.
לכן, לפני הכללת התכונות במודל למידת מכונה, עלינו לנרמל את הנתונים (µ = 0, σ = 1). סטנדרטיזציה בהנדסת תכונות משמשת בדרך כלל כדי לטפל בבעיה פוטנציאלית זו.
סטנדרטיזציה באמצעות Sklearn
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
על ידי ביטול הממוצע מהמאפיינים וקנה מידה שלהם לשונות יחידה, תכונות סטנדרטיות באמצעות פונקציה זו.
הנוסחה לחישוב ציון התקן של תכונה היא z = (x - u) / s, כאשר u הוא הממוצע של תכונת האימון (או אפס אם with_mean = False) ו-s היא סטיית התקן של המדגם (או אחת אם with_std = False ).
על ידי חישוב הנתונים הסטטיסטיים הרלוונטיים על המאפיינים בערכת האימונים, ריכוך ושינוי קנה מידה מיושמים באופן עצמאי על כל תכונה. לאחר מכן, לשימוש עם דגימות מאוחרות יותר באמצעות transform(), שיטת fit() מאחסנת את הממוצע ואת סטיית התקן.
פרמטרים:
תכונות:
שיטות של מחלקת StandardScaler
fit(X[, y, sample_weight]) | שיטה זו מחשבת את הממוצע ואת סטיית התקן לשימוש מאוחר יותר עבור קנה המידה של הנתונים. |
fit_transform(X[, y]) | שיטה זו מתאימה לפרמטרים של הנתונים ולאחר מכן הופכת אותם. |
get_feature_names_out([input_features]) | שיטה זו משיגה את שמות התכונה עבור השינוי. |
get_params([עמוק]) | שיטה זו נותנת את הפרמטרים של האומד המסוים. |
inverse_transform(X[, copy]) | זה מקטין את גודל הנתונים כדי להתאים לצורתם המקורית. |
partial_fit(X[, y, sample_weight]) | הממוצע וסטיית התקן ב-X מחושבים באופן מקוון לצורך שינוי קנה מידה מאוחר יותר. |
set_params(**params) | שיטה זו משמשת לקביעת הערך של הפרמטרים של האומד. |
transform(X[, copy]) | שיטה זו הופכת את הנתונים באמצעות פרמטרים שכבר מאוחסנים במחלקה. |
דוגמה ל-StandardScaler
ראשית, נייבא את הספריות הנדרשות. כדי להשתמש בפונקציית StandardScaler, עלינו לייבא את ספריית Sklearn.
לאחר מכן נטען את מערך הנתונים של הקשתית. אנו יכולים לייבא את מערך הנתונים של IRIS מספריית sklearn.datasets.
ניצור אובייקט של המחלקה StandardScaler.
הפרדת התכונות העצמאיות והמטרה.
נשתמש בשיטת fit transform() כדי ליישם את הטרנספורמציה למערך הנתונים.
תחביר:
object_ = StandardScaler() object_.fit_transform(features)
בתחילה בנינו מופע של שיטת StandardScaler() בעקבות התחביר שהוזכר לעיל. בנוסף, אנו מתקנים את הנתונים על ידי שימוש ב-fit_transform() יחד עם האובייקט שסופק.
קוד
# Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_)
תְפוּקָה
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]