המדריך השלם ל-Min-Max Scaleer בלימוד מכונה בקלות – Finxter

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
פרסומת
X-ray_Promo1


בפוסט הזה, נעבור על היסודות של Min-Max scaler. כמו כן, נתמקד כיצד להרחיב עמודות ספציפיות פנדות DataFrame.

מהו Min-Max scaler?

קנה מידה Min-Max היא טכניקת נורמליזציה המאפשרת לנו לשנות את קנה המידה של נתונים במערך נתונים לטווח מסוים תוך שימוש בערך המינימלי והמקסימלי של כל תכונה.

שלא כמו קנה מידה סטנדרטי, שבו הנתונים מותאמים על סמך ההתפלגות הנורמלית הסטנדרטית (עם ממוצע = 0 ו סטיית תקן = 1), ה-min-max scaler משתמש בכל עמודה מִינִימוּם ו מַקסִימוּם ערך לקנה מידה של סדרת הנתונים.

אבל למה זה בכלל נדרש?

  • קנה המידה של הנתונים עבור תכונות מסוימות עשוי להיות שונה באופן משמעותי מאלה של אחרים, מה שעשוי לפגוע בביצועים של הדגמים שלנו. זה במיוחד המקרה עם אלגוריתמים המסתמכים על מידה של מרחקים, כגון רשתות עצביות ו KNN.
  • זה גם מועיל לאופטימיזציה למידת מכונה תהליכים כמו ירידה בשיפוע ומאפשר להתכנסות להתרחש מהר יותר.
  • זה יכול לעזור לשפר את הביצועים והמהירות של ביצוע האלגוריתמים. מכיוון שהנתונים כבר מוקטנים, חישובים מורכבים הנדרשים בעיקר כדי לייעל אלגוריתמים מהירים יותר.
  • זה יכול להיות מועיל גם כאשר משווים מערכי נתונים או מודלים שונים מבחינת הביצועים שלהם.

קנה המידה Min-Max, מיושם ב sklearn ספריות, שימשה ביישומי Machine Learning רבים כמו ראייה ממוחשבת, עיבוד שפה טבעית וזיהוי דיבור.

נשתמש בדברים הבאים sklearn שיטה ליישם טכניקה זו על כל העמודות ב-DataFrame של פנדה.

sklearn.preprocessing.MinMaxScaler().fit_transform()

אנו גם נראה כיצד ליישם זאת על עמודות ספציפיות במסגרת נתונים באמצעות שתי שיטות במדריך זה. אתאר את כל אלה להלן עם דוגמאות ממאגר הנתונים של פימה הודית לסוכרת.

שיטה 1: sklearn.preprocessing MinMaxScaler()

נשתמש במערך הנתונים הפופולרי של סוכרת – מערך הנתונים של Pima Indian Diabetes מ-UCI כדי להראות דרכים שונות שבהן אנו יכולים ליישם קנה מידה מינימלי.

ללא ספק, הדרך הקלה ביותר היא להשתמש ב- sklearn חבילת ספרייה ושיטת השליטה שלה.

אבל ראשית, בואו נכניס את הנתונים למסגרת הנתונים שלנו באמצעות ה ספריית פנדות ולבצע קצת EDA.

import pandas as pd
columns = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = pd.read_csv('pima-indians-diabetes.data.csv', names=columns)
data.head()

יש לנו תשע עמודות, כשהאחרונה היא המחלקה שאנו מנסים לחזות במודל שלנו.

הפריטים עם סוג 1 מראים שלמשתמש מסוים יש סוכרת ואלו עם סוג 0 מצביעים על כך שהמשתמשים נבדקו שלילי לסוכרת. התכונות אינן מאותו יחידה או קנה מידה.

קח, למשל, את שתי העמודות הראשונות (preg ו plas); זה ברור ש preg– המציין כמה פעמים המטופלת הייתה בהיריון הוא ביחידה ספרה בעוד plas– שהוא הגלוקוז הפלזמה של הלקוח הוא בעשרות או מאות יחידות.

נתאר את הנתונים כדי לראות את ההתפלגות של כל עמודה.

data.describe()

באופן גרפי, אנו יכולים לראות כיצד הנתונים מפוזרים למטה.

data[columns].hist(stacked=False, bins=100, figsize=(12,30), layout=(14,2));

הגרפים שלמעלה מראים בבירור שהתכונות אינן באותו קנה מידה. עם זאת, עם sklearn min-max scaler, אנו יכולים להבטיח שהעמודות משתמשות באותו קנה מידה.

תחילה נפריד את הנתונים לקלט ופלט.

# Separating the data into input and output components
X = data.drop('class', axis=1)
Y = data['class'] # class is the output
X.head()

תן לנו לשנות את קנה המידה של כל התכונות לאותו קנה מידה ולטווח שבין 0 ל-1 בערכים באמצעות sklearn MinMaxScaler לְהַלָן:

from sklearn.preprocessing import MinMaxScaler
X_copy = X.copy() #We create a copy so we can still refer to the original dataframe later
scaler = MinMaxScaler()
X_columns = X.columns
X_scaled = pd.DataFrame(scaler.fit_transform(X_copy), columns=X_columns)
X_scaled.head()

אנחנו יכולים לתאר את הנתונים ב X_scaled כדי להציג את ערכי המינימום והמקסימום של כל עמודה.

כעת הם 0 ו-1 בהתאמה עבור כל העמודות, וכעת הם גם באותו קנה מידה.

X_scaled.describe()

כעת נניח שרק תת-קבוצה של העמודות השלמות יש לשנות את קנה המידה. לדוגמה, הבה נבחן מצב בו אנו צריכים רק להתאים את העמודות preg ו plas בעוד עמודים אחרים שומרים על סולמותיהם; איך אנחנו עושים את זה

שוב נוכל להשתמש ב-min-max scaler של sklearn חבילה לעשות זאת באופן הבא:

from sklearn.preprocessing import MinMaxScaler
X_copy = X.copy()
scaler = MinMaxScaler()
X_copy[['preg', 'plas']] = scaler.fit_transform(X_copy[['preg', 'plas']])
X_copy.head()

אנחנו יכולים לראות רק preg ו plas מותאמים. אנו יכולים גם להראות שהערכים המינימליים והמקסימליים של שתי העמודות הם 0 ו-1, בהתאמה, למטה.

X_copy.describe()

שיטה 2: חישוב מפורש

אנחנו יכולים לכתוב את הפונקציה שלנו כדי לחשב את הערך בקנה מידה של X כדלהלן. אותו חישוב הוא בעצם מה של שיטת ה-min-max scaler sklearn עושה מתחת למכסה המנוע.

def scale_column(df,column):
    column_max = df[column].max()
    column_min = df[column].min()
    for i in range(df[column].count()):
        df.loc[i,column] = (df.loc[i,column] - column_min) / (column_max - column_min)

אנו יוצרים א עותק של מסגרת הנתונים שלנו שוב (אנחנו רוצים לשמור על מסגרת הנתונים המקורית כדי להציג דוגמאות נוספות בהמשך).

לאחר מכן אנו משתמשים בשיטה שלנו כדי לשנות את קנה המידה של עמודות ספציפיות במסד הנתונים באופן הבא:

X_copy2 = X.copy()
scale_column(X_copy2,'preg')
scale_column(X_copy2,'plas')
X_copy2.head()

אנו יכולים לראות שהפלט זהה למה שקיבלנו באמצעות sklearn חבילה למעלה.

אנו יכולים גם לתאר את מסגרת הנתונים ולהראות את הערכים בשתי העמודות שסקלנו כעת בין 0 ל-1.

X_copy2.describe()

סיכום

בפוסט הזה, סקרנו את קנה המידה של min-max, למה אנחנו צריכים את זה כדי לייעל אלגוריתמים, וכיצד להחיל scaler של min-max על מערך נתונים שלם במסגרת נתונים של פנדה.

כמו כן, חקרנו שינוי קנה מידה של עמודות ספציפיות במסגרת נתונים כזו באמצעות קנה מידה של מינימום-מקס.

דנו בשתי גישות לכך, האחת התמקדה ב sklearn החבילה והאחרת באמצעות פונקציה מוגדרת מראש.



קישור לכתבת המקור – 2022-01-28 21:57:03

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on telegram
Telegram
Share on whatsapp
WhatsApp
Share on email
Email
פרסומת
תכנון תשתיות רפואיות

עוד מתחומי האתר