단순히 iris, wine 데이터를 받아서 사용했을 뿐인데도 코드 진행시에 어려움이 있다.
Jupyter Notebook상황에서 데이터의 전처리와 여러 알고리즘의 반복실행, 하이퍼 파라미터의 튜닝과정을 번갈아 하다보면
코드 실행 순서에 혼돈이 있을 수 있다.
이런경우 클래스class로 만들어서 진행해도 되지만, sklearn에는 그럴 필요가 없게 준비된 기능이 있다. -> Pipeline
import pandas as pd
red_url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/winequality-red.csv"
white_url = "https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/winequality-white.csv"
red_wine = pd.read_csv(red_url, sep=';')
white_wine = pd.read_csv(white_url, sep=';')
red_wine['color'] = 1.
white_wine['color'] = 0.
wine = pd.concat([red_wine, white_wine])
X = wine.drop(['color'], axis=1)
y = wine['color']
기존에 사용했던 wine 데이터를 불러온다.
pipeline을 import 해주고, standardScaler와 DecisionTree를 변수에 넣어준 뒤
이 변수를 Pipeline에 할당하면 원하는 프로세스가 한번에 처리된다.
.steps를 사용해 해당 pipeline이 어떤 프로세스를 갖고 있는지 확인 가능하다.
현재까지는 instantiation만 된거고, 이제 parameter를 지정해야한다.
(max_depth나 random_state 등)
standardScaler에는 decision할 파라미터는 없지만 DecisionClassifier에는 있다.
set_params로 설정해준다. 스탭이름(clf) + __(언더바2개)+ 속성이름을 적어주면 바로 적용된다.
Pipeline을 이용한 분류기 구성
stratify는 y데이터에 분포를 맞춰달라는 의미이다.
pipe.fit으로 넣어주면 pipe에 할당해놓은 순서대로 알아서 StandardScaler을 통과 시키고 학습한다.
'Machine Learning' 카테고리의 다른 글
[ML] Hyperparameter Tuning (0) | 2023.01.06 |
---|---|
[ML] Hyperparameter Tuning_ 교차검증 (0) | 2023.01.05 |
[ML] Wine Analysis _DecisionTree (0) | 2023.01.05 |
[ML] Encoder and Scaler (0) | 2023.01.04 |
[ML] Titanic Survivor Prediction_ dicaprio&winslet (0) | 2023.01.03 |