Machine Learning_Pipeline

고지현·2023년 2월 20일
0

Machine Learning

목록 보기
5/7

Pipeline

  • Jupyter Notebook 상황에서 데이터의 전처리와 여러 알고리즘의 반복 실행, 하이퍼 파라미터의 튜닝 과정을 번갈아 하다 보면 코드의 실행 순서에 혼돈이 올 수 있다.

  • class로 만들어서 진행해도 되지만, sklearn 유저에게는 pipeline을 사용할 수 있다.

Wine 데이터로 Pipeline 구축

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'] = 2

wine = pd.concat([red_wine, white_wine])
wine.tail()

레드/화이트 와인 분류기의 동작 process

위의 Pipeline 코드로 구현하면

from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler

estimators = [('scaler', StandardScaler()),
                ('clf', DecisionTreeClassifier())]
pipe = Pipeline(estimators)

Pipeline 내의 기능 세부 설정

pipe.set_params(clf__max_depth = 2)
pipe.set_params(clf__random_state = 13)

Pipeline을 이용한 분류기 구성

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=13, stratify=y)

Pipeline을 이용한 성과

from sklearn.metrics import accuracy_score

y_pred_tr = pipe.predict(X_train)
y_pred_test = pipe.predict(X_test)

print('Train acc : ', accuracy_score(y_train, y_pred_tr))
print('Test acc : ', accuracy_score(y_test, y_pred_test))

0개의 댓글