logo

StandardScaler ב-Sklearn

מתי וכיצד להשתמש ב-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() מאחסנת את הממוצע ואת סטיית התקן.

פרמטרים:

    העתק (bool, ברירת מחדל = נכון):-אם פרמטר זה מוגדר כ-True, נסה להתרחק מהעתקים ולהתאים את הדגימות במקום. זה לא בהכרח מובטח לתפקד במקום; לדוגמה, הפונקציה עדיין עשויה להחזיר עותק אם הקלט אינו בצורה של מערך NumPy או מטריצת scipy.sparse CSR.with_mean (bool, default = True):-אם הפרמטר מוגדר כ-True, שנה את קנה המידה של הנתונים לאחר ריכוזם. כאשר מיושמים על מטריצות דלילות, זה נכשל (ומעלה חריג), שכן ריכוזן מחייב בניית מטריצה ​​צפופה שברוב נסיבות השימוש צפויה להיות ענקית מכדי להכנס לאיל.with_std (bool, default = True):-פרמטר זה משנה את נתוני הקלט לשונות היחידה אם היא מוגדרת כ-true (או שאנו יכולים לומר שהוא עושה סטיית תקן של יחידה).

תכונות:

    scale_ (ndarray בעל צורה של (n_features,) או None):-הנתונים מותאמים יחסית עבור כל תכונה עם אפס ממוצע ושונות יחידה.mean_ (ndarray בעל צורה של (n_features,) או None):-זהו הערך הממוצע של מערך ההדרכה עבור כל תכונה. כאשר הארגומנט with_mean מוגדר ל-False, ערך זה שווה ללא.var_ (ndarray בעל צורה של (n_features,) או None):-זהו הערך של השונות של כל תכונה במערך ההדרכה. הוא משמש לקביעת קנה המידה של התכונות. כאשר הארגומנט with_std מוגדר כ-False, ערך זה שווה ללא.n_features_in_ (מסוג _int):-תכונה זו נותנת את מספר התכונות שנצפו בעת ההתאמה.feature_names_in_ (ndarray בעל צורה כמו (n_features_in_,)):-תכונה זו היא התכונות המזוהות בשמות במהלך ההתאמה. X מוגדר רק כאשר כל שמות התכונות שלו הם מחרוזת סוג נתונים.n_samples_seen_ ( מסוג int או ndarray בעל צורה כמו (n_features,)):-זה נותן את מספר הדגימות שהמעריך בדק עבור כל תכונה.

שיטות של מחלקת 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]