Machine Learning/Scikit-Learn

[Scikit-Learn] Pipeline

데이터 세상 2022. 10. 31. 20:54

Scikit-Learn(sklearn) Pipeline

데이터 전처리에서 학습까지의 과정을 하나로 연결해주는 것

Scikit-learn 파이프라인을 사용하면 데이터 전처리 및 학습의 모든 단계를 포함하는 단일 개체를 만들 수 있다.

파이프라인에 작업(변수 선택, 표준화, 모형 클래스 등)을 등록만 해주면 기존 과정을 한 번에 처리할 수 있다.

  • train과 test 데이터 손실을 피할 수 있다
  • 교차검증 및 기타 모델 선택 유형을 쉽게 만든다.
  • 재현성이 증가한다.

 

출처: https://medium.com/geekculture/how-to-use-sklearn-pipelines-to-simplify-machine-learning-workflow-bde1cebb9fa2

 

Pipeline

작업명, 작업 클래스 두 개로 이루어진 튜플을 리스트로 담아서 전달

Pipeline(['작업명1', 작업 클래스 1), ('작업명2', 작업 클래스 2),...])
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.pipeline import Pipeline, make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target

pipeline = Pipeline(['Feature_Selection', SelectKBest(f_classif, k=2)),
	('Standardization', StandardScaler()),
    ('Decision_Tree', DecisionTreeClassifier(max_depth=3))])
    
pipeline.fit(X, y) ## 모형 학습
print(pipeline.predict(X)[:3]) ## 예측
print(pipeline.score(X, y)) ## 성능 평가

 

make_pipeline

작업 클래스만 차례대로 넣어주면 작업명은 자동으로 생성해준다.

pipeline = make_pipeline(SelectKBest(f_classif, k=2), 
              StandardScaler(), 
              DecisionTreeClassifier(max_depth=3))

 


References

반응형

'Machine Learning > Scikit-Learn' 카테고리의 다른 글

[Machine Learning] Scikit-Learn  (0) 2021.03.10