kNN(k-Nearest Neighbors)
image
KNN思想:
如上图所示:原有数据集有两类:椭圆为一类,长方形为一类。KNN 需要判断星号是属于椭圆类还是长方形类。分如下几步判断:
1.首选确定K值。本文K值取为3。
2.判断离星号最近的K个样本中哪个样本类别最多,就判断星号属于哪个类别。
距离公式
使用欧拉距离
image.png
import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from collections import Counter
X = np.array([[2,2],[1,3],[3,3],[4,1],[4,3],[6,2]])
Y = np.array([0 , 0, 0, 1, 1, 1])
x = np.array([[1,1]])
d = []
d = [sqrt(np.sum((x-x_)**2)) for x_ in X]
n = np.argsort(d)
k = 3
k_y = [y[i] for i in n[:k]]
c = Counter(k_y)
c = c.most_common(1)[0][0]
print("x所属类别为:",c)
网友评论