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

[Python] ๋จธ์‹ ๋Ÿฌ๋‹ 01_์ƒ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ_K์ตœ๊ทผ์ ‘์ด์›ƒ๋ชจ๋ธ

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

ํ™œ์šฉ ๋ฐ์ดํ„ฐ

 

 

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]])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

loading