[파이썬 머신러닝 완벽 가이드] 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() 수행
'머신러닝' 카테고리의 다른 글
[머신러닝] paperswithcode.com 머신러닝 논문과 코드를 함께 볼 수 있는 사이트 (0) | 2022.05.11 |
---|---|
[머신러닝] 파이썬 머신러닝 완벽 가이드 - 3장. 평가 (Evaluation) (0) | 2022.04.27 |
[머신러닝] 모두를 위한 머신러닝/딥러닝 강의 (시즌 1, 2) (0) | 2022.04.25 |
[머신러닝] 파이썬 머신러닝 완벽 가이드 - 1장. 파이썬 기반의 머신러닝과 생태계 이해 (0) | 2022.04.18 |
[머신러닝] 파이썬 머신러닝 완벽 가이드 - 소개 (0) | 2022.04.17 |