์ฃผ์ ๋จ๊ณ
1. ํฐ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ
2. ๋ฐ์ดํฐ ๊ตฌํ๊ธฐ
3. ๋ฐ์ดํฐ ์ธ์ฌ์ดํธ๋ฅผ ์ํ ํ์, ์๊ฐํ
4. ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ํ ๋ฐ์ดํฐ ์ค๋น
5. ๋ชจ๋ธ ์ ํํ๊ณ ํ๋ จ, ์์ธํ ์กฐ์
6. ์๋ฃจ์ ์ ์
7. ์์คํ ๋ฐ์นญ, ๋ชจ๋ํฐ๋ง, ์ ์ง๋ณด์
๋ค๋ฅธ ์ธก์ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ก์ ๋ ๊ตฌ์ญ์ ์ค๊ฐ ์ฃผํ ๊ฐ๊ฒฉ ์์ธกํ๊ธฐ
1. ๋ฌธ์ ์ ์
์ ํธ : ๋จธ์ ๋ฌ๋ ์์คํ ์ ์ฃผ์ ํ๋ ์ ๋ณด
ํ์ดํ๋ผ์ธ
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ปดํฌ๋ํธcomponent๋ค์ด ์ฐ์๋์ด ์๋ ๊ฒ์ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธpipeline์ด๋ผ๊ณ ํฉ๋๋ค.
๋ณดํต ์ปดํฌ๋ํธ๋ค์ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํฉ๋๋ค.
๊ฐ ์ปดํฌ๋ํธ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด ์ฒ๋ฆฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ๋ณด๋ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ผ์ ์๊ฐ ํ ํ์ดํ๋ผ์ธ์ ๋ค์ ์ปดํฌ๋ํธ๊ฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด ์์ ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋๋ ์์ ๋๋ค.
๊ฐ ์ปดํฌ๋ํธ๋ ์์ ํ ๋ ๋ฆฝ์ ์ ๋๋ค. ์ฆ, ์ปดํฌ๋ํธ ์ฌ์ด์ ์ธํฐํ์ด์ค๋ ๋ฐ์ดํฐ ์ ์ฅ์๋ฟ์ ๋๋ค.
์ด๋ (๋ฐ์ดํฐ ํ๋ฆ๋ ๋๋ถ์) ์์คํ ์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ณ , ๊ฐ ํ์ ๊ฐ์์ ์ปดํฌ๋ํธ์ ์ง์คํ ์ ์์ต๋๋ค.
ํ ์ปดํฌ๋ํธ๊ฐ ๋ค์ด๋๋๋ผ๋ ํ์ ์ปดํฌ๋ํธ๋ ๋ฌธ์ ๊ฐ ์๊ธด ์ปดํฌ๋ํธ์ ๋ง์ง๋ง ์ถ๋ ฅ์ ์ฌ์ฉํด (์ ์ด๋ ํ๋์์) ํ์์์ ๊ฐ์ด ๊ณ์ ๋์ํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์์คํ ์ด ๋งค์ฐ ๊ฒฌ๊ณ ํด์ง๋๋ค.
ํํธ ๋ชจ๋ํฐ๋ง์ด ์ ์ ํ ๋์ง ์์ผ๋ฉด ๊ณ ์ฅ ๋ ์ปดํฌ๋ํธ๋ฅผ ํ๋์ ๋ชจ๋ฅผ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง๋ค์ด์ง์ง ์ค๋ ๋๋ฉด ์ ์ฒด ์์คํ ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค.
์ง๋ ํ์ต, ๋น์ง๋ ํ์ต, ๊ฐํ ํ์ต ์ค ๋ฌด์์ผ๊น์? ๋ถ๋ฅ๋ ํ๊ท์ธ๊ฐ์ ์๋๋ฉด ๋ค๋ฅธ ์ด๋ค ์์ ์ธ๊ฐ์?
๋ฐฐ์น ํ์ต๊ณผ ์จ๋ผ์ธ ํ์ต ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋์?
๋ ์ด๋ธ๋ ํ๋ จ ์ํ์ด ์์ผ๋ ์ง๋ํ์ต, ์์ธกํด์ผํ๊ณ ์ด๋ ํน์ฑ์ด ์ฌ๋ฌ ๊ฐ์ด๋ฏ๋ก ๋ค์คํ๊ท, ๊ฐ ๊ตฌ์ญ๋ง๋ค ํ๋์ ๊ฐ ์์ธกํ๋ฏ๋ก ๋จ๋ณ๋ ํ๊ท, ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ๋ฐฐ์น ํ์ต
2. ์ฑ๋ฅ ์ธก์ ์งํ ์ ํ
ํ๊ท ๋ฌธ์ ์ ์ ํ์ ์ธ ์ฑ๋ฅ ์งํ๋ ํ๊ท ์ ๊ณฑ๊ทผ ์ค์ฐจRoot Mean Square Error (RMSE). ์ค์ฐจ๊ฐ ์ปค์ง์๋ก ์ด ๊ฐ์ ๋์ฑ ์ปค์ง๋ฏ๋ก ์์ธก์ ์ผ๋ง๋ ๋ง์ ์ค๋ฅ๊ฐ ์๋์ง ๊ฐ๋ ํ๊ฒ ํด์ค๋ค.
์ด์์น๊ฐ ๋ง์ ๋ ํ๊ท ์ ๋ ์ค์ฐจ ์ฌ์ฉ
3. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
housing.head() ์ฒ์ 5๊ฐ ํ๋ง
housing.info() ๋ฐ์ดํฐ ์์ฝ ๋ณด๊ธฐ
housing.describe() ์ซ์ํ ํน์ฑ์ ์์ฝ ์ ๋ณด
%matplotlib inline
import matplotlib.pyplot as plt
housing.hist(bins=50, figsize=(20,15))
save_fig("attribute_histogram_plots")
plt.show()
hist() ์ซ์ํ ๋ฒ์ฃผ์ ๋ํ ํ์คํ ๊ทธ๋จ ์ถ๋ ฅ
ํ์คํ ๊ทธ๋จ์์ ํ์ธํ ์ ์๋ ์ฌํญ
- ๋จผ์ ์ค๊ฐ ์๋median income ํน์ฑ์ด US ๋ฌ๋ฌ๋ก ํํ๋์ด ์์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.18 ๋ฐ์ดํฐ๋ฅผ ์ทจํฉํ ํ์ ํ์ธํด๋ณด๋ ์ค์ผ์ผ์ ์กฐ์ ํ๊ณ , ์ํ์ด 15(์ค์ ๋ก๋ 15.0001), ํํ์ด 0.5(์ค์ ๋ก๋ 0.4999)๊ฐ ๋๋๋ก ๋ง๋ค์๋ค๊ณ ํฉ๋๋ค. ๋จธ์ ๋ฌ๋์์๋ ์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ํํ๊ณ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ง๋ ์์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๊ณ์ฐ๋ ๊ฒ์ธ์ง ๋ฐ๋์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค.
- ์ค๊ฐ ์ฃผํ ์ฐ๋housing median age์ ์ค๊ฐ ์ฃผํ ๊ฐ๊ฒฉmedian house value ์ญ์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ํ์ ํ์ต๋๋ค.19 ์ค๊ฐ ์ฃผํ ๊ฐ๊ฒฉ์ ๊ฒฝ์ฐ๋ ํ๊น ์์ฑ(๋ ์ด๋ธ)์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ฐ๊ฒฉ์ด ํ๊ณ๊ฐ์ ๋์ด๊ฐ์ง ์๋๋ก ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ต๋ ์ง๋ ๋ชจ๋ฆ
๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ง ์ ๋ ์ง๋ ํด๋ผ์ด์ธํธ ํ(์ด ์์คํ
์ ์ถ๋ ฅ์ ์ฌ์ฉํ ํ)๊ณผ ํจ๊ป ๊ฒํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ง์ฝ ๊ทธ ํ์์ $500,000๋ฅผ ๋์ด๊ฐ๋๋ผ๋ ์ ํํ ์์ธก๊ฐ์ด ํ์ํ๋ค๊ณ ํ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง์
๋๋ค.
- ํ๊ณ๊ฐ ๋ฐ์ ๊ตฌ์ญ์ ๋ํ ์ ํํ ๋ ์ด๋ธ์ ๊ตฌํฉ๋๋ค.
- ํ๋ จ ์ธํธ์์ ์ด๋ฐ ๊ตฌ์ญ์ ์ ๊ฑฐํฉ๋๋ค($500,000๊ฐ ๋๋ ๊ฐ์ ๋ํ ์์ธก์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ๋งค์ฐ ๋์ ๊ฒ์ด๋ฏ๋ก ํ ์คํธ ์ธํธ์์๋ ์ ๊ฑฐํฉ๋๋ค).
- ํน์ฑ๋ค์ ์ค์ผ์ผ์ด ์๋ก ๋ง์ด ๋ค๋ฆ ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ๋ง์ ํ์คํ ๊ทธ๋จ์ ๊ผฌ๋ฆฌ๊ฐ ๋๊ป์ต๋๋ค. ๊ฐ์ด๋ฐ์์ ์ผ์ชฝ๋ณด๋ค ์ค๋ฅธ์ชฝ์ผ๋ก ๋ ๋ฉ๋ฆฌ ๋ป์ด ์์ต๋๋ค. ์ด๋ฐ ํํ๋ ์ผ๋ถ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์์ ํจํด์ ์ฐพ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๋์ค์ ์ด๋ฐ ํน์ฑ๋ค์ ์ข ๋ ์ข ๋ชจ์์ ๋ถํฌ๊ฐ ๋๋๋ก ๋ณํ์ํค๊ฒ ์ต๋๋ค.
4. ํ ์คํธ ์ธํธ ๋ง๋ค๊ธฐ
๋ฌด์์๋ก ์ํ ์ ํํด ๋ฐ์ดํฐ์ ์ 20%์ ๋๋ฅผ ๋ผ์ด๋๊ธฐ
ํ๋ จ์ธํธ 16512๊ฐ
ํ ์คํธ ์ธํธ 4128๊ฐ
์ด๊ฒ๋ ๊ด์ฐฎ์ง๋ง ์๋ฒฝํ์ง๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ๋ค์ ์คํํ๋ฉด ๋ค๋ฅธ ํ ์คํธ ์ธํธ๊ฐ ์์ฑ๋ฉ๋๋ค! ์ฌ๋ฌ ๋ฒ ๊ณ์ํ๋ฉด ์ฐ๋ฆฌ๋(๋๋ ์ฐ๋ฆฌ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด) ์ ์ฒด ๋ฐ์ดํฐ์ ์ ๋ณด๋ ์ ์ด๋ฏ๋ก ์ด๋ฐ ์ํฉ์ ํผํด์ผ ํฉ๋๋ค.
ํ ๊ฐ์ง ํด๊ฒฐ์ฑ ์ ์ฒ์ ์คํ์์ ํ ์คํธ ์ธํธ๋ฅผ ์ ์ฅํ๊ณ ๋ค์๋ฒ ์คํ์์ ์ด๋ฅผ ๋ถ๋ฌ๋ค์ด๋ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํญ์ ๊ฐ์ ๋์ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋๋๋ก np.random.permutation()์ ํธ์ถํ๊ธฐ ์ ์ ๋์ ๋ฐ์๊ธฐ์ ์ด๊น๊ฐ์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค(์๋ฅผ ๋ค๋ฉด np.random.seed(42)20).
ํ์ง๋ง ์ด ๋ ํด๋ฒ ๋ชจ๋ ๋ค์๋ฒ์ ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ํ์ ์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ์ธํธ๋ก ๋ณด๋ผ์ง ๋ง์ง ์ ํ๋ ๊ฒ์ ๋๋ค(์ํ์ด ๊ณ ์ ํ๊ณ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค).
์๋ฅผ ๋ค์ด ๊ฐ ์ํ๋ง๋ค ์๋ณ์์ ํด์๊ฐ์ ๊ณ์ฐํ์ฌ ํด์์ ๋ง์ง๋ง ๋ฐ์ดํธ์ ๊ฐ์ด 51(256์ 20% ์ ๋)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ํ๋ง ํ ์คํธ ์ธํธ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ์คํ๋๋ฉด์ ๋ฐ์ดํฐ์ ์ด ๊ฐฑ์ ๋๋๋ผ๋ ํ ์คํธ ์ธํธ๊ฐ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ์๋ก์ด ํ ์คํธ ์ธํธ๋ ์ ์ํ์ 20%๋ฅผ ๊ฐ๊ฒ ๋์ง๋ง ์ด์ ์ ํ๋ จ ์ธํธ์ ์๋ ์ํ์ ํฌํจ์ํค์ง ์์ ๊ฒ์ ๋๋ค. ๋ค์์ ์ด๋ฅผ ๊ตฌํํ ์ฝ๋์ ๋๋ค.
from zlib import crc32
def test_set_check(identifier, test_ratio):
return crc32(np.int64(identifier)) & 0xffffffff < test_ratio * 2**32
def split_train_test_by_id(data, test_ratio, id_column):
ids = data[id_column]
in_test_set = ids.apply(lambda id_: test_set_check(id_, test_ratio))
return data.loc[~in_test_set], data.loc[in_test_set]
๋ฌด์์ ์ํ๋ง ๋ฐฉ์ โ
ํ ์คํธ ์ธํธ๊ฐ ์ ์ฒด ๋ฐ์ดํฐ์ ์ ์๋ ์ฌ๋ฌ ์๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ๋ํํด์ผ ํฉ๋๋ค. ์ค๊ฐ ์๋์ด ์ฐ์์ ์ธ ์ซ์ํ ํน์ฑ์ด๋ฏ๋ก ์๋์ ๋ํ ์นดํ ๊ณ ๋ฆฌ ํน์ฑ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ค๊ฐ ์๋์ ํ์คํ ๊ทธ๋จ์ ์กฐ๊ธ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค([๊ทธ๋ฆผ 2-8] ์ฐธ์กฐ). ์ค๊ฐ ์๋ ๋๋ถ๋ถ์ $20,000~$50,000 ์ฌ์ด์ ๋ชจ์ฌ ์์ง๋ง ์ผ๋ถ๋ $60,000๋ฅผ ๋๊ธฐ๋ ํฉ๋๋ค. ๊ณ์ธต๋ณ๋ก ๋ฐ์ดํฐ์ ์ ์ถฉ๋ถํ ์ํ ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ณ์ธต์ ์ค์๋๋ฅผ ์ถ์ ํ๋ ๋ฐ ํธํฅ์ด ๋ฐ์ํ ๊ฒ์ ๋๋ค. ์ด ๋ง์ ๋๋ฌด ๋ง์ ๊ณ์ธต์ผ๋ก ๋๋๋ฉด ์ ๋๋ค๋ ๋ป์ด๊ณ ๊ฐ ๊ณ์ธต์ด ์ถฉ๋ถํ ์ปค์ผ ํฉ๋๋ค.
income_cat์ 5๊ตฌ๊ฐ์ผ๋ก ๋๋์ด ๋ฃ๋๋ค
๊ฐ ๋ฒ์๋ฅผ ๋ ์ด๋ธ๋ก ์ ๋ฆฌ
์๋ ์นดํ ๊ณ ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ธต ์ํ๋ง
ํ ์คํธ ์ธํธ์ ํ๋ จ์ธํธ์๋ ๋น์จ ๋น์ทํ๊ฒ ์ ์ง
oR
'๋ฅ๋ฌ๋ > Today I learned :' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฅ๋ฌ๋]์ ๊ฒฝ๋ง (w. Keras) , ํผ์ ํธ๋ก , ํ์ฑํ ํจ์(์๊ทธ๋ชจ์ด๋, ReLU) (0) | 2022.07.24 |
---|---|
๊ธฐ๊ณํ์ต๊ณผ ๋ฐ์ดํฐ๋ง์ด๋ (0) | 2022.07.24 |
๋จธ์ ๋ฌ๋ ์ ๋ฆฌ 1์ฅ (0) | 2021.07.26 |
๋จธ์ ๋ฌ๋์ ์ฃผ์ ๋์ ๊ณผ์ (0) | 2021.07.24 |
๋จธ์ ๋ฌ๋ ๋ถ๋ฅ 2 (0) | 2021.07.23 |