knn算法

  这算是我接触的第一个算法的东西吧-----knn(邻近算法)

  自我理解也就是,用勾股定理算出C点离A、B的距离,那个距离更小,就认为C就趋向那个值。

python实现knn过程

  

 1 from numpy import *
 2 
 3 #模拟训练数据---4行6列的数组
 4 train_data = array([
 5     [1, 2, 3, 4, 5, 6],     #A类型
 6     [7, 5, 4, 1, 7, 5],     #B类型
 7     [4, 7, 6, 5, 3, 8],     #C类型
 8     [5, 2, 3, 4, 9, 4],     #D类型
 9 ])
10 #每一行就是一个类型,也就是4行分别对应下面的4个类型
11 labels = ["A", "B", "C", "D"]
12 
13 #模拟测试数据
14 test_data = array([1, 5, 8, 6, 4, 7])
15 
16 
17 #目的:通过knn算法计算出测试数据是属于哪一类
18 def knn(test_data, train_data, labels):
19     train_data_lines = train_data.shape[0]   #获取训练数据的行数
20     test_data = tile(test_data, (train_data_lines, 1)) #将测试数据整理跟训练数据一样多的行数,计算“距离”
21     dif_value = test_data - train_data #差值
22     square_value_1 = dif_value**2        #平方
23     line_num = square_value_1.sum(axis=1)           #每行求和
24     square_value_2 = line_num**0.5                       #开方
25     sortdistance = square_value_2.argsort()         #降序排列
26     return labels[sortdistance[0]]
27 
28 res = knn(test_data,train_data,labels)
29 print(res)

就这么简单......哈哈,希望对你有帮助。

  

原文地址:https://www.cnblogs.com/7749ha/p/8888981.html