EDA ์งํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
train = pd.read_csv("C:/Users/twink/Documents/์นด์นด์คํก ๋ฐ์ ํ์ผ/train.csv")
test = pd.read_csv("C:/Users/twink/Desktop/test.csv")
sub = pd.read_csv("C:/Users/twink/Desktop/sample_submission.csv")
๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ์ด๋ค ํํ์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ์ดํด๋ณด๊ธฐ
pandas ์ ๋ฉ์๋๋ฅผ ํตํ ๊ฐ๋จํ ํ์
- .head() : ์์ 5๊ฐ, ๊ดํธ ์์ ์ซ์๋ก ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
train_data.head()
๊ฐ feature ์ ๋ํ ํตํฉ์ ์ธ ์ ๋ณด 2๊ฐ์ง
- .info()
- .describe()
train.info()
๊ฐ feature์ ์๋ ๋ฐ์ดํฐ์ ๋ช ๊ฐ์ null ์ด ์๊ณ , ๊ฐ ๋ฐ์ดํฐ์ type์ ํ์ธํ ์ ์๋ค.
object ๋ ์์นํ์ด ์๋ ์๋ฃํ์ผ๋ก ์ดํดํ๋ฉด ๋๋ค. ๋๋ถ๋ถ string ์ด๋ค.
์ด๋ object ์ธ feature ๋ ๋๋ถ๋ถ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ง์ ์ ์ธ ์ ๋ ฅ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ด ํ์ํ๋ค.
train.describe()
describe ๋ฅผ ์ฌ์ฉํ์ฌ ์์นํ ๋ฐ์ดํฐ์ ํต๊ณ๊ฐ์ ์ถ์ถํ ์ ์๊ณ ์ด์์น๋ฅผ ํ์ธํ๋ค.
- count : ๊ฐ์
- mean : ํ๊ท
- std : ํ์ค ํธ์ฐจ
- min : ์ต์๊ฐ
- 25% : ์ 1์ฌ๋ถ์๊ฐ
- 50% : ์ค์๊ฐ, ์ค์๊ฐ
- 75% : ์ 3์ฌ๋ถ์๊ฐ
- max : ์ต๋
๊ฒฐ์ธก์น ํ์ธ
train.isna().sum()
- ๊ฒฐ์ธก์น๊ฐ ์๋๊ฒ์ ์ ์ ์๋ค.
fiberID ์๊ฐํ
- fiberID ๊ฐ 630 ์ฏค์ด ๋๋ฉด์ ๋ถํฐ ๊ทธ ์๊ฐ ํ์ฐํ ์ค์ด๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
type ์๊ฐํ
- seaborn ์ฌ์ฉํ๊ธฐ
- seaborn ์ matplotlib ๊ธฐ๋ฐ์ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํต๊ณ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํ ๊ณ ๊ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
#๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ
import seaborn as sns
plt.figure(figsize=(10,8))
sns.countplot(y=train['type'], order=train['type'].value_counts().index)
plt.show()
type ์ปฌ๋ผ์ ๊ฐ๋ค์ count ํ์ฌ ๋ง๋๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์๋ค.
-> QSO ๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๋นํด ์๋ฑํ ๋์ ์์น๋ก ํด๋์ค ๊ฐ์ ์ฌํ ๋ถ๊ท ํ ํด๋์ค๋ฅผ ๊ฐ์ก๋ค.
๋ฐ์ดํฐ ํด๋์ค ๋ถ๊ท ํ ํด๊ฒฐํ๊ธฐ
1. weight balancing
train ๋ฐ์ดํฐ์์ ๊ฐ loss ๋ฅผ ๊ณ์ฐํ ๋ ํน์ ํด๋์ค์ ๋ํด์๋ ๋ํฐ loss ๋ฅผ ๊ณ์ฐํด์ค๋ค.
๋ ํฐ ์ ํ๋๊ฐ ํ์ํ ํด๋์ค์๋ ๋ ํฐ loss๋ฅผ ์ทจํด์ฃผ๋๊ฒ์ด๋ค.
2. Oversampling and Undersampling
Undersamling ์ ๊ฒฝ์ฐ ํ๋์ ๋ฐ์ดํฐ๊ฐ ์ฃผํฉ์ ๋ฐ์ดํฐ๋ณด๋ค ์์ด ํจ์ฌ ๋ง์ ์ํ์ด๋ค.
ํ์ ํ ์์ด ๋ง์ ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์์ด ์ ์ ์ฃผํฉ์ ๋ฐ์ดํฐ์ ๋ง์ถฐ์ฃผ๋ ๊ฒ์ด๋ค.
์ด๋, ์์ ์ค์ฌ๋ฒ๋ฆฐ ํ๋์ ๋ฐ์ดํฐ๋ค์ ์์ด ๋ง์๋ ์๋ณธ ํ๋์ ๋ฐ์ดํฐ์ ๋ํ์ฑ์ ์ ์ง๋๊ณ ์์ด์ผ ํ๋๊ฒ์ด ์ค์ํ๋ค.
Oversamling ์ ๊ฒฝ์ฐ ์์ด ์ ์ ์ฃผํฉ์ ๋ฐ์ดํฐ๋ฅผ ์์ด ๋ง์ ํ๋์ ๋ฐ์ดํฐ์ ๋ง์ถฐ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฃผํฉ์ ๋ฐ์ดํฐ์ ์์ ๋๋ ค์ค ๋ ์๋ณธ ์ฃผํฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ ์์ด ๋์ด๋ ์ฃผํฉ์ ๋ฐ์ดํฐ๋ ์์ด ์ ์๋ ์ฃผํฉ์ ์๋ณธ ๋ฐ์ดํฐ์ ์ฑ์ง๊ณผ ๋์ผํ๋ค.
์ด์์น ์ฐพ๊ธฐ
์ค์ผ์ผ๋ง์ด๋ feature engineering ์ ์ํด train ๋ฐ์ดํฐ์ ๊ณผ test ๋ฐ์ดํฐ์ ์ ํฉ์ณ์ ํ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋๋์ด ํฐ ๋ฐ์ดํฐ์ ์ผ๋ก ๋ณด์์๋ ์ด์์น๋ก ๋ณด์ด์ง ์๋ ๋ฐ์ดํฐ๋ ์ญ์ ํ๊ฑฐ๋ ๊ฐํ์ง ์๋๋ค.
๋ฐ๋ผ์ ๋๊ฐ์ ๋ฐ์ดํฐ์ ์ ํฉ์น๋ค ๊ฒฐ์ธก์น,์ด์์น ์์ ๋ฐ ์ ๊ฑฐ๋ฅผ ๊ฑฐ์น๊ณ ๋ค์ ๋ฐ์ดํฐ ๋ถ๋ฆฌํด์ฃผ๊ธฐ
- train ๋ฐ์ดํฐ์ ๊ณผ test ๋ฐ์ดํฐ์ ํฉ์น๊ธฐ
total = pd.concat([train,test], axis=0)
- psfMag_u ๊ณผ ๊ฐ์ด ๊ทน๋จ๊ฐ์ด ์กด์ฌํ๋ ๋ณ์์์ ์ด์์น๋ฅผ ์ฐพ๊ธฐ์ํ box plot
fig, axes = plt.subplots(2, 1, figsize=(10, 7))
columns = total.filter(regex='psf').columns.tolist()[:2]
for i, column in enumerate(columns):
sns.boxplot(y='type', x=column, data=total, ax=axes.flat[i])
axes.flat[i].grid(axis='x', linestyle='--')
axes.flat[i].set_xlim([-20, 50])
fig.tight_layout()
plt.show()
์ฝ๋์ถ์ฒ : ๋งค์ฐ ๊ฐ๋จํ SDSS ๋ฐ์ดํฐ ์๊ฐํ - DACON
์ ํํ๊ฒ ์ด์์น ๊ฐ์ด๋ผ๊ณ ๋จ์ ์ง์ ์ ์์ง๋ง ๋ฐ์ด์ฝ์ ์๋ train ๋ฐ์ดํฐ์ ์ ํ์ฉํ box plot ๊ณผ ๋ฐ์ดํฐ์ ์ ํฉ์นํ์ box plot ํฌ๊ฒ ์ฐจ์ด๋์ง ์๋๊ฒ๊ฐ๋ค.
์ถ์ฒ
https://eda-ai-lab.tistory.com/13
https://dacon.io/codeshare/4899
https://www.kaggle.com/code/subinium/kakr-eda/notebook
https://techblog-history-younghunjo1.tistory.com/74
https://www.codeit.kr/community/questions/UXVlc3Rpb246NjBlZTc0YzMyOGRjMDY2Y2ZlYWYwZGE0
'๐ก WIDA > DACON ๋ถ๋ฅ-ํ๊ท' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DACON/์ต๋ค์] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
---|---|
[DACON/๊น๊ท๋ฆฌ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/๊น์ธ์ฐ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/์กฐ์์] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/๊น๋ฏผํ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |