Je l'ai obtenu sur la page Web de sklearn:
a) Pipeline: Pipeline de transformations avec un estimateur final
b) Make_pipeline: Construisez un Pipeline à partir des estimateurs donnés. Il s'agit d'un raccourci pour le constructeur Pipeline.
Mais je ne comprends toujours pas quand je dois utiliser chacun d'eux. Quelqu'un peut-il me donner un exemple?
La seule différence est que make_pipeline
génère automatiquement les noms des étapes.
Les noms d'étape sont nécessaires, par exemple si vous souhaitez utiliser un pipeline avec des utilitaires de sélection de modèle (par exemple GridSearchCV). Avec la recherche dans la grille, vous devez spécifier des paramètres pour différentes étapes d'un pipeline:
pipe = Pipeline([('vec', CountVectorizer()), ('clf', LogisticRegression()])
param_grid = [{'clf__C': [1, 10, 100, 1000]}
gs = GridSearchCV(pipe, param_grid)
gs.fit(X, y)
comparer avec make_pipeline:
pipe = make_pipeline(CountVectorizer(), LogisticRegression())
param_grid = [{'logisticregression__C': [1, 10, 100, 1000]}
gs = GridSearchCV(pipe, param_grid)
gs.fit(X, y)
Donc, avec Pipeline
:
clf__C
.make_pipeline
:
Quand les utiliser dépend de vous :) Je préfère make_pipeline pour des expériences rapides et Pipeline pour un code plus stable; une règle de base: IPython Notebook -> make_pipeline; Python module dans un projet plus grand -> Pipeline. Mais ce n'est certainement pas une grosse affaire d'utiliser make_pipeline dans un module ou Pipeline dans un court script ou un cahier.