ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
ํ์ฉ ๋ฐ์ดํฐ
data.txt
๋๋ฏธ, ๋น์ด ๊ธธ์ด, ๋ฌด๊ฒ ๋ฐ์ดํฐ
๋ฐ์ดํฐ ์ฒ๋ฆฌ
### - ๋น์ด์ ๋๋ฏธ ๋ฐ์ดํฐ
# - ์์ ์ ์ข
๋ฅ๋ฅผ ๋ถ๋ฅ(๊ตฌ๋ถ)ํ๊ธฐ ์ํ ๋ชจ๋ธ ์์ฑ์ ์ํด
# - ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํด์ผ ํจ
# - ๋
๋ฆฝ๋ณ์(x) : ๊ธธ์ด, ๋ฌด๊ฒ
# - ์ข
์๋ณ์(y) : ์์ ์ข
๋ฅ(๋น์ด ๋๋ ๋๋ฏธ)
ํ๋ จ๋ชจ๋ธ ์ฒ๋ฆฌ ์ ์ฐจ
1. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
2. ๋ฐ์ดํฐ ์ ๊ทํ
3. ํ๋ จ : ๊ฒ์ฆ : ํ
์คํธ ๋ฐ์ดํฐ๋ก ๋ถ๋ฅ (๋๋ ํ๋ จ : ํ
์คํธ ๋ฐ์ดํฐ๋ก ๋ถ๋ฅ)
- 6 : 2 : 2 ๋๋ 7 : 2 : 1, ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ์๋ 8 : 2 ๋๋ 7 : 3 ์ ๋๋ก ๋ถ๋ฅ
4. ๋ชจ๋ธ ์์ฑ
5. 5. ๋ชจ๋ธ ํ๋ จ(fit) (ํ๋ จ ๋ฐ์ดํฐ์ ๊ฒ์ฆ ๋ฐ์ดํฐ ์ฌ์ฉ, ๋๋ ํ
์คํธ ๋ฐ์ดํฐ)
6. ๋ชจ๋ธ ํ๊ฐ (๋ชจ๋ธ ์ ์ )
7. ํ์ดํผํ๋ผ๋ฉํฐ ํ๋
8. 5๋ฒ~6๋ฒ ์งํ
9. ์ต์ข
ํ
์คํธ (์์ธก, predict) (ํ
์คํธ ๋ฐ์ดํฐ ๋๋ ์๋ก์ด ๋ฐ์ดํฐ๋ก ์ฌ์ฉ)
๋ผ์ด๋ธ๋ฌ๋ฆฌ
### ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import matplotlib.pyplot as plt
๋ฐ์ดํฐ ๋ถ๋ฌ๋ค์ด๊ธฐ
### ๋ฐ์ดํฐ ๋ถ๋ฌ๋ค์ด๊ธฐ
# - ๋๋ฏธ ๊ธธ์ด(cm)
bream_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]
# - ๋๋ฏธ ๋ฌด๊ฒ(g)
bream_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]
len(bream_length), len(bream_weight)
๋ฐ์ดํฐ ๋ถํฌ ํ์ธํ๊ธฐ
๋๋ฏธ ๋ฐ์ดํฐ ์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ : scatter()
### ์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ : scatter()
# - x์ถ์๋ ๊ธธ์ด, y์ถ์๋ ๋ฌด๊ฒ
# - ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก, ๋ฌด๊ฒ๊ฐ ์ปค์ง๊น?
plt.scatter(bream_length, bream_weight)
plt.xlabel("length")
plt.ylabel("weight")
plt.show()
ํด์
# - ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก ๋ฌด๊ฒ๊ฐ ์ปค์ง๋ ํน์ง์ ๊ฐ์ง๊ณ ์์
# - ๋ถํฌ์ ๋ฐฉํฅ์ ์(+)์ ์๊ด๊ด๊ณ๋ฅผ ๋ํ๋ด๊ณ ์์
# - ์(+)์ ์๊ด๊ด๊ณ๋ฅผ ์ฐ์ํฅ ๋ถํฌ๋ผ๊ณ ์นญํฉ๋๋ค.
# - ์ฐ์ํฅ ๋ถํฌ๋ฅผ ์ ํ ํํ๋ผ๊ณ ๋ ์นญํฉ๋๋ค.
# - ๋ชจ๋ธ์ ๋ถ์ํ๋ ์
์ฅ์์๋ ์ ํ ํํ๋ฅผ ๋ํ๋ธ๋ค๊ณ ํด์ํ๋ฉฐ,
# -> ์ ํํํ์ ๋ํ ๋ถ์์ ํ๊ท๋ถ์์ ์ฌ์ฉํฉ๋๋ค.
# - ์ ํํํ = ํ๊ท๋ถ์,
# -> ๋๋ฏธ์ ์์ ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ชจ๋ธ ์ฌ์ฉ
# -> ๊ตฌ๋ถ = ๋ถ๋ฅ
# -> ๋ถ๋ฅ ๋ชจ๋ธ์ ์ด์ฉํด์ ์งํ์ ํฉ๋๋ค.
# - ์๊ณ ์๋ ์ ๋ณด : ๊ธธ์ด, ๋ฌด๊ฒ, ์์ ์ด๋ฆ
๋น์ด ๋ฐ์ดํฐ ์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ : scatter()
### ๋ฐ์ดํฐ์ ํํ ํ์ธํ๊ธฐ (์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ)
### ๋น์ด๋ฐ์ดํฐ ์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ : scatter()
# - x์ถ์๋ ๊ธธ์ด, y์ถ์๋ ๋ฌด๊ฒ
# - ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก, ๋ฌด๊ฒ๊ฐ ์ปค์ง๊น?
plt.scatter(smelt_length, smelt_weight)
plt.xlabel("length")
plt.ylabel("weight")
plt.show()
๋๋ฏธ์ ๋น์ด ๋ฐ์ดํฐ ์ฐ์ ๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ : scatter()
### ๋๋ฏธ์ ๋น์ด์ ๋ถํฌ ํ์ธํ๊ธฐ(์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ)
plt.scatter(bream_length, bream_weight, c="red", label="bream")
plt.scatter(smelt_length, smelt_weight, c="blue", label="smelt")
plt.xlabel("length")
plt.ylabel("weight")
plt.legend()
plt.show()
ํด์
### ๋๋ฏธ์ ๋น์ด ๋น๊ต
# - ๋๋ฏธ์ ๋น์ด ๋ชจ๋ ์ฐ์ํฅ ๋ถํฌ๋ฅผ ๋ํ๋ด๊ณ ์์ผ๋ฉฐ,
# - ๋๋ฏธ ๋ฐ์ดํฐ๋ ๊ฒฝ์ฌ๊ฐ ๊ธํ ๋ฐ๋ฉด, ๋น์ด ๋ฐ์ดํฐ๋ ๊ฒฝ์ฌ๊ฐ ์๋งํ๊ฒ ๋ถํฌ๋์ด ์์
์์ ๋ถ๋ฅํ๊ธฐ (๋๋ฏธ์ ๋น์ด ๊ตฌ๋ถํ๊ธฐ)
K์ต๊ทผ์ ์ด์ ๋ชจ๋ธ ์ฌ์ฉ
# - KNN : K์ต๊ทผ์ ์ด์ ๋ชจ๋ธ
# - ๋จธ์ ๋ฌ๋์์ ๊ฐ์ฅ ๊ฐ๋จํ ๋ชจ๋ธ
# - ๋น๊ต์ฉ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ชจ๋ธ (์ค์ ์ฌ์ฉ๋๊ธฐ์๋ ์ฑ๋ฅ์ด ์ฝํ ๋ชจ๋ธ)
KNN ์ฒ๋ฆฌ ๋ฐฉ์
# - ์์ธกํ๊ณ ์ ํ๋ ๊ฐ๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์ ๊ฐฏ์์ ๋น์จ(๋๋ ํ๊ท )์ ์ด์ฉํ์ฌ,
# - ๋น์จ์ด ๊ฐ์ฅ ๋ง์ ์ชฝ (๋ค์๊ฒฐ์ ์์น์ ๋ฐ๋ฆ)์ ๊ฐ์ผ๋ก ํ๋จํ๋ ๋ฐฉ์
๋ฐ์ดํฐ ํตํฉํ๊ธฐ
### ๋ฐ์ดํฐ ํตํฉํ๊ธฐ
# - ๋๋ฏธ์ ๋น์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ํ๋์ ๊ธธ์ด์ ๋ฌด๊ฒ ๋ฐ์ดํฐ๋ก ํตํฉํ๊ธฐ
# - ๊ธธ์ด(Length)
length = bream_length + smelt_length
# - ๋ฌด๊ฒ(weight)
weight = bream_weight + smelt_weight
len(length), len(weight)
๋ฐ์ดํฐ ์ฐจ์
### ๋จธ์ ๋ฌ๋์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ฐจ์์ 2์ฐจ์
# - ๋
๋ฆฝ๋ณ์(๊ธธ์ด์ ๋ฌด๊ฒ)
# -> ๋
๋ฆฝ๋ณ์๋ 2์ฐจ์ ๋ฐ์ดํฐ ํํ
# - ์ข
์๋ณ์(์์ ์ด๋ฆ)
# -> ์ข
์๋ณ์๋ 1์ฐจ์ ๋ฐ์ดํฐ ํํ
๋ ๋ฆฝ๋ณ์(๊ธธ์ด์ ๋ฌด๊ฒ) ์์ฑํ๊ธฐ
### ๋
๋ฆฝ๋ณ์(๊ธธ์ด์ ๋ฌด๊ฒ) ์์ฑํ๊ธฐ
# - 2์ฐจ์์ผ๋ก ์์ฑ : [[๊ธธ์ด, ๋ฌด๊ฒ], [๊ธธ์ด, ๋ฌด๊ฒ].....]
fish_data = [[l, w]for l, w in zip(length, weight)]
print(fish_data)
len(fish_data)
์ข ์๋ณ์(์์ ์ด๋ฆ) ์์ฑํ๊ธฐ
### ์ข
์๋ณ์(์์ ์ด๋ฆ) ์์ฑํ๊ธฐ
# - 1์ฐจ์์ผ๋ก ์์ฑํฉ๋๋ค. : ["๋๋ฏธ", "๋๋ฏธ"..."๋น์ด"]
### ์ข
์๋ณ์๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํํ : ์ ์ํ์ ์ฃผ๋ก ์ฌ์ฉ
# - ๋ฒ์ฃผ ๊ฐ์ ๊ฐฏ์์ ๋ฐ๋ผ : 0~n ๊ฐ์ ์ฌ์ฉ
# - ์ด์ง๋ถ๋ฅ : 0 ๋๋ 1 ์ฌ์ฉ
# - ๋ค์ค๋ถ๋ฅ : 0~n๊ฐ ์ฌ์ฉ
### - ๋๋ฏธ : ๋น์ด = 1 : 0
# - ์ด์ง๋ถ๋ฅ์์๋ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ 1๋ก ์ ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ๊ฐ๋
์ด๋ค.
# - ๋ค๋ง, ์ด๋ค ๊ฐ์ ์ฌ์ฉํ์ฌ๋ ๋ฌด๊ด
### ์ข
์๋ณ์(์์ ์ด๋ฆ) ์์ฑํ๊ธฐ
# - 1์ฐจ์์ผ๋ก ์์ฑํฉ๋๋ค. : ["๋๋ฏธ", "๋๋ฏธ"..."๋น์ด"]
### ์ข
์๋ณ์๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํํ : ์ ์ํ์ ์ฃผ๋ก ์ฌ์ฉ
# - ๋ฒ์ฃผ ๊ฐ์ ๊ฐฏ์์ ๋ฐ๋ผ : 0~n ๊ฐ์ ์ฌ์ฉ
# - ์ด์ง๋ถ๋ฅ : 0 ๋๋ 1 ์ฌ์ฉ
# - ๋ค์ค๋ถ๋ฅ : 0~n๊ฐ ์ฌ์ฉ
### - ๋๋ฏธ : ๋น์ด = 1 : 0
# - ์ด์ง๋ถ๋ฅ์์๋ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ 1๋ก ์ ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ๊ฐ๋
์ด๋ค.
# - ๋ค๋ง, ์ด๋ค ๊ฐ์ ์ฌ์ฉํ์ฌ๋ ๋ฌด๊ด
fish_target = [1]*35 + [0]*14
print(fish_target)
len(fish_target)
๋ชจ๋ธ ์์ฑํ๊ธฐ
from sklearn.neighbors import KNeighborsClassifier
๋ชจ๋ธ(ํด๋์ค) ์์ฑ์ํค๊ธฐ
### ๋ถ๋ฅ๋ชจ๋ธ(ํด๋์ค) ์์ฑ์ํค๊ธฐ
kn = KNeighborsClassifier()
kn
๋ชจ๋ธ ํ๋ จ(ํ์ต) ์ํค๊ธฐ
# - KNN์ ์ง๋ํ์ต ๋ชจ๋ธ : ๋
๋ฆฝ๋ณ์์ ์ข
์๋ณ์ ๋ชจ๋ ์ฌ์ฉ
# - ํ๋ จ(ํ์ต)์ํค๋ ํจ์ : fit()
kn.fit(fish_data, fish_target)
ํ๋ จ ์ ํ๋ ํ์ธํ๊ธฐ
๋ชจ๋ธ ํ๋ จ(ํ์ต)์ด ์ ๋์๋์ง ํ์ธํ๋ ์ ์ฐจ
# - score() ์ ํ๋ ํ์ธํ๋ ํจ์
# - ์ฒซ๋ฒ์งธ ๊ฐ : ์์ธกํ๊ณ ์ํ๋ ๊ฐ
# - ๋๋ฒ์ฌ ๊ฐ : ์ค์ ์ ๋ต
# - score()ํจ์๋ ์ฒซ๋ฒ์งธ ๊ฐ๋ง ์ด์ฉํด์ ํ๋ จ๋ชจ๋ธ์ ํจํด์ ์ ์ฉํ์ฌ ์์ธก๊ฒฐ๊ณผ๋ฅผ ์ถ์ถ
# - ์ถ์ถ๋ ์์ธก๊ฒฐ๊ณผ์ ๋๋ฒ์งธ๊ฐ(์ค์ ์ ๋ต)๊ณผ ๋น๊ตํ์ฌ ์ผ๋ง๋ ์ ๋ง์ถ์๋์ง ๋น๊ต
### ๋ชจ๋ธ ํ๋ จ(ํ์ต)์ด ์ ๋์๋์ง ํ์ธํ๋ ์ ์ฐจ
# - score() ์ ํ๋ ํ์ธํ๋ ํจ์
# - ์ฒซ๋ฒ์งธ ๊ฐ : ์์ธกํ๊ณ ์ํ๋ ๊ฐ
# - ๋๋ฒ์ฌ ๊ฐ : ์ค์ ์ ๋ต
# - score()ํจ์๋ ์ฒซ๋ฒ์งธ ๊ฐ๋ง ์ด์ฉํด์ ํ๋ จ๋ชจ๋ธ์ ํจํด์ ์ ์ฉํ์ฌ ์์ธก๊ฒฐ๊ณผ๋ฅผ ์ถ์ถ
# - ์ถ์ถ๋ ์์ธก๊ฒฐ๊ณผ์ ๋๋ฒ์งธ๊ฐ(์ค์ ์ ๋ต)๊ณผ ๋น๊ตํ์ฌ ์ผ๋ง๋ ์ ๋ง์ถ์๋์ง ๋น๊ต
kn.score(fish_data, fish_target)
### (ํด์)
# - ๋ถ๋ฅ์์์ ์ ํ๋ : 0 ~ 1 ์ฌ์ด์ ๊ฐ์ด ์ถ๋ ฅ๋จ
# - 0~1 : 0% ~ 100%์ ์ ํ๋๋ฅผ ์๋ฏธํจ
#**** - ํ๋ จ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ์ ํ๋๋ฅผ ํ์ธํ์ ๋ 1.0์ ์ ํ๋
# : ๊ณผ๋์ ํฉ์ด๋ผ๊ณ ์นญํฉ๋๋ค.
๊ฒฐ๊ณผ : 1 = 100% ๋ค ๋ง์ถ์๋ค๋ ๋ป
์ ํ๋๋ฅผ ํ์ธํ์ ๋ 1.0์ ์ ํ๋
# : ๊ณผ๋์ ํฉ์ด๋ผ๊ณ ์นญํฉ๋๋ค.
์์ธก : ์์๊ฐ์ผ๋ก ์์ธกํ๊ธฐ
### ์์ธก : ์์๊ฐ์ผ๋ก ์์ธกํ๊ธฐ
# - ์์ธก : predict() ํจ์ ์ฌ์ฉ
# - ์์ธก ์์๋ ์ ๋ต์ ์๋ ค์ฃผ์ง ์๊ณ , ๋ฌธ์ ๋ง ๋ฃ์ด ์ค๋๋ค.
# - ์ฆ, ๋ฌธ์ ๋ ๋
๋ฆฝ๋ณ์์ ์ํ๋ฉฐ, 2์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
# - **** ํ๋ จ์ ์ฌ์ฉ๋๋ ๋
๋ฆฝ๋ณ์ ํํ ๊ทธ๋๋ก๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
kn.predict([[30, 600]])
array([1]) = ๋๋ฏธ๋ก ์์ธก
### ๋๋ฏธ์ ๋น์ด์ ๋ถํฌ ํ์ธํ๊ธฐ(์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ)
plt.scatter(bream_length, bream_weight, c="red", label="bream")
plt.scatter(smelt_length, smelt_weight, c="blue", label="smelt")
plt.scatter(30, 600, marker="^", c="green", label="pred")
plt.xlabel("length")
plt.ylabel("weight")
plt.legend()
plt.show()
### (ํด์)
# - ์์ ์์ธก ๋ฐ์ดํฐ๊ฐ ๋ถํฌํ ์์น๋ฅผ ํตํด์ ์๊ฐ์ ์ผ๋ก ํ์ธ ๊ฐ๋ฅ
# - ๋ชจ๋ธ(ํด๋์ค)์ด ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ด์์ ๊ฐ์ 5๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
ํ์ดํผํ๋ผ๋ฉํฐ ํ๋
<ํ์ดํผํ๋ผ๋ฉํฐ ํ๋>
- ๋ชจ๋ธ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ๊ณผ๋์ ํฉ ๋๋ ๊ณผ์์ ํฉ์ด ์ผ์ด๋ ๊ฒฝ์ฐ ํ๋ ์งํ
<ํ์ดํผํ๋ผ๋ฉํฐ>
- ๋ชจ๋ธ(ํด๋์ค)์ ์์ฑ ์ค์ ์ฌ๋์ด ์ง์ ๊ฐ์ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ ๋ณ์๋ฅผ ํต์นญํฉ๋๋ค.
KNN ๋ชจ๋ธ ์์ฑํ๊ธฐ
### KNN ๋ชจ๋ธ ์์ฑํ๊ธฐ
# n_neighbors : ์ด์์ ๊ฐฏ์ (ํ์ดํผํ๋ผ๋ฉํฐ ์์ฑ)
kn20 = KNeighborsClassifier(n_neighbors=20)
kn20
๋ชจ๋ธ ํ๋ จ ์ํค๊ธฐ
### ๋ชจ๋ธ ํ๋ จ ์ํค๊ธฐ
kn20.fit(fish_data, fish_target)
ํ๋ จ ์ ํ๋ ํ์ธํ๊ธฐ
### ํ๋ จ ์ ํ๋ ํ์ธํ๊ธฐ
kn20.score(fish_data, fish_target)
### ๋งค์ฐ ์ข์ ์ฑ๋ฅ์ ๋ณด์ด๋ ๋ชจ๋ธ์ด๋ผ๊ณ ํํํฉ๋๋ค.
์์ธกํ๊ธฐ
### ์์ธกํ๊ธฐ
kn20.predict([[30,600]])
ํ๋ ๊ณ์ ์งํ
### ํ๋ ๊ณ์ ์งํ
kn20.n_neighbors = 40
kn20.score(fish_data, fish_target)
### ํ๋ ๊ณ์ ์งํ
kn20.n_neighbors = 15
kn20.score(fish_data, fish_target)
### ํ๋ ๊ณ์ ์งํ
kn20.n_neighbors = 5
kn20.score(fish_data, fish_target)
1๋ณด๋ค ์์ ๊ฐ์ฅ ์ข์ ์ ํ๋์ผ ๋์ ์ด์์ ๊ฐฏ์ ์ฐพ๊ธฐ
### 1๋ณด๋ค ์์ ๊ฐ์ฅ ์ข์ ์ ํ๋์ผ ๋์ ์ด์์ ๊ฐฏ์ ์ฐพ๊ธฐ
## ๋ชจ๋ธ(ํด๋์ค) ์์ฑ
kn = KNeighborsClassifier()
### ํ๋ จ์ํค๊ธฐ
kn.fit(fish_data, fish_target)
### 1๋ณด๋ค ์์ ๊ฐ์ฅ ์ข์ ์ ํ๋์ผ ๋์ ์ด์์ ๊ฐฏ์ ์ฐพ๊ธฐ
# - ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ : ๋ฒ์๋ 3 ~ ์ ์ฒด ๋ฐ์ดํฐ ๊ฐฏ์
### ์ ํ๋๊ฐ ๊ฐ์ฅ ๋์ ๋์ ์ด์์ ๊ฐฏ์๋ฅผ ๋ด์ ๋ณ์
nCnt = 0
### ์ ํ๋๊ฐ ๊ฐ์ฅ ๋์ ๋์ ๊ฐ์ ๋ด์ ๋ณ์
nScore = 0
for n in range(3, len(fish_data), 2) :
kn.n_neighbors = n
score = kn.score(fish_data, fish_target)
# print(f"{n} / {score}")
### 1๋ณด๋ค ์์ ์ ํ๋์ธ ๊ฒฝ์ฐ
if score < 1 :
### nScore์ ๊ฐ์ด score๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋ด๊ธฐ
if nScore < score :
nScore = score
nCnt = n
print(f"nCnt = {nCnt} / nScore = {nScore}")
### ๋ชจ๋ธ์ ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ข์ ์์ ์ ์ด์์ ๊ฐฏ์๋ฅผ ์ถ์ถํ๊ธฐ ์ํ
# ํ์ดํผํ๋ผ๋ฉํฐ ํ๋๊ฒฐ๊ณผ, ์ด์์ ๊ฐฏ์ 19๊ฐ๋ฅผ ์ฌ์ฉํ์์ ๋
# ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋ฐํํ๋ ๊ฒ์ผ๋ก ํ์ธ๋จ
์ต์ข ๊ฒ์ฆ
### ์ต์ข
๊ฒ์ฆ
kn.n_neighbors = nCnt
kn.score(fish_data, fish_target)
kn.predict([[10, 30]])