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 |