K-邻近算法(KNN)的工作原理是:已知一个带标签的已分类数据集合,输入未分类的新数据之后,计算新数据到数据集中的每个数据的欧几里得距离,筛选出前k个最近的点,选择这k个点中出现次数最多的分类,即作为新数据的分类标签
问题描述:已知4个带标签的坐标点A1(1.0,1.1),A2(1.0,1.0),B1(0.0,0.0),B2(0.0,0.1),输入一个新数据后,输出它是属于A类还是B类
实现流程:
1、导入数值计算库numpy和备胎模块opetator
#KNN.py
from numpy import *
import operator
2、创建带标签的数据,之后直接调用这个方法就能返回我们的数据集
#用于创建数据
def create_data_set():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels
3、KNN算法的核心实现
def classify0(in_x, data_set, labels, k):
data_set_size = data_set.shape[0]#获取数组的第一维度的维数,即获取数据量
diff_mat = tile(in_x, (data_set_size,1)) - data_set#计算距离,首先获取坐标差
sq_diff_mat = diff_mat**2#对坐标差进行分别平方
sq_distances = sq_diff_mat.sum(axis=1)
distances = sq_distances**0.5