Programming/etc

[ํ˜ผ๊ณต ๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹] ๋งˆ์ผ“๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹

mnzy๐ŸŒฑ 2024. 3. 17. 00:41

0. ์ƒ์„ฑ ๋ถ„๋ฅ˜ ๋ฌธ์ œ (์‹œ๋‚˜๋ฆฌ์˜ค)

์‹œ๋‚˜๋ฆฌ์˜ค: ํ•œ๋น› ๋งˆ์ผ“์—์„œ ์ƒ์„ ์„ ํŒŒ๋Š”๋ฐ, ์ง์›์ด ์ƒ์„  ๊ตฌ๋ถ„์„ ๋ชปํ•œ๋‹ค

๋”ฐ๋ผ์„œ, ๋จธ์‹ ๋Ÿฌ๋‹์„ ์ด์šฉํ•ด ์ƒ์„ ์˜ ํŠน์„ฑ์„ ํ†ตํ•ด ์ƒ์„ ์˜ ์ด๋ฆ„์„ ์•Œ๋ ค์ฃผ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 

ํ•œ๋น›๋งˆ์ผ“์—์„œ ํŒ”๊ธฐ ์‹œ์ž‘ํ•œ ์ƒ์„ ์€ ๋„๋ฏธ ๋“ฑ์ด ์žˆ๋‹ค. 

 

๋ฐ์ดํ„ฐ์…‹ ์ถœ์ฒ˜: https://github.com/Ankit152/Fish-Market 

(์ฑ…์—์„œ๋Š” ์บ๊ธ€์ด์—ˆ๋Š”๋ฐ, ํ˜„์žฌ ์‚ญ์ œ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„)

 

์ƒ์„ ์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ์ผ์ด๋‹ˆ ์ƒ์„ ์˜ ํŠน์ง•์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 

์ƒ์„ ์— ๋Œ€ํ•ด ์ž˜ ์•„๋Š” ๊น€ํŒ€์žฅ์ด ์ƒ์„ ๊ธธ์ด๊ฐ€ 30cm์ด์ƒ์ด๋ฉด ๋„๋ฏธ๋ผ๊ณ  ์•Œ๋ ค์ฃผ์—ˆ๋‹ค. 

ํ•˜์ง€๋งŒ, 30cm์ด์ƒ์ธ ๋ชจ๋“  ์ƒ์„ ์ด ๋„๋ฏธ๋Š” ์•„๋‹ˆ๋‹ค. 

 

์ด ๋ฌธ์ œ๋ฅผ ๋จธ์‹ ๋Ÿฌ๋‹์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

๋ณดํ†ต ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋œ ํ”„๋กœ๊ทธ๋žจ์€ '๋ˆ„๊ตฐ๊ฐ€ ์ •ํ•ด์ค€ ๊ธฐ์ค€๋Œ€๋กœ' ์ผ์„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋จธ์‹ ๋Ÿฌ๋‹์€ ์Šค์Šค๋กœ ๊ธฐ์ค€์„ ์ฐพ์•„์„œ ์ผ์„ ํ•œ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ๋น› ๋งˆ์ผ“์— ๋“ค์–ด์˜ค๋Š” ์ƒ์„  ์ค‘ 30~40cm ๊ธธ์ด์ธ ์ƒ์„ ์€ ๋„๋ฏธ๋ผ๋Š” ๊ธฐ์ค€์„ ๋จธ์‹ ๋Ÿฌ๋‹์„ ์Šค์Šค๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

๋˜ํ•œ, ์ด๋ ‡๊ฒŒ ์Šค์Šค๋กœ ์ฐพ์€ ๊ธฐ์ค€์œผ๋กœ ์ƒ์„ ์„ ๊ตฌ๋ถ„ํ•ด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. 

 

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ข…๋ฅ˜(ํด๋ž˜์Šค)๋ฅผ ๊ตฌ๋ถ„ํ•ด๋‚ด๋Š” ๊ฒƒ์„ ๋ถ„๋ฅ˜๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋•Œ, ํด๋ž˜์Šค๋Š” ์ข…๋ฅ˜๋ผ๋Š” ์˜๋ฏธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ”ํžˆ ์“ฐ์ด๋Š” ํด๋ž˜์Šค์™€๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ์ž„์„ ๊ธฐ์–ตํ•˜์ž

 

2๊ฐœ์˜ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฌธ์ œ๋Š” ์ด์ง„ ๋ถ„๋ฅ˜๋ผ๊ณ  ํ•œ๋‹ค. 


1. ๋„๋ฏธ ๋ถ„ํฌ ์‚ฐ์ ๋„๋กœ ์ถœ๋ ฅํ•˜๊ธฐ 

๋„๋ฏธ์— ๋Œ€ํ•œ ์ •๋ณด(๋ฐ์ดํ„ฐ)๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ค€๋น„ํ•œ๋‹ค. 

 

(1) ๋„๋ฏธ ๋ฐ์ดํ„ฐ ์ค€๋น„ ๋ฐ ์‚ฐ์ ๋„ ์ถœ๋ ฅ 

#๋„๋ฏธ ๋ฐ์ดํ„ฐ(๋„๋ฏธ์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ) ์ค€๋น„
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 ]

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]

 

 

(2) ๋น™์–ด ๋ฐ์ดํ„ฐ ์ค€๋น„ ๋ฐ ์‚ฐ์ ๋„ ์ถœ๋ ฅ 

#๋น™์–ด ๋ฐ์ดํ„ฐ(๋น™์–ด์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ) ์ค€๋น„
smelt_length =[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 ]
smelt_weight = [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 ]

 

- ์ด๋ฒˆ์—๋Š” ๋น™์–ด์™€ ๋„๋ฏธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฐ์ ๋„์— ํ•จ๊ป˜ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค. 

 

์ƒ‰๊น”๋กœ ๊ตฌ๋ถ„๋˜์–ด ๋‚˜์˜ด

 

์‚ฐ์ ๋„๋ฅผ ๋ณด๋ฉด ์ถ•์˜ ๊ฐ’์ด ๋‹ฌ๋ผ์„œ ํ‘œ๊ฐ€ ์ด์ „๊ณผ๋Š” ํ˜•ํƒœ๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๋„๋ฏธ๋Š” ๋ฌด๊ฒŒ๊ฐ€ 1000๊นŒ์ง€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋Š”  ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์ข‹์€ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

(์™ผ์ชฝ์ด๋ฉด ๋น™์–ด, ์˜ค๋ฅธ์ชฝ์ด๋ฉด ๋„๋ฏธ๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

 


2. ์ฒซ ๋ฒˆ์งธ ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ๊ทธ๋žจ 

- k ์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

: ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹ต์„ ๊ตฌํ•  ๋•Œ, ์ฃผ์œ„์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๋‹ค์ˆ˜๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹ต์œผ๋กœ ํ•จ 

 

๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋ฅผ ๋ณด๊ณ  ๋„๋ฏธ์ธ์ง€ ๋น™์–ด์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. 

 

์ด ์ฑ…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํŒจํ‚ค์ง€๋Š” ์‚ฌ์ดํ‚ท๋Ÿฐ์ด๋‹ค. 

์‚ฌ์ดํ‚ท๋Ÿฐ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ํŠน์„ฑ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

 

(1) ํŠน์„ฑ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ 

#๋ฐ์ดํ„ฐ์…‹ ํ†ตํ•ฉ (๋„๋ฏธ+๋ฐฉ์–ด)
length = bream_length + smelt_length
weight = bream_weight + smelt_weight

print(length)
print(weight)

#์ ์œผ๋กœ ์ฐ๊ธฐ ์œ„ํ•ด (x,y) ์ถ”์ถœ - fish_data
#๊ธธ์ด, ๋ฌด๊ฒŒ ํ˜•ํƒœ์˜ 2์ฐจ์› ๋ฐฐ์—ด์ด ๋จ
fish_data = [[l,w] for l,w in zip(length, weight)]

print(fish_data)

 

zipํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด fish_data์€ [ [l1, w1], [l2, w2],[l3, w3],...[l49, w49]] ํ˜•ํƒœ์˜ 2์ฐจ์› ๋ฐฐ์—ด์ด ๋œ๋‹ค.

 


zip()ํ•จ์ˆ˜ ์ฐธ๊ณ  ์ž๋ฃŒ

 

ํŒŒ์ด์ฌ์˜ zip() ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์—ฎ๊ธฐ

Engineering Blog by Dale Seo

www.daleseo.com


 

(2) ์ •๋‹ต ๋ฐ์ดํ„ฐ ์ค€๋น„ 

 

์ƒ์„  49๊ฐœ์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋ฅผ ๋ชจ๋‘ ์ค€๋น„ํ–ˆ์œผ๋ฉด, ์ด์ œ๋Š” ์ •๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•œ๋‹ค. 

 

์ด ๋จธ์‹ ๋Ÿฌ๋‹์€ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋ฅผ ๋ณด๊ณ  ์–ด๋–ค ์ƒ์„ ์ด ๋„๋ฏธ์ธ์ง€ ๋น™์–ด์ธ์ง€ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค. 

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ์ƒ์„ ์ด ๋„๋ฏธ์ธ์ง€ ๋น™์–ด์ธ์ง€ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

๋„๋ฏธ์™€ ๋น™์–ด๋ฅผ ์ˆซ์ž๋ฅผ ํ†ตํ•ด ์•Œ๋ ค์ค€๋‹ค. ๋„๋ฏธ - 1, ๋น™์–ด - 0

 

(๋ณดํ†ต ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋Š” ์ด์ง„๋ถ„๋ฅ˜์—์„œ ์ฐพ์œผ๋ ค๋Š” ๋Œ€์ƒ์„ 1๋กœ ๋†“๊ณ , ๊ทธ ์™ธ์—๋Š” 0์œผ๋กœ ๋†“๋Š”๋‹ค.)

 

#๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด์„œ ๋„๋ฏธ์™€ ๋น™์–ด๋กœ ๋ผ๋ฒจ๋งํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ - fish_target
#์•ž์—๋Š” ์ญ‰ ๋„๋ฏธ(1)์ด๊ณ , ๋’ค์—๋Š” ์ญ‰ ๋น™์–ด(0)๋‹ค
fish_target = [1]*35+[0]*14

print(fish_target)

 

์ฆ‰, fish_data์—๋Š” ํŠน์ง• ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์žˆ๊ณ , fish_target์—๋Š” ์ƒ์„  ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์žˆ๋‹ค. 

 

์ด์ œ ์‚ฌ์ดํ‚ท๋Ÿฐ ํŒจํ‚ค์ง€์—์„œ k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ธ KNeighborClassifer์„ importํ•ด์ค€๋‹ค. 

 

 

(3) KNeighborClassifer ์ž„ํฌํŠธ 

#k-์ตœ๊ทผ์ ‘์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์‹ธ์ดํ‚ท๋Ÿฐ ํŒจํ‚ค์ง€๋กœ๋ถ€ํ„ฐ ์ž„ํฌํŠธ
from sklearn.neighbors import KNeighborsClassifier

#KNeighborsClassifer ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ
kn = KNeighborsClassifier()

 

(4) ํ›ˆ๋ จ ๋ฐ ํ‰๊ฐ€

 

์ด ๊ฐ์ฒด(kn)์— fish_data์™€ fist_target์„ ์ „๋‹ฌํ•˜์—ฌ ๋„๋ฏธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€์„ ํ•™์Šต์‹œํ‚จ๋‹ค. 

์ด๋Ÿฐ ๊ณผ์ •์„ ํ›ˆ๋ จ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

  • fit()์€ ๋จธ์‹ ๋Ÿฌ๋‹์˜ ํ›ˆ๋ จ ๋ฉ”์†Œ๋“œ
    • fit() ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ›ˆ๋ จํ•œ๋‹ค. 
  • score()๋Š” ํ‰๊ฐ€ ๋ฉ”์†Œ๋“œ
    • score() ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋ธ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋ฉฐ, 0์—์„œ 1์‚ฌ์ด์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํžˆ ๋งžํ˜”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (์ •ํ™•๋„ ํ™•์ธ)
#kn๋ชจ๋ธ์— ์š”์†Œ(fish_data)์™€ ๋ ˆ์ด๋ธ”(fish_target)์„ ์ง€์ •ํ•˜์—ฌ ํ›ˆ๋ จํ•จ
kn.fit(fish_data, fish_target)

#kn๋ชจ๋ธ์— ์š”์†Œ(fish_data)์™€ ๋ ˆ์ด๋ธ”(fish_target)์„ ์ง€์ •ํ•˜์—ฌ ํ‰๊ฐ€ํ•จ
kn.score(fish_data,fish_target)

 

์ •ํ™•๋„ = 1


3. k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

k- ์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹ต์„ ๊ตฌํ•  ๋•Œ, ์ฃผ์œ„์˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๋‹ค์ˆ˜๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹ต์œผ๋กœ ํ•จ 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ผ๊ฐํ˜•์œผ๋กœ ํ‘œ์‹œ๋œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ(๊ธธ์ด: 30, ๋ฌด๊ฒŒ:600)๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋–„, ์ด ์‚ผ๊ฐํ˜•์—์„œ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๋“ค์ด ๋„๋ฏธ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋จธ์‹ ๋Ÿฌ๋‹์€ ๋„๋ฏธ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค. 

 

 

predict() ๋ฉ”์„œ๋“œ๋Š” ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์˜ ์ •๋‹ต์„ ์˜ˆ์ธกํ•œ๋‹ค. 

์ด ๋ฉ”์„œ๋“œ๋„ fit()๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 2์ฐจ๋ฆฌ์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. 

 

 

ํ™•์ธ ๊ฒฐ๊ณผ, ์‹ค์ œ๋กœ array[1] ์ฆ‰, ๋„๋ฏธ(1)๋ผ๊ณ  ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ์ค€๋น„ํ•ด์•ผ ํ•  ์ผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์˜ˆ์ธกํ•  ๋•Œ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ง์„ ๊ฑฐ๋ฆฌ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ์‚ดํ”ผ๋ฉด ๋œ๋‹ค. 

 

๋‹จ, k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋Ÿฐ ํŠน์ง• ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ฃผ ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉ์ด ์–ด๋ ต๋‹ค.

๋งŽ์€ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๊ณ  ์ง์„ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ์—๋„ ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์‚ฌ์ดํ‚ท๋Ÿฐ์˜ KNeighborsClassifier ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ, fix_X ์†์„ฑ์— ์šฐ๋ฆฌ๊ฐ€ ์ „๋‹ฌํ•œ fish_data๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

_y ์†์„ฑ์—๋Š” fish_target์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

#๋ชจ๋ธ์— ํ•™์Šต๋œ ๋ฐ์ดํ„ฐ๊ฐ’
print(kn._fit_X)

#๋ชจ๋ธ์— ํ•™์Šต๋œ ๋ ˆ์ด๋ธ” ๊ฐ’
print(kn._y)

##๋ชจ๋“  ๋ฐ์ดํ„ฐ์…‹ ๊ฐœ์ˆ˜์ธ 49๊ฐœ๋งŒํผ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๋ชจ๋ธ ์ƒ์„ฑ
kn49 = KNeighborsClassifier(n_neighbors=49)

##๋ชจ๋ธ ํ•™์Šต ๋ฐ ํ‰๊ฐ€(์ •ํ™•๋„ ์ถœ๋ ฅ)
kn49.fit(fish_data, fish_target)
kn49.score(fish_data, fish_target)


#๋„๋ฏธ 35๊ฐœ์— ๋Œ€ํ•ด์„œ๋งŒ ์ •ํ™•ํžˆ ๋งž์ถ”๊ธฐ ๋•Œ๋ฌธ์— 35/49์™€ ๊ฐ™์€ ์ •ํ™•๋„๋ฅผ ๋ณด์ž„
print(35/49)

kn49.predict([[15,80]]) #๋ฌด์กฐ๊ฑด ๋„๋ฏธ ๋‚˜์˜ด

 

๋”ฐ๋ผ์„œ, ์‹ค์ œ๋กœ k-์ตœ๊ทผ์ ‘ ์ด์›ƒ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹ค์ œ๋กœ ๋ฌด์–ธ๊ฐ€ ํ›ˆ๋ จ๋˜๋Š” ๊ฒƒ์€ ์—†๋Š” ์…ˆ์ด๋‹ค. 

๋‹จ์ง€, fit() ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ๊ณ ํ•  ๋ฟ์ด๋‹ค. 

 

์ด๋•Œ, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ช‡๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ๊ณ ํ• ์ง€๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž„์˜๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’: 5)

 

 

๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ 49๊ฐœ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ชจ๋ธ์— fish_data๋ฅผ ์ ์šฉํ•˜๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜์—ˆ๋“  ๋ชจ๋“  ์ƒ์„ ์„ ์ด์šฉํ•˜์—ฌ ์˜ˆ์ธกํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ, 49๊ฐœ ์ค‘ ๋„๋ฏธ๊ฐ€ 35๊ฐœ๋กœ ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด ๋„๋ฏธ๋กœ ์˜ˆ์ธก๋œ๋‹ค.

 

 

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ชจ๋ธ์„ ์ •ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— n_neighbors ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’(ex. 5) ๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ ์ ˆํ•  ๊ฒƒ์ด๋‹ค.