这算是我接触的第一个算法的东西吧-----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)
就这么简单......哈哈,希望对你有帮助。
我相信努力的人运气不会差,未来会给我一双梦想的翅膀