less than 1 minute read

파이프라인

  • 데이터 전처리, 하이퍼파라미터 튜닝등 머신러닝 과정에 발생하는 일련의 과정을 공정화 시키는것이라 생각하면 될듯 하다.

  • 강의에서는 sklearn에 포함된 Pipeline을 사용했다.

    • 별도로 조사해보니 kubeflow등의 라이브러리도 존재한다고 하는데, kubeflow는 쿠버네티스/도커 환경에서 작동하도록 만든거라고 하니 일단은 그런게 있다 정도로만 하고 넘어가기로 했다.
  • 예를들어 Scaler 작업 이후 Classifier로 분류를 거치고 싶을때, 다음과 같이 사용할수 있다.

    from sklearn.pipeline import Pipeline
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.preprocessing import StandardScaler
    
    estimators = [('scaler',StandardScaler()),('clf',DecisionTreeClassifier())]
    
    pipe = Pipeline(estimators)
    
  • 이런식으로 파이프라인을 선언해둘 경우, 다른 머신러닝 작업에 대해서도 별도의 코드를 짤 필요 없이 파이프라인을 호출하는것으로 해당 공정을 수행할수 있다.

파이프라인 세부 기능

# 파이프라인의 각 단계를 출력함.
pipe.steps 

# 이런식으로 파이프라인의 n번째 단계를 호출할수도 있음.
pipe.steps[0]

# 또는 지정해둔 이름을 통해 바로 해당 공정을 호출할수도 있음.
pipe['scaler']

# 각 공정에 들어가는 파라미터를 지정한다.
# 이때, 스탭이름 + 언더바 두개 + 속성이름 으로 지정할 파라미터를 선택한다.
pipe.set_params(clf__max_depth=2)
pipe.set_params(clf__random_state=13)

파이프라인 사용

X_tran, X_test,y_train,y_test = test_train_split(x,y,test_size=0.2,random_state=13,stratify=y)

pipe.fit(X_train,y_train)