일반적인 데이터 패턴과 매우 다른 패턴을 갖는 데이터는 이상치라 여긴다.
이상치(Outlier)를 찾고자 할 때는 boxplot이 매우 유용하다.
각각의 선들이 의미하는 바를 살펴보겠습니다.
- 10~8 사이의 실선 : 3분위수 + 1.5 * IQR
- 파란색 박스의 위쪽 실선 : 3분위수 (75%)
- 파란색 박스의 중앙 실선 : 2분위수 (중앙값)
- 파란색 박스의 아래 실선 : 1분위수 (25%)
- 4~6 사이의 실선 : 1분위수 - 1.5 * IQR
- 파란색 박스의 길이 : 3분위수 - 1분위수 = IQR
import seaborn as sns
import numpy as np
sns.boxplot(data=df['이상치를 볼 컬럼'])
# 신기하게도 data=을 넣어주면 위의 그림처럼 나오지만
# 기냥 sns.boxplot(df['이상치를 볼 컬럼'])을 넣어주면 저 그림이 눕혀서 나온다.
# 컬럼에서 25%에 위치한 값을 구해줌
quantile_25=np.quantile(df['이상치를 볼 컬럼'],0.25)
quantile_75=np.quantile(df['이상치를 볼 컬럼'],0.75)
# IQR
IQR = quantile_75-quantile_25
# quantile_25보다 1.5 * IQR 작은 값을 구해줍니다.
minimum = quantile_25 - 1.5 * IQR
# quantile_75보다 1.5 * IQR 큰 값을 구해줍니다.
maximum = quantile_75 + 1.5 * IQR
# minimum보다 크거나 같고, maximum보다 작거나 같은 값들만 뽑아냅니다.
df2 = df[(minimum <= df['이상치를 볼 컬럼']) & (df['이상치를 볼 컬럼'] <= maximum)]
https://mycodepia.tistory.com/18
'ML > ML-Kaggle, 데이콘' 카테고리의 다른 글
OneHot 인코딩-OneHotEncoder(), pd.get_dummies() (4) | 2021.10.08 |
---|---|
수치형 데이터 정규화 (0) | 2021.10.08 |
랜덤포레스트(RandomForestRegressor) (3) | 2021.09.29 |
결측값 전처리 (0) | 2021.09.29 |
의사결정나무 (0) | 2021.09.28 |
댓글