K 近邻算法思想:

寻找该点周围最近的K个点。根据这K 个点的类别来判断该点的类别;

核心: 数据归一化。(在必要的时候必须进行数据归一化处理,防止某一特征在计算数据时占比较重)

计算欧拉距离 。 使用python中 np的向量相减后的平方再开根号

distances = []
for x_train in X_train:
d = sqrt(np.sum((x_train - x) ** 2))
distances.append(d)

distances = [sqrt(np.sum((x_train-x)**2)) for x_train in X_train]

比较欧拉距离。 获取距离由近到远的索引下标:

nearest = np.argsort(distances)   #返回的是从小到大的对应索引

      选择K个最近的,并统计类型。

topK_y = [y_train[i] for i in nearest[:k]]       #选前k个
c = Counter(topK_y) #统计类型
print(c.most_common(1)[0][0]) #输出计数最高的那个元组中的值
05-28 00:08