语义原理:
k-近邻算法(k-Nearest Neighbor,KNN)。
对于一个样本数据集合,其由特征数据和分类数据组成,特征数据和分类数据间存在对应关系,将其视为训练样本集;对于只存在特征数据的新数据,将其与训练样本集中特征进行比较,然后用算法提取样本集中特征最相似数据(最近邻)的分类标签,作为新数据的标签,以完成分类任务。
数据原理:
计算两个向量点xA和xB之间的距离(欧式距离公式):
代码实现:
import numpy as np
import operator
"""
实现步骤:
1.计算已知类别数据集中的点与当前点之间的距离
2.按照距离递增次序排序
3.选取与当前点距离最小的k个点
4.确定前k个点所在类别的出现频率
5.返回前k个点出现频率最高的类别作为当前点的预测分类
"""
def classify(inX,dataSet,labels,k):
"""
计算距离最近的一个点,并返回分类值
inX:用于分类的输入向量
dataSet: 训练样本集
labels:标签向量