본문 바로가기
Python/Machine Learning

[ML]_머신 러닝의 시작, 사이킷런

by ssolLEE 2023. 8. 22.
반응형

  • 이 공부는 다음 멋진 책과 함께 합니다. 위키북스와 저자님 너무나도 감사합니다. 

이번 포스팅에서는 머신러닝을 수행할 때 자주 만나는 친구들(?)의 정체를 밝혀보겠습니다. 

머신러닝의 코드를  하나 하나 음미할 수 있는 포스팅이 되길 바랍니다!

 

모델 학습 & 예측 메서드

  • 모든 사이킷런 클래스에서 머신러닝 모델 학습을 위해서 fit()을, 학습된 모델의 예측을 위해서는 predict() 메서드를 사용합니다. 
  • 사이킷런에서는 분류 알고리즘을 구현한 클래스를 Classifier로, 회귀 알고리즘을 구현한 클래스를 Regressor로 지칭합니다. 사이킷런에서는 매우 많은 유형의 Classifier와 Regressor 클래스를 제공합니다. 
  • Classifier와 Regressor를 합쳐서 Estimator 클래스라고 부릅니다. 즉, 지도학습의 모든 알고리즘을 구현한 클래스를 통칭하여 Estimator 클래스라고 부릅니다.
    • 분류 구현 클래스: DecisionTreeClassifier, RandomForestClassifier, GradientBoostingClassifier, GaussianNB, SVC
    • 회귀 구현 클래스: LinearRegression, Ridge, Lasso, RandomForestRegressor, GradientBoostingRegressor 
  • 사이킷런에서 비지도학습인 차원 축소, 클러스터링, 피처 추출 등을 구현한 클래스 역시 대부분 fit()과 transform()을 적용합니다.
    • fit(): 입력 데이터의 형태에 맞춰 데이터를 변환하기 위한 사전 구조를 맞추는 작업
    • transform(): 사전 구조를 맞춘 후 입력 데이터의 차원 변환, 클러스터링, 피처 추출 등의 실제 작업을 수행
    • 이 둘을 합친 fit_transforma()도 있음

 

사이킷런의 주요 모듈

  • 예제 데이터
    • sklearn.datasets
  • 피처 처리
    • sklearn.preprocessing : 데이터 전처리에 필요한 다양한 가공 기능 제공
    • sklearn.feature_selection : 알고리즘에 큰 영향을 미치는 피처를 우선순위대로 셀렉션 작업을 수행하는 다양한 기능 제공
    • sklearn.feature_extraction : 텍스트 데이터나 이미지 데이터의 벡터화 된 피처를 추출하는 데 사용됨.
  • 피처 처리 & 차원 축소 : sklearn.decomposition
  • 데이터 분리, 검증 & 파라미터 튜닝
    • sklearn.model_selection : 교차 검증을 위한 학습용/테스트용 분리, 그리드서치로 최적 파라미처 추출 등의 API 제공
  • 평가 : 다양한 성능 측정 방법 제공 
    • sklearn.metrics :  Accuracy, Precision, Recall, ROC-AUC, RMSE 등 제공
  • ML 알고리즘
    • sklearn.ensemble : 앙상블 알고리즘, 랜덤포레스트, 에이다 부스트, 그래디언스 부스팅
    • sklearn.linear_model : 회귀 관련 알고리즘
    • sklearn.naive_bayes : 나이브 베이즈 알고리즘
    • sklearn.neighbors : 최근접 이웃 알고리즘. K-NN 등
    • sklearn.svm : 서포트 벡터 머신 알고리즘
    • sklearn.tree : 의사 결정 트리 알고리즘
    • sklearn.cluster : 비지도 클러스터링 알고리즘
  • 유틸리티 
    • sklearn.pipeline : 피처 처리 등의 변환과 ML 알고리즘 학습, 예측 등을 함께 묶어서 실행할 수 있는 유틸리티 제공

 

  • 위 모듈들을 지금 외우려고 하지 마세요. 앞으로 예제를 실습하면서 접하다보면 우리가 자주 사용하는 모듈에 대해 더 깊이 알아갈 수 있을 거에요. 
  • 이제 사이킷런에 내장된 예제 데이터의 구성을 살펴보겠습니다. 

 

내장 예제 데이터셋의 구성

  • 사이킷런에 내장된 데이터셋은 일반적으로 딕셔너리 형태로 되어 있습니다. 
  • 키는 보통 data, target, target_name, feature_names, DESCR로 구성이 되어 있습니다. 
    • data : 피처의 데이터셋(numpy array)
    • target : 분류-레이블 값, 회귀-숫자 결괏값 데이터셋(numpy array)
    • target_name : 개별 레이블의 이름(numpy array or Python list)
    • feature_names : 피처의 이름(numpy array or Python list)
    • DESCR : 데이터셋에 대한 설명과 각 피처의 설명(string type)