티스토리 뷰
반응형
In [174]:
import numpy as np
def distance(p1, p2):
return np.sqrt(np.sum(np.power((p2-p1),2)))
p1 = np.array([1,3])
p2 = np.array([2,6])
print(distance(p1, p2)) # (1,3) 과 (2,6) 간의 거리 계산
In [175]:
from sklearn.datasets import load_iris
data = load_iris()
distance_result = np.zeros(150)
for i in range(len(data.data)):
distance_result[i] = distance(data.data[len(data.data)-1],data.data[i] )
print(distance_result)
In [176]:
print(np.argsort(distance_result)) ## sorting 시 index 값 반환. 첫번째 index 인 149 는 자기 자신이다.
In [177]:
def find_nearest_neighbors(p, points, k):
distance_result = np.zeros(len(points))
for i in range(len(points)):
distance_result[i] = distance(points[i],p )
sorted_index = np.argsort(distance_result)[:k]
result = np.zeros(k)
for i in range(k):
result[i] = data.target[sorted_index[i]]
return result # target 값 ==> 0:setosa , 1:versicolor , 2:virginica
In [178]:
target_result = find_nearest_neighbors(data.data[149], data.data[:149], 5)
print(target_result)
In [179]:
from collections import Counter
def majority_vote(target_result):
vote_counts = Counter(target_result)
#print(type(vote_counts.most_common(1)))
#print(vote_counts.most_common(1))
#vote_counts 의 가장 빈번한 값중 0번째 index 의 target 값을 반환
#가장 빈번한 값이 중복된 경우의 처리는 하지 않았다.
# most_common([n])
#Return a list of the n most common elements and their counts from the most common to the least.
return vote_counts.most_common(1)[0][0]
In [180]:
majority_vote(target_result)
Out[180]:
In [181]:
def knn_predict(p, points , k=5):
species = {0: "setosa", 1:"versicolor", 2:"virginica"}
target_result = find_nearest_neighbors(p, points, k)
species_result = majority_vote(target_result)
return species[species_result]
In [182]:
print("최종결과 : " + knn_predict(data.data[149], data.data[:149], 5))
In [183]:
print("최종결과 : " + knn_predict(data.data[0], data.data, 5))
# 여기서는 distance 측정에 자신의 data 가 포함되게 넣어주었다. 귀찮아서 ㅠㅠ
In [184]:
print("최종결과 : " + knn_predict(data.data[80], data.data, 5))
# 역시 distance 측정에 자신의 data 가 포함되게 넣어주었다. 귀찮아서 ㅠㅠ
반응형
'머신러닝' 카테고리의 다른 글
의사결정나무(decisiontree)_2 (0) | 2018.05.14 |
---|---|
의사결정나무(decisiontree)_1 (0) | 2018.05.12 |
iris data 를 이용한 KNN 구현해보기_2 (0) | 2018.05.08 |
[tensorflow] MNIST Data 설명 (0) | 2017.11.22 |
소프트맥스(SoftMax) (0) | 2017.11.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 경제주체별 M2
- 김성일 작가님
- M1M2비율
- pandas apply
- 환율데이터
- 통화량 데이타
- 환매시점
- 원계열
- 블록해쉬
- 경제는 어떻게 움직이는가
- 객사오
- 주소를 위경도 변환
- M1/M2
- 리치고 주식
- 연금저축
- 말잔
- Forgiving
- ChatGPT
- 리치고
- 내 연금조회
- Dash 와 html 차이
- 연금등록
- 마연굴
- Dash.html
- 프로그래스바 표시
- 계정조정계열
- 블록해쉬구현
- 환율이평선
- 위경도변환
- dash
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함