1. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
(1) ๋ํ์ด๋ก ๋ฐ์ดํฐ ์ค๋นํ๊ธฐ
- ๋จผ์ ๊ฐ๋จํ๊ฒ ๋๋ฏธ์ ๋น์ด์ ๊ธธ์ด์ ๋ฌด๊ฒ์ ๋ํ ๋ฆฌ์คํธ๋ฅผ ์์ฑํด์ค๋ค.
#๋๋ฏธ์ ๋น์ด ๋ฐ์ดํฐ์
ํฉ์น๊ธฐ
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
]
- ์ด์ ์๋ ์์ ๋ฆฌ์คํธ๋ฅผ for๋ฌธ์ผ๋ก ์ํํ๋ฉด์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ง๋ง, ๋ํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ column_stack() ํจ์๋ฅผ ํ์ฉํ๋ฉด ๋์ฑ ๊ฐํธํ๊ฒ ๋ง๋ค ์ ์๋ค,
###์ด์ ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ (for๋ฌธ ํ์ฉ)
#์์ ์ ๊ธธ์ด์ ๋ฌด์ ๋ฅผ ํ๋์ ๋ฆฌ์คํธ๋ก ๋ด์ 2์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
fish_data = [[l,w] for l, w in zip(fish_length, fish_weight)]
#ํ๊ฒ ๋ฆฌ์คํธ ์์ฑ
fish_target = [1]*35 + [0]*14
column_stack()
๋ํ์ด์ column_stack() ํจ์๋ ์ ๋ฌ๋ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ผ๋ ฌ๋ก ์ธ์ด ๋ค์ ์ฐจ๋ก๋๋ก ๋๋ํ ์ฐ๊ฒฐํ๋ค.
์๋ฅผ ๋ค์ด, ๋ค์์ 2๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋๋ํ ๋ถ์์ ๋, ์ฐ๊ฒฐํ ๋ฆฌ์คํธ๋ ํํ๋ก ์ ๋ฌํ๋ค.
์ด๋ ๊ฒ fish_length์ fish_weight์ ํฉ์น ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฒ์ 5๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ์ ๋๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ค์์ผ๋ก๋ ํ๊น ๋ฐ์ดํฐ๋ฅผ ๋ํ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ np.ones() ํจ์์ np.zeros() ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ค ๊ฒ์ด๋ค.
np.ones() ์ np.zeros()
์ด ๋ ํจ์๋ ๊ฐ๊ฐ ์ํ๋ ๊ฐ์์ 1๊ณผ 0์ ์ฑ์ด ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค.
np.concentrate()
์ฒซ ๋ฒ์งธ ์ฐจ์์ ๋ฐ๋ผ ๋ฐฐ์ด์ ์ฐ๊ฒฐํด์ค๋ค
์ด๋ ๊ฒ 1์ด 35๊ฐ, 0์ด 14๊ฐ๊ฐ ์์๋๋ก ์๋ ํ๊น ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์๋ค.
(2) ์ฌ์ดํท๋ฐ์ผ๋ก ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ ๋๋๊ธฐ
์ฌ์ดํท๋ฐ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ํ ์๊ณ ๋ฆฌ์ฆ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ์ ํธ๋ฆฌํฐ ๋๊ตฌ๋ ์ ๊ณตํ๋ค.
๋ํ์ ์ผ๋ก ์ฌ์ดํท๋ฐ์ train_test_split() ํจ์๊ฐ ์๋ค.
train_test_split()
์ ๋ฌ๋๋ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ๋น์จ์ ๋ง๊ฒ ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ๋ก ์์ด์ ๋๋์ด์ค๋ค.
train_test_split() ํ์๋ model_selection ๋ชจ๋ ์๋์ ์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด import ํด์ค๋ค.
์ดํ ๋๋๊ณ ์ถ์ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ์ํ๋ ๋งํผ ์ ๋ฌํ๋ฉด ๋๋ค.
ex. train_test_split (๋๋๊ณ ์ถ์ ๋ฆฌ์คํธ1, ๋๋๊ณ ์ถ์ ๋ฆฌ์คํธ2)
from sklearn.model_selection import train_test_split
train_test_split() ํจ์๋ฅผ ํตํด ํ๋ จ ์ธํธ์ ํ ์คํธ ์ธํธ๋ฅผ ๋๋์ด์ค๋ค.
์ด์ ์ np.random.seed() ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์๋ก ์๊ณ , ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋๋ก ํ์๋ค.
train_test_split() ํจ์๋ random_state ๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ๋๋ค ์๋๋ฅผ ์ง์ ํ ์ ์๋ค.
train_test_split() ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก 25%๋ฅผ ํ ์คํธ ์ธํธ๋ก ํ์ฉํ๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์๋ ค์ฃผ๋ shape ์์ฑ์ ํตํด ํ์ธํด๋ณด๋ฉด,
49๊ฐ์ ๋ฐ์ดํฐ ์ค 36๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ จ ๋ฐ์ดํฐ๋ก, 13๊ฐ(์ฝ 25%)๋ฅผ ํ ์คํธ ๋ฐ์ดํฐ๋ก ํ์ฉํ์์ ์ ์ ์๋ค.
ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด, 13๊ฐ์ ํ ์คํธ ์ธํธ ์ค์ 10๊ฐ๊ฐ ๋๋ฏธ(1)์ด๊ณ , 3๊ฐ๊ฐ ๋น์ด(0)์ด๋ค.
๋น์ด์ ๋น์จ์ด ์กฐ๊ธ ๋ชจ์๋ผ๋ค. ์๋ ๋๋ฏธ์ ๋น์ด์ ๊ฐ์๊ฐ 35๊ฐ์ 14๊ฐ์ด๋ฏ๋ก, ๋ ์์ ์ ๋น์จ์ด 2.5:1์ด๋ค.
ํ์ง๋ง, ํ ์คํธ ์ธํธ์์์ ๋๋ฏธ์ ๋น์ด์ ๋น์จ์ 3.3:1 ์ด๋ค.
์ํ๋ง ํธํฅ์ด ๋ํ๋ ๊ฒ์ด๋ค. (๋๋ฏธ์ ๋น์จ์ด ํผ)
์ด๋ ๊ฒ ๋ฌด์์๋ก ๋๋์์ ๋ ์ํ์ด ๊ณจ๊ณ ๋ฃจ ์์ด์ง ์์ ์ ์๋ค.
//ํนํ ์ผ๋ถ ํด๋์ค(์ข ๋ฅ)์ ๊ฐ์๊ฐ ์ ์ ๋ ์ด๋ฐ์ผ์ด ์๊ธธ ์ ์๋ค.
train_test_split() ํจ์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ stratify ๋งค๊ฐ๋ณ์์ ํ๊น ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ฌ ํด๋์ค ๋น์จ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๋์ผ๋ก์จ ํด๊ฒฐํ๋ค.
๋น์ด๊ฐ ํ๋ ๋์ด, ํ ์คํธ ์ธํธ์ ๋น์จ์ด 2.25:1์ด ๋์๋ค.
๋๋์ด ์ ์ฒด ํ๋ จ ๋ฐ์ดํฐ์ ๋น์จ๊ณผ ๋น์ทํ ๋น์จ์ด ๋์๋ค.
(3) ์์ํ ๋๋ฏธ ํ ๋ง๋ฆฌ (k-์ต๊ทผ์ ์ด์ ์๊ณ ๋ฆฌ์ฆ)
- k-์ต๊ทผ์ ์ด์ ํ์ฉ
- fit - ํ๋ จ: train_
- score- ํ ์คํธ: test_
์๋ก์ด ๋๋ฏธ ๋ฐ์ดํฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๊ธฐ
-> ๋น์ด(0)์ผ๋ก ์์ธก
์๋ก์ด ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ํจ๊ป ์ฐ์ ๋๋ก ๊ทธ๋ ค๋ณธ๋ค.
์ฐ์ ๋๋ฅผ ๋ณด๋ฉด, ํด๋น ๋ฐ์ดํฐ๋ ์ค๋ฅธ์ชฝ ์์ ๋๋ฏธ๋ฐ์ดํฐ์ ๊ฐ๊น๊ฒ ๋ณด์ธ๋ค.
ํ์ง๋ง ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋น์ด๋ผ๊ณ ์์ธกํ์๋ค.
k-์ต๊ทผ์ ์ด์์ ์ฃผ๋ณ์ ์ํ ์ค์์ ๋ค์์ธ ํด๋์ค๋ก ์์ธกํ๋ค.
์ด ์ํ์ ์ฃผ๋ณ ์ํ์ ํ์ธํด๋ณด๊ธฐ ์ํด, KneighborsClassifier ํด๋์ค์์ ์ฃผ์ด์ง ์ํ ์ค ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ์ฐพ์์ฃผ๋ kneighbors() ๋ฉ์๋๋ฅผ ํ์ฉํ๋ค.
kneighbors()
- distances: ์ฐพ์ ์ด์๋ค๊ณผ ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ์ธํธ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด ๋๋ ๋ฆฌ์คํธ. ์ด ๋ฐฐ์ด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์๋ถํฐ ๋จผ ์ด์ ์์๋๋ก ๊ฑฐ๋ฆฌ๋ฅผ ํฌํจํ๊ฒ ๋ฉ๋๋ค.
- indexes: ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด ๋๋ ๋ฆฌ์คํธ. ์ด ๋ฐฐ์ด์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์๋ถํฐ ๋จผ ์ด์ ์์๋๋ก ์ธ๋ฑ์ค๋ฅผ ํฌํจํ๊ฒ ๋ฉ๋๋ค. ์ด ์ธ๋ฑ์ค๋ ์๋ณธ ๋ฐ์ดํฐ ์ธํธ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์๋ค์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- kneighbors() ๋ฉ์๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก 5๊ฐ์ ์ด์์ ๋ฐํํด์ค๋ค.
indexes ๋ฐฐ์ด์ ํตํด ํ๋ จ ๋ฐ์ดํฐ ์ค์์ ์ด์ ์ํ์ ๋ฐ๋ก ๊ตฌ๋ถํ์ฌ ๊ทธ๋ฆฐ๋ค.
๊ทธ ๊ฒฐ๊ณผ, ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ๋๋ฏธ๊ฐ ํ๋๋ฐ์ ํฌํจ๋์ง ์์ผ๋ฉฐ ๋๋จธ์ง 4๊ฐ์ ์ํ์ ๋น์ด๊ฐ ๋์๋ค.
์ค์ ๋ก ๋ฐ์ดํธ๋ฅผ ์ง์ ํ์ธํด๋ณด๋ฉด, train_input์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ ๋น์ด์ด๋ค.
ํ๊น ๋ฐ์ดํฐ๋ก ํ์ธํด๋ณด๋ฉด ํ์คํ ๋น์ด(0)์ธ ๊ฒ์ ์ ์ ์๋ค.
์ฐ์ ๋์์๋ ์ง๊ด์ ์ผ๋ก ๋๋ฏธ์ ๊ฐ๊น๊ฒ ๋ณด์ด๋ ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ด ๋น์ด๊ฐ ๋ ๊ฒ์ผ๊น?
kneighbors() ๋ฉ์๋์์ ๋ฐํํ distances ๋ฐฐ์ด์ ์ถ๋ ฅํ์ฌ ์ํ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ํ์ธํด๋ณธ๋ค.
(4) ๊ธฐ์ค์ ๋ง์ถฐ๋ผ
์ฐ์ ๋๋ฅผ ๋ค์ ํ ๋ฒ ๋ณด๋ฉด, ๊ฐ์ฅ ๊ฐ๊น์ด ์ํ๊น์ง์ ๊ฑฐ๋ฆฌ๋ 92์ด๊ณ , ๊ทธ์ธ ๊ฐ์ฅ ๊ฐ๊น์ด ์ํ๋ค์ ๋ชจ๋ distance๊ฐ 130 ์ด์์ด๋ค.
์ด์ฒ๋ผ ์ฐ์ ๋์์ ๋์ ๋ณด์ด๋ ๊ธธ์ด์ ์ค์ ๊ฑฐ๋ฆฌ๊ฐ ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ์ด์ ๋ x์ถ์ ๋ฒ์๊ฐ ์ข๊ณ (10~40) , y์ถ์ ๋ฒ์(0~1000) ๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ y์ถ์ผ๋ก ์กฐ๊ธ๋ง ๋ฉ์ด์ ธ๋ ๊ฑฐ๋ฆฌ๊ฐ ์์ฃผ ํฐ ๊ฐ์ผ๋ก ๊ณ์ฐ๋๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ๋์ผ๋ก ํ์ธํ๊ธฐ ์ํด ์ฐ์ ๋์ x์ถ๊ณผ y์ถ์ ๋ฒ์๋ฅผ ๋์ผํ๊ฒ ๋ง์ถฐ๋ณผ ์ ์๋ค.
์ฐ์ ๋์ ๋ฒ์๋ xlim(), ylim() ํจ์๋ฅผ ํ์ฉํ๋ค.
xlim() ํจ์๋ฅผ ํตํด x์ถ์ ๋ฒ์๋ฅผ y์ถ๊ณผ ๋์ผํ๊ฒ 0๋ถํฐ 1000์ผ๋ก ๋ง์ถ๋ฉด ์ผ์ง์ ์ผ๋ก ๋ํ๋๋ ์ฐ์ ๋๋ฅผ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด, ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ์ฐพ๋๋ฐ์๋ y์ถ๋ง์ด ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋ ํน์ฑ์ด ๊ฐ์ด ๋์ธ ๋ฒ์๊ฐ ๋งค์ฐ ๋ค๋ฅผ ๋, ์ด๋ฅผ ๋ ํน์ฑ์ ์ค์ผ์ผ์ด ๋ค๋ฅด๋ค๊ณ ๋งํ๋ค.
(์ด๋ค ์ฌ๋์ด ๋ฐฉ์ ๋์ด๋ฅผ ์ฌ๋๋ฐ ์ธ๋ก๋ cm๋ก ์ฌ๊ณ , ๊ฐ๋ก๋ inch๋ก ์ฐ๋๋ฉด ์ ์ฌ๊ฐํ ๋ฐฉ๋ ์ง์ฌ๊ฐํ์ผ๋ก ๋ณด์ผ ์ ์๋ค.)
๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๊ธฐ์ค์ด ๋ค๋ฅด๋ค๋ฉด ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ์ ์๋ค.
์๊ณ ๋ฆฌ์ฆ์ด ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ์ผ ๋ ๋์ฑ ๊ทธ๋ ๋ค. (k-์ต๊ทผ์ ์ด์)
๋ฐ๋ผ์, ์ ๋๋ก ์ํ์ ํ์ฉํ๊ธฐ ์ํด์๋ ํน์ฑ๊ฐ์ ์ผ์ ํ ๊ธฐ์ค์ผ๋ก ๋ง์ถ์ด์ผ ํ๋ค.
์ด ์์ ์ ๋ฐ๋ก ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ฅ ๋๋ฆฌ ํ์ฉํ๋ ์ ์ฒ๋ฆฌ ๊ธฐ๋ฒ ์ค ํ๋๊ฐ ํ์ค ์ ์(z์ ์)์ด๋ค.
ํ์ค์ ์๋ ๋ฐ์ดํฐ์์ ํ๊ท ์ ๋นผ๊ณ ํ์คํธ์ฐจ๋ฅผ ๋๋์ด์ฃผ๋ฉด ๋๋ค.
๋ํ์ด๋ ์ด ๋ ํจ์๋ฅผ ๋ชจ๋ ์ ๊ณตํ๋ค.
- np.mean(): ํ๊ท ๊ณ์ฐ
- np.std(): ํ์คํธ์ฐจ ๊ณ์ฐ
- axis=0์ ์ด์ ๋ฐ๋ผ ์ฐ์ฐ์ ์ํํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- axis=1์ ํ์ ๋ฐ๋ผ ์ฐ์ฐ์ ์ํํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
๋ํ์ด๋ train_input์ ๋ชจ๋ ํ์์ mean์ ์๋ ๋ ํ๊ท ๊ฐ์ ๋บด์ค๋ค.
๊ทธ ๋ค์ std์ ์๋ ๋ ํ์คํธ์ฐจ๋ฅผ ๋ค์ ๋ชจ๋ ํ์ ์ ์ฉํ๋ค.
์ด๋ฐ ๋ํ์ด ๊ธฐ๋ฅ์ ๋ธ๋ก๋์บ์คํ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
train_scaled = (train_input - mean) / std
(5) ์ ์ฒ๋ฆฌ ๋ฐ์ดํฐ๋ก ๋ชจ๋ธ ํ๋ จํ๊ธฐ
์ฐ์ ๋๋ก ๊ทธ๋ ค๋ณด๋ฉด ์ค๋ฅธ์ชฝ ๋งจ ๊ผญ๋๊ธฐ์ ๋๋ฏธ ์ํ์ด ๋ฉ๊ทธ๋ฌ๋ ๋จ์ด์ ธ์๋ค.
ํ๋ จ์ธํธ๋ฅผ mean์ผ๋ก ๋นผ๊ณ std๋ก ๋๋์ด์ฃผ๋ฉด์ ๊ฐ์ ๋ฒ์๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ง ๊ฒ์ด๋ค.
๋ฐ๋ผ์, ์๋ก์ด ๋๋ฏธ ์ํ ๋ํ ํ๋ จ์ธํธ์ mean, std๋ฅผ ์ด์ฉํด์ ๋ณํํด์ผ ํ๋ค.
(์ํ ํ๋๋ง์ผ๋ก๋ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ตฌํ ์๋ ์์)
์ฐ์ ๋๋ฅผ ํ์ธํด๋ณด๋ฉด, ์ฒ์ ๋ณด์๋ ์ฐ์ ๋์ ๋น์ทํ๊ฒ ๋์จ๋ค.
scale์ ๋ง์ถ ์๋ฃ๋ฅผ ์ด์ฉํ์ฌ ๋ค์ k-์ต๊ทผ์ ์ด์ ๋ชจ๋ธ์ ํ๋ จํ๊ณ ํ๊ฐํ๋ค.
ํ๋ จ์ ๋ง์น ๋ค ํ ์คํธ ์ธํธ๋ก ํ๊ฐํ ๋์๋, ๋๋ฏธ ์ํ์ ํ๋ จ ์ธํธ์ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ก ๋ณํํ ๊ฒ์ฒ๋ผ ํ ์คํธ ์ธํธ ๋ํ ํ๋ จ์ธํธ์ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ก ๋ณํํด์ผ ํ๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ ๋ชจ๋ ํ ์คํธ ์ํ์ ์๋ฒฝํ๊ฒ ๋ถ๋ฅํด๋ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
(์ฆ, ํ๋ จ ์ธํธ์ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ดํ ์ด ๋ชจ๋ธ์ ํ์ฉํ๊ธฐ ์ํด์๋ ์๋ก์ด ์ํ๊ณผ ํ ์คํธ ์ธํธ ๋ํ ๊ฐ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํจ)
๋๋ฏธ ์ํ๋ก ๋ค์ ํ์ธํด๋ณด๋ฉด, ํด๋น ์ํ์ ๋๋ฏธ(1)๋ก ์ ๋๋ก ์์ธกํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
kneighbors() ํจ์๋ก k-์ต๊ทผ์ ์ด์์ ๊ตฌํ ๋ค์ ์ฐ์ ๋๋ก ๊ทธ๋ ค๋ณด๋ฉด, ๊ฐ์ฅ ๊ฐ๊น์ด ์ด์์ ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํ ์ ์๋๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.