|
|
4 months ago | |
|---|---|---|
| .. | ||
| solution | 4 months ago | |
| README.md | 4 months ago | |
| assignment.md | 7 months ago | |
| notebook.ipynb | 11 months ago | |
README.md
לבנות מודל רגרסיה בעזרת Scikit-learn: רגרסיה בארבע דרכים
הערת מתחילים
רגרסיה ליניארית משמשת כאשר רוצים לחזות ערך מספרי (למשל, מחיר דירה, טמפרטורה, או מכירות).
היא פועלת על ידי מציאת קו ישר המייצג בצורה הטובה ביותר את הקשר בין תכונות קלט לפלט.
בשיעור זה נתמקד בהבנת המושג לפני שנחקור טכניקות רגרסיה מתקדמות יותר.

אינפוגרפיקה מאת Dasani Madipalli
מבחן טרום-הרצאה
השיעור זמין גם ב-R!
מבוא
עד כה חקרתם מהי רגרסיה עם דוגמת נתונים שנאספה ממאגר מחירי דלעות שבו נשתמש לאורך כל השיעור. גם ויזואליתם זאת בעזרת Matplotlib.
עכשיו אתם מוכנים לעומק נוסף לגבי רגרסיה בלמידת מכונה. בעוד שויזואליזציה מאפשרת להבין את הנתונים, הכוח האמיתי בלמידת מכונה מגיע מ_הכשרת מודלים_. מודלים מאומנים על נתונים היסטוריים כדי ללכוד אוטומטית תלות בנתונים, ומאפשרים לחזות תוצאות עבור נתונים חדשים שהמודל לא ראה בעבר.
בשיעור זה תלמדו עוד על שני סוגי רגרסיה: רגרסיה ליניארית בסיסית ו_רגרסיה פולינומית_, יחד עם מתמטיקה בסיסית מאחורי הטכניקות האלו. מודלים אלה יאפשרו לנו לחזות מחירי דלעות בהתאם לנתוני קלט שונים.
🎥 לחצו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית.
לאורך כל התכנית אנו מניחים ידע מתמטי מינימלי, ומנסים להפוך את החומר לזמין לסטודנטים מתחומים אחרים, לכן שימו לב להערות, 🧮 קריאות, דיאגרמות וכלי לימוד נוספים המסייעים בהבנה.
דרישות מוקדמות
כעת אתם אמורים להיות מכירים את מבנה נתוני הדלעות אותם אנו בוחנים. ניתן למצוא אותם טעונים ומנוקים מראש בקובץ ה_ notebook.ipynb_ של השיעור. בקובץ, מחיר הדלעות מוצג לאשכול בדף נתונים חדש.
ודאו שאתם יכולים להריץ מחברות אלה בסביבות בקוד של Visual Studio.
הכנה
כתזכורת, אתם טוענים את הנתונים כדי שתוכלו לשאול שאלות לגביהם.
- מתי הזמן הטוב ביותר לקנות דלעות?
- איזה מחיר אוכל לצפות עבור קרטון דלעות מיניאטוריות?
- האם כדאי לקנות בסלי חצי אשכול או בקרטון 1 1/9 אשכול?
נמשיך לחפש תשובות בנתונים אלו.
בשיעור הקודם יצרתם DataFrame ב-Pandas ומילאתם אותו בחלק מנתוני המקור תוך סטנדרטיזציה של המחיר לפי אשכול. עם זאת, עשיתם זאת רק ל-400 נקודות נתונים בלבד ולחודשים של הסתיו.
עיינו בנתונים שנטענו מראש במחברת הנלווית לשיעור זה. הנתונים נטענים מראש וגרף פיזור ראשוני מוצג להראות נתוני חודשים. אולי נוכל לקבל פרטים מדויקים יותר על טיב הנתונים על ידי ניקוי נוסף.
קו רגרסיה ליניארי
כפי שלמדתם בשיעור 1, המטרה של תרגיל רגרסיה ליניארית היא להיות מסוגלים לצייר קו ש:
- מראה יחסים בין משתנים. מציג את הקשר בין משתנים
- מבצע תחזיות. מבצע תחזיות מדויקות לגבי היכן תפול נקודת נתונים חדשה ביחס לקו.
זה טיפוסי לרגרסיה בריבועי המינימום לשרטט קו כזה. המונח "ריבועי המינימום" מתייחס לתהליך המיזעור של השגיאה הכוללת במודל שלנו. עבור כל נקודת נתונים, אנו מודדים את המרחק האנכי (נקרא שארית) בין הנקודה בפועל לקו הרגרסיה שלנו.
אנו מרובעים את המרחקים הללו משני סיבות עיקריות:
-
גודל במקום כיוון: אנו רוצים להתייחס לשגיאה של -5 באותה צורה כמו לשגיאה של +5. ריבוע הופך את כל הערכים לחיוביים.
-
עונש לאאוטליירים: ריבוע נותן משקל גדול יותר לשגיאות גדולות, מה שמאלץ את הקו להתקרב לנקודות המרוחקות יותר.
לאחר מכן נסכום את כל הערכים המרובעים יחד. המטרה היא למצוא את הקו הספציפי שבו הסכום הזה מינימלי (הערך הקטן ביותר האפשרי) - hence השם "ריבועי המינימום".
🧮 תציג לי את המתמטיקה
הקו הזה, הנקרא קו ההתאמה הטובה ביותר, ניתן לביטוי במשוואה:
Y = a + bX
Xהוא ה'משתנה המסביר'.Yהוא ה'משתנה התלוי'. השיפוע של הקו הואbו-aהוא החיתוך ב-y, שמתייחס לערך שלYכאשרX = 0.ראשית, חשבו את השיפוע
b. אינפוגרפיקה מאת Jen Looperבמילים אחרות, ובהתייחס לשאלת נתוני הדלעות שלנו: "לחזות את מחיר דלעת לאשכול לפי חודש",
Xיהיה המחיר ו-Yיהיה חודש המכירה.חשבו את ערך Y. אם אתם משלמים סביב 4$, זה בטח אפריל! אינפוגרפיקה מאת Jen Looper
המתמטיקה שמחשבת את הקו חייבת להראות את שיפוע הקו, שהוא גם תלוי בחתך, כלומר היכן ש-
Yממוקם כאשרX = 0.ניתן לצפות בשיטת החישוב בערכים אלו באתר Math is Fun. בקרו גם במחשבון ריבועי המינימום כדי לראות כיצד ערכי המספרים משפיעים על הקו.
קורלציה
מונח נוסף שיש להבין הוא מקדם הקורלציה בין משתני X ו-Y נתונים. בעזרת גרף פיזור ניתן לראות במהרה את המקדם הזה. גרף עם נקודות מפוזרות על קו מסודר מראה קורלציה גבוהה, וגרף עם נקודות מפוזרות בכל מקום בין X ו-Y מראה קורלציה נמוכה.
מודל רגרסיה ליניארית טוב יהיה כזה שמקדם הקורלציה שלו גבוה (קרוב יותר ל-1 ולא ל-0) בשיטת ריבועי המינימום עם קו רגרסיה.
✅ הרץ את המחברת המצורפת לשיעור זה והסתכל על גרף פיזור של חודש מול מחיר. האם הנתונים המקשרים בין חודש למחיר למכירת דלעות נראים עם קורלציה גבוהה או נמוכה, לפי הפרשנות הויזואלית שלך לגרף הפיזור? האם זה משתנה אם תשתמש במדידה מדויקת יותר במקום חודש, למשל יום בשנה (כלומר מספר הימים מאז תחילת השנה)?
בקוד למטה, נניח שניקינו את הנתונים וקיבלנו את ה-DataFrame בשם new_pumpkins, דומה לטבלה הבאה:
| ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price |
|---|---|---|---|---|---|---|---|---|
| 70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 |
| 71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 |
| 72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 |
| 73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 |
| 74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 |
הקוד לניקוי הנתונים זמין ב-
notebook.ipynb. ביצענו את אותם שלבי ניקוי כפי בשיעור הקודם, וחישבנו את עמודתDayOfYearבעזרת הביטוי הבא:
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
כעת כשיש לכם הבנה של המתמטיקה מאחורי רגרסיה ליניארית, נבנה מודל רגרסיה כדי לבדוק האם נוכל לחזות איזו חבילת דלעות תציע את המחירים הטובים ביותר. מישהו שרוכש דלעות לפעילות של חג עשוי לרצות מידע זה כדי לייעל את רכישות הפריטים לחג.
מחפשים קורלציה
🎥 לחצו על התמונה למעלה לסרטון קצר על קורלציה.
מהשיעור הקודם כנראה ראיתם שמחיר ממוצע לפי חודשים נראה כך:
זה מרמז שבעצם יש קורלציה מסוימת, וניתן לנסות לאמן מודל רגרסיה ליניארית כדי לחזות את הקשר בין Month ל-Price, או בין DayOfYear ל-Price. להלן גרף פיזור שמראה את הקשר האחרון:
נראה אם יש קורלציה באמצעות פונקציית corr:
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
נראה שהקורלציה יחסית קטנה, -0.15 לפי Month ו- -0.17 לפי DayOfYear, אבל יכול להיות שיש קשר חשוב אחר. נראה שיש אשכולות שונים של מחירים בהתאם לסוגים שונים של דלעות. לאישור השערה זו, נשרטט כל קטגוריה בצבע שונה. כאשר מעבירים פרמטר ax לפונקציית ה-scatter ניתן להציג את כל הנקודות באותו הגרף:
ax=None
colors = ['red','blue','green','yellow']
for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
החקירה שלנו מרמזת שלזן יש יותר השפעה על המחיר הכולל מאשר תאריך המכירה בפועל. ניתן לראות זאת בעזרת גרף עמודות:
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
נתמקד כעת רק בסוג דלעת אחד, 'pie type', ונראה מה ההשפעה של התאריך על המחיר:
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
אם נחשב כעת את הקורלציה בין Price ל-DayOfYear בעזרת פונקציית corr, נקבל משהו בסביבות -0.27 - מה שאומר שאימון מודל תחזית הגיוני.
לפני אימון מודל רגרסיה ליניארית, חשוב לוודא שהנתונים שלנו נקיים. רגרסיה ליניארית לא פועלת טוב עם ערכים חסרים, ולכן כדאי להיפטר מכל התאים הריקים:
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
גישה נוספת תהיה למלא ערכים ריקים אלו בערך הממוצע מהעמודה המתאימה.
רגרסיה ליניארית פשוטה
🎥 לחצו על התמונה למעלה לסרטון קצר על רגרסיה ליניארית ופולינומית.
לאימון מודל הרגרסיה הליניארית שלנו, נשתמש בספריית Scikit-learn.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
נתחיל מלהפריד את ערכי הקלט (התכונות) ואת הפלט הצפוי (התיוג) למערכי numpy נפרדים:
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
שימו לב שנאלצנו לבצע
reshapeעל נתוני הקלט כדי שחבילת הרגרסיה הליניארית תבין אותם נכון. רגרסיה ליניארית מצפה לקבל מערך דו-ממדי כקלט, שבו כל שורה היא וקטור של תכונות קלט. במקרה שלנו, שכן יש לנו רק תכונה אחת, אנו זקוקים למערך בצורת N×1, כאשר N הוא גודל המערך.
לאחר מכן, נחלק את הנתונים למערכי אימון ובדיקה, כדי שנוכל לאמת את המודל לאחר האימון:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
לבסוף, אימון מודל הרגרסיה הליניארית בפועל דורש רק שתי שורות קוד. נכין את האובייקט LinearRegression, ונאמן אותו על הנתונים בעזרת המתודה fit:
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
אובייקט LinearRegression לאחר ביצוע fit מכיל את כל המקדמים של הרגרסיה, אליהם ניתן לגשת באמצעות הפרופרטי .coef_. במקרה שלנו, יש רק מקדם אחד, אשר אמור להיות בערך -0.017. משמעות הדבר היא שהמחירים נראים כמי שמצטמצמים קצת עם הזמן, אבל לא הרבה, בערך 2 סנט ליום. ניתן גם לגשת לנקודת החיתוך של הרגרסיה עם ציר Y בעזרת lin_reg.intercept_ - היא תהיה בסביבות 21 במקרה שלנו, מציינת את המחיר בתחילת השנה.
כדי לראות עד כמה המודל מדויק, נוכל לנבא מחירים על קבוצת בדיקה, ואז למדוד כמה קרובות ההתפלגויות שלנו לערכים הצפויים. זאת ניתן לעשות באמצעות מדד שורש ממוצע הריבועים (RMSE), שהוא השורש של ממוצע כל ההבדלים המרובעים בין הערך הצפוי לערך החזוי.
pred = lin_reg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
שגיאתנו נראית בסביבות 2 נקודות, שזה ~17%. לא טוב מדי. אינדיקטור נוסף לאיכות המודל הוא מקדם הקביעה, אותו ניתן לקבל כך:
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
אם הערך הוא 0, זה אומר שהמודל לא לוקח את נתוני הקלט בחשבון, ופועל כ-התחזית הקווית הגרועה ביותר, שהיא פשוט ממוצע הערכים. הערך 1 אומר שניתן לנבא בצורה מושלמת את כל הפלטים הצפויים. במקרה שלנו, המקדם הוא בסביבות 0.06, שזה די נמוך.
ניתן גם לשרטט את נתוני הבדיקה יחד עם קו הרגרסיה כדי לראות טוב יותר איך הרגרסיה פועלת אצלנו:
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
רגרסיה פולינומיאלית
סוג נוסף של רגרסיה קווית הוא רגרסיה פולינומיאלית. בעוד שלפעמים יש קשר לינארי בין משתנים - ככל שהדלעת גדולה יותר בנפח, כך המחיר גבוה יותר - לעיתים קשרים אלו לא ניתנים לשרטוט כמישור או קו ישר.
✅ הנה כמה דוגמאות נוספות של נתונים שיכולים להשתמש ברגרסיה פולינומיאלית.
תסתכל שוב על הקשר בין תאריך למחיר. האם נראה שהתפלגות הנקודות הזו חייבת להיות מנותחת על ידי קו ישר? האם המחירים לא יכולים להשתנות? במקרה כזה, ניתן לנסות רגרסיה פולינומיאלית.
✅ פולינומים הם ביטויים מתמטיים שעשויים לכלול אחד או יותר משתנים ומקדמים.
רגרסיה פולינומיאלית יוצרת קו מעוקל כדי להתאים טוב יותר לנתונים לא לינאריים. במקרה שלנו, אם נכלול משתנה DayOfYear בריבוע בתור נתון, נוכל להתאים את הנתונים שלנו בעזרת עקומה פרבולית, שתהיה לה מינימום בנקודה מסוימת בתוך השנה.
ספריית Scikit-learn כוללת API של צינור מועיל לשילוב שלבים שונים בעיבוד הנתונים יחד. צינור הוא שרשרת של מנחשים (Estimators). במקרה שלנו, ניצור צינור שמוסיף תחילה תכונות פולינומיאליות למודל, ואז מאמן את הרגרסיה:
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
השימוש ב-PolynomialFeatures(2) פירושו שנכליל את כל הפולינומים מדרגה שנייה מהנתונים. במקרה שלנו זה פשוט אומר DayOfYear2, אך אם יהיו שני משתנים קלט X ו-Y, זה יוסיף X2, XY ו-Y2. נוכל גם להשתמש בפולינומים מדרגות גבוהות יותר אם נרצה.
ניתן להשתמש בצינורות באותה צורה כמו האובייקט המקורי LinearRegression, כלומר ניתן לבצע fit על הצינור, ואז להשתמש ב-predict לקבלת תוצאות החיזוי:
pred = pipeline.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
כדי לשרטט את העקומה החלקה, אנו משתמשים ב-np.linspace כדי ליצור טווח אחיד של ערכי קלט, במקום לשרטט ישירות על נתוני הבדיקה הלא מסודרים (מה שהיה מייצר קו זיגזג):
X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
y_range = pipeline.predict(X_range)
plt.scatter(X_test, y_test)
plt.plot(X_range, y_range)
הנה הגרף שמציג את נתוני הבדיקה ואת עקומת האפרוקסימציה:
באמצעות רגרסיה פולינומיאלית, ניתן לקבל RMSE נמוך יותר במעט וקביעות גבוהה יותר, אך לא משמעותית. צריך לקחת בחשבון תכונות נוספות!
ניתן לראות שהמחירים המינימליים לדלעות מתרחשים בערך סביב ליל כל הקדושים. איך תסבירו זאת?
🎃 כל הכבוד, יצרתם זה עתה מודל שיכול לעזור לנבא את מחיר דלעות הפאי. כנראה תוכלו לחזור על אותה פעולה עבור כל סוגי הדלעות, אך זה יהיה מייגע. בואו עכשיו נלמד כיצד לקחת בחשבון את זני הדלעת במודל שלנו!
תכונות קטגוריאליות
בעולם האידיאלי, נרצה להיות מסוגלים לנבא מחירים של זני דלעות שונים באמצעות אותו מודל. עם זאת, עמודת Variety שונה במקצת מעמודות כמו Month, כי היא מכילה ערכים לא נומריים. עמודות כאלה נקראות קטגוריאליות.
🎥 לחצו על התמונה למעלה לסרטון קצר שמסביר את השימוש בתכונות קטגוריאליות.
כאן ניתן לראות איך המחיר הממוצע משתנה בהתאם לזן:
כדי לקחת את הזן בחשבון, עלינו תחילה להמיר אותו לצורת מספרית, או לקודד אותו. יש מספר דרכים לעשות זאת:
- קידוד מספרי פשוט יבנה טבלה של זנים שונים, ואז יחליף את שם הזן באינדקס בטבלה. זו לא הרעיון הטוב ביותר לרגרסיה קווית, כי הרגרסיה הקווית לוקחת את הערך המספרי של האינדקס ומוסיפה אותו לתוצאה, מכפילה במקדם כלשהו. במקרה שלנו, הקשר בין מספר האינדקס למחיר ברור שאיננו לינארי, אפילו אם נוודא שהאינדקסים מסודרים בדרך מסוימת.
- קידוד One-hot יחליף את עמודת
Varietyב-4 עמודות שונות, אחת לכל זן. כל עמודה תכיל1אם השורה המתאימה היא מהזן הזה, ו-0אחרת. משמעות הדבר היא שיהיו ארבעה מקדמים ברגרסיה קווית, אחד לכל זן דלעת, שאחראים על "מחיר התחלתי" (או יותר נכון "מחיר נוסף") לאותו זן מסוים.
הקוד הבא מראה איך ניתן לקודד זן בקידוד One-hot:
pd.get_dummies(new_pumpkins['Variety'])
| ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE |
|---|---|---|---|---|
| 70 | 0 | 0 | 0 | 1 |
| 71 | 0 | 0 | 0 | 1 |
| ... | ... | ... | ... | ... |
| 1738 | 0 | 1 | 0 | 0 |
| 1739 | 0 | 1 | 0 | 0 |
| 1740 | 0 | 1 | 0 | 0 |
| 1741 | 0 | 1 | 0 | 0 |
| 1742 | 0 | 1 | 0 | 0 |
כדי לאמן רגרסיה לינארית באמצעות זן שנקודד בתכונת one-hot, פשוט צריך לאתחל את נתוני X ו-y נכון:
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
שאר הקוד זהה למה שהשתמשנו למעלה לאימון רגרסיה לינארית. אם תנסו זאת, תראו ששגיאת הריבועים הממוצעת כמעט זהה, אך מקדם הקביעה גבוה בהרבה (~77%). כדי לקבל תחזיות מדויקות עוד יותר, ניתן לקחת בחשבון יותר תכונות קטגוריאליות, כמו גם תכונות מספריות, כגון Month או DayOfYear. כדי לקבל מערך תכונות אחד גדול אפשר להשתמש ב-join:
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
כאן אנחנו גם לוקחים בחשבון את City וסוג Package, מה שמביא ל-RMSE של 2.84 (10.5%), וקביעות של 0.94!
לשלב את הכל ביחד
כדי ליצור את המודל הטוב ביותר, נוכל להשתמש בנתוני משולבים (קטגוריאליים בקידוד one-hot + מספריים) מהדוגמה למעלה יחד עם רגרסיה פולינומיאלית. הנה הקוד המלא לנוחיותכם:
# להגדיר את נתוני האימון
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# לבצע פיצול של אימון-בדיקה
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# להגדיר ולאמן את צינור העיבוד
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# לחזות תוצאות עבור נתוני הבדיקה
pred = pipeline.predict(X_test)
# לחשב שגיאת שורש ממוצעת והחלטה
rmse = mean_squared_error(y_test, pred, squared=False)
print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
זה אמור לתת לנו את מקדם הקביעה הטוב ביותר של כמעט 97%, ו-RMSE=2.23 (~8% שגיאת חיזוי).
| מודל | RMSE | מקדם קביעה |
|---|---|---|
DayOfYear לינארי |
2.77 (17.2%) | 0.07 |
DayOfYear פולינומיאלי |
2.73 (17.0%) | 0.08 |
Variety לינארי |
5.24 (19.7%) | 0.77 |
| כל התכונות לינארי | 2.84 (10.5%) | 0.94 |
| כל התכונות פולינומיאלי | 2.23 (8.25%) | 0.97 |
🏆 כל הכבוד! יצרתם ארבעה מודלי רגרסיה בשיעור אחד, ושיפרתם את איכות המודל ל-97%. בקטע הסופי על רגרסיות, תלמדו על רגרסיה לוגיסטית לקביעת קטגוריות.
🚀אתגר
בדקו מספר משתנים שונים במחברת הזו כדי לראות כיצד מתאם מתייחס לדיוק המודל.
מבחן לאחר ההרצאה
סקירה ולמידה עצמית
בשיעור זה למדנו על רגרסיה לינארית. קיימים סוגים חשובים נוספים של רגרסיות. קראו על טכניקות Stepwise, Ridge, Lasso ו-Elasticnet. קורס טוב ללמוד בו עוד הוא קורס הסטטיסטיקה באוניברסיטת סטנפורד Stanford Statistical Learning course
מטלה
הצהרת אחריות: מסמך זה תורגם באמצעות שירות תרגום מבוסס AI Co-op Translator. למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל טעויות או אי-דיוקים. המסמך המקורי בשפה המקורית שלו צריך להיחשב כמקור האוטוריטטיבי. למידע קריטי מומלץ להשתמש בתרגום אנושי מקצועי. איננו אחראים לכל אי הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.





