Evalml: Error al ejecutar AutoML en el conjunto de datos Iris

Creado en 23 jul. 2020  ·  3Comentarios  ·  Fuente: alteryx/evalml

Ejecutando evalml 0.11.2. Parece que la opción para establecer las comprobaciones de datos en False se ha eliminado de AutoMLSearch, que anteriormente era una solución para este problema.


TypeError Traceback (última llamada más reciente)
en
1 automl = AutoMLSearch (objetivo = "log_loss_multi", max_pipelines = 5, problem_type = "multiclass")
2
----> 3 búsqueda automática (X, y)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ automl \ automl_search.py ​​en la búsqueda (self, X, y, data_checks, feature_types, raise_errors, show_iteration_plot)
316
317 comprobaciones_datos = self._validate_data_checks (comprobaciones_datos)
-> 318 resultados_de_comprobación_datos = comprobaciones_de_datos.validate (X, y)
319
320 si len (data_check_results)> 0:

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ data_checks.py en validate (self, X, y)
33 mensajes = []
34 para data_check en self.data_checks:
---> 35 messages_new = data_check.validate (X, y)
36 mensajes.extender (mensajes_nuevo)
37 mensajes de respuesta

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ label_leakage_data_check.py en validate (self, X, y)
53 si len (X.columnas) == 0:
54 volver []
---> 55 corrs = {label: abs (y.corr (col)) for label, col in X.iteritems () if abs (y.corr (col))> = self.pct_corr_threshold}
56
57 high_corr_cols = {clave: valor de la clave, valor en corrs.items () si valor> = self.pct_corr_threshold}

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ label_leakage_data_check.py en(.0)
53 si len (columnas X) == 0:
54 volver []
---> 55 corrs = {label: abs (y.corr (col)) para etiqueta, col en X.iteritems () if abs (y.corr (col))> = self.pct_corr_threshold}
56
57 high_corr_cols = {clave: valor de la clave, valor en corrs.items () si valor> = self.pct_corr_threshold}

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ pandas \ core \ series.py en corr (self, other, method, min_periods)
2252 si método en ["pearson", "spearman", "kendall"] o invocable (método):
2253 return nanops.nancorr (
-> 2254 this.values, other.values, método = método, min_periods = min_periods
2255)
2256

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ pandas \ core \ nanops.py en _f ( args, * kwargs)
67 intento:
68 con np.errstate (no válido = "ignorar"):
---> 69 return f (argumentos , * kwargs)
70 excepto ValueError como e:
71 # queremos transformar una matriz de objetos

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ pandas \ core \ nanops.py en nancorr (a, b, método, min_periods)
1238
1239 f = get_corr_func (método)
-> 1240 devuelve f (a, b)
1241
1242

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ pandas \ core \ nanops.py en _pearson (a, b)
1254
1255 def _pearson (a, b):
-> 1256 return np.corrcoef (a, b) [0, 1]
1257
1258 def _kendall (a, b):

<__ función_array__ internos> en corrcoef ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py en corrcoef (x, y, rowvar, bias, ddof)
2524 warnings.warn ('el sesgo y el ddof no tienen efecto y están obsoletos',
2525 Advertencia de obsolescencia, nivel de pila = 3)
-> 2526 c = cov (x, y, rowvar)
2527 prueba:
2528 d = diag (c)

<__ función_array__ internos> en cov ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py en cov (m, y, rowvar, bias, ddof, fweights, aweights)
2429 w * = pesos
2430
-> 2431 promedio, w_sum = promedio (X, eje = 1, pesos = w, devuelto = verdadero)
2432 w_sum = w_sum [0]
2433

<__ array_function__ internals> en promedio ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py en promedio (a, eje, pesos, devuelto)
391
392 si los pesos son Ninguno:
-> 393 avg = a.media (eje)
394 scl = avg.dtype.type (a.tamaño / promedio.tamaño)
395 más:

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ core_methods.py en _mean (a, axis, dtype, out, keepdims)
152 si es instancia (ret, mu.ndarray):
153 ret = um.verdadero_divide (
-> 154 ret, rcount, out = ret, casting = 'inseguro', subok = False)
155 si is_float16_result y out es None:
156 ret = arr.dtype.type (ret)

TypeError: tipos de operandos no admitidos para /: 'str' e 'int'

Hace algo ligeramente diferente cuando se ejecuta: la búsqueda se ejecuta en lugar de fallar con un seguimiento de pila, pero todas las puntuaciones de todas las canalizaciones son nan.

Optimización para Log Loss Multiclass.
Una puntuación más baja es mejor.

Buscando hasta 4 tuberías.
Familias de modelos permitidas: random_forest, xgboost, linear_model, catboost

(1/4) Modo Clasificación multiclase de línea base ... Transcurrido : 00:00
Comenzando la validación cruzada
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Validación cruzada finalizada - Multiclase de pérdida de registro media: nan
(2/4) Clasificador CatBoost con Imputer simple Transcurrido: 00:00
Comenzando la validación cruzada
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Validación cruzada finalizada - Multiclase de pérdida de registro media: nan
(3/4) Clasificador XGBoost con Imputer simple Transcurrido: 00 : 02
Comenzando la validación cruzada
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Validación cruzada finalizada - Multiclase de pérdida de registro media: nan
(4/4) Clasificador de bosque aleatorio con im simple ... Transcurrido: 00 : 02
Comenzando la validación cruzada
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Error en PipelineBase.score al puntuar el objetivo Log Loss Multiclass: ufunc 'isnan' no es compatible con los tipos de entrada, y las entradas no se pudieron coaccionar de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''
Validación cruzada finalizada - Multiclase de pérdida de registro media: nan

La búsqueda finalizó después de las 00:02
Mejor canalización: canalización de clasificación multiclase de línea base de modo
Mejor multiclase de pérdida de registro de canalización: nan
ToolId 3: herramienta AutoML lista
Terminado en 14.397 segundos

Los tipos de datos de pandas son los mismos en ambos entornos.

sepal.length float64
sepal.width float64
petal.length float64
petal.width float64
objeto de clase
dtype: objeto

El cuaderno de Jupyter usa Python 3.7.3 y la herramienta es 3.6.8.

bug

Todos 3 comentarios

@SydneyAyx : sí, cambiamos el mecanismo para deshabilitar las verificaciones de datos en 0.11.2:

automl.search(..., data_checks=None, ...)

Tomando nota de que debemos agregar eso a la sección de la guía del usuario.

Por favor, inténtelo y si aún no soluciona su problema, hablemos de nuevo.

Si eso soluciona el problema, recuerdo que el # 828 se presentó previamente para rastrear esto. Y cerramos eso a favor del # 645, que está actualmente en progreso. Sin embargo, no estoy seguro de que el # 645 realmente solucione el problema subyacente. Dejémoslo abierto.

Ah, me confundí acerca de la línea de tiempo: ¡# 932 se fusionó la semana pasada y soluciona este problema! Acabo de ejecutar el reproductor que escribí en el n. ° 828 para confirmar esto. La próxima versión ( 0.12.0 , el próximo martes) incluirá la corrección.

Mantendré esto abierto y lo cerraré cuando publiquemos ese comunicado.

¡Arreglado en v0.12.0 que acaba de salir!

¿Fue útil esta página
0 / 5 - 0 calificaciones