본문 바로가기

CodeStates

[note] 파이프라인

from sklearn.pipeline import Pipeline

##파이프라인 생성, 실행 순서는 함수 입력 순서대로 실행된다.
## OrdinalEncode의 이름을 ord로 지정해주었다. 만약 지정하지 않았다면 default로 풀네임(소문자)이다.
pipe = Pipeline([
    ('ord',OrdinalEncoder()),
    ('sim',SimpleImputer()),
    ('rnd',RandomForestClassifier())
])

##파이프라인 내부의 함수들의 파라미터를 설정
##함수명__파라미터 로 지정을 해주어야한다.
param_grid = [
    {
        'sim__strategy': ['mean'], 
        'rnd__max_depth' : [None, 5, 10],
        'rnd__n_estimators' : [80,90,100,110,120],
    },
    {
        'sim__strategy': ['mean', median], 
        'rnd__max_depth' : [None, 15, 30],
        'rnd__n_estimators' : [120, 190, 200, 210, 220],
    }
]


##GridSearch를 사용해서 파라미터를 바꿔가며 테스트를 하고 결과를 grid 저장한다.
grid = GridSearchCV(pipe, cv=3, param_grid=param_grid,scoring='f1')

모델을 훈련하고 예측할때 데이터를 스케일링하거나 결측치를 처리하는 등의 데이터 변환이 수행되어야 한다.

이를 훈련할때 한번 적용하고 테스트할때 추가로 적용하는 것은 비효율적인 방법이라고 여겨지기 때문에 파이프라인이라는 방법을 사용해서 데이터의 사전 처리 및 모든 단계를 포함하는 단일 개체를 생성한다.

 

  • train과 test 데이터 손실을 피한다.
  • 교차 검증 및 기타 모델 선택 유형을 쉽게 만든다.
  • 재현성이 증가한다.

'CodeStates' 카테고리의 다른 글

[머신러닝 - 트리모델]  (0) 2021.04.14
[머신러닝 - 선형모델]#4  (0) 2021.04.08
[머신러닝 - 선형모델]#3  (0) 2021.04.08
[머신러닝 - 선형모델]#2  (0) 2021.04.08
[머신러닝 - 선형모델]#1  (0) 2021.04.07