How to Extract Regression Coefficients from Scikit-Learn Model?

Extracting regression coefficients from a scikit-learn model is a fairly straightforward process. To do this, all you need to do is call the model’s coef_ property, which will return the regression coefficients as a numpy array. Additionally, the intercept_ property will return the intercept value of the model. With both of these values, you can then use them to calculate the predicted outcome of any given input.


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:

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

x