본문 바로가기
머신러닝

[머신러닝] 파이썬 머신러닝 완벽 가이드 - 2장. 사이킷런으로 시작하는 머신러닝

by Hessedist 2022. 4. 27.

 

[파이썬 머신러닝 완벽 가이드] 2장. 사이킷런으로 시작하는 머신러닝

  • 파이썬 기반의 다른 머신러닝 패키지도 사이킷런 스타일의 API 를 지향할 정도로 쉽고 가장 파이썬스러운 API를 제공함.
  • 머신러닝을 위한 매우 다양한 알고리즘과 개발을 위한 편리한 프레임워크와 API를 제공함. 
  • 오랜 기간 실전 환경에서 검증됐으며, 매우 많은 환경에서 사용되는 성숙한 라이브러리임.
  • 주로 Numpy와 Scipy 기반 위에서 구축된 라이브러리임.

사이킷런 소개와 머신러닝 분류 예측 모델 개요

사이킷런을 이용한 붓꽃 데이터 분류

머신러닝을 위한 용어 정리

  • Feature : 타겟값을 제외한 나머지 속성
  • 레이블, 클래스, 타겟(값), 결정(값) : 정답 데이터.

지도학습 - 분류

  • 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식.

붓꽃 데이터 분류 예측 프로세스

  • 데이터 세트 분리 : 데이터를 학습 데이터와 테스트 데이터로 분리
  • 모델 학습 : 학습 데이터를 기반으로 ML 알고리즘을 적용해 모델을 학습 시킴.
  • 예측 수행 : 학습된 ML 모델을 이용해 테스트 데이터의 분류(즉, 붓꽃 종류)를 예측함.
  • 평가 : 이렇게 예측된 결괏값과 테스트 데이터의 실제 결괏값을 비교해 ML 모델 성능을 평가함.

첫번째 머신러닝 모델 만들어 보기 - 붓꽃(Iris) 품종 예측

사이킷런의 기반 프레임 워크 익히기 - 주요 API/모듈 및 내장 예제 데이터 세트 소개

Esimator와 fit(), predict()

사이킷런의 주요 모듈

사이킷런 내장 예제 데이터 셋 - 분류 및 회귀용

학습과 테스트 데이터 세트의 분리

학습 데이터 세트

  • 머신러닝 알고리즘의 학습을 위해 사용.
  • 데이터의 속성들과 결정값(레이블)값 모두를 가지고 있음
  • 학습 데이터를 기반으로 머신러닝 알고리즘이 데이터 속성과 결정값의 패턴을 인지하고 학습

테스트 데이터 세트

  • 학습된 머신러닝 알고리즘을 테스트
  • 테스트 데이터는 속성 데이터만 머신러닝 알고리즘에 제공하며, 머신러닝 알고리즘은 제공된 데이터를 기반으로 결정값을 예측
  • 테스트 데이터는 학습 데이터와 별도의 데이터 세트로 제공되어야 함

train_test_split()

  • test_size / train_size / shuffle / random_state

교차 검증 - K Fold 와 Stratified K Fold 의 이해

교차검증

  • 학습 데이터를 다시 분할하여 학습 데이터와 학습된 모델의 성능을 일차 평가하는 검증 데이터로 나눔.

 K Fold

  • 불균형한 분포도를 가진 레이블 이 있을 수 있음

Stratified K Fold

  • 학습데이터와 검증 데이터 세트가 가지는 레이블 분포도가 유사하도록 검증 데이터 추출

교차검증 성능평가 cross_val_score() 와 하이퍼 파라미터 튜닝을 위한 Grid SearchCV 

교차검증을 보다 간편하기 - cross_val_score

  • 폴드 세트 추출, 학습/예측, 평가를 한 번에 수행 

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

  • 사이킷런은 GridSearchCV를 이용해 Classifier 나 Regressor 와 같은 알고리즘에 사용되는 하이퍼 파라미터를 순차적으로 입력하면서 편리하게 최적의 파라미터를 도출할 수 있는 방안을 제공함.

데이터 전처리 - 인코딩

데이터 전처리 (Preprocessing)

  • 데이터 클렌징
  • 결손값 처리 (Null/NaN 처리)
  • 데이터 인코딩 (레이블, 원-핫 인코딩)
  • 데이터 스케일링
  • 이상치 제거
  • Feature 선택, 추출 및 가공

데이터 인코딩 (모든 데이터를 숫자형으로 표현) 

  • 레이블 (Label) 인코딩 
  • 원-핫(One-Hot) 인코딩 : 피처 값의 유형에 따라 새로운 피처를 추가해 고유 값에 해당하는 컬럼에만 1을 표시하고 나머지 컬럼에는 0을 표시하는 방식

데이터 전처리 - 스케일링

피처 스케일링

  • 표준화는 데이터의 피처 각각이 평균이 0이고 분산이 1인 가우시안 정규 분포를 가진 값으로 변환하는 것을 의미
  • 정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념

사이킷런 피처 스케일링 지원

  • StandardScaler : 평균이 0 이고, 분산이 1 인 정규 분포 형태로 변환
  • MinMaxScaler: 데이터 값을 0과 1 사이의 범위 값으로 변환함 (음수 값이 있으면 -1에서 1 값으로 변환)

사이킷런으로 수행하는 타이타닉 생존자 예측

타이타닉 생존자 예측 ML 구현

  • 데이터 전처리 : Null 처리 / 불필요한 속성 제거 / 인코딩 수행
  • 모델 학습 및 검증/예측/평가 : 결정트리, 랜덤포레스트, 로지스틱 회귀 학습 비교 / K 폴드 교차 검증 / cross_val_score() 와 GridSearchCV() 수행