Evalml: Falha ao executar o AutoML no conjunto de dados Iris

Criado em 23 jul. 2020  ·  3Comentários  ·  Fonte: alteryx/evalml

Executando evalml 0.11.2. Parece que a opção de definir as verificações de dados como False foi removida do AutoMLSearch, o que anteriormente era uma solução alternativa para esse problema.


TypeError Traceback (última chamada mais recente)
dentro
1 automl = AutoMLSearch (objetivo = "log_loss_multi", max_pipelines = 5, problem_type = "multiclasse")
2
----> 3 automl.search (X, y)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ automl \ automl_search.py ​​em pesquisa (self, X, y, data_checks, feature_types, raise_errors, show_iteration_plot)
316
317 data_checks = self._validate_data_checks (data_checks)
-> 318 data_check_results = data_checks.validate (X, y)
319
320 se len (data_check_results)> 0:

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ data_checks.py em validação (self, X, y)
33 mensagens = []
34 para data_check em self.data_checks:
---> 35 messages_new = data_check.validate (X, y)
36 messages.extend (messages_new)
37 mensagens de retorno

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ label_leakage_data_check.py in validate (self, X, y)
53 se len (X.columns) == 0:
54 retorno []
---> 55 corrs = {rótulo: abs (y.corr (col)) para rótulo, col em X.iteritems () se abs (y.corr (col))> = self.pct_corr_threshold}
56
57 high_corr_cols = {key: value for key, value in corrs.items () if value> = self.pct_corr_threshold}

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ evalml \ data_checks \ label_leakage_data_check.py em(.0)
53 se len (X.columns) == 0:
54 retorno []
---> 55 corrs = {rótulo: abs (y.corr (col)) para rótulo, col em X.iteritems () se abs (y.corr (col))> = self.pct_corr_threshold}
56
57 high_corr_cols = {key: value for key, value in corrs.items () if value> = self.pct_corr_threshold}

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

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ pandas \ core \ nanops.py em _f ( args, * kwargs)
67 tentativa:
68 com np.errstate (inválido = "ignorar"):
---> 69 return f ( args, * kwargs)
70 exceto ValueError como e:
71 # queremos transformar um array de objetos

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

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

<__ array_function__ internals> em corrcoef ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py em corrcoef (x, y, rowvar, bias, ddof)
2524 warnings.warn ('bias e ddof não têm efeito e estão obsoletos',
2525 Aviso de descontinuação, nível de pilha = 3)
-> 2526 c = cov (x, y, rowvar)
2527 tentativa:
2528 d = diag (c)

<__ array_function__ internals> em cov ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py in cov (m, y, rowvar, bias, ddof, fweights, aweights)
2429 w * = temores
2430
-> 2431 média, w_sum = média (X, eixo = 1, pesos = w, retornado = verdadeiro)
2432 w_sum = w_sum [0]
2433

<__ array_function__ internals> em média ( args, * kwargs)

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ lib \ function_base.py em média (a, eixo, pesos, retornados)
391
392 se os pesos forem Nenhum:
-> 393 média = média (eixo)
394 scl = avg.dtype.type (a.size / avg.size)
395 mais:

~ .conda \ envs \ evalml_test_1.0 \ lib \ site-packages \ numpy \ core_methods.py em _mean (a, axis, dtype, out, keepdims)
152 se isinstance (ret, mu.ndarray):
153 ret = um.true_divide (
-> 154 ret, rcount, out = ret, casting = 'inseguro', subok = False)
155 if is_float16_result e out for None:
156 ret = arr.dtipo.tipo (ret)

TypeError: tipo (s) de operando não suportado (s) para /: 'str' e 'int'

Ele faz algo um pouco diferente quando executado - a pesquisa é executada em vez de falhar com um rastreamento de pilha, mas todas as pontuações de todos os pipelines são nan.

Otimizando para Log Loss Multiclass.
A pontuação mais baixa é melhor.

Pesquisando até 4 pipelines.
Famílias de modelos permitidas: random_forest, xgboost, linear_model, catboost

(1/4) Classificação de multiclasse de linha de base do modo ... Decorrido: 00 : 00
Iniciando validação cruzada
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Validação cruzada concluída - média Log Loss Multiclass: nan
(2/4) Classificador CatBoost c / Imputador Simples Decorrido: 00 : 00
Iniciando validação cruzada
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não suportado para os tipos de entrada e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Validação cruzada concluída - média Log Loss Multiclass: nan
(3/4) Classificador XGBoost com Imputador Simples Decorrido: 00 : 02
Iniciando validação cruzada
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não suportado para os tipos de entrada e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não suportado para os tipos de entrada e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Validação cruzada concluída - média Log Loss Multiclass: nan
(4/4) Classificador Random Forest c / Simple Im ... Decorrido: 00 : 02
Iniciando validação cruzada
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não suportado para os tipos de entrada e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não suportado para os tipos de entrada e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Erro em PipelineBase.score ao marcar o objetivo Log Loss Multiclass: ufunc 'isnan' não é suportado para os tipos de entrada, e as entradas não puderam ser coagidas com segurança para nenhum tipo suportado de acordo com a regra de lançamento '' safe ''
Validação cruzada concluída - média Log Loss Multiclass: nan

Pesquisa terminada após 00:02
Melhor pipeline: Modo Baseline Multiclass Classification Pipeline
Melhor multiclasse de perda de registro de pipeline: nan
ToolId 3: ferramenta AutoML concluída
Terminado em 14,397 segundos

Os tipos de dados do pandas são os mesmos em ambos os ambientes.

sepal.length float64
sepal.width float64
petal.length float64
petal.width float64
objeto de classe
dtype: object

O notebook Jupyter está usando Python 3.7.3 e a ferramenta é 3.6.8.

bug

Todos 3 comentários

@SydneyAyx : sim, mudamos o mecanismo de desabilitação das verificações de dados na versão 0.11.2:

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

Lembrando que devemos adicionar isso à seção do guia do usuário.

Tente fazer isso e, se ainda não resolver o problema, conversemos novamente.

Se isso resolver o problema, lembro que o número 828 foi preenchido anteriormente para rastrear isso. E fechamos isso em favor de # 645, que está atualmente em andamento. No entanto, não tenho certeza se o # 645 realmente corrigirá o problema subjacente. Portanto, vamos mantê-lo aberto.

Ah, fiquei confuso com a linha do tempo: o # 932 foi mesclado na semana passada e corrige esse problema! Acabei de executar o reprodutor que escrevi em # 828 para confirmar isso. A próxima versão ( 0.12.0 , próxima terça) incluirá a correção.

Vou manter isso aberto e fechá-lo quando lançarmos o lançamento.

Corrigido em v0.12.0 que acabou de sair!

Esta página foi útil?
0 / 5 - 0 avaliações