6.1.2 파이프라인으로 변환기와 추정기 연결
많은 머신 러닝 알고리즘이 최적의 성능을 위해 입력 특성이 같은 스케일을 가져야 한다는 것을 이전 장에서 배웠습니다. 위스콘신 유방암 데이터셋의 특성은 다양한 스케일로 측정되었기 때문에 로지스틱 회귀 같은 선형 분류기에 주입하기 전에 특성을 표준화해야 합니다. 5장에서 소개한 차원 축소를 위한 특성 추출 기법으로 주성분 분석(PCA)을 소개했습니다. 여기서는 주성분 분석을 통해 초기 30차원에서 좀 더 낮은 2차원 부분 공간으로 데이터를 압축한다고 가정하겠습니다.
훈련 데이터셋과 테스트 데이터셋을 각각 학습하고 변환하는 단계를 구성하는 대신 StandardScaler, PCA, LogisticRegression 객체를 하나의 파이프라인으로 연결할 수 있습니다.
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.decomposition import PCA
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.pipeline import make_pipeline
>>> pipe_lr = make_pipeline(StandardScaler(),
... PCA(n_components=2),
... LogisticRegression(random_state=1))
>>> pipe_lr.fit(X_train, y_train)
>>> y_pred = pipe_lr.predict(X_test)
>>> print('테스트 정확도: %.3f' % pipe_lr.score(X_test, y_test))
테스트 정확도: 0.956
make_pipeline 함수는 여러 개의 사이킷런 변환기(입력에 대해 fit 메서드와 transform 메서드를 지원하는 객체)와 그 뒤에 fit 메서드와 predict 메서드를 구현한 사이킷런 추정기를 연결할 수 있습니다. 앞선 예제에서는 StandardScaler, PCA 두 개의 변환기와 LogisticRegression 추정기를 make_pipeline 함수의 입력으로 넣었습니다. 이 함수는 이 객체들을 사용하여 사이킷런의 Pipeline 클래스 객체를 생성하여 반환합니다.