Evalml: [Discuter] Est-ce qu'AutoClassifer.fit() et AutoRegressor.fit() sont les meilleures API ?

Créé le 5 nov. 2019  ·  10Commentaires  ·  Source: alteryx/evalml

Après avoir appelé fit, vous devez sélectionner le modèle que vous souhaitez utiliser avant d'appeler predict . De cette façon, ce n'est pas comme les autres objets qui ont une méthode d'ajustement. fit ressemble plus à search dans ce cas.

Commentaire le plus utile

Ouais, je suis d'accord. Le régresseur peut également faire référence aux caractéristiques d'entrée, aux variables, etc., la régression est donc meilleure.

De plus, si l'AutoClassification et l'AutoRegression sont plus analogues à "l'apprentissage automatique", puisque l'apprentissage automatique, la classification et la régression sont tous des processus.

à moins qu'il n'y ait une opposition définitive, nous irons avec

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

Tous les 10 commentaires

La façon dont je le vois, il y a trois décisions à prendre

  1. Comment appelle-t-on la classe
  2. Quel est le nom recommandé de la variable qui contient la classe initialisée
  3. Quelle est la méthode qui donne le coup d'envoi

Pour 1 et 2, voici les options que j'ai proposées

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()

Pour 2 et 3, voici les options que j'ai proposées

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

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

je pense que j'aime

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

Mon raisonnement est

  1. La classe evalml.AutoClassifierSearch est descriptive. C'est une recherche, pas un classificateur lui-même
  2. La méthode vous indique précisément ce qui se passe lorsque vous l'appelez. run() est très général.
  3. Le nom de la variable est large et n'entre pas en conflit avec les conventions d'utilisation de clf avec des outils comme sklearn.

L'alternative que j'aime est

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

Cela utilise un nom de variable plus descriptif, donc utiliser run() serait correct. L'avantage est qu'il n'introduit pas le terme supplémentaire automl dans nos exemples. Mon souci serait qu'un utilisateur puisse rechercher par nom ce qu'il veut et alors my_custom_variable_name.run() n'est pas très descriptif.

Des pensées? Y a-t-il des approches de nommage de variables que j'ai manquées ? Même si vous ne pensez pas qu'ils sont meilleurs, autant les jeter là-bas pour que nous les examinions.

J'aime AutoClassifierSearch() pour les mêmes raisons que vous avez indiquées ci-dessus, mais je n'aime pas vraiment appeler la variable automl car elle semble large et search car c'est un verbe. Que pensez-vous de autosearch.run() ? Quelqu'un a proposé searcher lors de notre réunion et cela fonctionne aussi bien, mais cela ne sort pas aussi bien de la langue.

J'aime assez AutoClassifierSearch() et utiliser search() car je suis d'accord que run() pourrait être beaucoup trop générique si l'utilisateur définit son propre nom de variable.

Pour le nom recommandé de la variable qui contient la classe initialisée, je suis fan de automl , searcher ou autosearch / autosearcher plus de search , même si nous avons opté pour run() . (J'ai fait une brève recherche sur Google et automl ou aml apparaît pour d'autres bibliothèques, pour ce que ça vaut).

@jeremyliweishih, je ne suis pas sûr de comprendre votre argument à propos de search() . Je pense que le but serait de choisir un verbe descriptif pour cette méthode. pouvez-vous préciser ce que vous disiez ?

J'espère que je ne me trompe pas mais je pense que @jeremyliweishih dit search car le nom recommandé de la variable est un peu bizarre parce que c'est un verbe... du moins, c'était aussi le sentiment que j'ai eu :D

@kmax12 Je voulais dire ce commentaire sur le nom recommandé de la variable : search = AutoClassifierSearch() . Pour clarifier, je pense que AutoClassifierSearch() pour le nom de la classe serait génial et que autosearch pourrait fonctionner pour le nom de la variable. autosearch = AutoClassifierSearch() . Peut-être qu'un autre nom de variable à trois lettres pourrait également fonctionner (aml, asc, ats).

@jeremyliweishih je comprends ce que vous disiez maintenant. je suis d'accord.

Sur la base de ce qui précède, je pense que nous aimons tous renommer en AutoClassifierSearch et AutoRegressorSearch .

En termes de nom de variable, nous sommes également en panne

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

Personnellement, j'aime bien automl car il est descriptif. aml est similaire si vous savez ce que cela signifie, mais je ne pense pas que ce soit si intuitif. c'est ce que j'ai vu utiliser H20 dans leurs documents (y a-t-il d'autres bibliothèques?) Je ne suis généralement pas un fan de raccourcir les noms de variables sans une très bonne raison. Le seul avantage que je vois à aml est qu'il fait 3 caractères au lieu de 6.

autosearch est logique pour moi car il s'agit essentiellement du nom de la classe. cependant, il est plus long que automl et je ne suis pas sûr que cela ajoute de la clarté. Si nous devions emprunter la voie autosearch , je pense que la méthode devrait être run , car autosearcher = AutoClassifierSearch(); autosearcher.search() semble exagéré sur la recherche haha.

Je vois donc deux options basées sur la convo ci-dessus

automl = AutoClassifierSearch()
automl.search()

ou

autosearch = AutoClassifierSearch()
autosearch.run()

Je pense que l'un ou l'autre fonctionnerait, mais j'aime .search() sur .run() !

J'aime toutes les idées que vous avez lancées. Je suis particulièrement fan de :

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

Pas pour compliquer une discussion déjà longue avec plus d'options, mais : faut-il dire AutoRegressorSearch ou AutoRegressionSearch ? J'ai un faible pour ce dernier. Je n'entends pas autant le terme "régresseur" que j'entends "modèle de régression", et de même pour la classification

Ouais, je suis d'accord. Le régresseur peut également faire référence aux caractéristiques d'entrée, aux variables, etc., la régression est donc meilleure.

De plus, si l'AutoClassification et l'AutoRegression sont plus analogues à "l'apprentissage automatique", puisque l'apprentissage automatique, la classification et la régression sont tous des processus.

à moins qu'il n'y ait une opposition définitive, nous irons avec

automl = AutoClassificationSearch()
automl = AutoRegressionSearch()
automl.search()
Cette page vous a été utile?
0 / 5 - 0 notes