๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Python

[Python] ๋จธ์‹ ๋Ÿฌ๋‹ 03_KNN ํšŒ๊ท€๋ชจ๋ธ

by ITyranno 2023. 12. 22.
728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

 

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„๋ฅผ ํƒ๊ตฌํ•ฉ์‹œ๋‹ค.

 

 

 

 

 

 

 

 

 

KNN ํšŒ๊ท€๋ชจ๋ธ

 

 

 

 

๋ฐ์ดํ„ฐ

 

 

import numpy as np

 

 

### ๋†์–ด ๊ธธ์ด
perch_length = np.array(
                        [8.4, 13.7, 15.0, 16.2, 17.4, 18.0, 18.7, 19.0, 19.6, 20.0, 
                         21.0, 21.0, 21.0, 21.3, 22.0, 22.0, 22.0, 22.0, 22.0, 22.5, 
                         22.5, 22.7, 23.0, 23.5, 24.0, 24.0, 24.6, 25.0, 25.6, 26.5, 
                         27.3, 27.5, 27.5, 27.5, 28.0, 28.7, 30.0, 32.8, 34.5, 35.0, 
                         36.5, 36.0, 37.0, 37.0, 39.0, 39.0, 39.0, 40.0, 40.0, 40.0, 
                         40.0, 42.0, 43.0, 43.0, 43.5, 44.0]
                         )

### ๋†์–ด ๋ฌด๊ฒŒ
perch_weight = np.array(
                        [5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 
                         110.0, 115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 
                         130.0, 150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 
                         197.0, 218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 
                         514.0, 556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 
                         820.0, 850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 
                         1000.0, 1000.0]
                         )

 

 

 

 

๋†์–ด์˜ ๊ธธ์ด๋กœ ๋ฌด๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ

 

 

# - ๋…๋ฆฝ๋ณ€์ˆ˜ : ๊ธธ์ด
# - ์ข…์†๋ณ€์ˆ˜ : ๋ฌด๊ฒŒ

 

 

### ๋†์–ด์˜ ๊ธธ์ด๋กœ, ๋ฌด๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ
# - ๋…๋ฆฝ๋ณ€์ˆ˜ : ๊ธธ์ด
# - ์ข…์†๋ณ€์ˆ˜ : ๋ฌด๊ฒŒ
perch_length.shape, perch_weight.shape

 

 

 

 

 

 

์‚ฐ์ ๋„ ๊ทธ๋ฆฌ๊ธฐ

 

### ์‚ฐ์ ๋„ ๊ทธ๋ฆฌ๊ธฐ
import matplotlib.pyplot as plt

plt.scatter(perch_length, perch_weight)
plt.xlabel("length")
plt.ylabel("weight")
plt.show()

###(ํ•ด์„)
# - ์ดˆ๋ฐ˜์—๋Š” ๊ณก์„ ์„ ๋„๋Š” ๋“ฏ ํ•˜๋‹ค๊ฐ€, ์ค‘๋ฐ˜๋ถ€๋ถ€ํ„ฐ๋Š” ์ง์„ ์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์Œ
# - ์ข…์†๋ณ€์ˆ˜๊ฐ€ ์—ฐ์†ํ˜• ๋ฐ์ดํ„ฐ์ด๋ฉฐ, ์„ ํ˜• ๋ถ„ํฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ์— ํšŒ๊ท€๋ชจ๋ธ์„ ์‚ฌ์šฉํ•จ

 

 

 

 

 

 

 

 

ํ›ˆ๋ จ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ถ„๋ฅ˜ํ•˜๊ธฐ

 

 

 

### ํ›ˆ๋ จ : ํ…Œ์ŠคํŠธ = 75 : 25๋กœ ๊ตฌ๋ถ„
### ์‚ฌ์šฉ๋ณ€์ˆ˜ : train_input, train_target, test_input, test_target

 

 

### ํ›ˆ๋ จ : ํ…Œ์ŠคํŠธ = 75 : 25๋กœ ๊ตฌ๋ถ„
### ์‚ฌ์šฉ๋ณ€์ˆ˜ : train_input, train_target, test_input, test_target
from sklearn.model_selection import train_test_split

train_input, test_input, train_target, test_target = train_test_split(perch_length, perch_weight,
                                                           test_size=0.25, random_state=42)

print(f"{train_input.shape} : {train_target.shape}")
print(f"{test_input.shape} : {test_target.shape}")

 

 

 

 

 

 

ํ›ˆ๋ จ ๋ฐ ํ…Œ์ŠคํŠธ์˜ ๋…๋ฆฝ๋ณ€์ˆ˜๋ฅผ 2์ฐจ์›์œผ๋กœ ๋งŒ๋“ค๊ธฐ

 

 

### ํ›ˆ๋ จ ๋…๋ฆฝ๋ณ€์ˆ˜ 2์ฐจ์› ๋งŒ๋“ค๊ธฐ
train_input = train_input.reshape(-1, 1) 

### ํ…Œ์ŠคํŠธ ๋…๋ฆฝ๋ณ€์ˆ˜ 2์ฐจ์› ๋งŒ๋“ค๊ธฐ
test_input = test_input.reshape(-1, 1)

print(f"{train_input.shape} / {test_input.shape}")

 

 

 

 

 

 

 

๋ชจ๋ธ ํ›ˆ๋ จํ•˜๊ธฐ

 

 

ํ›ˆ๋ จ ๋ชจ๋ธ ์ƒ์„ฑํ•˜๊ธฐ

 

 

### ํ›ˆ๋ จ ๋ชจ๋ธ ์ƒ์„ฑํ•˜๊ธฐ
from sklearn.neighbors import KNeighborsRegressor

knr = KNeighborsRegressor()
knr

 

 

 

 

 

 

 

### ๋ชจ๋ธ ํ›ˆ๋ จ ์‹œํ‚ค๊ธฐ
knr.fit(train_input, train_target)

 

 

 

 

 

 

 

 

ํ›ˆ๋ จ ์ •ํ™•๋„ ํ™•์ธํ•˜๊ธฐ

 

 

### ํ›ˆ๋ จ ์ •ํ™•๋„ ํ™•์ธํ•˜๊ธฐ
train_r2 = knr.score(train_input, train_target)

### ํ…Œ์ŠคํŠธ ์ •ํ™•๋„ ํ™•์ธํ•˜๊ธฐ
test_r2 = knr.score(test_input, test_target)

print(f"ํ›ˆ๋ จ={train_r2} / ํ…Œ์ŠคํŠธ={test_r2}")

###(ํ•ด์„)
# - ํ›ˆ๋ จ ๋ฐ ํ…Œ์ŠคํŠธ ์ •ํ™•๋„๋Š” ๋งค์šฐ ๋†’๊ฒŒ ๋‚˜ํƒ€๋‚œ ์„ฑ๋Šฅ ์ข‹์€ ๋ชจ๋ธ๋กœ ํŒ๋‹จ๋˜๋‚˜,
# - ๊ทธ๋Ÿฌ๋‚˜, ๊ณผ์ ํ•ฉ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ๊ฒฐ๊ณผ 
# -> ํ›ˆ๋ จ ์ •ํ™•๋„๊ฐ€ ํ…Œ์ŠคํŠธ ์ •ํ™•๋„๋ณด๋‹ค ๋‚ฎ๊ฒŒ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์œผ๋กœ ๋ณด์•„
# - ๊ณผ์†Œ์ ํ•ฉ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋จ
# - ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ž‘๊ฑฐ๋‚˜, ํŠœ๋‹์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋กœ ์ดํ›„ ์ง„ํ–‰์„ ํ•˜๊ณ ์ž ํ•จ

 

 

 

 

 

 

 

###(ํ•ด์„)
# - ํ›ˆ๋ จ ๋ฐ ํ…Œ์ŠคํŠธ ์ •ํ™•๋„๋Š” ๋งค์šฐ ๋†’๊ฒŒ ๋‚˜ํƒ€๋‚œ ์„ฑ๋Šฅ ์ข‹์€ ๋ชจ๋ธ๋กœ ํŒ๋‹จ๋˜๋‚˜,
# - ๊ทธ๋Ÿฌ๋‚˜, ๊ณผ์ ํ•ฉ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ๊ฒฐ๊ณผ 
# -> ํ›ˆ๋ จ ์ •ํ™•๋„๊ฐ€ ํ…Œ์ŠคํŠธ ์ •ํ™•๋„๋ณด๋‹ค ๋‚ฎ๊ฒŒ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์œผ๋กœ ๋ณด์•„
# - ๊ณผ์†Œ์ ํ•ฉ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋จ
# - ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ž‘๊ฑฐ๋‚˜, ํŠœ๋‹์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋กœ ์ดํ›„ ์ง„ํ–‰์„ ํ•˜๊ณ ์ž ํ•จ

 

 

 

 

๋ชจ๋ธ ํ‰๊ฐ€ํ•˜๊ธฐ : ํ‰๊ท ์ ˆ๋Œ€์˜ค์ฐจ(MAE; Mean Absolute Error)

 


 - ํšŒ๊ท€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‰๊ฐ€๋ฐฉ๋ฒ•
 - ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ๊ฐ’์˜ ๊ฑฐ๋ฆฌ ์ฐจ์ด๋ฅผ ํ‰๊ท ํ•˜์—ฌ ๊ณ„์‚ฐํ•œ ๊ฐ’
 - ์ฆ‰, ์‚ฌ์šฉ๋œ ์ด์›ƒ๋“ค๊ณผ์˜ ๊ฑฐ๋ฆฌ์ฐจ๋ฅผ ์ ˆ๋Œ€๊ฐ’์œผ๋กœ ํ‰๊ท ํ•œ ๊ฐ’

 

 

 

from sklearn.metrics import mean_absolute_error

 

 

 

์˜ˆ์ธกํ•˜๊ธฐ

 

### ์˜ˆ์ธกํ•˜๊ธฐ
test_pred = knr.predict(test_input)
test_pred

 

 

 

 

 

 

 

ํ‰๊ฐ€ํ•˜๊ธฐ

 

### ํ‰๊ฐ€ํ•˜๊ธฐ
mae = mean_absolute_error(test_target, test_pred)
mae

### (ํ•ด์„)
# - ํ•ด๋‹น ๋ชจ๋ธ์„ ์ด์šฉํ•ด์„œ ์˜ˆ์ธก์„ ํ•  ๊ฒฝ์šฐ์—๋Š”
# - ํ‰๊ท ์ ์œผ๋กœ -> ์•ฝ 19.157g ์ •๋„์˜ ์ฐจ์ด(์˜ค์ฐจ)๊ฐ€ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
# - ์ฆ‰, ์˜ˆ์ธก๊ฒฐ๊ณผ๋Š” ์•ฝ 19.157g ์ •๋„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์Œ

 

 

 

 

 

 

 

๊ณผ์†Œ์ ํ•ฉ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•˜์—ฌ [ ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ํŠœ๋‹ ]์„ ์ง„ํ–‰ํ•ด ๋ณด๊ธฐ

 

 

### KNN ๋ชจ๋ธ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜(ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ)๋ฅผ ์กฐ์ •ํ•ด๋ณด๊ธฐ

### ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ => ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ
knr.n_neighbors = 5

### ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ๊ฐ’ ์ˆ˜์ • ํ›„ ์žฌํ›ˆ๋ จ ์‹œ์ผœ์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
knr.fit(test_input, test_target)

### ํ›ˆ๋ จ์ •ํ™•๋„ ํ™•์ธ
train_r2 = knr.score(train_input, train_target)

### ํ…Œ์ŠคํŠธ(๊ฒ€์ฆ) ์ •ํ™•๋„ ํ™•์ธ
test_r2 = knr.score(test_input, test_target)

print(f"ํ›ˆ๋ จ={train_r2} / ํ…Œ์ŠคํŠธ={test_r2}")

###(ํ•ด์„)
# - ๊ณผ์ ํ•ฉ ์—ฌ๋ถ€ ํ™•์ธ ๊ฒฐ๊ณผ ๊ณผ์†Œ์ ํ•ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ, ํ›ˆ๋ จ๋ชจ๋ธ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์Œ
# - ๊ณผ์†Œ์ ํ•ฉ ํ•ด์†Œ ํ•„์š”

 

 

 

 

 

 

์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ ์กฐ์ • (3)

 

### KNN ๋ชจ๋ธ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜(ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ)๋ฅผ ์กฐ์ •ํ•ด๋ณด๊ธฐ

### ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ => ์กฐ์ •
knr.n_neighbors = 3

### ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ๊ฐ’ ์ˆ˜์ • ํ›„ ์žฌํ›ˆ๋ จ ์‹œ์ผœ์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
knr.fit(test_input, test_target)

### ํ›ˆ๋ จ์ •ํ™•๋„ ํ™•์ธ
train_r2 = knr.score(train_input, train_target)

### ํ…Œ์ŠคํŠธ(๊ฒ€์ฆ) ์ •ํ™•๋„ ํ™•์ธ
test_r2 = knr.score(test_input, test_target)

print(f"ํ›ˆ๋ จ={train_r2} / ํ…Œ์ŠคํŠธ={test_r2}")

###(ํ•ด์„)
# - ๊ณผ์†Œ์ ํ•ฉ ํ•ด์†Œ๋ฅผ ์œ„ํ•ด ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์กฐ์ •ํ•˜์—ฌ ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ํŠœ๋‹์„ ์ง„ํ–‰ํ•œ ๊ฒฐ๊ณผ
# - ๊ณผ์†Œ์ ํ•ฉ์„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ์—ˆ์Œ
# - ๋˜ํ•œ, ํ›ˆ๋ จ ์ •ํ™•๋„์™€ ํ…Œ์ŠคํŠธ ์ •ํ™•๋„์˜ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š๊ธฐ์— ๊ณผ๋Œ€์ ํ•ฉ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์Œ
# - ๋‹ค๋งŒ, ํ…Œ์ŠคํŠธ ์ •ํ™•๋„๋Š” ๋‹ค์†Œ ๋‚ฎ์•„์ง„ ๋ฐ˜๋ฉด, ํ›ˆ๋ จ ์ •ํ™•๋„๊ฐ€ ๋†’์•„์กŒ์Œ
# - ์ด ๋ชจ๋ธ์€ ๊ณผ์ ํ•ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ์ผ๋ฐ˜ํ™”๋œ ๋ชจ๋ธ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

 

 

 

 

๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ ์ฐพ๊ธฐ (ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ํŠœ๋‹)

 

 

### ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ ์ฐพ๊ธฐ (ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ํŠœ๋‹)

### 1๋ณด๋‹ค ์ž‘์€ ๊ฐ€์žฅ ์ข‹์€ ์ •ํ™•๋„์ผ ๋•Œ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ ์ฐพ๊ธฐ
## ๋ชจ๋ธ(ํด๋ž˜์Šค) ์ƒ์„ฑ
knr = KNeighborsRegressor()
### ํ›ˆ๋ จ์‹œํ‚ค๊ธฐ
knr.fit(train_input, train_target)

### 1๋ณด๋‹ค ์ž‘์€ ๊ฐ€์žฅ ์ข‹์€ ์ •ํ™•๋„์ผ ๋•Œ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ ์ฐพ๊ธฐ
# - ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ : ๋ฒ”์œ„๋Š” 3 ~ ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜

### ์ •ํ™•๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์„ ๋•Œ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜
nCnt = 0
### ์ •ํ™•๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์„ ๋•Œ์˜ ๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜
nScore = 0

for n in range(3, len(train_input), 2) :
    knr.n_neighbors = n
    score = knr.score(train_input, train_target)
    print(f"{n} / {score}")

    ### 1๋ณด๋‹ค ์ž‘์€ ์ •ํ™•๋„์ธ ๊ฒฝ์šฐ
    if score < 1 :
        ### nScore์˜ ๊ฐ’์ด score๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ ๋‹ด๊ธฐ
        if nScore < score : 
            nScore = score
            nCnt = n

print(f"nCnt = {nCnt} / nScore = {nScore}")

### ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ข‹์€ ์‹œ์ ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ
# ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ํŠœ๋‹๊ฒฐ๊ณผ, ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ 3๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์„ ๋•Œ
# ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋จ

 

 

 

 

 

KNN ๋ชจ๋ธ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜(ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ)๋ฅผ ์กฐ์ •ํ•ด๋ณด๊ธฐ

 

 

### KNN ๋ชจ๋ธ์˜ ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜(ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ)๋ฅผ ์กฐ์ •ํ•ด๋ณด๊ธฐ

### ์ด์›ƒ์˜ ๊ฐฏ์ˆ˜ => ์กฐ์ •
knr.n_neighbors = 3

### ํ•˜์ดํผํŒŒ๋ผ๋ฉ”ํ„ฐ ๊ฐ’ ์ˆ˜์ • ํ›„ ์žฌํ›ˆ๋ จ ์‹œ์ผœ์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
knr.fit(train_input, train_target)

### ํ›ˆ๋ จ์ •ํ™•๋„ ํ™•์ธ
train_r2 = knr.score(train_input, train_target)

### ํ…Œ์ŠคํŠธ(๊ฒ€์ฆ) ์ •ํ™•๋„ ํ™•์ธ
test_r2 = knr.score(test_input, test_target)

print(f"ํ›ˆ๋ จ={train_r2} / ํ…Œ์ŠคํŠธ={test_r2}")

 

 

 

 

 

 

 

 

์ž„์˜ ๊ฐ’์œผ๋กœ ์˜ˆ์ธกํ•˜๊ธฐ

 

 

๊ธธ์ด 50์œผ๋กœ ๋ฌด๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ

 

### ๊ธธ์ด 50์œผ๋กœ ๋ฌด๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ
knr.predict([[50]])

 

 

 

 

์‚ฌ์šฉ๋œ ์ด์›ƒ์˜ ์ธ๋ฑ์Šค ํ™•์ธ

 

 

### ์‚ฌ์šฉ๋œ ์ด์›ƒ์˜ ์ธ๋ฑ์Šค ํ™•์ธ

dist, indexes = knr.kneighbors([[50]])
indexes

 

 

 

 

 

 

์‚ฐ์ ๋„๋กœ ๊ทธ๋ ค๋ณด๊ธฐ

 

 

### ์‚ฐ์ ๋„๋กœ ๊ทธ๋ ค๋ณด๊ธฐ
plt.scatter(train_input, train_target, c="blue", label="train")
plt.scatter(50, pred[0], marker="^", c="green", label="pred")
plt.scatter(train_input[indexes], train_target[indexes], c="red", label="nei")
plt.xlabel("length")
plt.ylabel("weight")
plt.legend()
plt.show()

 

 

 

 

 

### ๊ธธ์ด 100์œผ๋กœ ๋ฌด๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ
pred = knr.predict([[100]])
pred

### ์‚ฌ์šฉ๋œ ์ด์›ƒ์˜ ์ธ๋ฑ์Šค ํ™•์ธ

dist, indexes = knr.kneighbors([[100]])
indexes

### ์‚ฐ์ ๋„๋กœ ๊ทธ๋ ค๋ณด๊ธฐ
plt.scatter(train_input, train_target, c="blue", label="train")
plt.scatter(50, pred[0], marker="^", c="green", label="pred")
plt.scatter(train_input[indexes], train_target[indexes], c="red", label="nei")
plt.xlabel("length")
plt.ylabel("weight")
plt.legend()
plt.show()

 

 

 

 

 

 

KNN์˜ ํ•œ๊ณ„

 

 

 - ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ด์›ƒ์„ ์ด์šฉํ•ด์„œ ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋ธ์ด๊ธฐ์—
 - ์˜ˆ์ธกํ•˜๊ณ ์ž ํ•˜๋Š” ๋…๋ฆฝ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๊ธฐ์กด ํ›ˆ๋ จ๋ฐ์ดํ„ฐ์˜ ๋…๋ฆฝ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณŒ์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ์—๋Š”
 - ๊ฐ’์ด ํ•ญ์ƒ ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.(๊ฐ€๊นŒ์šด ๊ฑฐ๋ฆฌ์˜ ์ด์›ƒ์ด ํ•ญ์ƒ ๋™์ผํ•ด์ง)

 ๋”ฐ๋ผ์„œ, ๋‹ค๋ฅธ ํšŒ๊ท€๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

 

 

 

 

ํšŒ๊ท€๋ชจ๋ธ ์ข…๋ฅ˜

 

 

์„ ํ˜•ํšŒ๊ท€๋ชจ๋ธ, ๋‹คํ•ญํšŒ๊ท€๋ชจ๋ธ, ๋‹ค์ค‘ํšŒ๊ท€๋ชจ๋ธ, ๋ฆฟ์ง€, ๋ผ์˜, ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ, ๊ทธ๋ ˆ๋””์–ธํŠธ๋ถ€์ŠคํŠธ, ํžˆ์Šคํ† ๊ทธ๋žจ๊ทธ๋ ˆ๋””์–ธํŠธ๋ถ€์ŠคํŠธ, XGBoost, ๊ธฐํƒ€ ๋“ฑ๋“ฑ

 

 

 ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํšŒ๊ท€๋ชจ๋ธ

๋ฆฟ์ง€, ํžˆ์Šคํ† ๊ทธ๋žจ๊ทธ๋ ˆ๋””์–ธํŠธ๋ถ€์ŠคํŠธ, XGBoost

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

loading