当前位置:   article > 正文

KNN算法入门_cosine knn

cosine knn

近邻算法介绍

KNN是数据挖掘算法中最简单的一种算法,该算法的核心思想是通过比较K个最近的样本的距离来度量样本的相似程度,找到K个最近的样本,通过这K个样本的类别,确定要比较的新样本的类别,该算法最重要的就是比较两两之间的距离,故而在样本和特征较大的情况下,计算复杂度高,比较适合少量数据。

距离计算方法

欧式距离

二维平面上的两点 a ( x 1 , y 1 ) a(x_1,y_1) a(x1,y1) b ( x 2 , y 2 ) b(x_2,y_2) b(x2,y2)之间的距离:
D(x, y) = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2} (x1y1)2+(x2y2)2

多维空间上的两点 a ( x 1 , . . . , y n ) a(x_1,...,y_n) a(x1,...,yn) b ( x 2 , . . . , y n ) b(x_2,...,y_n) b(x2,...,yn)之间的距离:
D(x, y) = ( x 1 − y 1 ) 2 + . . . + ( x n − y n ) 2 \sqrt{(x_1 - y_1)^2 +...+ (x_n - y_n)^2} (x1y1)2+...+(xnyn)2

也可以表示为以下形式:

D(x, y) = ∑ i n ( x i − y i ) 2 \sqrt{\sum_i^n(x_i - y_i)^2} in(xiyi)2

余弦相似度

余弦相似度可以求两个样本之间的余弦值
cos ⁡ θ \cos \theta cosθ= a ⃗ ⋅ b ⃗ ∣ a ∣ ∗ ∣ b ∣ \vec {a} \cdot \vec {b} \over{|a|*|b|} aba b

曼哈顿距离

D(x, y) = ∑ i n ∣ x i − y i ∣ {\sum_i^n|x_i - y_i|} inxiyi

Python代码实现

import numpy as np
from collections import Counter
X = np.random.random_sample((100, 3))
y = np.random.randint(low=0, high=3, size=100, dtype=np.int)
test_rate = 0.25
random_list = np.random.permutation(100)
train_index = random_list[:int((1-test_rate) * X.shape[0])]
test_index = random_list[int((1-test_rate) * X.shape[0]):]
X_train = X[train_index]
y_train = y[train_index]
X_test = X[test_index]
y_test = y[test_index]
d = [((X_train - x) ** 2).sum(axis=1) for x in X_test]
p_label = []
for i in d[:]:
    sort_index = np.argsort(i)
    max_index = sort_index[-5:]
    counter = Counter(y_train[max_index])
    p_label.append(counter.most_common(1)[0][0])
zhunquelv = sum(p_label == y_test) / 25

由于以上是造的数据,所以准确率不高,真实环境中的数据类同比例会比较高,预测准确率会大幅提升,由以上的过程可以看出,这个算法还是存在很大的问题,计算距离的时候会把预测数据和每个样本都计算一遍距离,对于大量数据的时候,性能会较低。

KNN除了可以做分类外,还可以预测连续型数据,把训练数据最大的K个数做平均,就可以预测出答案,除此之外,在做分类时,还可以依据所选的K个值,做加权,可以用预测的倒数来比较到底应该属于哪个类别,可能我们预测的是类别A,但是虽然类别A是我们选择的K中的出现最多的,但是他们离得比较远,所以按照权值可能结果不一样,这就要看数据是否强依赖距离了,这也体现了距离的思想

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/160028
推荐阅读
相关标签
  

闽ICP备14008679号