2๊ฐ ์ด์์ imputer๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฐ ํน์ฑ-ํ๊ฒ ๊ด๊ณ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค ๊ณต์ ํ๊ณ ๋ค์ ์ง๋ฌธ์ ๋ํด ์๋ก ๋ ผ์ํด ๋ณด์ธ์.
๋จผ์ ํน์ฑ์ค์๋์์ ๊ฐ์ฅ ์ค์๋๊ฐ ๋๊ฒ ๋์จ 'doctor_recc_h1n1' ํน์ฑ์ ๋ํด์๋ง Imputer ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ํ๊ฒ์์ ๊ด๊ณ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ณด์์ต๋๋ค.
seaborn plots ์ฌ์ฉํ์ฌ ๊ด์ฌ์๋ ํน์ฑ๋ค๊ณผ target๊ฐ์ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ๋ก ๋ํ๋ด ๋ณด์ธ์.
- Imputer๋ฅผ ์ ์ฉํ์ง ์์์ ๋
๋ณ์์ ํ๊ฒ ๋ชจ๋ binaryํ ๊ฐ์ผ๋ก 0๊ณผ 1์ ๋ํ ๊ฐ๋ค๋ง ์ฐํ๋ ๊ฒ์ด ๋ณด์ ๋๋ค.
- SimpleImputer(strategy='mean') ์ ์ฉ ์
imputer1 = SimpleImputer(strategy='mean')
train_imp1 = imputer1.fit_transform(train_chall)
train_imp1 = pd.DataFrame(train_imp1, columns=['doctor_recc_h1n1', 'vacc_h1n1_f'])
- SimpleImputer(strategy='median') ์ ์ฉ ์
imputer2 = SimpleImputer(strategy='median')
train_imp2 = imputer2.fit_transform(train_chall)
train_imp2 = pd.DataFrame(train_imp2, columns=['doctor_recc_h1n1', 'vacc_h1n1_f'])
- SimpleImputer(strategy='most_frequent') ์ ์ฉ ์
- imputer4 = SimpleImputer(strategy='constant', fill_value=2) ์ ์ฉ ์
imputer4 = SimpleImputer(strategy='constant', fill_value=2)
train_imp4 = imputer4.fit_transform(train_chall)
train_imp4 = pd.DataFrame(train_imp4, columns=['doctor_recc_h1n1', 'vacc_h1n1_f'])
- KNNImputer(n_neighbors=2) ์ ์ฉ ์
imputer5 = KNNImputer(n_neighbors=2)
train_imp5 = imputer5.fit_transform(train_chall)
train_imp5 = pd.DataFrame(train_imp5, columns=['doctor_recc_h1n1', 'vacc_h1n1_f'])
์ฌ์ฉํ์ imputer๋ ๊ฐ๊ฐ ์ด๋ค ์ฅ๋จ์ ์ ๊ฐ๊ณ ์์ผ๋ฉฐ ์ด๋ค ์ํฉ์์ ์ฌ์ฉํ๋ฉด ์ข์๊น์?
- ๋ณ์๊ฐ continuous value์ผ ๊ฒฝ์ฐ : SimpleImputer์ 'mean', 'constant', KNNImputer
- ๋ณ์๊ฐ categorical value์ผ ๊ฒฝ์ฐ : ์์ํ-SimpleImputer์ 'median', 'most_frequent' / ๋ช ๋ชฉํ-SimpleImputer์ 'most_frequent'/ ์๊ด์์ด-SimpleImputer์ 'constant'
๋ง๋์ ํน์ฑ-ํ๊ฒ ๊ด๊ณ ๊ทธ๋ํ์์ ์ฐจ์ด์ ์ด ์๋ค๋ฉด ๋ฌด์์ด๊ณ , ์ ๊ทธ๋ฐ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค๊ณ ์๊ฐํ์๋์?
์์ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด, ์นดํ ๊ณ ๋ฆฌ์ปฌํ ๋ณ์์ 'mean', 'constant', 'KNN'๊ณผ ๊ฐ์ Imputer๋ฅผ ์ ์ฉํ๊ฒ ๋๋ฉด Missing value๊ฐ binaryํ ๊ฐ์ผ๋ก ์ฑ์์ง๋ ๊ฒ ์๋, ๊ทธ ์ด์ธ์ ๋ค๋ฅธ ์ซ์๋ก ์ฑ์์ง๊ฒ ๋ฉ๋๋ค. ํด์ ์์ ๊ฐ์ด categoricalํ ๋ณ์์ ๋ํด์๋ 'median', 'most_frequent'์ ๊ฐ์ด 0๊ณผ 1 ์ด์ธ์ ์ซ์๊ฐ ๋์ค์ง ์๋ ๋ฐฉ๋ฒ์ ์จ์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ ๊ณง ๊ฐ Imputer์ ์ฅ๋จ์ ์ด์ง ์์๊น ์๊ฐํ์ต๋๋ค.
์ถ๊ฐ ์ฌํญ
- Multivariate feature imputation
๋ง ๊ทธ๋๋ก ์์ ๊ฒฝ์ฐ์ฒ๋ผ ๊ฐ ๋ณ์(์ปฌ๋ผ)์ ๋ํ 'ํ๊ท ', '์ค์๊ฐ', '์ต๋น๊ฐ' ๋ฑ์ ์ ์ฉํ๋ ๊ฒ์ด ์๋ ์ ์ฒด ๋ฐ์ดํฐ์
์ ๋ํด ๊ธฐ์ค์ ์ก๊ณ (๋ชจ๋ ์ปฌ๋ผ์ ๊ณ ๋ คํ์ฌ) ๊ฐ์ ์ฑ์ฐ๋ imputer ๋ฐฉ์์
๋๋ค.
sklearn.impute.IterativeImputer๋ก ์ฌ์ฉํฉ๋๋ค.
- Marking imputed values
๊ฒฐ์ธก์น์ ๋ํ ๋ถ๋ถ์ True๋ก ํ๊ณ ๊ฒฐ์ธก์น๊ฐ ์๋ ๊ฐ์ ๋ํด์๋ False๋ฅผ ๋ฐํํฉ๋๋ค.
sklearn.impute.MissingIndicator๋ก ์ฌ์ฉํฉ๋๋ค.
์ ์ฌ์ง์์ features='all'์ ํ๋๋ ์ํ๋๋์ ๋ฐ๋ผ missing value๊ฐ ์๋ ์ปฌ๋ผ์ ํ์ ์๋ตํ๊ธฐ๋ ์ํ๊ธฐ๋ ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์์ Imputer ๋ชจ๋ ๊ฒฐ๊ตญ์ ๋ณ์์ ๊ฒฐ์ธก์น๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ธ๋ฐ, ์ KNN์ ๊ฒฝ์ฐ์๋ง ๊ฒฐ์ธก์น์ ํด๋นํ๋ '0.5'๊ฐ์ ๊ฐ๋ ๊ด์ธก์น๋ค์ด ์ ๋ถ target์ด 1์๋ง ํด๋นํ๋ ๊ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค..!
๋์ ๊ณผ์ ์์ ๊ทธ๋ํ๋ฅผ ํตํด Imputer์ ๋ฐ๋ฅธ ๊ฒฐ์ธก์น ๋ค๋ฃจ๋ ์ฐจ์ด์ ์ ํ์ธํ๋ ๊ฒ์ด ์ด ์๋๊ฐ ๋ง๋์ง ์ ํ์น๋ ์์ต๋๋ค..!
์ด์์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. :)
'๐ฟ Data > ์ด๋ชจ์ ๋ชจ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Evaluation metrics for Classification (0) | 2021.12.31 |
---|---|
category_encoders(TargetEncoder, CatBoostEncoder) ๊ทธ๋ฆฌ๊ณ Ordinal๊ณผ OneHot encoder (0) | 2021.12.28 |
Ridge regression, ๋ชจ๋ธ ์ฑ๊ณผ ํ๊ฐ ์งํ, OneHotencoding, feature selection (0) | 2021.12.23 |
์๋ก์ด ํน์ฑ(ํน์ฑ๊ณตํ), ์ด์์น, Scaler, ๋ชจ๋ธ ์ฑ๋ฅ ํฅ์ (0) | 2021.12.23 |
Kaggle_House Sales in King County, USA (0) | 2021.12.21 |