티스토리 뷰
반응형
1. 파이썬 라이브러리를 이용한 KNN¶
OpenCV 에 있는 KNN 라이브러리를 가지고, 앞서 해보았던 iris data 분류를 해보고자 한다.https://docs.opencv.org/3.0.0/d5/d26/tutorial_py_knn_understanding.html 를 먼저 읽고 따라해보았다.
In [308]:
import cv2
import numpy as np
import matplotlib.pyplot as plt
아래 코드는 랜덤으로 25*2 형태를 가지는 matrix 생성한다. Input 값이 되겠다.
해당 라이브러리를 이용하기 위해서는 float 형이어야한다.
In [309]:
# Feature set containing (x,y) values of 25 known/training data
trainData = np.random.randint(0,100,(25,2)).astype(np.float32)
In [310]:
trainData
Out[310]:
결과값(label) 0 or 1 을 가지는 25 * 1 형태를 가지는 matrix 생성
In [311]:
# Labels each one either Red or Blue with numbers 0 and 1
responses = np.random.randint(0,2,(25,1)).astype(np.float32)
In [312]:
responses
Out[312]:
trainData 중 0 인 것만 red 로 추출한다.
In [313]:
# Take Red families and plot them
red = trainData[responses.ravel()==0]
In [314]:
responses.ravel()==0
Out[314]:
trainData 중 1 인 것만 blue 로 추출한다.
In [315]:
# Take Blue families and plot them
blue = trainData[responses.ravel()==1]
In [316]:
plt.scatter(red[:,0],red[:,1],80,'r','^')
plt.scatter(blue[:,0],blue[:,1],80,'b','s')
Out[316]:
newcomer 라는 새롭게 분류할 값을 생성한다.
In [317]:
newcomer = np.random.randint(0,100,(1,2)).astype(np.float32)
plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o')
Out[317]:
KNearest 을 이용하여 knn 을 생성하고 train 시킨다. 그리고 newcomer(초록색) 에 대한 결과를 생성한다.
k=3 으로 지정했다.
1(blue)로 분류됨을 알 수 있다.
In [318]:
knn = cv2.KNearest()
knn.train(trainData, responses)
ret, results, neighbours ,dist = knn.find_nearest(newcomer, 3)
In [319]:
print(ret)
In [320]:
print(results)
In [321]:
print(neighbours)
In [322]:
print(dist)
In [323]:
plt.show()
2. 파이썬 라이브러리를 이용한 KNN _ iris data¶
In [330]:
from sklearn.datasets import load_iris
data = load_iris()
앞과 같이 제일 마지막 데이터를 가지고 2 (virginica) 로 분류되는지 확인해보도록 하겠다.
k=5 로 해보았다.
In [333]:
knn = cv2.KNearest()
knn.train(data.data[:149].astype(np.float32), data.target[:149].astype(np.float32))
ret, results, neighbours ,dist = knn.find_nearest(data.data[149:].astype(np.float32), 5)
In [334]:
print(ret)
2 (virginica) 로 분류되었다.
In [335]:
print(results)
가까운 5개의 점은 2,2,2,2,1 의 label을 가진다.
In [338]:
print(neighbours)
가까운 5개점들과의 거리는 아래와 같다.
In [339]:
print(dist)
In [ ]:
반응형
'머신러닝' 카테고리의 다른 글
의사결정나무(decisiontree)_2 (0) | 2018.05.14 |
---|---|
의사결정나무(decisiontree)_1 (0) | 2018.05.12 |
iris data 를 이용한 KNN 구현해보기_1 (0) | 2018.05.04 |
[tensorflow] MNIST Data 설명 (0) | 2017.11.22 |
소프트맥스(SoftMax) (0) | 2017.11.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 내 연금조회
- M1M2비율
- 환율데이터
- pandas apply
- 계정조정계열
- 블록해쉬
- 경제주체별 M2
- 연금등록
- 주소를 위경도 변환
- 리치고
- Dash 와 html 차이
- Dash.html
- 리치고 주식
- 프로그래스바 표시
- 마연굴
- 위경도변환
- dash
- 김성일 작가님
- 원계열
- 통화량 데이타
- 블록해쉬구현
- 연금저축
- 경제는 어떻게 움직이는가
- M1/M2
- ChatGPT
- 말잔
- 환율이평선
- Forgiving
- 환매시점
- 객사오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함