Pipeline
- 보통 ML을 할 때 순서가 Scaler 사용해서 스케일링 후 그 다음 test_train_split() 사용하여 훈련세트와 테스트 세트로 데이터를 분리해줍니다. 그리고 모델을 사용하여 분류해주는 작업을 해줍니다.
즉, Scaler -> test_train_split(분리) -> DecisionTreeClassifier(분류) 이러한 순서입니다.
- Pipeline은 이렇게 나눠져 있는 3가지 작업을 하나의 작업으로 묶어주는 것을 의미합니다.
Python을 통해 알아보겠습니다.
저는 와인 데이터를 이용하여 Pipeline을 만들어 보겠습니다.
1. 와인데이터를 가져와서 X(features), y(label)를 정해줍니다.
import pandas as pd
red_url = 'https://raw.githubusercontent.com/PinkWink/forML_study_data/refs/heads/main/data/winequality-red.csv'
white_url = 'https://raw.githubusercontent.com/PinkWink/forML_study_data/refs/heads/main/data/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']
2. Pipeline을 import하고 StandardScaler와 DecisionTreeClassifier를 사용해줄 것입니다.
from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
estimators = [
('scaler', StandardScaler()),
('clf', DecisionTreeClassifier())
]
pipe = Pipeline(estimators)
pipe
이렇게 estimators에 순서를 구분하여 Scaler와 모델을 넣어 줍니다.
pipe를 확인 해본 결과 아래 사진과 같이 pipe가 어떤 구조로 현재 이루어져 있는지 확인이 가능합니다.
3. 이번에는 DecisionClassifier()의 하이퍼파라미터를 조정해주기 위해 set_params()를 활용하는 것을 보여드리겠습니다.
pipe.set_params(clf__max_depth=2)
pipe.set_params(clf__random_state=13)
이렇게 set_params()를 사용해주시면 되는데 여기서 해당 분류기이름 뒤에 '_' 해당 문자를 2개 입력('__')해주시고 넣고 싶은 하이퍼파라미터를 입력해주시면 됩니다.
4. Pipe를 통해 학습 시켜보겠습니다.
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=13)
pipe.fit(X_train, y_train)
# 해당 모델 성능 평가
y_pred_test = pipe.predict(X_test)
accuracy_score(y_test, y_pred_test)
코드 실행 결과 문제없이 훈련되어 해당 모델의 성능까지 평가가 가능한 것을 확인할 수 있었습니다.
이상입니다.
이 글은 제로베이스 데이터 분석 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
'Data Analyst > ML' 카테고리의 다른 글
[Zero-base] Logistic Regression - 2 (0) | 2024.10.03 |
---|---|
[Zero-base] Logistic Regression - 1 (1) | 2024.10.03 |
[Zero-base] Scaling & 분류 모델 평가 (1) | 2024.10.03 |
[Zero-base] Linear Regression(Wine 구별, Scaler) (0) | 2024.10.01 |
[Zero-base]Linear Regression 2(보스턴 집 값 예측) (0) | 2024.09.30 |