Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

308
Visualizações
AttributeError: el objeto 'str' no tiene atributo 'decode' al ajustar el modelo de regresión logística

Actualmente estoy tratando de crear una clasificación binaria utilizando la regresión logística. Actualmente estoy en la determinación de la importancia característica. Ya hice el preprocesamiento de datos (One Hot Encoding y muestreo) y lo ejecuté con XGBoost y RandomFORestClassifier, no hay problema

Sin embargo, cuando traté de ajustar un modelo LogisticRegression (abajo está mi código en Notebook),

 from sklearn.linear_model import LogisticRegression #Logistic Regression # fit the model model = LogisticRegression() # fit the model model.fit(np.array(X_over), np.array(y_over)) # get importance importance = model.coef_[0] # summarize feature importance df_imp = pd.DataFrame({'feature':list(X_over.columns), 'importance':importance}) display(df_imp.sort_values('importance', ascending=False).head(20)) # plot feature importance plt.bar(list(X_over.columns), importance) plt.show()

dio un error

 ... ~\AppData\Local\Continuum\anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0) 223 with parallel_backend(self._backend, n_jobs=self._n_jobs): 224 return [func(*args, **kwargs) --> 225 for func, args, kwargs in self.items] 226 227 def __len__(self): ~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py in _logistic_regression_path(X, y, pos_class, Cs, fit_intercept, max_iter, tol, verbose, solver, coef, class_weight, dual, penalty, intercept_scaling, multi_class, random_state, check_input, max_squared_sum, sample_weight, l1_ratio) 762 n_iter_i = _check_optimize_result( 763 solver, opt_res, max_iter, --> 764 extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG) 765 w0, loss = opt_res.x, opt_res.fun 766 elif solver == 'newton-cg': ~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\optimize.py in _check_optimize_result(solver, result, max_iter, extra_warning_msg) 241 " https://scikit-learn.org/stable/modules/" 242 "preprocessing.html" --> 243 ).format(solver, result.status, result.message.decode("latin1")) 244 if extra_warning_msg is not None: 245 warning_msg += "\n" + extra_warning_msg AttributeError: 'str' object has no attribute 'decode'

Lo busqué en Google y la mayoría de las respuestas decían que este error se debe a que la biblioteca scikit-learn intentó decodificar una cadena ya decodificada. Pero no sé cómo resolverlo en mi caso aquí. Me aseguré de que todos mis datos sean enteros o float64, y no cadenas.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Traté de actualizar mi scikit-learn usando el siguiente comando, pero eso no resolvió el error de AttributeError: 'str' object has no attribute 'decode'

 pip install scikit-learn -U

Finalmente, el siguiente fragmento de código resolvió el problema, agregue el solucionador como liblinear

 model = LogisticRegression(solver='liblinear')
over 4 years ago · Santiago Trujillo Relatório

0

En la versión más reciente de scikit-learn (ahora 0.24.1) se solucionó el problema encerrando una parte del código en un bloque try-catch que informo a continuación: el archivo es

 optimize.py -> _check_optimize_result(solver, result, max_iter=None, extra_warning_msg=None)

y la pieza de código es

 if solver == "lbfgs": if result.status != 0: try: # The message is already decoded in scipy>=1.6.0 result_message = result.message.decode("latin1") except AttributeError: result_message = result.message warning_msg = ( "{} failed to converge (status={}):\n{}.\n\n" "Increase the number of iterations (max_iter) " "or scale the data as shown in:\n" " https://scikit-learn.org/stable/modules/" "preprocessing.html" ).format(solver, result.status, result_message)

que era solo

 if solver == "lbfgs": if result.status != 0: warning_msg = ( "{} failed to converge (status={}):\n{}.\n\n" "Increase the number of iterations (max_iter) " "or scale the data as shown in:\n" " https://scikit-learn.org/stable/modules/" "preprocessing.html" ).format(solver, result.status, result.message.decode("latin1"))

antes de. Entonces, actualizar scikit-learn resuelve el problema.

over 4 years ago · Santiago Trujillo Relatório

0

Hay un error con solver='lbfgs'. Cambiar a 'sag' funciona a su alrededor.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda