1. ์ง๋ํ์ต๊ณผ ๋น์ง๋ ํ์ต
ex. ๋๋ฏธ์ ๋น์ด๋ฅผ ๊ตฌ๋ถํ๋ ๋ชจ๋ธ
- ์ ๋ ฅ: ๋ฐ์ดํฐ (๊ธธ์ด์ ๋ฌด๊ฒ)
- ํ๊น: ์ ๋ต (์์ ์ ์ข ๋ฅ)
- ์ฆ, ํ๊น์ ์์๋ด์ผ ํ๋ ๊ฒ์ด๋ค.
- ํน์ฑ: ์
๋ ฅ์ผ๋ก ์ฌ์ฉ๋๋ ํน์ง
- ์์ ์ ๊ธธ์ด์ ๋ฌด๊ฒ
- ์ง๋ ํ์ต: ํ๊น์ด ์์ผ๋ฏ๋ก, ์ฆ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ต์ ๋ง์ถ๋ ๋ชจ๋ธ
- ๋น์ง๋ ํ์ต: ํ๊น์์ด ์ ๋ ฅ ๋ฐ์ดํฐ๋ง ํ์ฉ. ๋ฐ์ดํฐ๋ฅผ ํ์ ํ๊ธฐ ์ฝ๊ฒ ํ๊ฑฐ๋ ๋ณํํ ๋ ์ฌ์ฉ
2. ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ
- ํ๋ จ ์ธํธ: ํ๋ จ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
- ํ ์คํธ ์ธํธ: ํ๊ฐ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ
๋ชจ๋ธ์ ๋ํด ์ ํํ๊ฒ ํ ์คํธํ๊ธฐ ์ํด์๋ ํ๋ จ ๋ฐ์ดํฐ์ ํ๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
(์ฐ์ต๋ฌธ์ ์ ์ํ๋ฌธ์ ๊ฐ ๋ฌ๋ผ์ผ ๊ทธ ์ฌ๋์ ์ง์ง ์ค๋ ฅ์ ํ๊ฐํ ์ ์์์ ์๊ฐํ์)
(1) ๋ฐ์ดํฐ ์ค๋น ๋ฐ k-์ต๊ทผ์ ์ด์ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
#๋๋ฏธ์ ๋น์ด ๋ฐ์ดํฐ์
ํฉ์น๊ธฐ
fish_length =[
25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0
]
fish_weight = [
242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0,
700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0,
955.0, 925.0, 975.0, 950.0, 6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9
]
#์์ ์ ๊ธธ์ด์ ๋ฌด์ ๋ฅผ ํ๋์ ๋ฆฌ์คํธ๋ก ๋ด์ 2์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
fish_data = [[l,w] for l, w in zip(fish_length, fish_weight)]
#fish_data์ ๋ํ ๋ ์ด๋ธ๋ง ๋ฆฌ์คํธ ์์ฑ
fish_target = [1]*35 + [0]*20
print(fish_data)
#k-์ต๊ทผ์ ์ด์ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ์ ์ํด ์ธ์ดํท๋ฐ ํจํค์ง๋ก๋ถํฐ ์ํฌํธ
from sklearn.neighbors import KNeighborsClassifier
##k-์ต๊ทผ์ ์ด์ ๋ถ๋ฅ๊ธฐ ์ ์ธ
kn = KNeighborsClassifier()
(2) ํ๋ จ์ธํธ์ ํ ์คํธ ์ธํธ ๋๋๊ธฐ
์ด๋, ํ๋์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ํ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋๋ฏธ์ ๋น์ด๊ฐ ๊ฐ๊ฐ 35๋ง๋ฆฌ, 14๋ง๋ฆฌ ์์ผ๋ฏ๋ก ์ ์ฒด ๋ฐ์ดํฐ๋ 49๊ฐ์ ์ํ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
์ฒ์ 35๊ฐ์ ์ธํธ๋ฅผ ํ๋ จ ์ธํธ๋ก, ๋๋จธ์ง 14๊ฐ๋ฅผ ํ ์คํธ ์ธํธ๋ก ํ์ฉํ๋๋ก ํ๋ค.
// ์ด๋ ๊ฒ ๋๋๋ฉด ๊ฒฐ๊ตญ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์์ธํ ์ด์ผ๊ธฐ๋ ๋ฐ์์
#ํ๋ จ์ธํธ๋ก ์
๋ ฅ๊ฐ ์ค 0๋ถํฐ 34๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ์ฌ์ฉ
train_input = fish_data[:35]
#ํ๋ จ ์ธํธ๋ก ํ๊น๊ฐ ์ค 0๋ถํฐ 34๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ์ฌ์ฉ
train_target = fish_target[:35]
#ํ
์คํธ ์ธํธ๋ก ์
๋ ฅ๊ฐ ์ค 35๋ฒ์งธ๋ถํฐ ๋ง์ง๋ง ์ธ๋ฑ์ค(49)๊น์ง ์ฌ์ฉ
test_input = fish_data[35:]
#ํ
์คํธ ์ธํธ๋ก ํ๊น๊ฐ ์ค 35๋ฒ์งธ๋ถํฐ ๋ง์ง๋ง ์ธ๋ฑ์ค(49)๊น์ง ์ฌ์ฉ
test_target = fish_target[35:]
ํ์ด์ฌ ๋ฆฌ์คํธ์ ์ฌ๋ผ์ด์ฑ (:)
(3) ํ๋ จ ๋ฐ ํ ์คํธ
์ด๋ ๊ฒ ์ค๋นํ ํ๋ จ ์ธํธ(train_)์ ํ ์คํธ ์ธํธ(test_)๋ก ํ๋ จ(fit())๊ณผ ํ ์คํธ(score())์ ์งํํด๋ณธ๋ค.
์ ํ๋๋ฅผ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ 0์ด ๋์จ๋ค.
๊ทธ ์ด์ ๋, ํ๋ จ์ธํธ์ ํ ์คํธ ์ธํธ๋ก ๋๋๋ ๊ณผ์ ์์ ํ๋ จ์ธํธ๋ก 35๊ฐ๋ฅผ ์ฐ๊ณ ๋๋จธ์ง 14๊ฐ๋ฅผ ํ ์คํธ ์ธํธ๋ก ์ฐ๊ฒ ๋์ด ํ๋ จ์ธํธ์๋ ๋๋ฏธ ์ํ๋ง ๋ค์ด๊ฐ๊ณ , ํ ์คํธ ์ธํธ์๋ ๋น์ด ์ํ๋ง ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ์ ์ํ์ด ๊ณจ๊ณ ๋ฃจ ์์ฌ์์ง ์๋ ๊ฒ์ ์ํ๋ง์ด ํ ์ชฝ์ผ๋ก ์น์ฐ์ณค๋ค๋ ์๋ฏธ๋ก ์ํ๋ง ํธํฅ์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋ผ์, ํ๋ จ์ธํธ์๋ ๋๋ฏธ์ ๋น์ด ์ํ์ด ์ ์ ํ ์์ฌ์๊ณ
ํ ์คํธ ์ธํธ์๋ ๋๋ฏธ์ ๋น์ด ์ํ์ด ์ ์ ํ ์์ฌ์๋๋ก ์์ ํด์ผ ํ๋ค.
numpy (๋ํ์ด) ๋ผ์ด๋ธ๋ฌ๋ฆฌ
: ํ์ด์ฌ์ ๋ํ์ ์ธ ๋ฐฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฆฌ์คํธ๋ 2์ฐจ์ ํํ์ ํ์ ๋์ง๋ง, ๋ํ์ด๋ ๋ค์ฐจ์์ ์ง์ํ๋ค.
๋ํ, ๋ฐฐ์ด์ ์ฐจ์์ ๊ตฌ๋ถํ๊ธฐ ์ฝ๋๋ก ํ๊ณผ ์ด์ ๊ฐ์ง๋ฐํ ์ถ๋ ฅํด์ค๋ค.
๋ฐฐ์ด์ shape ์์ฑ์ ๋ฐฐ์ด์ ๊ฐ์์ ์์์ ์๋ฅผ ์๋ ค์ค๋ค.
(4) ์ ์ ํ๊ฒ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ ๋๋๊ธฐ
์์ ๋ฐ์ดํฐ๋ฅผ ๋ํ์ด ๋ฐฐ์ด๋ก ์ค๋นํ ๋ค ์ด ๋ฐฐ์ด์์ ๋๋คํ๊ฒ ์ํ์ ์ ํํด ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ๋ฅผ ๋ง๋ ๋ค.
์ด๋, ๋ฐฐ์ด์ ์์ ํ์ ๋๋๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ง๋ง ์ฌ๊ธฐ์์๋ ๋ฌด์์๋ก ์ํ์ ๊ณ ๋ฅด๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
์ฃผ์ํด์ผ ํ ๊ฒ์ input_arr๊ณผ target_arr์์ ๊ฐ์ ์์น๋ ํจ๊ป ์ ํ๋์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
(input_arr์ ๋๋ฒ์งธ ๊ฐ์ ํ๋ จ ์ธํธ๋ก ๊ฐ๊ณ , target_arr์ ๋๋ฒ์งธ ๊ฐ์ ํ ์คํธ ์ธํธ๋ก ๊ฐ๋ฉด ์๋๋ค. ๋์ ์ง๊ฟ์ด๋๊น..)
๋ฐ๋ผ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ์ด๋ฅผ ๋ฌด์์๋ก ์๋ ๋ฐฉ์์ ํตํด ํ๋ จ์ธํธ์ ํ ์คํธ ์ธํธ๋ฅผ ์ ์ ํ๊ฒ ๋ง๋ค์ด์ค ๊ฒ์ด๋ค.
๋ํ์ด arrange()ํจ์๋ ์ ์ N์ ์ ๋ฌํ๋ฉด 0์์๋ถํฐ N-1๊น์ง 1์ฉ ์ฆ๊ฐํ๋ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
๋ฐ๋ผ์ ๋ํ์ด arrange()ํจ์์ 49๋ฅผ ์ ๋ฌํ์ฌ 0์์๋ถํฐ 48๊น์ง 1์ฉ ์ฆ๊ฐํ๋๋ก ๋ง๋ค์ด์ค๋ค.
๊ทธ ์ดํ ์ธ๋ฑ์ค๋ฅผ ๋๋คํ๊ฒ ์์ด์ค๋ค.
(5) ๊ฐ์ ๋ ๋จธ์ ๋ฌ๋ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
์ด๋ ๊ฒ ๋ง๋ 0~48๋ก ์ด๋ฃจ์ด์ง ๋ฌด์์ ๋ฐฐ์ด index๋ฅผ ํตํด ํ๋ จ์ธํธ์ ํ ์คํธ ์ธํธ๋ฅผ ๋ถ๋ฆฌํด์ค๋ค.
(6) ์ฐ์ ๋ ๊ทธ๋ ค๋ณด๊ธฐ
ํ๋ จ ์ธํธ(ํ๋)์ ํ ์คํธ ์ธํธ(์ฃผํฉ)์ ์ฐ์ ๋๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด,
๋น์ด ๋ฐ์ดํฐ์ ๋๋ฏธ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ๊ฒ ์์ฌ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
(7) ์ฌํ๋ จ ๋ฐ ํ ์คํธ
์ฌํ๋ จ ํ ํ ์คํธ๋ฅผ ํด๋ณด๋ฉด 1.0์ด ๋์จ๋ค. (100%์ ์ ํ๋๋ฅผ ๋ณด์ธ๋ค.)
(8) ์์ธก ๊ฒฐ๊ณผ์ ์ค์ ํ๊น ํ์ธํด๋ณด๊ธฐ - predict()
ํ์ธ ๊ฒฐ๊ณผ ์์ธก ๊ฒฐ๊ณผ์ ์ค์ ํ๊น์ ์ ๋ณด๊ฐ ๋์ผํ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์ด๋, predict()์ ๊ฒฐ๊ณผ ๊ฐ์ด test_target ์ ์ถ๋ ฅ๊ณผ ๋์ผํ๊ฒ array()๋ก ๊ฐ์ธ์ ธ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ ๋ํ์ด ๋ฐฐ์ด์ ์๋ฏธํ๋๋ฐ, ์ฌ์ค ์ธ์ดํท๋ฐ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ชจ๋ ๋ํ์ด ๋ฐฐ์ด์ด๋ค.
์ด์ฒ๋ผ ๋ํ์ด๋ ๋ง์ ํ์ด์ฌ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๋ ํ์ค ๋ฐ์ดํฐ์ด๋ค.