K紧邻算法
来源:互联网 发布:帕拉卡斯人知乎 编辑:程序博客网 时间:2024/06/06 07:26
1、概述:其基本思想是--对于新实例,计算其与训练集的距离,取最相近的K个,根据分类规则决定该实例的类别
2、三大要素:距离的度量、K值的选择、分类决策规则
3、距离的度量:;当p=1是叫做曼哈顿距离,当p=2时,叫欧式距离。不同的距离度量产生的邻近点是不同的
4、K值的选择:K值的选择对算法的影响很大;很明显,K值越大,模型越简单,其估计误差会减少,但同时近似误差会变大;很多无关的值会被考虑进来,影响预测的效果。相反,如果K值取的越小,模型就月复杂,此时估计误差会变大,模型对实例点非常敏感,如果该实例点是噪声,则会导致预测错误。
5、分类决策规则:一般采用多数表决的方式。
6、一般K近邻算法的实现采用的是线性扫描的方式,但是如果数据量特别大的时候需要考虑使用不同的数据结构来储存数据,以减少计算的次数;如kd树
7、<<机器学习实战>>种关于K近邻算法的实现:
from numpy import *
import operator
from os import listdir
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
上述的是实现的核心代码,主要计算实例点和数据集的欧式距离,并取前K个值做多数表决来决定该实例点的类别。当然,还有数据的归一化部分没有呈现出来,具体可参考书本源码。
- K紧邻算法
- 一种快速在向量空间中寻找k紧邻的算法——annoy index
- Nearest-Neighbor Classifier紧邻算法分类器(一)
- 紧邻算法分类器之模拟图(二)
- 紧邻算法分类器之模拟图(实现模拟)(三)
- 数据挖掘学习------------------4-分类方法-2-K-紧邻(KNN)
- K-Means(K均值) 算法
- K-mediods(K中心点)算法
- K-NN(k近邻算法)
- k-近邻算法(k-nn)
- K-means算法和K临近算法
- k-means算法
- K-均值算法
- K-MEANS算法
- K-MEANS算法
- K-means算法
- k-means算法
- Top K 算法详解
- github 如何下载代码
- springmvc上传下载
- java求最大公约数,最小公倍数
- (document).height()与$(window).height()
- Github上如何给别人贡献代码
- K紧邻算法
- VS2015编译OpenCV2.4.13源码及配置
- mysql DELIMITER 问题
- Java数据结构之队列-使用数组实现队列
- hdu2888—Check Corners(二维RMQ)
- Mysql 隔离级别和锁(一)
- LinkedHashMap及其源码分析
- Spring Data操作Redis时,发现key值出现 \xac\xed\x00\x05t\x00\tb
- Linux上不了网