רגרסיה פולינומית
סקירה כללית
בדוגמאות הקודמות של רגרסיה ליניארית, כאשר הנתונים משורטטים על הגרף, היה קשר ליניארי בין המשתנים התלויים והבלתי תלויים. לפיכך, היה מתאים יותר לבנות מודל ליניארי כדי לקבל תחזיות מדויקות. מה אם לנקודות הנתונים הייתה האי-לינאריות הבאה, מה שגורם למודל הליניארי לתת שגיאה בתחזיות עקב אי-לינאריות?
מחכה למישהו?
גלה את הפוטנציאל שלך בעולם ההייטק!
מחכה למישהו?
גלה את הפוטנציאל שלך בעולם ההייטק!
נקודות נתונים לא ליניאריות (מקור)
במקרה זה, עלינו לבנות קשר פולינומי שיתאים במדויק לנקודות הנתונים בחלקה הנתונה. זה נקרא רגרסיה פולינומית. הנוסחה של עקומת רגרסיה פולינומית ניתנת כ-y=w1x+w2x²+..+b
להלן ה-GIF של התאמת מודל רגרסיה לינארית ומודל רגרסיה פולינומית על נתונים לא ליניאריים.
כפי שאנו יכולים לראות, הרגרסיה הליניארית תמיד נוטה לעשות שגיאה ככל שתנסה להשתלב בנתונים. מצד שני, גרף רגרסיה פולינומית מצליח להתאים את נקודות הנתונים על הקו בצורה מדויקת יותר.
בדוגמה זו, נעבור על יישום רגרסיה פולינומית, בה נחזה את השכר של עובד חדש על סמך רמת התפקיד שלו בחברה הקודמת שלו מנתוני השכר עבור אותן רמות תפקיד בחברה החדשה.
ניתוח הבעיה
בנתונים אלה, יש לנו את שני המשתנים הבלתי תלויים, כלומר, מיקום ורמה. יש משתנה אחד בלתי תלוי כלומר שכר. לכן, בבעיה זו עלינו לאמן מודל רגרסיה פולינומית עם הנתונים הללו כדי להבין את המתאם בין הרמה והשכר של נתוני העובדים בחברה ולהיות מסוגלים לחזות את השכר לעובד החדש על סמך הנתונים הללו.
שלב 1: ייבוא הספריות
בשלב ראשון זה, נייבא את הספריות הנדרשות לבניית מודל ה-ML. ספריית NumPy וה-matplotlib מיובאים. בנוסף, ייבאנו את ספריית Pandas לניתוח נתונים.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
שלב 2: ייבוא מערך הנתונים
בשלב זה, נשתמש בפנדות כדי לאחסן את הנתונים שהתקבלו ממאגר ה-github ולאחסן אותם כ-Pandas DataFrame באמצעות הפונקציה "pd.read_csv".
אנו עוברים על מערך הנתונים שלנו ומקצים את המשתנה הבלתי תלוי (x) לעמודה השנייה עם שם העמודה "רמה" ואת המשתנה התלוי (y) לעמודה האחרונה, שהיא ה"שכר" שיש לחזות.
dataset = pd.read_csv('https://raw.githubusercontent.com/mk-gurucharan/Regression/master/PositionSalaries_Data.csv')X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].valuesdataset.head(5)>>
Position Level Salary
Business Analyst 1 45000
Junior Consultant 2 50000
Senior Consultant 3 60000
Manager 4 80000
Country Manager 5 110000
אנו משתמשים בפונקציית .iloc המקבילה כדי לחתוך את ה-DataFrame כדי להקצות את האינדקסים הללו ל-X ו-Y. בכך, הרמה נלקחת כמשתנה הבלתי תלוי ומוקצה ל-X. המשתנה התלוי שיש לחזות הוא העמודה האחרונה ( -1) שהיא משכורת והיא מוקצה ל-y. אנו מדפיסים את "ערכת הנתונים" של DataFrame כדי לראות אם יש לנו את העמודות הנכונות עבור נתוני התרגיל שלנו על נושאים נוספים נעבור ב קורס Machine learning.
שלב 3: תרגול מודל הרגרסיה הפולינומית על כל מערך הנתונים
למערך הנתונים שבו אנו משתמשים יש מספר מעט מאוד של שורות, ולכן אנו מאמנים את מערך הנתונים כולו לבניית מודל הרגרסיה הפולינומית. בפונקציה הזו משתמשים בפונקציה "PolynomialFeatures" כדי להקצות את דרגת הקו הפולינומי שאנו הולכים לצייר. בכך התואר נקבע כ-4.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
poly_reg = PolynomialFeatures(degree = 4)
X_poly = poly_reg.fit_transform(X)
lin_reg = LinearRegression()
lin_reg.fit(X_poly, y)
המחלקה "LinearRegression" מיובאת גם היא והיא מוקצית למשתנה "lin_reg" שמצויד ב-X_poly וב-y לבניית המודל.
שלב 4: חיזוי התוצאות
בשלב זה, אנו הולכים לחזות את הערכים משכורת בהתבסס על מודל הרגרסיה הפולינומית שנבנה. הפונקציה "regressor.predict" משמשת לניבוי הערכים עבור המשתנה הבלתי תלוי שלנו, X_poly. אנו מקצים את הערכים החזויים כ-y_pred. כעת יש לנו שני נתונים, y(ערכים אמיתיים) ו-y_pred (ערכים חזויים).
y_pred = lin_reg.predict(X_poly)
שלב 5: השוואת הערכים האמיתיים עם הערכים החזויים
בשלב זה, נדפיס הן את הערכים של y כערכים אמיתיים והן ערכי y_pred כערכים חזויים של כל מבחן X_ ב-Pandas DataFrame.
df = pd.DataFrame({'Real Values':y, 'Predicted Values':y_pred})
df>>
Real Values Predicted Values
45000 53356.643357
50000 31759.906760
60000 58642.191142
80000 94632.867133
110000 121724.941725
150000 143275.058275
200000 184003.496504
300000 289994.172494
500000 528694.638695
1000000 988916.083916
אנו יכולים לראות שהמודל עשה עבודה מצוינת בהתאמת הנתונים ובניבוי השכר של העובד על פי רמת התפקיד.
שלב 6: הדמיית תוצאות הרגרסיה הפולינומית
בשלב אחרון זה, נדמיין את המודל הפולינומי שנבנה באמצעות הנתונים הנתונים, ונתווה את הערכים של "y" ו-"y_pred" על הגרף וננתח את התוצאות
X_grid = np.arange(min(X), max(X), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, color = 'red')
plt.scatter(X, y_pred, color = 'green')
plt.plot(X_grid, lin_reg.predict(poly_reg.fit_transform(X_grid)), color = 'black')
plt.title('Polynomial Regression')
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()
מודל רגרסיה פולינומית
בגרף זה, הערכים האמיתיים משורטטים בצבע "אדום" והערכים החזויים משורטטים בצבע "ירוק". קו הרגרסיה הפולינומית שנוצר מצוייר בצבע "שחור".
אני מצרף קישור של מאגר ה-github שבו אתה יכול למצוא את המחברת של Google Colab ואת קבצי הנתונים.
https://github.com/mk-gurucharan/Regression
מקווה שהצלחתי להסביר בבירור את התוכנית לבניית מודל רגרסיה פולינומית אשמח להסביר עודב קורס Machine learning..