본문 바로가기
ML/ML-Kaggle, 데이콘

이상치(Outlier)

by lucian 2021. 10. 8.

일반적인 데이터 패턴과 매우 다른 패턴을 갖는 데이터는 이상치라 여긴다.

이상치(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

 

[통계] 사분위수(Q3,Q1), 중앙값, IQR, 울타리 구하기, 보간법, 박스 그리기 방법

박스를 그리기 위해 5개 (Q1, Q3, 중앙값, IQR, 울타리) 값을 알아야 한다. 자료는 예시로 { 1 2 3 4  5 6 7  8 9 10  } 10개의 자료가 있다고 치자. 제 1사분위수 = Q1     25% 1) 위치 구하기 ( n+1 )..

mycodepia.tistory.com

 

'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

댓글