我是靠谱客的博主 重要丝袜,最近开发中收集的这篇文章主要介绍k近邻算法python_KNN: k-近邻算法在Python2.7上的实现与应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#KNN

《机器学习实战》第二章k-近邻算法,在自己实现时遇到了不少问题。在此总结记录一下,顺便给遇到同样问题的朋友做个参考。

问题一:

写完kNN.py保存了之后,需要import导入这个kNN模块。结果报错:ImportError: No module named kNN

解决方法:将kNN.py文件放到 site_packages 目录下

问题二:

解决完问题一,重新在shell中输入>>> import kNN,继续报错:SyntaxError: Non-ASCII character 'xe8' in file C:Python27libsite-packageskNN.py

解决办法:1、重新编辑kNN.py文件,在文件头部加入 # -- coding: utf-8 --

2、保存,重启 Shell

问题三:

上述问题解决后import kNN。报错:only 2 non-keyword arguments accepted。

问题所在:书上提供的代码粗心少写了两个中括号。

本来是array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]),但书上少写了最外面的两个中括号,(⊙﹏⊙)b

解决上述问题后,示例:

在shell中键入命令:

import kNN

group,labels = kNN.createDataSet()

继续键入:

group

输出:

array([[ 1. , 1.1],

[ 1. , 1. ],

[ 0. , 0. ],

[ 0. , 0.1]])

键入:

labels

输出:

['A', 'A', 'B', 'B']

问题四:

键入命令:kNN.classify0([0,0],group,labels,3)

报错:AttributeError: 'dict' object has no attribute 'iteritems'

文件kNN.py中代码sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)无法被执行。

问题原由:python版本问题,我使用的python版本为2.7.12,不支持iteritems()。

解决办法:将iteritems()改为items()。

在shell中依次键入命令:

import kNN

group,labels = kNN.createDataSet()

kNN.classify0([0,0],group,labels,3)

输出:

'B'

KNN算法原理

对未知类别属性的数据集中的每个点依次执行以下操作:

1、计算已知类别数据集中的点与当前点之间的距离;

2、按照距离递增次序排列;

3、选取与当前点距离最小的k个点;

4、确定前k个点所在类别的出现频率;

5、返回前k个点出现频率最高的类别作为当前点的预测分类。

KNN算法总结

1、k-邻近算法是分类数据最简单最有效的算法。

2、k-邻近算法是基于实例的学习,所以使用算法时必须有接近实际数据的训练样本数据。因为这个特性,如果训练数据集很大,就会导致需要占用大量的存储空间。

3、k-邻近算法实际使用时可能会非常耗时,因为其必须对数据集中的每个数据计算距离值。

4、k-邻近算法无法给出任何数据的基础结构信息,因此也无法知晓平均实例样本和典型实例样本具有什么特征。

优点:精度高、对异常值不敏感、无数据输入假定

缺点:计算复杂度高、空间复杂度高

适用数据范围:数值型和标称型

最后

以上就是重要丝袜为你收集整理的k近邻算法python_KNN: k-近邻算法在Python2.7上的实现与应用的全部内容,希望文章能够帮你解决k近邻算法python_KNN: k-近邻算法在Python2.7上的实现与应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部