您的位置:首页 > 编程语言

k-近临算法及代码实现

2016-05-21 17:56 218 查看
k-近临算法(KNN)采用测量不同特征值之间的距离方法进行分类。k-近邻算法优点是精度高、对异常值不敏感、无数据输入假定,缺点是计算复杂度高、空间复杂度高,适用数据范围为数值型和标称型。

k-近邻算法的工作原理:存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。然后算法提取样本集中特征最相似数据(最近邻)的分类标签,一般,我们只选择样本数据集中前k个最相似的数据。选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

“近邻性”用距离度量,如欧式距离。



k-近邻算法计算过程

(1)在算式之前,需要把每个属性的值规范化,这有助于防止具有较大初始值域的属性(如收入)比具有较小初始值域的属性(如二元属性)的权重过大。



(2)对于某未知元组进行分类,找出离它最近的k个点。k一般为奇数是为了更好的比较,作出判别,比如(k=5, 3:2)

(3)属于哪一个类的多,就把这个待判别点(未知元组)判别为哪一类。

另外, KNN也可以用于数值预测,即返回给定未知元组的实数值预测。在这种情况下,分类器返回未知元组的K个最近邻的实数值标号的平均值。

如果属性不是数值而是标称的(或类别的)如颜色,如何计算距离?一种简单的方法是比较元组X1和X2中对应属性的值。如果两者相同(元组X1、X2均为蓝色),则二者之间的差为0,如果二者不同,则差为1。

KNN使用基于距离的比较,本质上赋予每个属性相等的权重。当数据存在噪声或不相关属性时,准确率可能受到影响。然而,结合属性加权和噪声数据元组的剪枝。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: