어떤 데이터에 관한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로
사용하는 알고리즘
단점 : 데이터가 많은 경우 메모리가 많이 필요, 직선 거리 계산량 증가
#도미
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]
bream_weight = [242.0 , 290.0 , 340.0 , 363.0 , 430.0 , 450.0 , 500.0 , 390.0 , 450.0 , 500.0 , 470.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]
#방어
smelt_length = [ 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 ]
smelt_weight = [ 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 ]
length = bream_length + smelt_length
weight = bream_weight + smelt_weight
# 생선의(길이,무게) 데이터 만듬 #앞은 도미 뒤에는 방어순
fish_data = [[l,w] for l, w in zip(length, weight)]
# 정답데이터를 만들어줘야함 - 뭐가 도미고, 뭐가 방어인지 컴퓨터스스로 구분할 수 있는 기준데이터
#도미가 1이고 방어가 0으로 표현
fish_target = [1]*35 + [0]*14
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn49 = KNeighborsClassifier(n_neighbors = 49)
# 참고하는 데이터를 5개에서 49개로 증진 / 가장가까운 데이터 49개를 사용하여 비교한다는 뜻
kn49.fit(fish_data, fish_target) #fit은 데이터를 활용하여 모델을 공부시키는 것
kn49.score(fish_data, fish_target) #이kn49의 정확도