๋ชจ๋ธ๋ง ์ ์ ๋ฐ๋์ ํ์ธํด์ผ ํ ๊ฒ ์ค ํ๋๋ ์ด์์น(Outliers)์
๋๋ค.
์ด์์น๋ฅผ ๋ฐฉ์นํ๋ฉด ํ๊ท , ํ์คํธ์ฐจ, ํ๊ท๊ณ์, ๋ชจ๋ธ ์ฑ๋ฅ ๋ฑ ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์๊ณก๋ ์ ์์ต๋๋ค.
์ด์์น๋ ๋ฐ์ดํฐ์ ์ ์ ๋ฒ์์์ ๋ฒ์ด๋ ๊ทน๋จ๊ฐ์ ์๋ฏธํฉ๋๋ค.
์๊ฐ์ ์ผ๋ก๋ ์์๊ทธ๋ฆผ(Boxplot)์์ ์์ผ(whisker) ๋ฐ์ ์์นํ ๊ฐ๋ค์ด๋ฉฐ,
์์น์ ์ผ๋ก๋ Z-score๊ฐ ํน์ ๊ธฐ์ค์ ์ด๊ณผํ๋ ๊ฐ์ ๋๋ค.
absences = 60
์ด๋ผ๋ฉด ์ด๋ ๋ฐ์ดํฐ ๋ถํฌ์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ฐ๐ ์ด์์น ํ๋จ์ ๋ถ์ ๋ชฉ์ ๊ณผ ๋๋ฉ์ธ ์ง์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง,
์ ๋์ ์ผ๋ก ํ๋จํ๋ ๋ํ์ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
์ฌ๋ถ์์ ๊ธฐ๋ฐ์ IQR ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ด์์น๋ก ํ๋จํฉ๋๋ค.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
warpbreaks = pd.read_csv('https://raw.githubusercontent.com/YoungjinBD/data/main/warpbreaks.csv')
# ์๊ฐํ
warpbreaks.boxplot(column=['breaks'])
plt.title("๐ฆ Boxplot of breaks")
plt.show()
# ์ด์์น ๊ธฐ์ค ๊ณ์ฐ
Q1 = np.quantile(warpbreaks['breaks'], 0.25)
Q3 = np.quantile(warpbreaks['breaks'], 0.75)
IQR = Q3 - Q1
UC = Q3 + 1.5 * IQR
LC = Q1 - 1.5 * IQR
# ์ด์์น ํ์ธ
outliers = warpbreaks.loc[(warpbreaks.breaks > UC) | (warpbreaks.breaks < LC)]
print(outliers)
๐ค ์ถ๋ ฅ:
breaks wool tension
4 70 A L
8 67 A L
22 10 A H
filtered = warpbreaks.loc[(warpbreaks.breaks <= UC) & (warpbreaks.breaks >= LC)]
โ ๋ถ์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ ๊ฑฐํ๊ฑฐ๋ ๋ณ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
Z-score๋ ๋ฐ์ดํฐ๊ฐ ํ๊ท ์์ ํ์คํธ์ฐจ ๋จ์๋ก ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
๐ ์ผ๋ฐ์ ์ผ๋ก |Z| > 3์ธ ๊ฒฝ์ฐ ์ด์์น๋ก ๊ฐ์ฃผ
mean = warpbreaks['breaks'].mean()
std = warpbreaks['breaks'].std()
upper = mean + 3 * std
lower = mean - 3 * std
z_outliers = warpbreaks.loc[(warpbreaks['breaks'] > upper) | (warpbreaks['breaks'] < lower)]
print(z_outliers)
๐ค ์ถ๋ ฅ:
breaks wool tension
4 70 A L
โ Z-score๋ ํ๊ท ์ค์ฌ์ผ๋ก ๋ถํฌ๊ฐ ์ ๊ท๋ถํฌ์ผ ๋ ๋ ์ ์๋ํฉ๋๋ค.
ํญ๋ชฉ | Boxplot | Z-score |
---|---|---|
๊ธฐ์ค | ์ฌ๋ถ์์ ๊ธฐ๋ฐ | ํ๊ท ๊ณผ ํ์คํธ์ฐจ |
์ฅ์ | ๋ถํฌ์ ๋ฌด๊ด | ์ํ์ ๊ฐ๊ฒฐํจ |
๋จ์ | ๊ทน๋จ์ ์ด์์น์ ์ทจ์ฝ | ๋น์ ๊ท๋ถํฌ์ ๋ถ์ ํ |
๊ฐ๋ | ๋น์ |
---|---|
Boxplot | ๋ฐ์ดํฐ๋ค์ ์ค ์ธ์์ ๋ฐ๊นฅ์ชฝ 25%๋ฅผ ๊ฒฝ๊ณ๋ก ๋๋๊ณ , ๋ ํ๋ฉด ์ซ์๋ |
Z-score | ์ ์ฒด ํ๊ท ์ ๊ธฐ์ค์ผ๋ก ๋๋ฌด ๋ฉ๋ฆฌ ๋จ์ด์ง๋ฉด "๋ ์ด์ํด" ํ๊ณ ๊ฒฝ๊ณ |
๋ฐฉ๋ฒ | ํ๋จ ๊ธฐ์ค | ์ฌ์ฉ ์์ |
---|---|---|
Boxplot | IQR ๊ธฐ์ค | ์๊ฐ์ ์ผ๋ก ํ๋จ, ํต๊ณ์ ๋ถํฌ๊ฐ ํ์ ์์ ๋ |
Z-score | Z > 3 | ์ ๊ท๋ถํฌ ๊ธฐ๋ฐ ๋ชจ๋ธ, ์๋ํ ๊ธฐ์ค ํ์ํ ๋ |
๐ ๋ค์ ๊ธ์์๋ ๊ฒฐ์ธก์น, ์ด์์น, ๋ฒ์ฃผํ ์ฒ๋ฆฌ, ์ ๊ทํ ๋ฑ ์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ์๋ํ์ ๋ํด ๋ค๋ฃฐ ์์ ์ ๋๋ค.
๋ฒจ๋ก๊ทธ์์ ๊ตฌ๋ ํ๊ณ ํจ๊ป ํต๊ณ์ํ ํด๋ด์!