用Python开始机器学习(KNN分类算法).docx
《用Python开始机器学习(KNN分类算法).docx》由会员分享,可在线阅读,更多相关《用Python开始机器学习(KNN分类算法).docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用Python开始机器学习(4:KNN分类算法)1、KNN分类算法KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算法,是一个概念极其简单,而分类效果又很优秀的分类算法。他的核心思想就是,要确定测试样本属于哪一类,就寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本也属于哪一类。简单的说就是让最相似的K个样本来投票决定。这里所说的距离,一般最常用的就是多维空间的欧式距离。这里的维度指特征维度,即样本有几个特征就属于几维。KNN示意图如下所示。上图中要确定测试样本绿色属于蓝色还是红色。
2、显然,当K=3时,将以1:2的投票结果分类于红色;而K=5时,将以3:2的投票结果分类于蓝色。KNN算法简单有效,但没有优化的暴力法效率容易达到瓶颈。如样本个数为N,特征维度为D的时候,该算法时间复杂度呈O(DN)增长。所以通常KNN的实现会把训练数据构建成K-D Tree(K-dimensional tree),构建过程很快,甚至不用计算D维欧氏距离,而搜索速度高达O(D*log(N)。不过当D维度过高,会产生所谓的”维度灾难“,最终效率会降低到与暴力法一样。因此通常D20以后,最好使用更高效率的Ball-Tree,其时间复杂度为O(D*log(N)。人们经过长期的实践发现KNN算法虽然简单
3、,但能处理大规模的数据分类,尤其适用于样本分类边界不规则的情况。最重要的是该算法是很多高级机器学习算法的基础。当然,KNN算法也存在一切问题。比如如果训练数据大部分都属于某一类,投票算法就有很大问题了。这时候就需要考虑设计每个投票者票的权重了。2、测试数据测试数据的格式仍然和前面使用的身高体重数据一致。不过数据增加了一些:plainview plaincopy1. 1.540thin2. 1.550fat3. 1.560fat4. 1.640thin5. 1.650thin6. 1.660fat7. 1.670fat8. 1.750thin9. 1.760thin10. 1.770fat11.
4、 1.780fat12. 1.860thin13. 1.870thin14. 1.880fat15. 1.890fat16. 1.980thin17. 1.990fat3、Python代码scikit-learn提供了优秀的KNN算法支持。使用Python代码如下:pythonview plaincopy1. #-*-coding:utf-8-*-2. importnumpyasnp3. fromsklearnimportneighbors4. fromsklearn.metricsimportprecision_recall_curve5. fromsklearn.metricsimport
5、classification_report6. fromsklearn.cross_validationimporttrain_test_split7. importmatplotlib.pyplotasplt8. 9. 数据读入10. data=11. labels=12. withopen(data1.txt)asifile:13. forlineinifile:14. tokens=line.strip().split()15. data.append(float(tk)fortkintokens:-1)16. labels.append(tokens-1)17. x=np.array(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 开始 机器 学习 KNN 分类 算法
限制150内