Wat is het verschil tussen pijplijn en make_pipeline in scikit?

Ik heb dit van de sklearn-webpagina:

  • Pijpleiding: Pijplijn van transformaties met een definitieve schatter

  • Make_pipeline: maak een pijplijn op basis van de gegeven schatters. Dit is een afkorting voor de Pipeline-constructor.

Maar ik begrijp nog steeds niet wanneer ik ze allemaal moet gebruiken. Kan iemand mij een voorbeeld geven?


Antwoord 1, autoriteit 100%

Het enige verschil is dat make_pipelineautomatisch namen voor stappen genereert.

Stapnamen zijn nodig, b.v. als u een pijplijn wilt gebruiken met hulpprogramma’s voor modelselectie (bijv. GridSearchCV). Met raster zoeken moet u parameters specificeren voor verschillende stappen van een pijplijn:

pipe = Pipeline([('vec', CountVectorizer()), ('clf', LogisticRegression()])
param_grid = [{'clf__C': [1, 10, 100, 1000]}
gs = GridSearchCV(pipe, param_grid)
gs.fit(X, y)

vergelijk het met make_pipeline:

pipe = make_pipeline(CountVectorizer(), LogisticRegression())     
param_grid = [{'logisticregression__C': [1, 10, 100, 1000]}
gs = GridSearchCV(pipe, param_grid)
gs.fit(X, y)

Dus, met Pipeline:

  • namen zijn expliciet, je hoeft ze niet te bedenken als je ze nodig hebt;
  • naam verandert niet als u de schatter/transformator die in een stap wordt gebruikt, wijzigt, b.v. als je LogisticRegression() vervangt door LinearSVC() kun je nog steeds clf__Cgebruiken.

make_pipeline:

  • kortere en aantoonbaar beter leesbare notatie;
  • namen worden automatisch gegenereerd met behulp van een duidelijke regel (naam in kleine letters van een schatter).

Wanneer je ze gebruikt, is aan jou 🙂 Ik geef de voorkeur aan make_pipeline voor snelle experimenten en Pipeline voor stabielere code; een vuistregel: IPython Notebook -> make_pipeline; Python-module in een groter project -> Pijpleiding. Maar het is zeker niet erg om make_pipeline in een module of Pipeline in een kort script of een notebook te gebruiken.

Other episodes