본문 바로가기
Machine Learning

[ML] Pipeline

by ram_ 2023. 1. 5.

단순히 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