본문 바로가기
ML&DATA/ML

sklearn - pipeline, compose

by sun__ 2020. 9. 1.

blog.naver.com/gdpresent/221730873049

참고

 

파이프 라인(Pipe Line) [내가 공부한 머신러닝 #28.]

GridSearchCV도 사용법을 이제 아니깐 드디어 pipe line에 대한 것을 고려해볼때가 왔다.바로 전에 그...

blog.naver.com

 


1. sklearn.pipeline

<Pipeline>

fit, transform 메서드가 있는 변환기를 순서를 고려해서 묶어둔 것

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

num_pipeline = Pipeline([
    ('imputer', SimpleImputer(strategy='median')),
    ('attribs_adder', CombinedAttributesAdder()), #직접 만든거. 특성 추가하는 변환기
    ('std_sclaer', StandardScaler()),
])
housing_num_tr = num_pipeline.fit_transform(housing_num)
type(housing_num_tr)
#numpy.ndarray

 


2. sklearn.compose

 

<ColumnTransformer>

sklearn.compose의 ColumnTransformer 클래스는, 열마다 pipeline또는 변환기를 적용할 수 있다.

from sklearn.compose import ColumnTransformer

num_attribs = list(housing_num) #숫자형 특성의 이름
cat_attribs = ['ocean_proximity'] #범주형 특성의 이름

full_pipeline = ColumnTransformer([
    ('num', num_pipeline, num_attribs),
    ('cat', OneHotEncoder(), cat_attribs)
])

housing_prepared = full_pipeline.fit_transform(housing)
type(housing_prepared)
#numpy.ndarray

 

위 예제에서 num_pipeline은 밀집행렬을 반환하지만 OneHotEncoder은 scipy의 희소행렬을 반환한다. 밀집도가 임계값(기본값 sparse_threshold=0.3)보다 낮으면 희소 행렬을 반환한다. 이 예에선 밀집행렬이 반환된다. 혹시 희소행렬이 반환된다면 toarray()로 밀집행렬로 만들면 된다.

'ML&DATA > ML' 카테고리의 다른 글

sklearn - impute  (0) 2020.10.02
sklearn - model_selection  (0) 2020.10.02
sklearn - make_classification  (0) 2020.09.01
sklearn - preprocessing  (0) 2020.08.31