knn算法的实现原理是将测试数据集与样本数据集中数据对应的特征进行比较,提取k个特征最相似数据的分类标签。
1.先做一个简单的数据1
2
3
4
5
6
7
8
9
10from numpy import *
#简单数据
def dataset():
'''
定义一个简单数据集
:return: train 数据集,labels 对应的标签
'''
train = array([[1, 0.1], [0, 0.1], [1, 1], [0, 0]])
labels = ['A', 'B', 'A', 'B']
return train, labels
2.实现knn算法
计算两个向量点xA和xB之间的距离需要使用到欧式距离公式
$d(x,y)=\sqrt{(x_1-y_1)^{2}+(x_2-y_2)^{2}+(x_n-y_n)^{2}}=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^{2}}$
例如,点(0,0)与(1,2)之间的距离计算为:
$\sqrt{(1-0)^{2}+(2-0)^{2}}$
如果数据集存在4个特征值, 则点(1,0,0,1)与(7,6,9,4)之间的距离计算为:
$\sqrt{(7-1)^{2}+(6-0)^{2}+(9-0)^{2}+(4-1)^{2}}$
计算完距离以后对数据进行从小到的排序
1 | def Knn(inputdate, train, lablel , k): |
如果想用现有的数据集,对数据集进行特征抽取,下一篇有做介绍