1.算法原理
KNN是一个极其简单的算法,工作流程如下:
距离计算公式可以使用欧几里得距离,曼哈顿距离,闵可夫斯基距离等等,代码展示为了简单使用欧几里得距离。
2.代码实现
"""
函数功能:KNN分类器
参数说明:
inx:需要预测分类的样本
dataSet:已知分类标签的数据集(训练集)
k:k-近邻算法参数,选择距离最小的k个点
返回:result:分类结果
"""
def classify0(inX,dataSet,k):
dim = dataSet.shape[1]
result = []
dist = list((((dataSet.iloc[:,:dim-1]-inX)**2).sum(1))**0.5)
dist_l = pd.DataFrame({'dist':dist,'labels':(dataSet.iloc[:, dim])})
dr = dist_l.sort_values(by = 'dist')[: k]
re = dr.loc[:, 'labels'].value_counts()
result.append(re.index[0])
return result