왜도(skewness)
- 왜도는 분포의 대칭 척도
- 왜도가 0이 아닌 경우 분포가 한 쪽으로 치우쳐 있음
[왜도에 따른 데이터 분포 형태]
양수(+) 왜도: 왼쪽으로 치우침 ( 평균 > 중앙값 > 최빈값)
왜도가 0: 좌우 대칭 (평균 = 중앙값 = 최빈값)
음수(-) 왜도: 오른쪽으로 치우침 ( 평균 < 중앙값 < 최빈값)
정규분포 변환 실습
import pandas as pd
file_path = 'https://raw.githubusercontent.com/YoungjinBD/dataset/main/USJudgeRatings.csv'
df = pd.read_csv(file_path)
왜도 계산: scipy 패키지의 skew() 함수 사용
import scipy.stats as ss
print(ss.skew(df["CONT"]))
print(ss.skew(df["PHYS"]))
- CONT 변수의 데이터는 약 1.086으로 양의 왜도 (Positive Skew, 왼쪽으로 치우침: 최빈 < 중앙 < 평균)를 가짐
- PHYS 변수의 데이터는 약 -1.558로 음의 왜도 (Negative Skew, 오른쪽으로 치우침: 최빈 > 중앙 > 평균)를 가짐
**왜도에 따른 변수 변환식**
왜도 | 제곱근 변환 | 로그 변환 | 역수 변환 |
양수(Positive Skew) | sqrt(x) | log(x) log10(x) |
1 / x |
음수(Negative Skew) | sqrt(max(x+1) - x) | log(max(x+1) - x) log10(max(x+1) - x) |
1 / (max(x+1) - x) |
log 변환
import numpy as np
df["CONT"] = np.log(df["CONT"])
df["PHYS"] = np.log(np.max(df["PHYS"] + 1) - df["PHYS"])
변환 후 왜도 확인
print(ss.skew(df["CONT"]))
print(ss.skew(df["PHYS"]))
'빅데이터분석기사_실기 > 제1유형: 데이터 전처리' 카테고리의 다른 글
데이터 변환: 차원축소 PCA, 주성분 분석 (2) | 2024.06.13 |
---|---|
데이터 변환: 범주화(Categorization), 이산형화(Discretization) (0) | 2024.06.13 |
데이터 변환: Min-Max 정규화 (0) | 2024.06.12 |
데이터 변환: Z-표준화, Z-Score (1) | 2024.06.12 |
데이터 탐색 실습 (1) | 2024.06.12 |