Model definition does not give any output

This is due to a change in the default configuration settings from scikit-learn v0.23 onwards; from the changelog:

The default setting print_changed_only has been changed from False to True. This means that the repr of estimators is now more concise and only shows the parameters whose default value has been changed when printing an estimator. You can restore the previous behaviour by using sklearn.set_config(print_changed_only=False). Also, note that it is always possible to quickly inspect the parameters of any estimator using est.get_params(deep=False).

In other words, in versions before v0.23, the following code:

import sklearn
sklearn.__version__
# 0.22.2

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr

produces the following output with all model parameters:

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class="auto", n_jobs=None, penalty='l2',
                   random_state=None, solver="lbfgs", tol=0.0001, verbose=0,
                   warm_start=False)

But the same code from v0.23 onwards:

import sklearn
sklearn.__version__
# 0.23.2

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr

will produce just:

LogisticRegression()

in cases like here, i.e. where no parameter has been explicitly defined, and all remain in their default values. And that’s because the print_changed_only parameter is now set by default to True:

sklearn.get_config()

# result:

{'assume_finite': False,
 'working_memory': 1024,
 'print_changed_only': True,
 'display': 'text'}

To get all the parameters printed in the newer scikit-learn versions, you should either do

lr.get_params()

# result

{'C': 1.0,
 'class_weight': None,
 'dual': False,
 'fit_intercept': True,
 'intercept_scaling': 1,
 'l1_ratio': None,
 'max_iter': 100,
 'multi_class': 'auto',
 'n_jobs': None,
 'penalty': 'l2',
 'random_state': None,
 'solver': 'lbfgs',
 'tol': 0.0001,
 'verbose': 0,
 'warm_start': False}

or change the setting (preferable, since it will affect any and all models used afterwards):

sklearn.set_config(print_changed_only=False) # needed only once
lr # as defined above

# result

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class="auto", n_jobs=None, penalty='l2',
                   random_state=None, solver="lbfgs", tol=0.0001, verbose=0,
                   warm_start=False)

Leave a Comment