Hide scikit-learn ConvergenceWarning: "Increase the number of iterations (max_iter) or scale the data"

Question:

I am using Python to predict values and getting many warnings like:

Increase the number of iterations (max_iter) or scale the data as
shown in:
https://scikit-learn.org/stable/modules/preprocessing.html Please also refer to the documentation for alternative solver options:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
n_iter_i = _check_optimize_result(
C:UsersASMGXanaconda3libsite-packagessklearnlinear_model_logistic.py:762:
ConvergenceWarning: lbfgs failed to converge (status=1): STOP: TOTAL
NO. of ITERATIONS REACHED LIMIT.

this prevents me from seeing the my own printed results.

Is there any way I can stop these warnings from showing?

Asked By: asmgx

||

Answers:

You can use the warnings-module to temporarily suppress warnings. Either all warnings or specific warnings.

In this case scikit-learn is raising a ConvergenceWarning so I suggest suppressing exactly that type of warning. That warning-class is located in sklearn.exceptions.ConvergenceWarning so import it beforehand and use the context-manager catch_warnings and the function simplefilter to ignore the warning, i.e. not print it to the screen:

import warnings
from sklearn.exceptions import ConvergenceWarning

with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=ConvergenceWarning)
    
    optimizer_function_that_creates_warning()

You can also ignore that specific warning globally to avoid using the context-manager:

import warnings
warnings.simplefilter("ignore", category=ConvergenceWarning)

optimizer_function_that_creates_warning()

I suggest using the context-manager though since you are sure about where you suppress warnings. This way you will not suppress warnings from unexpected places.

Answered By: Sebastian Baltser

Use the solver and max_iter to solve the problem…

from sklearn.linear_model import LogisticRegression

clf=LogisticRegression(solver='lbfgs', max_iter=500000).fit(x_train, y_train)
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.