밍꽁✨
코딩하는 감자
밍꽁✨
전체 방문자
오늘
어제
  • 분류 전체보기 (27)
    • python (16)
      • 파이썬 머신러닝 완벽가이드 (6)
      • 코딩테스트 (4)
      • 머신러닝&딥러닝 (2)
      • 파이썬 기초 (4)
    • Qgis (1)
    • Tableau (6)
    • 빅데이터 분석 기사 (0)
    • 금융데이터 뚝딱이기 (4)
      • 신협 대학생 인턴십 (1)
      • 기사 스크랩 (3)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • sys.stdin.readline()
  • 웰컴투태블로월드
  • python
  • LGBM
  • 기사스크랩
  • 태블로
  • bisect_left
  • 인프런
  • NLP
  • Tableau
  • 신협인턴십
  • 코딩테스트
  • 머신러닝
  • 파이썬기초
  • Python기초
  • 역머니무브
  • Light GBM
  • 파이썬
  • 피처백터화
  • bisect_right

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밍꽁✨

코딩하는 감자

python/파이썬 머신러닝 완벽가이드

[NLP] pipeline을 활용한 직관적인 코드짜기!

2022. 5. 3. 21:58
반응형

2022.05.02 - [python/파이썬 머신러닝 완벽가이드] - [python] NLP 피처백터화 / 희소행렬

 

[python] NLP 피처백터화 / 희소행렬

2022.04.30 - [python/파이썬 머신러닝 완벽가이드] - [python] NLP 기초, 텍스트 전처리의 모든 것 [python] NLP 기초, 텍스트 전처리의 모든 것 텍스트 분석은 단어마다 쪼개는게 상당히 어렵고, 내 나름대로

coding-potato.tistory.com

** 본 포스팅은 앞선 글과 이어집니다!

 

sklearn의 pipeline 클래스를 활용하면 피처 백터화와 ML알고리즘 학습/예측을 위한 코드 작성을 한 번에 진행할 수 있다.

이는 수행시간을 절약해주어 더욱 효과적인 코드를 작성하도록 도와준다!!


Pipeline 객체선언

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

pipeline = Pipeline([ ('tfidf_vect', TfidfVectorizer(stop_words = 'english', ngram_range=(1,2), max_df=300)),
			('lr_clf', LogisticRegression(C=10)) ])
pipeline.fit(X_train, y_train)
pred = pipeline.predict(X_test)
print('pipeline을 통한 LogisticRegression의 예측 정확도 : {0}'.format(accuracy_score(y_test, pred)))

sklearn에서 pipeline을 임포트한 후,

TfidfVectorizer 객체를 'tfidf_vect'라는 객체 변수명으로

LogisticRegression 객체를 'lr_clf'라는 객체 변수명으로 생성한 뒤,

두 객체를 Pipeline으로 연결하는 pipeline객체를 생성한다는 의미이다.

 

즉, 피처백터화를 fit(), transform()하고 ML알고리즘을 fit(), predict()를 따로 할 필요없이

한번에 fit(), predict()로 피처백터화와 학습/예측이 가능하다!!


Pipeline 하이퍼파라미터 최적화

여기서는 GridSearchCV를 이용한 하이퍼파라미터 최적화를 실습해볼거다.

원래는 피처백터화와 ML알고리즘의 하이퍼파라미터를 따로따로 튜닝해야했지만

pipeline을 통해서 하이퍼파라미터를 최적화하게 되면 모두 한번에 최적화할 수 있다!

( 하지만 두 객체의 모든 파라미터를 최적화할 시 너무 많은 경우의 수가 발생하게 되므로 시간이 그만큼 많이 소요된다는 점을 유의할 것 )

 

단, 기존의 param_grid의 입력값 설정이 기존과 다름을 유의해야 한다.

pipeline에서는 각 파라미터가 어떤 객체에 속하여 있는 것인지 선언해주어야 한다.

예를 들어, 위의 예시에서 제시한 객체 변수명 중 'tfidf_vect'의 여러 파라미터 중 ngram_range를 최적화하기를 원한다면

개별 객체명과 하이퍼파라미터명을 결합해 key 값으로 할당해야 한다.

즉, 본 예제에서는 언더바('_') 2개를 연속으로 사용하여 'tfidf_vect__ngram_range'로 key 값을 할당하는 것이 된다.

 

from sklearn.model_selection import GridSearchCV

params = {'tfidf_vect__ngram_range' : [(1,1),(1,2),(1,3)],
	'tfidf_vect__max_df' : [100,300,700],
    'lf_clf__C' : [1,5,10]}
    
grid_cv_pipe = GridSearchCV(pipeline, param_grid=params, cv=3, scoring='accuracy', verbose=1)
grid_cv_pipe.fit(X_train, y_train)
print(grid_cv_pipe.best_params_, grid_cv_pipe.best_score_)

pred = grid_cv_pipe.predict(X_test)
print('Pipeline을 통한 예측정확도 : {0}'.format(accuracy_score(y_test,pred)))

 

반응형

'python > 파이썬 머신러닝 완벽가이드' 카테고리의 다른 글

[NLP] 피처백터화 / 희소행렬  (0) 2022.05.02
[NLP] NLP 기초, 텍스트 전처리의 모든 것  (0) 2022.04.30
[python] SMOTE를 활용한 오버샘플링  (0) 2022.03.26
[python] LGBMClassifier 단번에 성능 높이기  (0) 2022.03.26
[python] 교차검증을 간단하게 cross_val_score()  (0) 2022.03.15
    'python/파이썬 머신러닝 완벽가이드' 카테고리의 다른 글
    • [NLP] 피처백터화 / 희소행렬
    • [NLP] NLP 기초, 텍스트 전처리의 모든 것
    • [python] SMOTE를 활용한 오버샘플링
    • [python] LGBMClassifier 단번에 성능 높이기
    밍꽁✨
    밍꽁✨
    감자의 데이터 분석 일지

    티스토리툴바