วิธีรับสรุปโมเดลการถดถอยจาก scikit-learn


บ่อยครั้งที่คุณอาจต้องการแยกข้อมูลสรุปของแบบจำลองการถดถอยที่สร้างขึ้นโดยใช้ scikit-learn ใน Python

น่าเสียดายที่ scikit-learn ไม่มีฟังก์ชันในตัวมากมายสำหรับการวิเคราะห์สรุปของแบบจำลองการถดถอย เนื่องจากโดยทั่วไปจะใช้เพื่อ วัตถุประสงค์ในการทำนาย เท่านั้น

ดังนั้น หากคุณต้องการรับข้อมูลสรุปของโมเดลการถดถอยใน Python คุณมีสองทางเลือก:

1. ใช้ฟังก์ชันที่จำกัดของ scikit-learn

2. ใช้ แบบจำลองทางสถิติ แทน

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x1 ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
                   ' x2 ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4],
                   ' y ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})

#view first five rows of DataFrame
df. head ()

       x1 x2 y
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72

วิธีที่ 1: รับข้อมูลสรุปโมเดลการถดถอยจาก Scikit-Learn

เราสามารถใช้โค้ดต่อไปนี้เพื่อให้พอดีกับโมเดล การถดถอยเชิงเส้นหลายตัว โดยใช้ scikit-learn:

 from sklearn. linear_model import LinearRegression

#initiate linear regression model
model = LinearRegression()

#define predictor and response variables
x, y = df[[' x1 ', ' x2 ']], df. y

#fit regression model
model. fit (x,y)

จากนั้นเราสามารถใช้โค้ดต่อไปนี้เพื่อแยกค่าสัมประสิทธิ์การถดถอยออกจากโมเดลรวมถึง ค่า R-squared ของโมเดล:

 #display regression coefficients and R-squared value of model
print (model. intercept_ , model. coef_ , model. score (X, y))

70.4828205704 [5.7945 -1.1576] 0.766742556527

เมื่อใช้เอาต์พุตนี้ เราสามารถเขียนสมการสำหรับแบบจำลองการถดถอยแบบพอดีได้:

y = 70.48 + 5.79x 1 – 1.16x 2

จะเห็นได้ว่าค่า R 2 ของโมเดลคือ 76.67

ซึ่งหมายความว่า 76.67% ของความแปรผันในตัวแปรตอบสนองสามารถอธิบายได้ด้วยตัวแปรทำนายสองตัวในแบบจำลอง

แม้ว่าผลลัพธ์นี้จะมีประโยชน์ แต่เรายังคงไม่ทราบ สถิติ F โดยรวม ของแบบจำลอง ค่า p ของ สัมประสิทธิ์การถดถอย แต่ละรายการ และการวัดที่เป็นประโยชน์อื่น ๆ ที่สามารถช่วยให้เราเข้าใจว่าแบบจำลองนั้นเหมาะสมกับแบบจำลองได้ดีเพียงใด ชุดข้อมูล.ชุดข้อมูล

วิธีที่ 2: รับข้อมูลสรุปแบบจำลองการถดถอยจาก Statsmodels

หากคุณต้องการแยกข้อมูลสรุปของโมเดลการถดถอยใน Python วิธีที่ดีที่สุดคือใช้แพ็คเกจ statsmodels

รหัสต่อไปนี้แสดงวิธีใช้แพ็คเกจนี้เพื่อให้พอดีกับโมเดลการถดถอยเชิงเส้นพหุคูณเดียวกันกับตัวอย่างก่อนหน้า และแยกข้อมูลสรุปของโมเดล:

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

#view model summary
print ( model.summary ())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: y R-squared: 0.767
Model: OLS Adj. R-squared: 0.708
Method: Least Squares F-statistic: 13.15
Date: Fri, 01 Apr 2022 Prob (F-statistic): 0.00296
Time: 11:10:16 Log-Likelihood: -31.191
No. Comments: 11 AIC: 68.38
Df Residuals: 8 BIC: 69.57
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 70.4828 3.749 18.803 0.000 61.839 79.127
x1 5.7945 1.132 5.120 0.001 3.185 8.404
x2 -1.1576 1.065 -1.087 0.309 -3.613 1.298
==================================================== ============================
Omnibus: 0.198 Durbin-Watson: 1.240
Prob(Omnibus): 0.906 Jarque-Bera (JB): 0.296
Skew: -0.242 Prob(JB): 0.862
Kurtosis: 2.359 Cond. No. 10.7
==================================================== ============================

โปรดทราบว่าสัมประสิทธิ์การถดถอยและค่า R-squared ตรงกับค่าที่คำนวณโดย scikit-learn แต่เรายังมีหน่วยเมตริกที่มีประโยชน์อื่นๆ มากมายสำหรับแบบจำลองการถดถอย

ตัวอย่างเช่น เราสามารถดูค่า p ของตัวแปรทำนายแต่ละตัวได้:

  • ค่า p สำหรับ x 1 = 0.001
  • ค่า p สำหรับ x 2 = 0.309

นอกจากนี้เรายังสามารถดูสถิติ F โดยรวมของโมเดล, ค่า R-squared ที่ปรับแล้ว , ค่า AIC ของโมเดล และอื่นๆ อีกมากมาย

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน Python:

วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน Python
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน Python
วิธีการคำนวณ AIC ของตัวแบบการถดถอยใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *