How to Extract Regression Coefficients from Scikit-Learn Model


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 multiple linear regression model 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.

For example, a student who studied for 3 hours and took 2 prep exams is expected to receive a final exam score of 85.55:

  • Score = 70.483 + 5.795(hours) – 1.158(exams)
  • Score = 70.483 + 5.795(3) – 1.158(2)
  • Score = 85.55

Related: How to Interpret Regression Coefficients

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
How to Calculate AIC of Regression Models in Python

Featured Posts

Leave a Reply

Your email address will not be published. Required fields are marked *