근처에 있는 (기본 5개) n_neighbor의 수를 표본으로 삼아 해당 표본 중 많은 클래스의 것이 정답이 된다.
1. 표본 만들기
import random
dorados_length = [random.uniform(40,80) for _ in range(35)]
dorados_weight = [length*10 + random.uniform(-10,10) for length in dorados_length ]
trout_length = [random.uniform(10,30) for _ in range(14)]
trout_weight =[length*10 + random.uniform(-5,5) for length in trout_length ]
2. 시각적으로 확
import matplotlib.pyplot as plt
plt.scatter(dorados_length,dorados_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
plt.scatter(trout_length,trout_weight)
plt.xlabel("length")
plt.ylabel("weight")
plt.show()
3. 머신러닝이 원하는 데이터 형태로 바꾸어준다.
length = dorados_length + trout_length
weight = dorados_weight + trout_weight
fish_data = [[l,w] for l,w in zip(length,weight)]
4.정답 만들기 -> 데이터만 학습하면 안됨. -> 지도 학습
fish_target = [1]*35+[0]*14
print(fish_target)
5.k -근접 알고리즘
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn.fit(fish_data,fish_target)
kn.score(fish_data,fish_target)
6.예측해보기
kn.predict([[30,300]])
-> 데이터를 넣을 때도 2차원 배열로 넣어주었기 때문에 예측 데이터도 2차원 배열로 넣어주어야 한다.