相关的源代码和数据都在这个github连接
https://github.com/Sangewang/MacEnvPython/tree/master/July/MachineLearn/Knn
#coding=utf-8
import numpy as np
import operator
from os import listdir
#intX是测试集 dataSet是训练集 labels是标签,k是分类
def classifyKnn(intX,dataSet,labels,k):
dataSetSize = dataSet.shape[0]
#intX本身是一个1024维度的vector,扩展到dataSetSize行,列只扩展一次,相当于复制数据dataSetSize次
diffMat = np.tile(intX,(dataSetSize,1)) - dataSet
#矩阵每个数字做平方
sqDiffMat = diffMat ** 2
#axis = 0是在列的方向操作,axis=1是在行的方向上操作
row_SumDistances = sqDiffMat.sum(axis = 1)
oushi_distance = row_SumDistances ** 0.5
'''
数字:4 3 5 2
下标:0 1 2 3
argsort:3 1 0 2 ,即sortedDistIndices存的是3 1 0 2,代表原数组中下标位3的数字最小
所以sortedDistIndices[0] = 3 代表原数组的2 ->下标3对应的标签找分类
sortedDistIndices[1] = 1 代表原数组的3 ->下标1对应的标签找分类
&#