μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- java 11 μ€μΉ
- api곡ν΅ν
- νΌμ 곡λΆνλ λ¨Έμ λ¬λ
- ICTνκΈ°
- λ¨Έμ λ¬λ
- M1
- 체ν¬λ°μ€μ»€μ€ν
- 컀μ€ν
- μμ
- ICTμΈν΄μ
- μ·νκ·κ±Έμ΄
- axiosμΈμ€ν΄μ€
- XCode
- λ₯λ¬λ
- svgμ
- λ§₯λΆ
- ios
- styled-components
- κΉνμλ¬
- μμ΄λμ€λ³΅
- ICTμ§μ
- νλ‘ νΈμλ
- CSS
- react
- νΌκ³΅λ¨Έμ
- κ³Όλμ ν©κ³Ό κ³Όμμ ν©
- ν μ€νΈ μΈνΈ
- 컴곡μ λ°°
- μλ¦Ώμμ ν
- κΉνμ¬μ΄νΈ
- Today
- Total
Hi-λπ High-λβοΈ
02-1 νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈ λ³Έλ¬Έ
02-1 νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈ
νμ΄λ 2021. 8. 26. 01:21μ§λ μ±ν°μμλ μ νλ 100%μΈ λλ―Έμ λΉμ΄λ₯Ό λΆλ₯νλ λ¨Έμ λ¬λ λͺ¨λΈμ λ§λ€μλ€. κ·Έλ°λ° μ¬μ€ λͺ¨λ μμ μ λν λ΅μ μκ³ μλλ° λ§μΆμ§ λͺ»νλ κ²μ΄ μ΄μνλ€. μ΄ λ¬Έμ λ μ΄λ»κ² ν΄κ²°νλ©΄ μ’μκΉ?
μ§λ νμ΅κ³Ό λΉμ§λ νμ΅
λ¨Έμ λ¬λ μκ³ λ¦¬μ¦μ ν¬κ² μ§λ νμ΅κ³Ό λΉμ§λ νμ΅μΌλ‘ λλ μ μλ€. μ§λ νμ΅ μκ³ λ¦¬μ¦μ νλ ¨νκΈ° μν λ°μ΄ν°μ μ λ΅μ΄ νμνλ€. 1μ₯μμλ λλ―ΈμΈμ§ μλμ§ μ¬λΆκ° μ λ΅μ ν΄λΉνλ€. μ§λ νμ΅μμλ λ°μ΄ν°μ μ λ΅μ κ°κ° μ λ ₯κ³Ό νκΉμ΄λΌκ³ νκ³ , μ΄ λμ ν©μ³μ νλ ¨ λ°μ΄ν°λΌκ³ λΆλ₯Έλ€. μ§λ νμ΅μ μ λ΅μ λ§νλ κ²μ νμ΅νλ€. λ°λ©΄ λΉμ§λ νμ΅ μκ³ λ¦¬μ¦μ μ λ΅μ μ¬μ©νμ§ μκΈ° λλ¬Έμ 무μΈκ°λ₯Ό λ§ν μλ μμΌλ©°, λ€λ§ λ°μ΄ν°λ₯Ό μ νμ νκ±°λ λ³ννλ λ° λμμ μ€λ€.
νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈ
μνμ 보기 μ μ μΆμ λ μν λ¬Έμ μ μ λ΅μ 미리 μλ €μ£Όκ³ μνμ 보면 λΉμ°ν 100μ μ λ§μ μ μλ€. λ¨Έμ λ¬λλ λ§μ°¬κ°μ§λ€. λλ―Έμ λΉμ΄μ λ°μ΄ν°μ νκΉμ μ£Όκ³ νλ ¨ν λ€μ, κ°μ λ°μ΄ν°λ‘ ν μ€νΈνλ€λ©΄ λͺ¨λ λ§νλ κ²μ΄ λΉμ°νλ€. μ°μ΅ λ¬Έμ μ μν λ¬Έμ κ° λ¬λΌμΌ μ¬λ°λ₯΄κ² νμμ λ₯λ ₯μ νκ°ν μ μλ―μ΄, λ¨Έμ λ¬λ μκ³ λ¦¬μ¦μ μ±λ₯μ μ λλ‘ νκ°νλ €λ©΄ νλ ¨ λ°μ΄ν°μ νκ°μ μ¬μ©ν λ°μ΄ν°κ° κ°κ° λ¬λΌμΌ νλ€. μ΄λ₯Ό μν΄μ νλ ¨ λ°μ΄ν°μμ μΌλΆλ₯Ό λΌμ΄ λ΄μ΄ ν μ€νΈ μΈνΈλ‘ μ¬μ©νκ³€ νλ€.
λ¨Όμ λ°μ΄ν°λ₯Ό μ€λΉνμ.
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]
fish_data = [[l,w] for l,w in zip(fish_length, fish_weight)]
fish_target=[1]*35 + [0]*14
κ·Έλ¦¬κ³ μ¬μ΄ν·λ°μ KNeighborsClassifier ν΄λμ€λ₯Ό μν¬νΈνκ³ λͺ¨λΈ κ°μ²΄λ₯Ό λ§λ λ€.
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
μ΄μ μ 체 λ°μ΄ν°μμ μ²μ 35κ°λ₯Ό μ νν΄μΌ νλ€. νμ΄μ¬ 리μ€νΈλ μ¬λΌμ΄μ±μ΄λΌλ νΉλ³ν μ°μ°μλ₯Ό μ 곡νλλ°, μ΄ μ°μ°μ μ¬μ©νλ©΄ μΈλ±μ€μ λ²μλ₯Ό μ§μ νμ¬ μμλ₯Ό μ¬λ¬ κ° μ νν μ μλ€. μ¬κΈ°μ μ£Όμν μ μ λ§μ§λ§ μΈλ±μ€μ μμλ ν¬ν¨λμ§ μλλ€λ μ μ΄λ€. μ΄λ₯Ό μμ©νμ¬ μμ λ°μ΄ν°μμ μ²μ 35κ°μ λλ¨Έμ§ 14κ°λ₯Ό μ ννμ¬ λ³΄μ.
train_input = fish_data[:35]
train_target = fish_target[:35]
test_input = fish_data[35:]
test_target = fish_target[35:]
μ¬λΌμ΄μ± μ°μ°μΌλ‘ μΈλ±μ€ 0~34κΉμ§ μ²μ 35κ° μνμ νλ ¨ μΈνΈλ‘ μ ννκ³ , μΈλ±μ€ 35~48κΉμ§ λλ¨Έμ§ 14κ°μ μνμ ν μ€νΈ μΈνΈλ‘ μ ννλ€. λ°μ΄ν°λ₯Ό μ€λΉνμΌλ νλ ¨ μΈνΈλ‘ fit() λ©μλλ₯Ό νΈμΆν΄ λͺ¨λΈμ νλ ¨νκ³ , ν μ€νΈ μΈνΈλ‘ score() λ©μλλ₯Ό νΈμΆν΄ νκ°ν΄λ³΄μ.
kn=kn.fit(train_input, train_target)
kn.score(test_input, test_target)
0.0
μ νλλ₯Ό νμΈν΄λ³΄λ 0.0μ΄λ€. μ μ΄λ° λ¬Έμ κ° μκΈ΄ κ²μΌκΉ?
μ΄λ μλͺ»λ νλ ¨ λ°μ΄ν°λ‘λΆν° μκΈ΄ λ¬Έμ μ΄λ€. μ¬λ°λ₯Έ νλ ¨ λ°μ΄ν°λ λλ―Έμ λΉμ΄κ° κ³¨κ³ λ£¨ μμ¬μμ΄μΌ νλ€. μ΄μ²λΌ νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈμ μνμ΄ κ³¨κ³ λ£¨ μμ¬ μμ§ μμ μν©μ μνλ§ νΈν₯μ΄λΌκ³ λΆλ₯Έλ€. μνλ§ νΈν₯ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄, νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈλ₯Ό λλκΈ° μ μ λ°μ΄ν°λ₯Ό μλ μ§ μλλ©΄ κ³¨κ³ λ£¨ μνμ λ½μμ νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈλ₯Ό λ§λ€μ΄μΌ νλ€. μ΄ μμ μ μν΄ λνμ΄μ λν΄ μμ보μ.
λνμ΄
λνμ΄(numpy)λ νμ΄μ¬μ λνμ μΈ λ°°μ΄ λΌμ΄λΈλ¬λ¦¬μ΄λ€. λνμ΄λ κ³ μ°¨μμ λ°°μ΄μ μμ½κ² λ§λ€κ³ μ‘°μν μ μλ κ°νΈν λꡬλ₯Ό λ§μ΄ μ 곡νλ€.
κ·ΈλΌ μμ λ°μ΄ν°λ₯Ό 2μ°¨μ λνμ΄ λ°°μ΄λ‘ λ³νν΄λ³΄μ. λ¨Όμ λνμ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό μν¬νΈνκ³ , λνμ΄ array() ν¨μμ νμ΄μ¬ 리μ€νΈλ₯Ό μ λ¬νλ©΄ λλ€.
import numpy as np
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)
μ΄λ κ² λ³νν input_arr λ°°μ΄μ μΆλ ₯ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΄ 2κ°μ μ΄(νΉμ±)κ³Ό 49κ°μ ν(μν)μ κ°μ§ λ°°μ΄μμ μ μ μλ€.
[[ 25.4 242. ],
[ 26.3 290. ],
. .
. .
[ 15. 19.9 ]]
μ΄λ κ² μΆλ ₯ν΄λ³΄μ§ μμλ λνμ΄ λ°°μ΄ κ°μ²΄λ λ°°μ΄μ ν¬κΈ°λ₯Ό μλ €μ£Όλ shape μμ±μ μ 곡νλ€. μ΄ λͺ λ Ήμ μ¬μ©νλ©΄ (μν μ, νΉμ± μ)λ₯Ό μΆλ ₯νλ€.
print(input_arr.shape)
(49,2)
μ΄μ μμ λ°μ΄ν°λ₯Ό λνμ΄ λ°°μ΄λ‘ μ€λΉνμΌλ―λ‘ λ¬΄μμνκ² μνμ 골λΌλ³΄μ. μ¬κΈ°μ μ£Όμν μ μ input_arrκ³Ό target_arrμμ κ°μ μμΉλ ν¨κ» μ νλμ΄μΌ νλ€. λ€μ λ§ν΄μ νκΉμ΄ μνκ³Ό ν¨κ» μ΄λν΄μΌ νλ€λ λ»μ΄κ³ , μ΄λ₯Ό μν΄μ μμ μΈλ±μ€λ₯Ό μκ³ κ·Έμ ν΄λΉνλ input_arr μ target_arrμ μ ννλ λ°©μμ ννλ€.
λνμ΄ arange() ν¨μλ₯Ό μ¬μ©ν΄μ 0μμλΆν° 48κΉμ§μ μΈλ±μ€λ₯Ό λ§λ€κ³ μ΄ μΈλ±μ€λ₯Ό λλ€νκ² μλλ€. μλ λνμ΄μμλ μ€νν λλ§λ€ λ€λ₯Έ κ²°κ³Όλ₯Ό λ§λ€μ§λ§, μ± κ³Ό λμΌν κ²°κ³Όλ₯Ό μ»κΈ° μν΄μ μ¬κΈ°μλ λλ€ μλλ₯Ό μ§μ ν΄μ£Όμλ€.
np.random.seed(42)
index = np.arange(49)
np.random.shuffle(index)
μ΄λ κ² λ§λ ν λ°°μ΄ μΈλ±μ± κΈ°λ₯μ μ¬μ©νμ¬, μμ λ§λ index λ°°μ΄μ μ²μ 35κ°λ₯Ό input_arrμ target_arrμ μ λ¬νμ¬ λλ€νκ² 35κ°μ μνμ νλ ¨ μΈνΈλ‘ λ§λ€μλ€. κ·Έλ¦¬κ³ λλ¨Έμ§ 14κ°λ₯Ό ν μ€νΈ μΈνΈλ‘ λ§λ€μλ€.
train_input = input_arr[index[:35]]
train_target = target_arr[index[:35]]
test_input = input_arr[index[35:]]
test_target = target_arr[index[35:]]
λͺ¨λ λ°μ΄ν°λ₯Ό μ€λΉνμΌλ μ°μ λλ₯Ό ν΅ν΄ νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈμ λλ―Έμ λΉμ΄κ° μ μμ¬ μλμ§ νμΈν΄λ³΄μ.
import matplotlib.pyplot as plt
plt.scatter(train_input[:,0], train_input[:,1])
plt.scatter(test_input[:,0], test_input[:,1])
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
νλμμ΄ νλ ¨ μΈνΈμ΄κ³ μ£Όν©μμ΄ ν μ€νΈ μΈνΈμ΄λ€. μμͺ½μ λλ―Έμ λΉμ΄κ° λͺ¨λ μ μμ¬ μλ κ²μ νμΈν μ μλ€. μ΄μ λͺ¨λΈμ λ€μ νλ ¨μμΌλ³΄μ.
λ λ²μ§Έ λ¨Έμ λ¬λ νλ‘κ·Έλ¨
μμμ λ§λ νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈλ‘ k-μ΅κ·Όμ μ΄μ λͺ¨λΈμ νλ ¨μμΌλ³΄μ. fit() λ©μλλ₯Ό μ€νν λλ§λ€ KNeighborsClassifier ν΄λμ€μ κ°μ²΄λ μ΄μ μ νμ΅ν λͺ¨λ κ²μ μμ΄λ²λ¦°λ€. μ΄μ λͺ¨λΈμ κ·Έλλ‘ λκ³ μΆλ€λ©΄ μλ‘κ² κ°μ²΄λ₯Ό λ§λ€μ΄μΌ νμ§λ§, μ¬κΈ°μλ λ¨μνκ² κ·Έλλ‘ μ¬μ©νλ€.
μΈλ±μ€λ₯Ό μμ΄ λ§λ train_inputκ³Ό train_targetμΌλ‘ λͺ¨λΈμ νλ ¨μν€κ³ , μ΄ λͺ¨λΈμ ν μ€νΈνλ©΄ λ€μκ³Ό κ°λ€.
kn = kn.fit(train_input, train_target)
kn.score(test_input, test_target)
1.0
100%μ μ νλλ‘ ν μ€νΈ μΈνΈμ μλ λͺ¨λ μμ μ λ§μΆμμμ νμΈν μ μλ€.
(μ 리) νλ ¨ λͺ¨λΈ νκ°
λͺ¨λΈμ νλ ¨ν λ μ¬μ©ν λ°μ΄ν°λ‘ λͺ¨λΈμ μ±λ₯μ νκ°νλ κ²μ μ λ΅μ 미리 μλ €μ£Όκ³ μνμ 보λ κ²κ³Ό κ°λ€. 곡μ νκ² νκ°νκΈ° μν΄μ, νλ ¨ λ°μ΄ν°λ₯Ό νλ ¨ μΈνΈμ ν μ€νΈ μΈνΈλ‘ λλμλ€. κ·Έλ°λ° ν μ€νΈ μΈνΈλ₯Ό 무μμ λλλ©΄ μνλ§ νΈν₯μ΄ μΌμ΄λ μ μκΈ° λλ¬Έμ λλ―Έμ λΉμ΄λ₯Ό κ³¨κ³ λ£¨ μμ΄ λλλ μμ μ νλ€. μ΄λ νμ΄μ¬μ λ€μ°¨μ λ°°μ΄ λΌμ΄λΈλ¬λ¦¬μΈ λνμ΄λ₯Ό μ¬μ©νμλ€. μ΄ μ±ν°μμλ λνμ΄μ shuffle() ν¨μλ₯Ό μ΄μ©νμ¬ λ°°μ΄μ μΈλ±μ€λ₯Ό μμλ€.
μΆμ² : λ°ν΄μ , νΌμ 곡λΆνλ λ¨Έμ λ¬λ+λ₯λ¬λ, νλΉλ―Έλμ΄, 2021
'λ¨Έμ λ¬λ > νΌμ 곡λΆνλ λ¨Έμ λ¬λ + λ₯λ¬λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
03-1 k-μ΅κ·Όμ μ΄μ νκ· (0) | 2021.08.29 |
---|---|
02-2 λ°μ΄ν° μ μ²λ¦¬ (0) | 2021.08.27 |
01-3 λ§μΌκ³Ό λ¨Έμ λ¬λ (0) | 2021.08.25 |
01-2 μ½λ©κ³Ό μ£ΌνΌν° λ ΈνΈλΆ (0) | 2021.08.17 |
01-1 μΈκ³΅μ§λ₯κ³Ό λ¨Έμ λ¬λ, λ₯λ¬λ (0) | 2021.08.16 |