Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- 부트캠프후기
- 스타터스부트캠프
- SLASH22
- AWS builders
- 유데미코리아
- MatchSum
- 서비스기획부트캠프
- 스타터스
- 딥러닝
- 그래프
- pytorch
- 토스
- 취업부트캠프
- 유데미부트캠프
- AARRR
- sql정리
- 추천시스템
- NLP
- NLU
- 특성중요도
- 사이드프로젝트
- 서비스기획
- 데이터도서
- 임베딩
- BERT
- 취업부트캠프 5기
- 알고리즘
- 그로스해킹
- 유데미큐레이션
Archives
- Today
- Total
다시 이음
Feature Engineering - Pipe line(파이프라인) 본문
오늘 배운 내용을 살펴보기 전에 요즘 자주 쓰게 되는 기능인 파이프라인에 대해서 정리를 해보려고 합니다.
물론 일별 정리는 밤에 포스팅할 예정입니다 ㅎㅎ
파이프라인이란?
프로세서에서 성능을 높이기 위해서 명령어 처리 과정으로 명령어 처리를 여러 단계로 나누어 단계별로 동시에 수행 하여 병렬화를 시키는 것을 말합니다.
여러 단계의 변환을 연결하려는 경우 손으로 변환을 수행하는 것이 코드의 길이를 길게 할뿐만아니라 성능에도 차이를 줍니다.
그래서 예를 들어 다음과 같은 처리 파이프라인이 필요할 수 있습니다.
- 원핫인코딩
- 평균을 사용하여 결측값 대치
- 표준화 과정
- 피쳐를 2차로 변환
- 선형 회귀 피팅 or 릿지 회귀 or 로지스틱 회귀 or 결정 트리
이러한 유형의 처리 파이프라인을 간소화하기 위해 Scikit-Learn은 Pipeline다음과 같이 사용할 수 있는 개체를 제공 합니다.
from category_encoders import OneHotEncoder # 원핫인코딩
from sklearn.impute import SimpleImputer # 결측치 대치
from sklearn.preprocessing import StandardScaler # 표준화
from sklearn.linear_model import LinearRegression # 회귀분석
from sklearn.linear_model import Ridge # 릿지회귀
from sklearn.linear_model import RidgeCV # 릿지cv회귀 (교차검증)
from sklearn.linear_model import LogisticRegression # 로지스틱 회귀
from sklearn.preprocessing import PolynomialFeatures # 다항회귀
from sklearn.tree import DecisionTreeClassifier # 결정트리
from sklearn.feature_selection import f_regression, SelectKBest # 최적의 feature수 찾기
from sklearn.pipeline import make_pipeline # 파이프라인
model = make_pipeline(Imputer(strategy='mean'),
PolynomialFeatures(degree=2),
LinearRegression())
# or
pipe = make_pipeline(
OneHotEncoder(),
SimpleImputer(),
StandardScaler(),
LogisticRegression(n_jobs=-1)
)
pipe.fit(X_train, y_train)
print('검증세트 정확도', pipe.score(X_val, y_val))
y_pred = pipe.predict(X_test)
파이프라인에서 모델의 파라미터 등과 같은 정보를 확인하는 방식
named_steps 속성을 사용해서 파이프라인의 각 스텝에 접근이 가능합니다.
pipe.named_steps # 을 실행하면
# 예시로 아래와 같은 값이 나옵니다.
{'onehotencoder': OneHotEncoder(cols=['열이름']),
'simpleimputer': SimpleImputer(),
'standardscaler': StandardScaler(),
'logisticregression': LogisticRegression(n_jobs=-1)}
named_steps 은 유사 딕셔너리 객체(dictionary-like object)로 파이프라인 내 과정에 접근 가능하도록 합니다.
model_lr = pipe.named_steps['logisticregression']
enc = pipe.named_steps['onehotencoder']
encoded_columns = enc.transform(X_val).columns
#위와 같이 하나하나 과정을 지정하여 사용할 수 있습니다.
#아니면
pipe[0]
pipe[1]
#과 같이 불러내어 하나하나 과정을 확인하는 것도 가능합니다.
'AI 일별 공부 정리' 카테고리의 다른 글
트리 기반 모델 - 3 Evaluation Metrics for Classification (0) | 2021.08.20 |
---|---|
트리 기반 모델 - 2 랜덤포레스트 (Random Forests) (0) | 2021.08.18 |
트리 기반 모델 - 1 결정 트리 (Decision Trees) (0) | 2021.08.18 |
회귀 분석 - 5 (Polynomial Regression) (0) | 2021.08.16 |
회귀 분석 - 4 (Logistic Regression) (0) | 2021.08.13 |