Open In App

How to Get Regression Model Summary from Scikit-Learn

In this article, we are going to see how to get a regression model summary from sci-kit learn.

It can be done in these ways:



Example 1: Using scikit-learn.

You may want to extract a summary of a regression model created in Python with Scikit-learn. Scikit-learn does not have many built-in functions for analyzing the summary of a regression model because it is generally used for prediction. Scikit learn has different attributes and methods to get the model summary.

We imported the necessary packages. Then the iris dataset is loaded from sklearn.datasets. And feature and target arrays are created then test and train sets are created using the train_test_split() method and the simple linear regression model is created then train data is fitted into the model, and predictions are carried out on the test set using .predict() method.






# Import packages
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
  
# Load the data
irisData = load_iris()
  
# Create feature and target arrays
X = irisData.data
y = irisData.target
  
# Split data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42)
  
model = LinearRegression()
  
model.fit(X_train, y_train)
  
# predicting on the X_test data set
print(model.predict(X_test))
  
# summary of the model
print('model intercept :', model.intercept_)
print('model coefficients : ', model.coef_)
print('Model score : ', model.score(X, y))

Output:

[ 1.23071715 -0.04010441  2.21970287  1.34966889  1.28429336  0.02248402

  1.05726124  1.82403704  1.36824643  1.06766437  1.70031437 -0.07357413

 -0.15562919 -0.06569402 -0.02128628  1.39659966  2.00022876  1.04812731

  1.28102792  1.97283506  0.03184612  1.59830192  0.09450931  1.91807547

  1.83296682  1.87877315  1.78781234  2.03362373  0.03594506  0.02619043]

model intercept : 0.2525275898181484

model coefficients :  [-0.11633479 -0.05977785  0.25491375  0.54759598]

Model score :  0.9299538012397455

Example 2: Using the summary() method of Stats model package

In this method, we use the statsmodels. formula.api package. If you want to extract a summary of a regression model in Python, you should use the statsmodels package. The code below demonstrates how to use this package to fit the same multiple linear regression model as in the earlier example and obtain the model summary.

To access and download the CSV file click here.




# import packages
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
  
# loading the csv file
df = pd.read_csv('headbrain1.csv')
print(df.head())
  
# fitting the model
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight',
                data=df).fit()
  
# model summary
print(model.summary())

Output:

 

Description of some of the terms in the table :

Our predictions:

If we use 0.05 as our significance level, we reject the null hypothesis and accept the alternative hypothesis as p< 0.05. As a result, we can conclude that there is a relation between head size and brain weight.


Article Tags :