2020_01_23 KNN

ro_ot ㅣ 2020. 1. 23. 22:55

※ KNN : k-최근접 이웃 분류 (k-Nearest neighbor)

 

import numpy as np
# 개, 말, 새
x = [140, 150, 160, 170, 180]
y = [0, 0, 1, 1, 2] # 초:0, 중:1, 고:2
x_test = [120, 158, 177]

 * 위 x 데이터를 KNN 모델을 fit해서 x_test를 예측하세요

x = np.array(x).reshape((-1, 1)) # 1d를 2d로 모양 변경, -1자리는 자동으로 계산해서 변경하라는 뜻
x_test = np.array(x_test).reshape((-1, 1))
y = np.array(y)
x.shape

 → (5, 1)

from sklearn.neighbors import KNeighborsClassifier # 대문자로 시작하면 클래스
model = KNeighborsClassifier(n_neighbors=1) # 객체 만들기, shift+tab 설명
model # 객체 정보 보자

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')

model.fit(x, y) # 모델을 핏팅해라

→ KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=1, p=2, weights='uniform')

model.predict(x_test) # 이게 뭔지 예측해봐라

→ array([0, 1, 2])

   * reshape연습

a = np.arange(9)
a, a.shape, a.ndim

(array([0, 1, 2, 3, 4, 5, 6, 7, 8]), (9,), 1)

np.reshape(a, (-1, 1))

array([[0], [1], [2], [3], [4], [5], [6], [7], [8]])

# 동물분류 새, 개, 말
# 특징(다리 갯수, 털 길이 cm)
x = [[2, 7.0], [2, 4.0], [4, 10], [4, 9], [4, 3], [2, 5.0]]
y = [0, 0, 1, 1, 2, 2] # 새:0, 개:1, 말:2
x_test = [[2,9], [4, 4]]
from sklearn.neighbors import KNeighborsClassifier # 대문자로 시작하면 클래스
model = KNeighborsClassifier(n_neighbors=1).fit(x,y)
model.predict(x_test)

array([0, 2])

 

  • list : 데이터 저장, 관리용
  • array : 연산용
a = [1,2,3]
a, type(a)

([1, 2, 3], list)

a.append(4)
a
a.insert(4,100)
a

[1, 2, 3, 4, 100]

aa = np.array(a)
aa, type(aa)

(array([ 1, 2, 3, 4, 100]), numpy.ndarray)

aa + aa

array([ 2, 4, 6, 8, 200])

a + a

[1, 2, 3, 4, 100, 1, 2, 3, 4, 100]

'Deep learning > Code' 카테고리의 다른 글

분류2 classification  (0) 2020.01.28
분류 classification  (0) 2020.01.23
object_detection_yolo_keras  (2) 2020.01.22
object_detection_yolo_darknet  (0) 2020.01.22
2020_01_22 VGG16  (0) 2020.01.22