scale 이란?
데이터 단위의 크기(범위)
scaling 이란?
각 변수의 범위를 조절하는 과정.
- 거리기반 모델을 쓸때는 반드시 스케일링 써서 각각 변수의 특성에 따라 동일한 스케일을 지닐수 있게 맞춰주는것이 중요 합니다.
from sklearn.preprocessing import StandardScaler, RobustScaler, MinMaxScaler
ss = StandardScaler()
rs = RobustScaler()
mm = MinMaxScaler()
standard scaling (x - 평균 / 분산)
평균 0, 분산 1인 형태로 데이터를 재배열
**결과를 보면 one-hot encoding 되어있는 부분도 0,1이 아닌 다른 값으로 변경되어있음
정규분포를 따르고 outlier가 없을 때 사용하기(linear regression, logistic regression, support vector machine)
ss.fit(data) # 학습시키기
ss.transform(data) # 학습시킨 것 데이터에 적용
ss.fit_transform(data) # fit, transform 한번에 적용시킬 수 있음
fit_transform 메소드가 더 유용해 보이는데, fit,transform은 어떨 때 써요?
딥러닝 알고리즘을 학습시키고 나면, 새로운 test data가 들어올때 각각 fit을 새로 계산해주고 transform 해줄 수 없음.
일일이 하기도 힘들 뿐더러 제공되는 데이터가 한두개씩 계속 들어오면 분산,표준편차 등 계산할 수 없는거지.
그럴때는 fit 값은 알고리즘이 저장하고 있고, 데이터가 들어오면 transform만 해서 적용시키면 되기 때문에 따로 있는거..!
ss_df = pd.DataFrame(ss.transform(data), columns = data.columns)
# dataframe으로 안바꿔주면 ndarray형태이기 때문에 보기 힘듦
# columns도 지정 안해주면 0~ 로 자동적용되어출력됨
robust scaling (x - Q2 / Q3 - Q1)
standard scaling과 비슷하나 평균, 분산 대신 Q1,Q2,Q3의 값을 사용함
-> 아웃라이어의 영향을 받지않아 outlier가 많을 떄, 정규분포를 따르지 않을 때 유용
** one-hot은 0,1 그대로 유지됨
data.quantile(0.25) #Q1
data.quantile(0.5) #Q2
data.quantile(0.75) #Q3
min-max scaling (x - min / max - min)
최대값이 1, 최소값이 0인 형태로 재배열
** one-hot도 0,1 그대로 유지되고, 모든 값이 1이 넘지 않음
출력된 데이터의 범위를 제한하고 싶을때, 즉 딥러닝 학습떄 많이 쓰임
*사실 그냥 전부 다 적용해보고 출력 잘 나오는걸로 적용하는게 best임..!
*출력된 값이 헷갈리면 0에 가까운 수는 round(값,출력원하는 소숫점자리수 범위), 아닌거는 해당 값 그냥 빈칸에 돌려보
*오히려 onehot encoding한 부분이 값 차이가 너무 많이 나서(0,1로 1차이나..!) KNN(거리기반 알고리즘)을 돌릴 떄 중요하다고 판단되는 값들을 자동으로 묶어주는데 이럴 때 one hot 부분을 중요하다고 묶어버리는 경우가 있음. 그럴 경우에는 과감하게 바꾸거나 drop해야할 수도 있음.
'Aiffel_learning > Data_analysis' 카테고리의 다른 글
5. PCA (1) | 2024.06.06 |
---|---|
3. matplotlib으로 그래프 그리기 (1) | 2024.06.06 |
2-6. pandas : outlier (3) | 2024.06.06 |
2-6. pandas : 결측치 (1) | 2024.06.06 |
2-5. pandas : dt 메소드와 python datetime 모듈 (1) | 2024.06.06 |