728x90
전통적인 머신러닝을 사용하다 보면
전처리 작업을 한 번에 하고 난 뒤 모델을 돌릴 때도 있지만
모델 별로 전처리를 다르게 해주거나
또는 다른 전처리방법을 실험해보기 위해서 전처리를 복잡하게 반복할 때가 있다.
하지만 sklearn에 pipeline은 그 반복적인 작업을 쉽게 할 수 있게 해준다.
pipeline은 통로라는 뜻으로
한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로
연결된 구조를 가리킨다.
파이프라인을 사용하면 데이터 사전 처리 및 분류의 모든 단계를 포함하는 단일 개체를 만들 수 있다.
- train과 test 데이터 손실을 피할 수 있다.
- 교차 검증 및 기타 모델 선택 유형을 쉽게 만든다.
- 재현성 증가
설명이 어렵지만 예제를 보면 쉽게 이해할 수 있다.
from sklearn.datasets import make_regression,make_classification
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = make_classification(n_samples=100,n_features=10,n_informative=2)
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
# it takes a list of tuples as parameter
pipeline = Pipeline([
('scaler',StandardScaler()),
('clf', LogisticRegression())
])
# use the pipeline object as you would
# a regular classifier
pipeline.fit(X_train,y_train)
y_preds = pipeline.predict(X_test)
accuracy_score(y_test,y_preds)
이런식으로 Train , Test 로 나눈 데이터들의 형식을 보존하면서 스케일링과 모델링을 할 수 있게 해준다.
위 예제는 스케일링만 나와있지만 인코딩이나 다양한 전처리도 가능하다.
저런식으로 파이프라인만 교체하면서 원본의 형태를 보존하면서 테스트 할 수 있다.
반응형
'Machine learning' 카테고리의 다른 글
[데이터 전처리]. tqdm pandas , apply & map progress_bar 생성 (0) | 2021.04.15 |
---|---|
[기계 학습]. SGD 와 mini batch ( 최적화 기법 ) (0) | 2021.03.22 |
[데이터 전처리]. 날짜 데이터 전처리 (0) | 2021.02.09 |
[기계학습] Stacking (스태킹) (0) | 2021.02.03 |
[기계학습] . Imbalanced Data ( 불균형 데이터 ) - SMOTE (0) | 2021.02.03 |