Evalml: [Diskussion] Ist AutoClassifer.fit() und AutoRegressor.fit() die beste API?

Erstellt am 5. Nov. 2019  ·  10Kommentare  ·  Quelle: alteryx/evalml

Nachdem Sie fit aufgerufen haben, müssen Sie das gewünschte Modell auswählen, bevor Sie predict aufrufen. Auf diese Weise ist es nicht wie bei anderen Objekten, die eine Fit-Methode haben. fit ist in diesem Fall eher wie search .

Hilfreichster Kommentar

Ja, ich stimme zu. Regressor kann sich auch auf die Eingabefunktionen, Variablen usw. beziehen, sodass die Regression besser ist.

Außerdem, wenn AutoClassification und AutoRegression eher dem "automatischen maschinellen Lernen" entsprechen, da maschinelles Lernen, Klassifizierung und Regression allesamt Prozesse sind.

wenn es keinen letzten Widerstand gibt, machen wir mit

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()

Alle 10 Kommentare

Aus meiner Sicht gibt es drei Entscheidungen zu treffen

  1. Wie nennen wir die Klasse
  2. Was ist der empfohlene Name der Variablen, die die initialisierte Klasse enthält?
  3. Mit welcher Methode startet die Sache?

Für 1 und 2 sind hier die Optionen, die ich mir ausgedacht habe

import evalml

clf = evalml.AutoClassifierSearch()
auto = evalml.AutoClassifierSearch()
automl = evalml.AutoClassifierSearch()
seacher = evalml.AutoClassifierSearch()

clf = evalml.AutoClassifier()
auto = evalml.AutoClassifier()
automl = evalml.AutoClassifier()
seacher = evalml.AutoClassifier()

Für 2 und 3 sind hier die Optionen, die ich mir ausgedacht habe

clf.search()
auto.search()
automl.search()
seacher.search()

clf.run()
auto.run()
automl.run()
seacher.run()

ich denke, ich mag

import evalml
automl = evalml.AutoClassifierSearch()
automl.search()

Meine Begründung ist

  1. Die Klasse evalml.AutoClassifierSearch ist beschreibend. Es ist eine Suche, kein Klassifikator selbst
  2. Die Methode sagt Ihnen genau, was passiert, wenn Sie sie aufrufen. run() ist sehr allgemein.
  3. Der Variablenname ist weit gefasst und widerspricht nicht den Konventionen der Verwendung von clf mit Tools wie sklearn.

Die Alternative die ich mag ist

import evalml
search = evalml.AutoClassifierSearch()
search.run()

Dies verwendet einen aussagekräftigeren Variablennamen, daher wäre die Verwendung von run() in Ordnung. Der Vorteil dabei ist, dass in unseren Beispielen nicht der zusätzliche Begriff automl . Meine Sorge wäre, dass ein Benutzer die Suche benennen könnte, was immer er wollte, und dann ist my_custom_variable_name.run() nicht sehr beschreibend.

Irgendwelche Gedanken? Irgendwelche Ansätze zur Variablenbenennung, die ich übersehen habe? Selbst Sie denken nicht, dass sie besser sind, können sie genauso gut da draußen lassen, damit wir sie in Betracht ziehen.

Ich mag AutoClassifierSearch() aus den gleichen Gründen, die Sie oben genannt haben, aber ich bin kein Fan davon, die Variable automl da sie zu breit erscheint und search da sie ein Verb ist. Was halten Sie von autosearch.run() ? Jemand hat in unserem Treffen searcher vorgeschlagen und das funktioniert auch, aber es rollt nicht ganz so schön auf der Zunge.

Ich mag AutoClassifierSearch() und die Verwendung von search() da ich zustimme, dass run() viel zu allgemein sein könnte, wenn der Benutzer seinen eigenen Variablennamen definiert.

Für den empfohlenen Namen der Variablen, die die initialisierte Klasse enthält, bin ich ein Fan von automl , searcher oder autosearch / autosearcher über search , auch wenn wir run() . (Habe eine kurze Google-Suche durchgeführt und automl oder aml für einige andere Bibliotheken da draußen, was es wert ist).

@jeremyliweishih Ich bin search() verstehe. Ich denke, das Ziel wäre, ein beschreibendes Verb für diese Methode auszuwählen. kannst du klarstellen, was du gesagt hast?

Hoffentlich missverstehe ich das nicht, aber ich glaube @jeremyliweishih sagt search da der empfohlene Name der Variablen etwas seltsam ist, weil es ein Verb ist... zumindest war das auch das Gefühl, das ich hatte :D

@kmax12 Ich meinte diesen Kommentar zum empfohlenen Namen der Variablen: search = AutoClassifierSearch() . Zur Verdeutlichung denke ich, dass AutoClassifierSearch() für den Klassennamen großartig wäre und autosearch für den Variablennamen funktionieren könnte. autosearch = AutoClassifierSearch() . Vielleicht könnte auch ein anderer aus drei Buchstaben bestehender Variablenname funktionieren (aml, asc, ats).

@jeremyliweishih ich verstehe jetzt, was du gesagt hast. Ich stimme zu.

Basierend auf dem oben Gesagten denke ich, dass wir alle gerne in AutoClassifierSearch und AutoRegressorSearch umbenennen.

Was den Variablennamen angeht, sind wir auch unten

autosearch = AutoClassifierSearch()
automl = AutoClassifierSearch()
aml = AutoClassifierSearch()

Ich persönlich mag automl, da es beschreibend ist. aml ist ähnlich, wenn Sie wissen, wofür es steht, aber ich glaube nicht, dass es so intuitiv ist. das ist das, was ich in H20 gesehen habe (gibt es andere Bibliotheken?) Ich bin im Allgemeinen kein Fan davon, Variablennamen ohne wirklich guten Grund zu kürzen. Der einzige Vorteil, den ich bei aml sehe, ist, dass es 3 statt 6 Zeichen hat.

autosearch ist für mich sinnvoll, da es im Grunde der Klassenname ist. Es ist jedoch länger als automl und ich bin mir nicht sicher, ob es Klarheit schafft. Wenn wir die Route autosearch , sollte die Methode meiner Meinung nach run , da autosearcher = AutoClassifierSearch(); autosearcher.search() bei der Suche einfach übertrieben erscheint, haha.

Ich sehe also zwei Optionen basierend auf der obigen Konversation

automl = AutoClassifierSearch()
automl.search()

oder

autosearch = AutoClassifierSearch()
autosearch.run()

Ich denke, beides würde funktionieren, aber ich mag .search() über .run() !

Ich mag alle Ideen, die du weggeworfen hast. Ich bin ein besonderer Fan von:

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()

Um eine ohnehin schon lange Diskussion nicht mit weiteren Optionen zu verkomplizieren, aber: sollten wir AutoRegressorSearch oder AutoRegressionSearch sagen? Ich bin zu letzterem einseitig. Ich höre den Begriff "Regressor" nicht annähernd so oft wie "Regressionsmodell" und ähnlich für die Klassifizierung

Ja, ich stimme zu. Regressor kann sich auch auf die Eingabefunktionen, Variablen usw. beziehen, sodass die Regression besser ist.

Außerdem, wenn AutoClassification und AutoRegression eher dem "automatischen maschinellen Lernen" entsprechen, da maschinelles Lernen, Klassifizierung und Regression allesamt Prozesse sind.

wenn es keinen letzten Widerstand gibt, machen wir mit

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen