Evalml: Das Ausführen von AutoML auf Iris-Dataset schlägt fehl

Erstellt am 23. Juli 2020  ·  3Kommentare  ·  Quelle: alteryx/evalml

Ausführen von evalml 0.11.2. Es sieht so aus, als ob die Option zum Setzen von Datenprüfungen auf False aus AutoMLSearch entfernt wurde, was zuvor eine Umgehung für dieses Problem war.


TypeError Traceback (letzter Aufruf zuletzt)
im
1 automl = AutoMLSearch(objective="log_loss_multi", max_pipelines=5, problem_type="multiclass")
2
----> 3 automl.suche(X, y)

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

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\data_checks\data_checks.py in valid(self, X, y)
33 Nachrichten = []
34 für data_check in self.data_checks:
---> 35 Nachrichten_neu = data_check.validate(X, y)
36 Nachrichten.extend(messages_new)
37 Rückmeldungen

~.conda\envs\evalml_test_1.0\lib\site-packages\evalml\data_checks\label_leakage_data_check.py in valid(self, X, y)
53 if len(X.Spalten) == 0:
54 zurück []
---> 55 corrs = {label: abs(y.corr(col)) für Label, col in X.iteritems() if 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 in(.0)
53 if len(X.Spalten) == 0:
54 zurück []
---> 55 corrs = {label: abs(y.corr(col)) für Label, col in X.iteritems() if 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 if Methode in ["pearson", "spearman", "kendall"] or callable(method):
2253 Rückgabe 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 in _f( args, * kwargs)
67 versuchen:
68 mit np.errstate(invalid="ignore"):
---> 69 return f( args, * kwargs)
70 außer ValueError als e:
71 # wir wollen ein Objektarray transformieren

~.conda\envs\evalml_test_1.0\lib\site-packages\pandas\core\nanops.py in nancorr(a, b, method, min_periods)
1238
1239 f = get_corr_func(Methode)
-> 1240 Rückkehr f(a, b)
1241
1242

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

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

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\lib\function_base.py in corrcoef(x, y, rowvar, bias, ddof)
2524 warnings.warn('bias und ddof haben keine Wirkung und sind veraltet',
2525 DeprecationWarning, Stacklevel=3)
-> 2526 c = cov(x, y, Zeilenvariable)
2527 versuchen:
2528 d = diag(c)

<__array_function__ internals> in 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 *= aweights
2430
-> 2431 avg, w_sum = Average(X, Achse=1, Gewichte=w, zurückgegeben=True)
2432 w_sum = w_sum[0]
2433

<__array_function__ internals> im Durchschnitt ( args, * kwargs)

~.conda\envs\evalml_test_1.0\lib\site-packages\numpy\lib\function_base.py im Durchschnitt (a, Achse, Gewichte, zurückgegeben)
391
392 wenn das Gewicht Keine ist:
--> 393 Durchschnitt = a.Mittelwert(Achse)
394 scl = avg.dtype.type(a.size/avg.size)
395 sonst:

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

TypeError: nicht unterstützte(r) Operandentyp(en) für /: 'str' und 'int'

Bei der Ausführung verhält es sich etwas anders - die Suche wird ausgeführt, anstatt mit einem Stack-Trace fehlzuschlagen, aber alle Bewertungen für alle Pipelines sind nan.

Optimieren für Log Loss Multiclass.
Eine niedrigere Punktzahl ist besser.

Durchsuchen von bis zu 4 Pipelines.
Erlaubte Modellfamilien: random_forest, xgboost, linear_model, catboost

(1/4) Modus Baseline Multiclass Classificati... Verstrichen:00 :00
Cross-Validierung starten
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen unterstützten Typ umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Kreuzvalidierung abgeschlossen - mittlerer Log Loss Multiclass: nan
(2/4) CatBoost-Klassifikator mit einfachem Imputer abgelaufen :00 :00
Cross-Validierung starten
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Kreuzvalidierung abgeschlossen - mittlerer Log Loss Multiclass: nan
(3/4) XGBoost-Klassifikator mit einfachem Imputer abgelaufen :00 :02
Cross-Validierung starten
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen unterstützten Typ umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Kreuzvalidierung abgeschlossen - mittlerer Log Loss Multiclass: nan
(4/4) Random Forest Classifier w/ Simple Im... Elapsed:00 :02
Cross-Validierung starten
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen der unterstützten Typen umgewandelt werden.
Fehler in PipelineBase.score beim Scoring des objektiven Log Loss Multiclass: ufunc 'isnan' wird für die Eingabetypen nicht unterstützt, und die Eingaben konnten gemäß der Casting-Regel ''safe'' nicht sicher in einen unterstützten Typ umgewandelt werden.
Kreuzvalidierung abgeschlossen - mittlerer Log Loss Multiclass: nan

Suche beendet nach 00:02
Beste Pipeline: Mode Baseline Multiclass Classification Pipeline
Beste Pipeline Log Loss Multiclass: nan
ToolId 3: AutoML-Tool fertig
In 14,397 Sekunden fertig

Die Pandas-Datentypen sind in beiden Umgebungen gleich.

sepal.länge float64
sepal.width float64
Blütenblatt.Länge float64
Blütenblatt.Breite float64
Klassenobjekt
dtype: Objekt

Das Jupyter-Notebook verwendet Python 3.7.3 und das Tool ist 3.6.8.

bug

Alle 3 Kommentare

@SydneyAyx : Ja, wir haben den Mechanismus zum Deaktivieren von Datenprüfungen in 0.11.2 geändert:

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

Beachten Sie, dass wir dies zum Abschnitt mit dem Benutzerhandbuch hinzufügen sollten.

Bitte versuchen Sie es und wenn das Ihr Problem immer noch nicht behebt, lassen Sie uns noch einmal sprechen.

Wenn das das Problem behebt, erinnere ich mich, dass # 828 zuvor eingereicht wurde, um dies zu verfolgen. Und das haben wir zugunsten von #645 geschlossen, das derzeit in Arbeit ist. Ich bin mir jedoch nicht sicher, ob #645 das zugrunde liegende Problem tatsächlich beheben wird. Also lass es uns offen halten.

Ah, ich war verwirrt über die Zeitleiste: #932 wurde letzte Woche zusammengeführt und behebt dieses Problem! Ich habe gerade den Reproduzierer ausgeführt, den ich in # 828 geschrieben habe , um dies zu bestätigen. Die nächste Version ( 0.12.0 , nächster Dienstag) wird den Fix enthalten.

Ich werde das offen halten und schließen, wenn wir diese Veröffentlichung veröffentlichen.

Behoben in v0.12.0 das gerade ausgegangen ist!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen