[PYTHON] À propos de max_iter de LogisticRegression () de scikit-learn

Origine

Je suis actuellement en train de suivre le "Machine Learning with Python: An Introduction to Identification with scikit-learn" d'udemy. Étant donné qu'un exemple de code est distribué pour chaque thème de ce cours, je suis reconnaissant de ne pas avoir à l'écrire, mais un message d'avertissement s'affiche.

environnement

jupyter-lab:1.2.6 python:3.7.7 scikit-learn:0.22.1

Zone problématique

from sklearn import linear_model
clf = linear_model.LogisticRegression()
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import LeaveOneOut
loocv = LeaveOneOut()
scores = cross_val_score(clf, X, y,cv=loocv)

Quand j'ai couru

ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
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
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)

Et avertissement. De plus, plusieurs fois à l'échelle de milliers de lignes.

Suivez l'avertissement et utilisez le même texte d'avertissement que LogisticRegression (max_iter = 1000 ^ 4000). Quand je l'ai vérifié, il a été dit qu'il se répéterait jusqu'à ce qu'il converge avec max_iter = -1, donc si je passe -1 comme argument et l'exécute, max_iter se fâche contre un nombre positif. S'il n'y a pas d'autre choix que de définir max_iter = 1000 ^ 5000, le processus ne se terminera pas. Quand quelqu'un d'autre le fait, cela prend moins d'une seconde pour apprendre, alors peut-être que quelque chose ne va pas avec mon environnement, mais je ne sais pas.

En premier lieu, ce n'est pas une déclaration d'erreur mais une déclaration d'avertissement, donc il peut apprendre à plusieurs reprises jusqu'au nombre de fois spécifié, mais ce serait un problème si des milliers de lignes de déclarations d'avertissement étaient émises à chaque fois. De plus, X et y ont chacun une taille inférieure à 1 Mo, et je l'ai essayé avec colab de google, mais le même résultat a été obtenu.

Si quelqu'un a une idée, je vous serais reconnaissant si vous pouviez me le dire.

Recommended Posts

À propos de max_iter de LogisticRegression () de scikit-learn
À propos de la vitesse de traitement de SVM (SVC) de scikit-learn
À propos de tout numpy
À propos de l'attribution de numpy.ndarray
À propos de MultiIndex of Pandas
À propos de la variable du chainer
Cohérence de la conception de l'API scikit-learn
À propos du chemin japonais de pyminizip
À propos du support japonais de cometchat
À propos de divers encodages de Python 3
À propos de tout numpy (2e)
Traitement parallèle avec Parallel de scikit-learn
python: principes de base de l'utilisation de scikit-learn ①
À propos du calcul des coûts de MeCab
À propos de la fraction approximative du rapport de circonférence
À propos des composants de Luigi
À propos de la sortie HOG de Scikit-Image
À propos des fonctionnalités de Python
À propos de la gestion des données d'Anvil-App-Server
Recherche en grille d'hyper paramètres avec Scikit-learn
[Français] Table des matières du didacticiel scikit-learn 0.18
Installation de scikit-learn (Mac OS X)
À propos de la valeur de retour de pthread_mutex_init ()
À propos de la valeur de retour de l'histogramme.
À propos du type de base de Go
À propos de la limite supérieure de threads-max
À propos du croisement circulaire d'algorithmes génétiques
À propos du comportement de yield_per de SqlAlchemy
À propos de l'erreur d'importation de PyQt5.QtWidgets (Anaconda)
À propos de la taille des points dans matplotlib
À propos du traitement des demi-teintes couleur des images
À propos de la liste de base des bases de Python