LITTLE BY LITTLE

[4] 파이썬 머신러닝 완벽가이드 - 판다스(데이터 핸들링) 마무리, 사이킷런 모듈 연습 마무리(Stratified K fold, GridSearchCV) 본문

데이터 분석/파이썬 머신러닝 완벽가이드

[4] 파이썬 머신러닝 완벽가이드 - 판다스(데이터 핸들링) 마무리, 사이킷런 모듈 연습 마무리(Stratified K fold, GridSearchCV)

위나 2022. 8. 6. 16:48

*목차

  1. 파이썬 기반의 머신러닝과 생태계 이해
    1. 머신러닝의 개념
    2. 주요 패키지
    3. 넘파이
    4. 판다스 (데이터 핸들링) (39p)
    5. 정리
  2. 사이킷런으로 시작하는 머신러닝(87p)
    1. 사이킷런 소개
    2. 첫번째 머신러닝 만들어보기 - 붓꽃 품종 예측
    3. 사이킷런 기반 프레임워크 익히기 ( fit(), predict() ..)
    4. Model selection 모듈 소개 (교차검증, GridSerachCV..)
    5. 데이터 전처리 
    6. 사이킷런으로 수행하는 타이타닉 생존자 예측
    7. 정리
더보기
닫기
  • 평가
    1. 정확도
    2. 오차 행렬
    3. 정밀도와 재현율
    4. F1스코어
    5. ROC 곡선과 AUC
    6. 피마 인디언 당뇨병 예측
    7. 정리
  • 분류
    1. 분류의 개요
    2. 결정 트리
    3. 앙상블 학습
    4. 랜덤 포레스트
    5. GBM(Gradient Boosting Machine)
    6. XGBoost(eXtra Gradient Boost)
    7. LightGBM
    8. 분류 실습 - 캐글 산탄데르 고객 만족 예측
    9. 분류 실습 - 캐글 신용카드 사기 검출
    10. 스태킹 앙상블
    11. 정리
  • 회귀
    1. 회귀 소개
    2. 단순 선형 회귀를 통한 회귀 이해
    3. 비용 최소화하기 - 경사 하강법 (Gradient Descent) 소개
    4. 사이킷런 Linear Regression을 이용한 보스턴 주택 가격 예측
    5. 다항 회귀와 과(대)적합/과소적합 이해
    6. 규제 선형 모델 - 릿지, 라쏘, 엘라스틱 넷
    7. 로지스틱 회귀
    8. 회귀 트리
    9. 회귀 실습 - 자전거 대여 수요 예측
    10. 회귀 실습 - 캐글 주택 가격 : 고급 회귀 기법
    11. 정리
  • 차원 축소 
    1. 차원 축소의 개요
    2. PCA (Principal Component Anlysis)
    3. LDA (Linear Discriminant Anlysis)
    4. SVD (Singular Value Decomposition)
    5. NMF (Non-Negative Matrix Factorization)
    6. 정리
  • 군집화
    1. K-평균 알고리즘 이해
    2. 군집 평가
    3. 평균 이동 (Mean shift)
    4. GMM(Gaussian Mixture Model)
    5. DBSCAN
    6. 군집화 실습 - 고객 세그먼테이션
    7. 정리
  • 텍스트 분석
    1. 텍스트 분석 이해
    2. 텍스트 사전 준비 작업(텍스트 전처리) - 텍스트 정규화
    3. Bag of Words - BOW
    4. 텍스트 분류 실습 - 20 뉴스그룹 분류
    5. 감성 분석
    6. 토픽 모델링 - 20 뉴스그룹
    7. 문서 군집화 소개와 실습 (Opinion Review 데이터셋)
    8. 문서 유사도
    9. 한글 텍스트 처리 - 네이버 영화 평점 감성 분석
    10. 텍스트 분석 실습 - 캐글 mercari Price Suggestion Challenge
    11. 정리
  • 추천 시스템
    1. 추천 시스템의 개요와 배경
    2. 콘텐츠 기반 필터링 추천 시스템
    3. 최근접 이웃 협업 필터링
    4. 잠재요인 협업 필터링
    5. 콘텐츠 기반 필터링 실습 - TMDV 5000 영화 데이터셋
    6. 아이템 기반 최근접 이웃 협업 필터링 실습
    7. 행렬 분해를 이용한 잠재요인 협업 필터링 실습
    8. 파이썬 추천 시스템 패키지 - Surprise
    9. 정리

 

 

1-4,1-5. 파이썬 기반의 머신러닝과 생태계 이해 - 판다스(데이터 핸들링),정리

 

lambda 함수와 if else 를 이용한 데이터 전처리

2-4. 사이킷런으로 시작하는 머신러닝 - Model Selection 모듈 소개 (Stratified K 폴드 ~)


사이킷런 리뷰

  • fit() predict()로 학습 및 예측 결과 반환
  • classifier과 regressor을 합쳐서 estimator이라 부르고, estimator을 인자로 받는 두가지 경우는
    1. evaluation 함수 - cross_val_score()
    2. 하이퍼 파라미터 튜닝 지원 클래스 GridSearchCV.fit()
  • 분류 - DecisionTreeClassifier / RandomForestClassifier / GradientBoostingClassifier / GuassianNB / SVC
  • 회귀 - LineaRegression / Ridge / Lasso / RandomForestRegressor / GradientBoostingRegressor
  • fit()
    1. 지도 학습에서는 학습을 의미
    2. 비지도 학습에서는 입력 데이터의 형태에 맞춰 데이터를 변환하기 위한 사전 구조를 맞추는 작업, 후에 clustering 이나 feature extraction과 같은 실제 작업은 tranform()으로 수행, 두가지를 합친 fit_transform()도 있음
  • 예제 데이터 sklearn.datasets
  • 피처 처리
    1. sklearn.preprocessing - 전처리(인코딩, 정규화, 스케일링..)
    2. sklearn.feature_selection - 알고리즘에 영향 미치는 순서대로 셀렉션
    3. sklearn.feature_extraction - 텍스트/이미지 데이터 관련 (sklearn.feature_extraction.text(image))
    4. sklearn.decompostion - 피처 처리, 차원 축소 (PCA, NMF, Truncated SVD)
    5. sklearn.model_selection - 이번에 배우고있는 모듈 : 교차 검증을 위한 데이터셋 분리, GridSearch로 최적 파라미터 추출
    6. sklearn.metrics - 평가 (accuracy, precision, recall, roc-auc, rmse)
    7. ML 알고리즘
      1. sklearn.ensemble ( rf, adaboost, gradient boosting )
      2. sklearn.linear_model ( linear reg, ridge, lasso, logistic reg, sgd
      3. sklearn.naive_bayes ( 가우시안, 다항분포 naive Bayes)
      4. sklearn.neighbors (k-nn .. )
      5. sklearn.svm 
      6. sklearn.tree (from sklearn.tree import DecisionTreeClassifier)
      7. sklearn.cluster (비지도 클러스터링 알고리즘 k-평균, 계층형, dbscan ..)
    8. 유틸리티
      1. sklearn.pipeline - 피처처리 등 변환과 ml알고리즘 학습, 예측등 함께 묶어 실행할 수 있게 해줌
    9. 표본 데이터셋 생성기 - datasets.make_classifications() / datasets.make_blobs() 클러스터링을 위한 data set
    10. 학습/데이터 셋 분리 import sklearn.model_selection import train_test_split(test_size, train_size, shuffle=True, random_state = )
    11. 교차 검증
      1. 데이터는 이상치, 분포도, 다양한 속성값, 피처 중요도 등 여러가지 ML에 영향을 미치는 요소를 가지고있음 그렇기 때문에 특정 ML알고리즘에서 최적으로 동작하도록 데이터를 선별해 학습한다면 실제와 많은 차이가 있고, 성능저하로 이어질 것
      2. 이러한 데이터 편중을 막기위해, 별도로 여러 세트로 구성된 학습 데이터셋의 검증 데이터셋에서 학습과 평가를 수행하는 것. 그리고 각 세트에서 수행한 평가 결과에 따라 하이퍼 파라미터 튜닝 등 모델 최적화를 더 쉽게 할 수 있음.
      3. 테스트 데이터 외에 별도의 "검증 데이터"를 두어, 최종 평가 이전 학습된 모델을 다양하게 평가하는데 사용 (kfold 교차 검증은 k번째 등분이 검증 데이터, 그 다음은 k-1번째가 검증 데이터...k번 반복!)
        • k폴드 교차 검증 : KFold(n_splits=) , kfold.split()
    12. 결정 트리
      1. 분할과 가지치기 과정을 반복하며 모델 생성, 결정 트리에는 분류와 회귀 모두에 사용 가능
      2. 각 특성이 개별 처리되기 때문에 데이터 스케일에 영향받지않아 정규화,표준화 필요X
      3. 단점 - 과적합 경향
      4. DecisionTreeClassifier() 
        • DecisionTreeClassifier(criterion, splitter, max_depth, min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_features, random_state, max_leaf_nodes, 
          min_impurity_decrease, min_impurity_split, class_weight, presort)
        • 사용 예제 : 데이터로드 -> 데이터 분리 -> 모델 학습(model = DecisionTreeClassifier(random_state=42) / model.fit(X_train, y_train) )

from sklearn.model_selection import sklearn.model_selection

 Stratified KFold (for classification)

  • StratifiedKFold(n_splits=)
  • skf.split(df, df['label'])
  • # StratifiedKFold의 split() 호출시 반드시 레이블 데이터셋도 입력!
  • cross_val_score(estimator X, y=Nonescoring = None, cv = None, n_jobs = 1, verbose = 0, fit_params = None, pre_dispatch = '2*n_jobs')**
  • cross_validate : 여러개의 평가 지표를 보고자할 때 사용

GridSearchCV - 교차 검증과 최적 하이퍼 파라미터 튜닝을 한 번에

 

Grid Search CV의 하이퍼 파라미터 적용 방식

 

Comments