You can use the following basic syntax to extract the regression coefficients from a regression model built with scikit-learn in Python:
pd.DataFrame(zip(X.columns, model.coef_))
The following example shows how to use this syntax in practice.
Example: Extract Regression Coefficients from Scikit-Learn Model
Suppose we have the following pandas DataFrame that contains information about hours studied, number of prep exams taken, and final exam score received by 11 students in some class:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4],
'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})
#view DataFrame
print(df)
hours exams score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
We can use the following code to fit a using hours and exams as the predictor variables and score as the response variable:
from sklearn.linear_model import LinearRegression
#initiate linear regression model
model = LinearRegression()
#define predictor and response variables
X, y = df[['hours', 'exams']], df.score
#fit regression model
model.fit(X, y)
We can then use the following syntax to extract the regression coefficients for hours and exams:
#print regression coefficients
pd.DataFrame(zip(X.columns, model.coef_))
0 1
0 hours 5.794521
1 exams -1.157647
From the output we can see the regression coefficients for both predictor variables in the model:
- Coefficient for hours: 5.794521
- Coefficient for exams: -1.157647
If we’d like, we can also use the following syntax to extract the intercept value for the regression model:
#print intercept value
print(model.intercept_)
70.48282057040197
Using each of these values, we can write the fitted regression model equation:
Score = 70.483 + 5.795(hours) – 1.158(exams)
We can then use this equation to predict the final exam score of a student based on their number of hours spent studying and number of prep exams taken.
- Score = 70.483 + 5.795(hours) – 1.158(exams)
- Score = 70.483 + 5.795(3) – 1.158(2)
- Score = 85.55
Related:
Additional Resources
The following tutorials explain how to perform other common operations in Python:
How to Perform Simple Linear Regression in Python
How to Perform Multiple Linear Regression in Python