uncategorized

K-近临算法

K-近临算法,有叫KNN算法,机器学习常用的一种算法,用于对多个维度的信息进行归类,打标签, 指纹识别,手写数字识别,人脸识别等。算法的特点是简单易懂, 适用数据范围是数值型和标称型,缺点是效率不高。

基本思路如下:

  1. 遍历样本中的每一条信息,并计算与当前待分类信息的距离。这里利用的是欧氏距离公式。
  2. 按照距离递增次序排序
  3. 选取与当前点距离最小的K个点
  4. 确定前K个点所在类别的出现频率
  5. 返回前N个点出现频率最高的类别作为当前点的预测分类

然后可以和测试样本中的数据进行比对,并计算错误率,完美分类器的错误率为0 , 最差分类器的错误率是1。

此外当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。

当各个维度不是平等的话,更有用的做法是对数据添加权值(Weight), 如权值与距离成反比。

可以使用Matplotlib对数据做比较直观的呈现