Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

824
Views
Advertencia de convergencia: lbfgs no pudo converger (estado = 1): DETENER: NÚMERO TOTAL. de ITERACIONES LÍMITE ALCANZADO

Tengo un conjunto de datos que consta de datos numéricos y categóricos y quiero predecir resultados adversos para los pacientes en función de sus características médicas. Definí una tubería de predicción para mi conjunto de datos así:

 X = dataset.drop(columns=['target']) y = dataset['target'] # define categorical and numeric transformers numeric_transformer = Pipeline(steps=[ ('knnImputer', KNNImputer(n_neighbors=2, weights="uniform")), ('scaler', StandardScaler())]) categorical_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='constant', fill_value='missing')), ('onehot', OneHotEncoder(handle_unknown='ignore'))]) # dispatch object columns to the categorical_transformer and remaining columns to numerical_transformer preprocessor = ColumnTransformer(transformers=[ ('num', numeric_transformer, selector(dtype_exclude="object")), ('cat', categorical_transformer, selector(dtype_include="object")) ]) # Append classifier to preprocessing pipeline. # Now we have a full prediction pipeline. clf = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', LogisticRegression())]) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) clf.fit(X_train, y_train) print("model score: %.3f" % clf.score(X_test, y_test))

Sin embargo, cuando ejecuto este código, recibo el siguiente mensaje de advertencia:

 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) model score: 0.988

¿Alguien puede explicarme qué significa esta advertencia? Soy nuevo en el aprendizaje automático, así que estoy un poco perdido en cuanto a lo que puedo hacer para mejorar el modelo de predicción. Como puede ver en numeric_transformer, escalé los datos a través de la estandarización. También estoy confundido en cuanto a cómo el puntaje del modelo es bastante alto y si esto es algo bueno o malo.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La advertencia significa lo que dice principalmente: Sugerencias para tratar de hacer que el solucionador (el algoritmo) converja.


lbfgs significa: "Algoritmo Broyden-Fletcher-Goldfarb-Shanno de memoria limitada". Es uno de los algoritmos de los solucionadores proporcionados por Scikit-Learn Library.

El término memoria limitada simplemente significa que almacena solo unos pocos vectores que representan implícitamente la aproximación de gradientes.

Tiene una mejor convergencia en conjuntos de datos relativamente pequeños .


Pero, ¿qué es la convergencia de algoritmos ?

En palabras simples. Si el error de resolución está dentro de un rango muy pequeño (es decir, casi no cambia), eso significa que el algoritmo alcanzó la solución ( no es necesario que sea la mejor solución, ya que podría estar atascado en lo que se denomina "óptimo local"). " ).

Por otro lado, si el error varía notablemente ( incluso si el error es relativamente pequeño [como en su caso, la puntuación fue buena], pero las diferencias entre los errores por iteración son mayores que cierta tolerancia ), entonces decimos que el algoritmo no convergió.

Ahora, debe saber que la API de Scikit-Learn a veces brinda al usuario la opción de especificar la cantidad máxima de iteraciones que debe tomar el algoritmo mientras busca la solución de manera iterativa:

 LogisticRegression(... solver='lbfgs', max_iter=100 ...)

Como puede ver, el solucionador predeterminado en LogisticRegression es 'lbfgs' y el número máximo de iteraciones es 100 de forma predeterminada.

Palabras finales, sin embargo, tenga en cuenta que aumentar el número máximo de iteraciones no garantiza necesariamente la convergencia, ¡pero ciertamente ayuda!


Actualizar:

Según su comentario a continuación, algunos consejos para probar (entre muchos) que podrían ayudar a que el algoritmo converja son:

  • Aumente el número de iteraciones : como en esta respuesta;
  • Pruebe con un optimizador diferente : Mire aquí ;
  • Escale sus datos: Mire aquí ;
  • Agregue funciones de ingeniería: Mire aquí ;
  • Preprocesamiento de datos: Mire aquí - caso de uso y aquí ;
  • Añadir más datos: Mira aquí .
over 4 years ago · Santiago Trujillo Report

0

para corregir la advertencia de convergencia, especifique max_iter en LogisticRegression a un valor más alto:

 from sklearn.linear_model import LogisticRegression model=LogisticRegression(max_iter=3000) model.fit(X_train,y_train)
over 4 years ago · Santiago Trujillo Report

0

Si recibe el siguiente error para cualquier algoritmo de aprendizaje automático,

Advertencia de convergencia:

lbfgs no pudo converger (estado = 1):
PARADA: NÚMERO TOTAL de ITERACIONES LÍMITE ALCANZADO.

aumente el número de iteraciones (max_iter) o escale los datos como se muestra en 6.3. Preprocesamiento de datos

Consulte también la documentación para conocer las opciones alternativas del solucionador: LogisticRegression()

Entonces, en ese caso, usas un algoritmo como

 from sklearn.linear_model import LogisticRegression log_model = LogisticRegression(solver='lbfgs', max_iter=1000)

porque a veces sucederá debido a la iteración.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!