Evalml: Échec de l'exécution d'AutoML sur l'ensemble de données Iris

Créé le 23 juil. 2020  ·  3Commentaires  ·  Source: alteryx/evalml

Exécuter evalml 0.11.2. Il semble que l'option permettant de définir les vérifications des données sur False ait été supprimée d'AutoMLSearch, ce qui était auparavant une solution de contournement à ce problème.


TypeError Traceback (appel le plus récent en dernier)
dans
1 automl = AutoMLSearch(objective="log_loss_multi", max_pipelines=5, problem_type="multiclass")
2
----> 3 automl.search(X, y)

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\automl\automl_search.py ​​dans la recherche (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 si len(data_check_results) > 0 :

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\data_checks\data_checks.py dans valider(self, X, y)
33 messages = []
34 pour data_check dans self.data_checks :
---> 35 messages_new = data_check.validate(X, y)
36 messages.extend(messages_new)
37 messages de retour

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\data_checks\label_leakage_data_check.py dans valider(self, X, y)
53 si longueur(X.colonnes) == 0 :
54 retour []
---> 55 corrs = {label: abs(y.corr(col)) pour label, col dans X.iteritems() if abs(y.corr(col)) >= self.pct_corr_threshold}
56
57 high_corr_cols = {clé : valeur pour la clé, valeur dans corrs.items() si valeur >= self.pct_corr_threshold}

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\data_checks\label_leakage_data_check.py dans(.0)
53 si longueur(X.colonnes) == 0 :
54 retour []
---> 55 corrs = {label: abs(y.corr(col)) pour label, col dans X.iteritems() if abs(y.corr(col)) >= self.pct_corr_threshold}
56
57 high_corr_cols = {clé : valeur pour la clé, valeur dans corrs.items() si valeur >= self.pct_corr_threshold}

~.conda\envs\evalml_test_1.0\lib\site-packages\pandas\core\series.py dans corr(self, other, method, min_periods)
2252 if method in ["pearson", "spearman", "kendall"] ou callable(method):
2253 renvoie 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 dans _f( args, * kwargs)
67 essayer:
68 avec np.errstate(invalid="ignore") :
---> 69 renvoie f( args, * kwargs)
70 sauf ValueError comme e :
71 # nous voulons transformer un tableau d'objets

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

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

<__array_function__ internals> dans corrcoef( args, * kwargs)

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\lib\function_base.py dans corrcoef(x, y, rowvar, bias, ddof)
2524 warnings.warn('bias et ddof n'ont aucun effet et sont obsolètes',
2525 DeprecationWarning, stacklevel=3)
-> 2526 c = cov(x, y, varligne)
2527 essayer :
2528 d = diag(c)

<__array_function__ internals> dans cov( args, * kwargs)

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\lib\function_base.py dans cov(m, y, rowvar, bias, ddof, fweights, aweights)
2429 w *= un poids
2430
-> 2431 moy, w_sum = moyenne (X, axe=1, poids=w, retourné=True)
2432 somme_w = somme_w[0]
2433

<__array_function__ internals> en moyenne( args, * kwargs)

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\lib\function_base.py en moyenne (a, axe, poids, renvoyé)
391
392 si poids est Aucun :
--> 393 moy = a.moy (axe)
394 scl = avg.dtype.type(a.size/avg.size)
395 autres :

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\core_methods.py in _mean(a, axis, dtype, out, keepdims)
152 si estinstance(ret, mu.ndarray) :
153 ret = um.true_divide(
--> 154 ret, rcount, out=ret, casting='unsafe', subok=False)
155 si is_float16_result et out est None :
156 ret = arr.dtype.type(ret)

TypeError : type(s) d'opérande non pris en charge pour / : 'str' et 'int'

Il fait quelque chose de légèrement différent lorsqu'il est exécuté - la recherche s'exécute au lieu d'échouer avec une trace de pile, mais tous les scores pour tous les pipelines sont nan.

Optimisation pour Log Loss Multiclass.
Un score inférieur est meilleur.

Recherche jusqu'à 4 pipelines.
Familles de modèles autorisées : random_forest, xgboost, linear_model, catboost

(1/4) Mode Baseline Multiclass Classificati... Elapsed:00 :00
Démarrage de la validation croisée
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Validation croisée terminée - Log Loss moyen multiclasse : nan
(2/4) Classificateur CatBoost avec Simple Imputer Elapsed : 00 :00
Démarrage de la validation croisée
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Validation croisée terminée - Log Loss moyen multiclasse : nan
(3/4) Classificateur XGBoost avec imputation simple écoulé : 00 :02
Démarrage de la validation croisée
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Validation croisée terminée - Log Loss moyen multiclasse : nan
(4/4) Classificateur de forêt aléatoire avec simple im... Elapsed :00 :02
Démarrage de la validation croisée
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Erreur dans PipelineBase.score lors de la notation de l'objectif Log Loss Multiclass : ufunc 'isnan' n'est pas pris en charge pour les types d'entrée, et les entrées n'ont pas pu être forcées en toute sécurité vers des types pris en charge conformément à la règle de casting ''safe''
Validation croisée terminée - Log Loss moyen multiclasse : nan

Recherche terminée après 00:02
Meilleur pipeline : Pipeline de classification multiclasse Mode Baseline
Meilleur pipeline Log Loss Multiclass : nan
ToolId 3 : outil AutoML terminé
Terminé en 14,397 secondes

Les types de données des pandas sont les mêmes dans les deux environnements.

sepal.length float64
sepal.width float64
pétale.longueur float64
pétale.largeur float64
objet de classe
dtype : objet

Le notebook Jupyter utilise Python 3.7.3 et l'outil est 3.6.8.

bug

Tous les 3 commentaires

@SydneyAyx : le mécanisme de désactivation des vérifications de données en 0.11.2 :

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

Notez que nous devrions ajouter cela à la section du guide de l'utilisateur.

Veuillez essayer et si cela ne résout toujours pas votre problème, reparlons.

Si cela résout le problème, je me souviens que le numéro 828 avait déjà été déposé pour suivre cela. Et nous avons clôturé cela au profit du #645 , qui est actuellement en cours. Cependant, je ne suis pas sûr que #645 résoudra réellement le problème sous-jacent. Alors gardons-le ouvert.

Ah, je me suis trompé sur la chronologie : #932 a été fusionné la semaine dernière et corrige ce problème ! Je viens de lancer le reproducteur que j'ai écrit dans #828 pour le confirmer. La prochaine version ( 0.12.0 , prochain mardi) inclura le correctif.

Je garderai ceci ouvert et le fermerai quand nous sortirons ce communiqué.

Corrigé dans v0.12.0 qui vient de sortir !

Cette page vous a été utile?
0 / 5 - 0 notes