💠 사이킷런 ( scikit-learn )💠

2023. 9. 19. 17:59개발/💠 Alchemist

 

🔹  사이킷런 소개와 특징

 

사이킷런은 가장 대표적인 파이썬 머신러닝 라이브러리이다

- 파이썬스러운 API 제공

- 다양한 알고리즘, 편리한 프레임워크와 API 제공

- 오랜 기간 다양한 환경에서 사용된 성숙한 라이브러리

 

🔹 사이킷런의 기반 프레임워크

 

1.  Estimator

 

Estimator : 사이킷런의 기반 프레임워크

 

1 )  지도 학습

Estimator는 분류 알고리즘 클래스인 Classifier와 회귀 알고리즘 클래스 Regressor로 구성되어있다

Classiifier와 Regressor 클래스는 ML 모델 학습을 위한 fit() 메서드와 학습된 모델의 예측을 위한 predict() 메서드를 사용한다

그렇기 때문에 Estimator 내부에 fit()메서드와 predict() 메서드가 구현되어 있다

 

evaluation 함수, 하이퍼 파라미터 튜닝의 경우 Estimator를 인자로 받는다

 

2 )  비지도 학습

차원 축소, 클러스터링, 피처 추출 등의 클래스는 비지도 학습이며 fit()과 transform() 메서드를 주로 이용한다

Estimator는 fit()과 transform() 메서드는 물론 이 두 메서드를 결합한 fit_transform() 메서드 또한 제공한다

 

2.  사이킷런의 주요 모듈

 

- 머신러닝 모델 구축 프로세스

피처 처리(피처 가공, 변경, 추출) -> ML 알고리즘 학습/예측 -> 모델 평가

 

1 )  피처 처리

2 )  피처 처리 & 차원 축소

3 )  데이터 분리, 검증 & 파라미터 튜닝

4 )  평가

5 )  ML 알고리즘

 

 

🔹 Model Selection 모듈

 

사이킷런의 model selection 모듈은 주로

학습 데이터와 테스트 데이터 분리, 교차 검증, 최적 하이퍼 파라미터 튜닝

이렇게 세 가지 기능을 제공합니다

 

1 )  학습/테스트 데이터 세트 분리 - train_test_split()

train_x, test_x, train_y, test_y  튜플 형태로 반환

파라미터 - test_size, shuffle, random_state

-  test_size : 전체에서 테스트 데이터 세트 크기를 얼마로 샘플링할 것인가

-  shuffle : 데이터 분산 여부 -> 데이터 분리 전 분산시킬 시 효율적인 데이터 분리 가능

-  random_state : 호출할 때마다 동일한 학습/테스트 데이터 세트 생성하기 위해 주어지는 난수 값

 

2 )  교차 검증

 

교차 검증 : 과적합과 데이터 편중을 막기 위해 별도의 여러 세트로 구성된 학습/테스트 데이터 세트에서 학습과 평가 수행

 

( 1 )  K 폴드 교차 검증

- K개의 데이터 폴드 세트를 만들어 K번 만큼 각 폴드 세트에 학습과 검증 평가 수행

- 파라미터 : n_splits ( 데이터 세트 지정 )

 

( 2 ) Stratified K 폴드

- 이산값 형태의 레이블(Y)을 가진 데이터에 한해 적용 (분류, 로지스틱 회귀)

- 불균형한 분포도를 가진 Y 데이터 집합을 위한 K 폴드 방식

- 원본 데이터의 Y분포를 먼저 고려한 뒤 이 분포와 동일하게 학습/테스트 데이터 분배

 

( 3 ) cross_val_score()

- 교차 검증 과정을 한꺼번에 수행하는 API

- 배열 형태의 지정된 성능 지표 측정값 반환

- 파라미터 - estimator, X, y, scoring, cv

 

( 4 ) cross_validate()

- 교차 검증 과정을 한꺼번에 수행하는 API

- dict 형태의 각 폴드별 test_score, fit_time 등 반환

- 파라미터 - estimator, X, y, scoring, cv, return_train_score

 

3 )  교차 검증과 최적 하이퍼 파라미터 튜닝 동시 수행 - GridSearchCV

GridSearchCV : 교차 검증을 기반으로 하이퍼 파라미터의 최적값을 찾는 API

 

수행 과정

- 파라미터 조합들 중 하나를 선택해 모델 생성

- 입력받은 cv만큼 교차검증해 성능 평가

- 모든 파라미터 조합에 대해 반복

- 가장 성능이 좋은 파라미터 선택

 

🔹 데이터 전처리

 

데이터 전처리(Data Preprocessing)란 ML 알고리즘에 데이터를 넣어주기 전 가공하는 과정을 의미한다

이는 데이터에 기반한 머신러닝에게 매우 중요한 과정이다

 

1 ) 결손값 처리

- 피처들 중 결손값이 적은 경우 : 해당 피처의 평균값으로 대체

- 피처들 중 결손값이 많은 경우 : 해당 피처 삭제

* 결손값 처리에 대한 절대적인 규칙은 없다. 피처의 특성에 따라 유연하게 처리해야 한다

 

2 ) 데이터 인코딩

문자열 값은 허용되지 않기 때문에 인코딩을 통해 숫자형으로 변환해야 한다

이때 문자열 피처는 일반적으로 카테고리형 피처와 텍스트형 피처를 의미한다

 

( 1 )  LabelEncoder : 문자열 값 -> 숫자형 카테고리값

( 2 )  One-Hot Encoding

- 행 형태의 피처 고유 값을 열 형태로 차원 변환

- 고유 값에 해당하는 칼럼 : 1 / 나머지 : 0

( 3 ) get_dummies() : 판다스에서 제공하는 인코딩 방법

 

3 ) 피처 스케일링

피처 스케일링 : 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업

표준화와 정규화가 대표적인 방법이다

 

( 1 ) 표준화

-  피처 값 -> 가우시안 정규 분포 ( 평균:0 / 분산:1 )

- StandardScaler 이용

- SVM, 선형 회귀, 로지스틱 회귀 적용 전 필수로 수행

 

( 2 ) 정규화

- 서로 다른 피처의 크기를 0 ~ 1 값으로 통일 ( 음수 존재할 경우 : -1~1 )

- MinMaxScaler 이용

- 데이터 분포가 가우시안 분포가 아닐 경우 적용

 

'개발 > 💠 Alchemist' 카테고리의 다른 글

💠 평가 💠  (0) 2023.09.26
💠 AIchemist 1주차 💠  (0) 2023.09.25
💠 Python 기반 머신러닝 - NumPy, Pandas 💠  (0) 2023.09.19
💠 AIchemist 1기 모집 & OT 💠  (0) 2023.09.18
💠 머신러닝 기초 개념 💠  (0) 2023.09.12