๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌํ๊ธฐ
์ผ๋ฐ์ ์ธ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ ๋ ฅ ๊ฐ์ผ๋ก ๊ฒฐ์ธก๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Null, None, NuN๋ฑ์ ๊ฒฐ์ธก๊ฐ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๋ํ์ ์ธ ๊ฒฐ์ธก ๊ฐ ์ฒ๋ฆฌ ๋ฐฉ์์๋ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ์ํ ์ญ์ (ํ)
2. ๊ฒฐ์ธก๊ฐ์ด ๋ง์ด ์กด์ฌํ๋ ๋ณ์ ์ญ์ (์ด)
3. ๊ฒฐ์ธก๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์ฒด
1. ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ์ํ ์ญ์ (ํ)
๊ฒฐ์ธก๊ฐ์ด ์๋ ์ํ์ ์ ๊ฑฐํ๊ธฐ ์ํด์๋ 'dropna'๋ฅผ ์ฌ์ฉํฉ๋๋ค.
DataFram.dropna()
2. ๊ฒฐ์ธก๊ฐ์ด ๋ง์ด ์กด์ฌํ๋ ๋ณ์ ์ญ์ (์ด)
pandas์ DataFrame์์ ํน์ ๋ณ์(Columns)๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์๋ 'drop'์ ์ฌ์ฉํฉ๋๋ค.
DataFrame.drop(columns=['Cabin'])
import pandas as pd
# ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ต๋๋ค.
titanic = pd.read_csv('./data/titanic.csv')
# ๋ณ์ ๋ณ ๋ฐ์ดํฐ ์๋ฅผ ํ์ธํ์ฌ ๊ฒฐ์ธก ๊ฐ์ด ์ด๋์ ๋ง์์ง ํ์ธํฉ๋๋ค.
print(titanic.info(),'\n')
#1. Cabin ๋ณ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
titanic_1 = titanic.drop(columns=['Cabin'])
# Cabin ๋ณ์๋ฅผ ์ ๊ฑฐ ํ ๊ฒฐ์ธก๊ฐ์ด ์ด๋์ ๋จ์ ์๋์ง ํ์ธํฉ๋๋ค.
print('Cabin ๋ณ์ ์ ๊ฑฐ')
print(titanic_1.info(),'\n')
#2. ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ์ํ์ ์ ๊ฑฐํฉ๋๋ค.
titanic_2 = titanic_1.dropna()
# ๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
print('๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ์ํ ์ ๊ฑฐ')
print(titanic_2.info())
์ด์์น(Outlier) ์ฒ๋ฆฌํ๊ธฐ
์ด์์น๊ฐ ์์ผ๋ฉด, ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ ํํ ์ ์์ต๋๋ค.
์ด์์น๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ์ ๊ฑฐํ๋ฉฐ,
์ด๋ค ๊ฐ์ด ์ด์์น ์ธ์ง ํ๋จํ๋ ๊ธฐ์ค์ด ์ค์ํฉ๋๋ค.
์ด์์น ํ๋จ ๊ธฐ์ค ๋ฐฉ๋ฒ
1. ํต๊ณ ์งํ(์นด์ด์ ๊ณฑ ๊ฒ์ , IQR ์งํ ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ํ๋จ
2. ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ๋ณด๊ณ ์ง์ ํ๋จ
(๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ์ง์ ํ๋จํ ์๋ ์๊ณ , ๋์๋ถํฌํ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ๊ทธ๋ํ ๋ฑ์ ํตํด ํ์ธ ๊ฐ๋ฅ)
3. ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด์์น ๋ถ๋ฅ
์ค์ต
Titanic ๋ฐ์ดํฐ Age ๋ณ์ ์ค ์์์ ๊ฐ๋ ๋ฐ์ดํฐ ์ ๊ฑฐํ๊ธฐ
import pandas as pd
import numpy as np
#๋ฐ์ดํฐ ์ฝ์ด์ค๊ธฐ
titanic = pd.read_csv('./data/titanic.csv')
#Cabin ๋ณ์ ์ ๊ฑฐ
titanic_1 = titanic.drop(columns=['Cabin'])
#๊ฒฐ์ธก๊ฐ์ด ์กด์ฌํ๋ ํ ์ ๊ฑฐ
titanic_2 = titanic1.dropna()
#Age ๊ฐ - Age ๋ด๋ฆผ ๊ฐ์ด 0๋ณด๋ค ํฌ๋ค๋ฉด ์์์ ์ ๊ฐ๋ ๋ฐ์ดํฐ๋ก ๋ถ๋ฅ
#floor : ๋ด๋ฆผ ํจ์
outlier = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age'])>0]['Age']
print('์์์ ์ ๊ฐ๋ Age ๋ณ์ ์ด์์น')
print(outlier)
print('์ด์์น ์ฒ๋ฆฌ ์ ์ํ ๊ฐ์ : %d' %(len(titanic_2)))
print('์ด์์น ๊ฐ์ : %d' %(len(outlier)))
#์ด์์น ์ฒ๋ฆฌํ๊ธฐ
#titanic_2['Age']์์ np.floor(titanic_2['Age'])๋ฅผ ๋บธ ๊ฐ์ด 0์ด๋ฉด ์ ์์ด๊ณ , 0๋ณด๋ค ํฌ๋ค๋ฉด ์์์ .
#0์ธ ๊ฐ๋ง titanic_3์ ์ ์ฅ
titanic_3 = titanic_2[titanic_2['Age']-np.floor(titanic_2['Age']==0)]
print('์ด์์น ์ฒ๋ฆฌ ํ ์ํ ๊ฐ์ : %d' %len(titanic_3))
๋ฐ์ดํฐ ๋ถ๋ฆฌ๋ ์ ํ์ํ ๊น?
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ๊ฐํ๊ธฐ ์ํด์๋ ํ์ต์ ์ฌ์ฉํ์ง ์์ ํ๊ฐ์ฉ ๋ฐ์ดํฐ๊ฐ ํ์ํฉ๋๋ค.
๋ฐ์ดํฐ ๋ถ๋ฆฌ ์ ์ฝ 7:3 ~ 8:2 ๋น์จ๋ก ํ์ต๊ณผ ํ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
์ง๋ํ์ต ๋ฐ์ดํฐ ๋ถ๋ฆฌ
์ง๋ํ์ต์ ๊ฒฝ์ฐ featrue ๋ฐ์ดํฐ์ label ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํฉ๋๋ค.
Feature ๋ฐ์ดํฐ : label์ ์์ธกํ๊ธฐ ์ํ ์ ๋ ฅ ๊ฐ
Label ๋ฐ์ดํฐ : ์์ธกํด์ผ ํ ๋์์ด ๋๋ ๋ฐ์ดํฐ
์์
feature : ๊ณผ์ผ ์ด๋ฏธ์ง
label : ๊ณผ์ผ ์ด๋ฆ
feature : ๊ณต๋ถ์๊ฐ
label : ์ํ์ ์
feature : ์๋ฒ์ง์ ํค
label : ์๋ค์ ํค
์ค์ต
ํ์ดํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ์์กด์๋ฅผ ์์ธกํ๋ค๊ณ ํด๋ด ์๋ค.
์ด ๊ฒฝ์ฐ Survived ๋ฐ์ดํฐ๊ฐ Label ๋ฐ์ดํฐ๊ฐ ๋๊ณ ,
๋๋จธ์ง ๋ณ์๊ฐ Feature ๋ฐ์ดํฐ๊ฐ ๋ฉ๋๋ค.
์ฆ, Feature๋ฐ์ดํฐ(train ๋ฐ์ดํฐ)๋ค์ ํตํด์ ์์กด์ฌ๋ถ(test ๋ฐ์ดํฐ)๋ฅผ ํ๋จํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ๋ถ๋ฆฌ์์๋ skleran๋ผ์ด๋ธ๋ฌ๋ฆฌ์ train_test_split๋ฅผ ์ฌ์ฉํฉ๋๋ค.
#์์์ ์ ์ ํ titanic_3๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
#feature ๋ฐ์ดํฐ์ label ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
X = titanic_3.drop(columns=['Survived'])
y = titanic_3['Survived']
#๋ฐ์ดํฐ ๊ฐ์ ํ์ธ
print('X ๋ฐ์ดํฐ ๊ฐ์: %d' %(len(X)))
print('y ๋ฐ์ดํฐ ๊ฐ์: %d' %(len(y)))
#X, y ๋ฐ์ดํฐ๋ฅผ ํ์ต์ฉ, ํ๊ฐ์ฉ ๋ฐ์ดํฐ๋ก ๋ถ๋ฅํฉ๋๋ค.
#test : train = 3 : 7๋ก ๋ถ๋ฅํฉ๋๋ค.
#random state๋ฅผ ์ด์ฉํ๋ฉด ํฅํ ๋์ผํ ๋ฐ์ดํฐ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# ๋ถ๋ฆฌํ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
print('ํ์ต์ฉ ๋ฐ์ดํฐ ๊ฐ์: %d' %(len(X_train)))
print('ํ๊ฐ์ฉ ๋ฐ์ดํฐ ๊ฐ์: %d' %(len(X_test)))
'์ธ๊ณต์ง๋ฅ ๐ > ๋จธ์ ๋ฌ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๊ท- ๋ค์ค ์ ํ ํ๊ท (1) | 2022.11.29 |
---|---|
ํ๊ท - ๋จ์ ์ ํ ํ๊ท (1) | 2022.11.29 |
๋จธ์ ๋ฌ๋ ์์นํ ์๋ฃ ์ ์ฒ๋ฆฌ (0) | 2022.11.27 |
๋จธ์ ๋ฌ๋ ๋ฒ์ฃผํ ์๋ฃ ์ ์ฒ๋ฆฌ (0) | 2022.11.27 |
๋จธ์ ๋ฌ๋์ ๊ณผ์ ๊ณผ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ (0) | 2022.11.26 |