实现kNN 分类算法的步骤:
(1)计算已知类别数据集中的点和我们要测试的实验数据点的距离
注:什么是距离,即使用欧式距离计算公式
(2)按照距离递增次序排序
(3)选取与距离最小的的k个点
注:K的值取多大合适,我也在学习,之后也会写博客笔记,一起交流
(4)确定在k个值中,哪个类出现的频率最高
(5)实验结果是将出现频率最高的那个类最为我们的结果,即完成测试数据的分类
注意:代码中好多注释掉的print,如果你不太理解每一步的意思,可打印出来看看,便于理解
理解sortedClassCount[0][0]的用法吗??
由于sorted函数返回的是以元组为成员的列表,即故需要两次索引,有没有豁然开朗,嘻嘻。。
最后调用函数,输入[0,0]测试,给我们分的类是B
欧式距离公式;
下面就是对代码中的函数进行解释:
首先是.tile()函数---是一个将数组在指定轴进行多次copy,废话不多说,看例子
结果:注意是几位数组
此函数在本代码的应用是,将测试数据[0,0],扩展,然后才可以一次性运算矩阵减法,将该数据与训练集做差,即步骤(1)。
欢迎留言,我虚心接收意见和教导。