๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hi-๋žŒ๐Ÿ‘‹ High-๋žŒโ˜€๏ธ

01-3 ๋งˆ์ผ“๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ณธ๋ฌธ

๋จธ์‹ ๋Ÿฌ๋‹/ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ + ๋”ฅ๋Ÿฌ๋‹

01-3 ๋งˆ์ผ“๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹

ํ•˜์ด๋žŒ 2021. 8. 25. 15:44

์ด ์ฑ…์€ 'ํ˜ผ๊ณต๋จธ์‹ '์ด๋ผ๋Š” ์ดˆ๋ณด ๋จธ์‹ ๋Ÿฌ๋‹ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ฃผ์ธ๊ณต์œผ๋กœ ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜ผ๊ณต๋จธ์‹ ์ด ํ•œ๋น› ๋งˆ์ผ“์ด๋ผ๋Š” ํšŒ์‚ฌ์— ์ž…์‚ฌํ•˜์—ฌ ๊ฐ์ข… ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด, ๋…์ž๋“ค๋กœ ํ•˜์—ฌ๊ธˆ ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๋‹ค. 

 

ํ•œ๋น› ๋งˆ์ผ“์—์„œ๋Š” ์‚ด์•„ ์žˆ๋Š” ์ƒ์„ ์„ ํŒ๋งคํ•˜๋Š”๋ฐ, ๋ฌผ๋ฅ˜ ์„ผํ„ฐ์—์„œ ์ƒ์„ ์„ ๊ณ ๋ฅด๋Š” ์ง์›์ด ์ƒ์„  ์ด๋ฆ„์„ ์™ธ์šฐ์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์ด๋ฒˆ ์ฑ•ํ„ฐ์—์„œ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, '์ƒ์„  ์ด๋ฆ„์„ ์ž๋™์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹'์„ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค. 

 

 

์ƒ์„  ๋ถ„๋ฅ˜ ๋ฌธ์ œ

 

๋ณดํ†ต์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •ํ•ด์ค€ ๊ธฐ์ค€๋Œ€๋กœ ์ผ์„ ํ•˜์ง€๋งŒ, ๋จธ์‹ ๋Ÿฌ๋‹์€ ์Šค์Šค๋กœ ๊ธฐ์ค€์„ ์ฐพ์•„์„œ ์ผ์„ ํ•œ๋‹ค. ๋จธ์‹ ๋Ÿฌ๋‹์€ ๊ธฐ์ค€์„ ์ฐพ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด ๊ธฐ์ค€์„ ์ด์šฉํ•ด์„œ ํŒ๋ณ„์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

๋„๋ฏธ ๋ฐ์ดํ„ฐ ์ค€๋น„ํ•˜๊ธฐ

 

๋จธ์‹ ๋Ÿฌ๋‹์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋„๋ฏธ ์ƒ์„ ์„ ๋ณด๋ฉด ์Šค์Šค๋กœ ์–ด๋–ค ์ƒ์„ ์ด ๋„๋ฏธ์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•  ๊ธฐ์ค€์„ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฏธ ์ƒ์„ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. http://bit.ly/bream_list ์—์„œ ๋„๋ฏธ์— ๋Œ€ํ•œ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

 

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]

์ด๋ ‡๊ฒŒ ๊ฐ ๋„๋ฏธ์˜ ํŠน์ง•์„ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์€ ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•, ์ฆ‰ ํŠน์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํŠน์„ฑ๋“ค์€ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ x,y์ถ•์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ขŒํ‘œ๊ณ„์— ๋‘ ๋ณ€์ˆ˜ (x,y)์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ '์‚ฐ์ ๋„(scatter plot)'๋ฅผ ์‚ฌ์šฉํ•œ ๋‚ด์šฉ์ด๋‹ค.

 

import matplotlib.pyplot as plt

plt.scatter(bream_length, bream_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

ํŒŒ์ด์ฌ์—์„œ ๊ณผํ•™๊ณ„์‚ฐ์šฉ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ๋•Œ๋Š” ๋งทํ”Œ๋กฏ๋ฆฝ(matplotlib)์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ํŒจํ‚ค์ง€๋ฅผ ์ž„ํฌํŠธํ•˜๊ณ  ์‚ฐ์ ๋„๋ฅผ ๊ทธ๋ฆฌ๋Š” scatter() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

๋„๋ฏธ ์‚ฐ์ ๋„

 

๋„๋ฏธ 35๋งˆ๋ฆฌ๋ฅผ 2์ฐจ์› ๊ทธ๋ž˜ํ”„์— ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค. x์ถ•์€ ๊ธธ์ด, y์ถ•์€ ๋ฌด๊ฒŒ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ƒ์„ ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์ˆ˜๋ก ๋ฌด๊ฒŒ๊ฐ€ ๋งŽ์ด ๋‚˜๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ์‚ฐ์ ๋„ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ผ์ง์„ ์— ๊ฐ€๊นŒ์šด ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์„ ํ˜•์ ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

 

 

๋น™์–ด ๋ฐ์ดํ„ฐ ์ค€๋น„ํ•˜๊ธฐ

 

์ด๋ฒˆ์—๋„ http://bit.ly/smelt_list ์—์„œ ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณต์‚ฌํ•ด์˜ค์ž. 

 

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]

 

๊ทธ๋ฆฌ๊ณ  ๋„๋ฏธ์™€ ๋น™์–ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฐ์ ๋„๋กœ ๊ทธ๋ ค๋ณด์ž. 

 

plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

 

๋„๋ฏธ์™€ ๋น™์–ด ์‚ฐ์ ๋„

 

๋น™์–ด๋Š” ๋„๋ฏธ์— ๋น„ํ•ด ๊ธธ์ด๋„ ๋ฌด๊ฒŒ๋„ ๋งค์šฐ ์ž‘๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น™์–ด๋„ ๋„๋ฏธ์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๊ฐ€ ๋น„๋ก€ํ•˜์ง€๋งŒ ๋Š˜์–ด๋‚˜๋Š” ์ •๋„๊ฐ€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์ค€๋น„๋˜์—ˆ์œผ๋‹ˆ, ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์Šค๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ๋ณด์ž.

 

 

 

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

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฏธ์™€ ๋น™์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์ „์—, ์ „์— ์ค€๋น„ํ•œ ๋„๋ฏธ์™€ ๋น™์–ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ๋ณด์ž. 

length = bream_length+smelt_length
weight = bream_weight+smelt_weight

 

์ด๋ ‡๊ฒŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•ฉ์น˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ตฌ์„ฑ๋œ๋‹ค.

length =[25.4, 26.3, ..., 41.0, 9.8, ... , 15.0] 

weight =[242.0, 290.0, ... , 950.0, 6.7, ... , 19.9]

 

๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์ดํ‚ท๋Ÿฐ(scikit-learn)์ด๋ผ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ ํŠน์„ฑ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ๋Š˜์–ด๋œจ๋ฆฐ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 

[[25.4, 242.0],

 [26.3, 290.0],

    .       .   

    .       .

    .       .

 [25.0, 19.9]]

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ด์ฌ์˜ zip() ํ•จ์ˆ˜์™€ ๋ฆฌ์ŠคํŠธ ๋‚ดํฌ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. zip() ํ•จ์ˆ˜๋Š” ๋‚˜์—ด๋œ ๋ฆฌ์ŠคํŠธ์—์„œ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ , for ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ธ ๋ฐ์ดํ„ฐ์— ๋™์ผํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

fish_data = [[l, w] for l, w in zip(length, weight)]

 

์˜ˆ์ƒ๋Œ€๋กœ fish_data๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด print๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

print(fish_data)

[[25.4, 242.0], [26.3, 290.0], [26.5, 340.0], [29.0, 363.0], [29.0, 430.0], [29.7, 450.0], [29.7, 500.0], [30.0, 390.0], [30.0, 450.0], [30.7, 500.0], [31.0, 475.0], [31.0, 500.0], [31.5, 500.0], [32.0, 340.0], [32.0, 600.0], [32.0, 600.0], [33.0, 700.0], [33.0, 700.0], [33.5, 610.0], [33.5, 650.0], [34.0, 575.0], [34.0, 685.0], [34.5, 620.0], [35.0, 680.0], [35.0, 700.0], [35.0, 725.0], [35.0, 720.0], [36.0, 714.0], [36.0, 850.0], [37.0, 1000.0], [38.5, 920.0], [38.5, 955.0], [39.5, 925.0], [41.0, 975.0], [41.0, 950.0], [9.8, 6.7], [10.5, 7.5], [10.6, 7.0], [11.0, 9.7], [11.2, 9.8], [11.3, 8.7], [11.8, 10.0], [11.8, 9.9], [12.0, 9.8], [12.2, 12.2], [12.4, 13.4], [13.0, 12.2], [14.3, 19.7], [15.0, 19.9]]

 

 

์ƒ์„  49๊ฐœ์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋ฅผ ๋ชจ๋‘ ์ค€๋น„ํ–ˆ์œผ๋‹ˆ, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค€๋น„ํ•  ๋ฐ์ดํ„ฐ๋Š” ์ •๋‹ต ๋ฐ์ดํ„ฐ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ปดํ“จํ„ฐ๋Š” ๋ฌธ์ž๋ฅผ ์ง์ ‘ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฏธ์™€ ๋น™์–ด๋ฅผ ์ˆซ์ž 1๊ณผ 0์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž. 

 

fish_target = [1]*35 + [0]*14
print(fish_target)

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

 

 

์ด์ œ ์‚ฌ์ดํ‚ท๋Ÿฐ ํŒจํ‚ค์ง€์—์„œ k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ธ KNeighborsClassifier๋ฅผ ์ž„ํฌํŠธํ•˜๊ณ , ์ž„ํฌํŠธํ•œ KNeighborsClassifier์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ž. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ์ฒด์— fish-data์™€ fish_target์„ ์ „๋‹ฌํ•˜์—ฌ ๋„๋ฏธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€์„ ํ•™์Šต์‹œํ‚จ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋Š” ํ›ˆ๋ จ(training)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ๋Š” fit() ๋ฉ”์„œ๋“œ๊ฐ€ ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. 

 

from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn.fit(fish_data, fish_target)

 

๊ฐ์ฒด(๋˜๋Š” ๋ชจ๋ธ) kn์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ํ›ˆ๋ จ๋˜์—ˆ๋Š”์ง€ score() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‰๊ฐ€ํ•ด ๋ณด์ž. 

*๋จธ์‹ ๋Ÿฌ๋‹์—์„œ์˜ ๋ชจ๋ธ์€ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค. 

kn.fit(fish_data, fish_target)

1.0

 

์ด ๊ฐ’์„ ์ •ํ™•๋„(accuracy)๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋‹ค์‹œ ๋งํ•ด์„œ ์ด ๋ชจ๋ธ์€ ์ •ํ™•๋„๊ฐ€ 100%์ด๋ฉฐ ๋„๋ฏธ์™€ ๋น™์–ด๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฅ˜ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

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

 

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

 

plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.scatter(30, 600, marker='^')
plt.xlabel('length')
plt.ylabel('weight')
plt.show()

 

 

์‚ผ๊ฐํ˜•์œผ๋กœ ๋ณด์ด๋Š” ์ƒ์„  ๋ฐ์ดํ„ฐ๋Š” ์ฃผ๋ณ€์— ๋„๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์ง๊ด€์ ์œผ๋กœ ์ƒ์„ ์ด ๋„๋ฏธ์ผ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๊ณ , ์‹ค์ œ๋กœ predict() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์˜ ์ •๋‹ต์„ ์˜ˆ์ธกํ•ด๋ด๋„ ๋„๋ฏธ๋ผ๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

kn.predict([[30, 600]])

array([1]) -> ๋„๋ฏธ

 

 

(์ •๋ฆฌ) ๋„๋ฏธ์™€ ๋น™์–ด ๋ถ„๋ฅ˜

 

ํ˜ผ๊ณต๋จธ์‹ ์€ ๋„๋ฏธ์™€ ๋น™์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์ฒซ ๋ฒˆ์งธ ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๋จผ์ € ๋„๋ฏธ 35๋งˆ๋ฆฌ์™€ ๋น™์–ด 14๋งˆ๋ฆฌ์˜ ๊ธธ์ด์™€ ๋ฌด๊ฒŒ๋ฅผ ์ธก์ •ํ•˜์—ฌ ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค๊ณ , ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์ณ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ–ˆ๋‹ค. 

 

ํ˜ผ๊ณต๋จธ์‹ ์ด ์‚ฌ์šฉํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์‚ฌ์ดํ‚ท๋Ÿฐ์˜ k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ๋ณ€์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๋‹ค์ˆ˜๊ฒฐ์˜ ์›์น™์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธกํ•œ๋‹ค.

 

๋„๋ฏธ์™€ ๋น™์–ด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ KNeighborsClassifier ํด๋ž˜์Šค์˜ fit(), score(), predict() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•์„ ์•Œ์•„๋ณด์•˜๋‹ค. 

 

  •  fit() : ์‚ฌ์ดํ‚ท๋Ÿฐ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ. ์ฒ˜์Œ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ›ˆ๋ จ์— ์‚ฌ์šฉํ•  ํŠน์„ฑ๊ณผ ์ •๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
  • score() : ํ›ˆ๋ จ๋œ ์‚ฌ์ดํ‚ท๋Ÿฐ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ ์ธก์ •. ์ฒ˜์Œ ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŠน์„ฑ๊ณผ ์ •๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ. ๋จผ์ € predict() ๋ฉ”์„œ๋“œ๋กœ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๋ถ„๋ฅ˜ ๋ชจ๋ธ์ผ ๊ฒฝ์šฐ ์ •๋‹ต๊ณผ ๋น„๊ตํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์˜ˆ์ธกํ•œ ๊ฐœ์ˆ˜์˜ ๋น„์œจ ๋ฐ˜ํ™˜
  • predict() : ์‚ฌ์ดํ‚ท๋Ÿฐ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜์—ฌ ์˜ˆ์ธกํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ. ํŠน์„ฑ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋งŒ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Œ
  • k-์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ์–ด๋–ค ๊ทœ์น™์„ ์ฐพ๊ธฐ๋ณด๋‹ค๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ „๋ถ€๋ผ๋Š” ํŠน์ง•์ด ์žˆ์Œ

 

 

์ถœ์ฒ˜ : ๋ฐ•ํ•ด์„ , ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹, ํ•œ๋น›๋ฏธ๋””์–ด, 2021