Часто, работая над проектами по науке о данных, нам необходимо создавать конвейеры для прогнозного моделирования, потому что это делает возможным применение шагов предварительной обработки данных и построение модели по сравнению с ручным выполнением всех этих шагов.
К счастью, scikit-learn предоставляет функциональные возможности для построения конвейеров прогнозирования на ходу. Он предоставляет два метода, т.е. Pipeline
и make_pipeline
. Хотя оба они обеспечивают одинаковую функциональность с точки зрения моделирования, но часто сбивают с толку новичка, когда что использовать.
Pipeline
и make_pipeline
обеспечивают одинаковую функциональность, но имеют небольшую разницу, которая заключается в том, что make_pipeline
генерирует имена шагов автоматически, а с Pipeline
мы должны указывать их вручную.
Давайте посмотрим на примеры, чтобы лучше понять разницу:
Пример конвейера
pipe = Pipeline([('vec', CountVectorizer()), ('clf', LogisticRegression()]) param_grid = [{'clf__C': [1, 10, 100, 1000]} gs = GridSearchCV(pipe, param_grid) gs.fit(X, y)
Пример make_pipeline
pipe = make_pipeline(CountVectorizer(), LogisticRegression()) param_grid = [{'logisticregression__C': [1, 10, 100, 1000]} gs = GridSearchCV(pipe, param_grid) gs.fit(X, y)
Подводя итог:
- С
Pipeline
имена явные. Имя не изменится, если вы измените оценщик/преобразователь, используемый на шаге, например. если вы замените LogisticRegression() на LinearSVC(), вы все равно сможете использоватьclf__C
. - С
make_pipeline
имена короче и, возможно, более удобочитаемы, т.е. имена автоматически генерируются с использованием простого правила (имя оценщика в нижнем регистре).