import numpy as np
import pandas as pd
import sklearn.preprocessing
05wk-20: StandardScaler를 이용한 전처리
1. 강의영상
2. Imports
3. StandardScaler()
-
예제자료 로드
= pd.read_csv('https://raw.githubusercontent.com/guebin/MP2023/main/posts/employment.csv').loc[:7,['toeic','gpa']]
df df
toeic | gpa | |
---|---|---|
0 | 135 | 0.051535 |
1 | 935 | 0.355496 |
2 | 485 | 2.228435 |
3 | 65 | 1.179701 |
4 | 445 | 3.962356 |
5 | 65 | 1.846885 |
6 | 290 | 0.309928 |
7 | 730 | 0.336081 |
-
스케일러를 생성
= sklearn.preprocessing.StandardScaler()
sclr sclr.fit_transform(df)
array([[-0.8680409 , -0.98104887],
[ 1.81575704, -0.73905505],
[ 0.3061207 , 0.75205327],
[-1.10287322, -0.08287854],
[ 0.17193081, 2.13248542],
[-1.10287322, 0.44828929],
[-0.34805505, -0.77533368],
[ 1.12803382, -0.75451182]])
-
계산식
- df.toeic.mean())/df.toeic.std(ddof=0) # 계산식 (df.toeic
0 -0.868041
1 1.815757
2 0.306121
3 -1.102873
4 0.171931
5 -1.102873
6 -0.348055
7 1.128034
Name: toeic, dtype: float64
4. 비교
-
MinMaxScaler
와 StandardScaler
는 데이터의 스케일을 조정하는 두 가지 일반적인 방법이다.
MinMaxScaler:
- 작동 원리: 데이터를 0과 1 사이의 값으로 조정
- 장점: 원하는 범위 내로 데이터를 조정할 때 유용. 특히 신경망에서는 활성화 함수의 범위와 일치하도록 입력 값을 조정하는 데 유용.1
- 단점: 이상치에 매우 민감하다. 이상치 때문에 전체 데이터의 스케일이 크게 영향받을 수 있음.
StandardScaler:
1 sigmoid, tanh와 같은 활성화 함수의 출력값과 맞추는 용도
2 그야 PCA는 정규분포를 가정하고 만든 알고리즘이라~
3 MinMaxScaler도 딱히 엄격하게 보장하는건 아니야
-
무식한 설명 (1)
- MinMaxScaler: 컴퓨터공학과, 전자공학과 느낌
- StandardScaler: 통계학과 느낌
-
무식한 설명 (2)
- MinMaxScaler: 데이터가 기본적으로 0$\(1 혹은 -1\)$1 사이의 범위에 있다고 가정한다.
- StandardScaler: 데이터가 기본적으로 정규분포를 따른다고 가정하는 모형들과 잘 맞는다.
-
둘 중 어느 것을 선택할지 결정하기 위한 고려사항:
- 이상치가 많으면
StandardScaler
가 더 적합할 수 있다. - 모델의 알고리즘과 특성에 따라 선택해야 한다. 예를 들어, 신경망은 일반적으로 0과 1 사이의 값이나 -1과 1 사이의 값으로 입력을 받는 활성화 함수를 사용하므로
MinMaxScaler
가 적합할 수 있다.
결론적으로, 두 스케일링 방법 중 어느 것이 더 좋은지는 사용 사례와 데이터의 특성에 따라 다르기 때문에, 가능한 경우 둘 다 시도해보고 모델의 성능을 비교하는 것이 좋다.
-
둘 중 어느 것을 선택할지 결정하기 위한 고려사항 – 무식한 설명
- 보통은 아무거나 해도 큰일 안남.
- 아주 특수한 경우4를 제외하고는 어차피 이론적인 선택기준은 없음.
4 Classical PCA