데이터분석/데이터 분류 및 군집화

Pipeline(파이프 라인)의 개념과 활용하기

상선약수64 2023. 11. 25. 15:03
반응형

1. 파이프라인 개념

  • Pipeline은 데이터 전처리에서 학습까지의 여러 과정을 하나로 연결하는 것입니다. 
  • 데이터 전 처리 및 분류의 모든 단계를 포함하는 단일 개체를 만들 수 있습니다.

 

 

파이프라인을 사용할 때와 사용하지 않았을 때를 코딩해서 비교해서 확인하고자 합니다.

  • 필요한 모듈을 import 하고, iris 데이터 셑을 불러옵니다.
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
iris = datasets.load_iris() #iris 데이터를 불러옴
  • 학습데이터와 검증데이터를 나눕니다.
# iris 데이터 셑을 학습용과 검증용 데이터 셑으로 나눔
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2222)

 

2. 파이프라인을 사용하지 않은 모델링

 

  • 파이프라인을 사용하지 않고 SVM으로 모델링한 결과 입니다. 정확도는 95.5%입니다.

SVM 모델링은   https://withdatastory.tistory.com/59 참조하세요.

#표준정규분포로 스케일링
sc = StandardScaler()
X_train_sc = sc.fit_transform(X_train)
X_test_sc = sc.transform(X_test)

svc = SVC(kernel='poly', C = 3, degree = 3).fit(X_train_sc, y_train) #SVM모델로 모델링
y_pred = svc.predict(X_test_sc) #예측

print("정확도", accuracy_score(y_test, y_pred))
print("classification report", classification_report(y_test, y_pred))

 

 

3. 파이프라인을 사용

  • pipline은 라이브러리를 import합니다. 파이프라인은 표준화->모형학습 두 단계를 가정합니다.
  • Pipeline 사용법은 '작업명':작업클래스 두개로 이루어진 튜플을 리스트로 담아서 Pipeline에 지정해야 합니다.
  • 아래의 예는 StandardScaler()의 이름을 scaler로 지정하고, SVC 클래스의 이름을 model로 지정하였습니다
      Pipeline([('작업명1', 작업클래스), ('작업명2', 작업클래스2), ......])
from sklearn.pipeline import Pipeline

pipe = Pipeline([('scaler', StandardScaler()), ('model', SVC(kernel='poly', C = 3, degree = 3))])
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
print("정확도", accuracy_score(y_test, y_pred))
print("classification report", classification_report(y_test, y_pred))

 

파이프라인을 사용하면, 머신러닝하는 여러 단계를 하나로 연결할 수 있어, 편리하게 사용할 수 있습니다. 위 두 개의 코딩을 비교하고, 결과는 정확도 95.5%로 동일하게 나왔습니다.