Machine Learning/파이썬_데이터사이언스

6. Pipelines [파이썬으로 배우는 데이터 사이언스]

Minwoo 2020. 2. 5.

Data-Learning.tistory.com - 머신러닝 오픈소스 무료 강좌


 

 

 

 

Pipelines

 

 

 

 

 

Contents: 

 

1. 파이프라인 이란? 

2. Data Preparation  

3. Feature Extraction  

 

 


 

1. 파이프라인 이란? 

 

  • workflow를 자동화 시킬 수 있다. 
  • data leakage 문제를 최소화 시킬 수 있다. 
  • 선형적 순서로 데이터를 transform 하고 모델 트레이닝 및 평가 까지 파이프라인으로 가능하다. 

 

 


 

 

2. Data Preparation  

 

  • normalization / standardization등을 통하여 트레이닝 데이터를 가꿈 으로서 더 좋은 모델을 만들 수 있는 계기가 될 수 있다. 
  • cross-validation같은 경우 각 fold 마다 이러한(normalization/standardization등) 테크닉을 쓴 이후에 다른 fold에 트레이닝을 해야 한다. 보통 트레이닝 데이터를 한번에 데이터 변환 테크닉을 사용하여 실수하는 일이 많은데, 파이프라인을 통하여 이러한 문제를 해결 할 수 있다. 
from sklearn.model_selection import KFold,cross_val_score 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis 
from sklearn.preprocessing import StandardScaler 
from sklearn.pipeline import Pipeline 

 

#create pipeline 

estimators=[] 
estimators.append(("standardize', StandardScaler())) 
estimators.append(("lda', LinearDiscriminantAnalysis())) 
model=Pipeline(estimators) 

 

#evaluate pipeline 

kfold=KFold(n_splits=10,random_split=6) 
results=cross_val_score(model,X,y,cv=kfold) 
print(results.mean()) 

 

 


 

3. Feature Extraction  

 

  • data preparation과 마찬가지로 data leakage 문제를 가질 수 있다.  

 

  • pipleline의 FeatureUnion 을 통하여 많은 feature selection / extraction 의 결과들을 모델에 트레이닝 할 수 있도록 하나의 큰 데이터셋으로 합친다. 

 

  • k-fold 에 대하여, feature extraction과 feature union은 각각의 fold에 대해 독립적으로 처리해야 한다.(data preparation과 마찬가지로.) 

 

from sklearn.model_selection import KFold, cross_val_score 
from sklearn.pipeline import Pipeline, FeatureUnion 
from sklearn.linear_model import LogisticRegression 
from sklearn.decomposition import PCA 
from sklearn.feature_selection import SelectKBest 

 

#create feature union 

features=[] 
features.append(('pca',PCA(n_components=3))) 
features.append(('select_best',SelectKBest(k=6))) 
feature_union=FeatureUnion(features) 

 

#create pipeline 

estimators=[] 
estimators.append(("feature_union', feature_union)) 
estimators.append(("logistic',LogisticRegression(solver='liblinear'))) 
model=Pipeline(estimators) 

 

#evaluate pipeline 

kfold=KFold(n_splits=10,random_split=6) 
results=cross_val_score(model,X,y,cv=kfold) 
print(results.mean())

 

 


 

밑바닥부터 시작하는 데이터 러닝

데이터 사이언스, 머신 러닝 오픈소스 무료 강좌.

data-learning.tistory.com

* 해당 게시물은 첫번째 배너 및 출처를 첨부하면 상업적 용도를 제외하고 사용하실수 있습니다.

 

 

 

 

댓글