前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习中K-近邻算法的案例实践

机器学习中K-近邻算法的案例实践

作者头像
机器思维研究院
发布2019-06-10 15:23:58
9090
发布2019-06-10 15:23:58
举报
文章被收录于专栏:AI机器思维

人类一直有一个梦想,造一个智能机器,让机器帮助我们实现自己的心愿。就像小时候看的动画片《葫芦娃》,如意如意随我心意快快显灵,如意如意,一听这个名字就知道它是代表吉祥的物件,寓意“如君所愿”。随着科技的发展,机器学习(Machine Learning)逐渐成熟得到行业应用。

机器学习横跨计算机科学、工程技术和统计学等多个学科,需要多学科的专业知识。机器学习对于任何需要解释并操作数据的领域都有裨益。每一个企业都希望“利润最大化”、“风险最小化”以及“寻找最好的市场策略”。机器学习可以揭示数据背后的真实含义,其核心是靠的机器学习算法,全球论文选出的排名前十的数据挖掘算法包括:C4.5决策树、K-均值(K-mean)、支持向量机(SVM)、Apriori、最大期望值算法(EM)、PageRank算法、AdaBoost算法、K-近邻算法(KNN)、朴素贝叶斯算法(NB)和分类回归(CART)算法。

机器学习中要了解两个重要概念,分别是监督学习和无监督学习

监督学习(Supervised learning)

监督学习过程中,只需要给定输入样本集,机器就可以从中推演出指定目标变量的可能结果。监督学习相对比较简单,机器从输入数据中预测合适的模型,并从中计算出目标变量的结果。

监督学习一般使用两种类型的目标变量:标称型和数值型。标称型目标变量的结果只在有限目标集中取值,如真与假、评价类{好、坏、中性},动物分类集合{爬行类、鱼类、哺乳类、两栖类};数值型目标变量则可以从无限的数值集合中取值,如12、3.1、58、290.3等。(说明:数值型目标变量主要用于回归分析)

对于监督学习,必须已知用于评估算法的目标变量值,需要训练算法。对机器学习的算法通过测试算法评估,测试算法工作的效率。

无监督学习(Unsupervised Learning)

无监督学习目标变量事先并不存在,对于输入数据X能预测变量Y,不同的是这里回答的问题是:从变量数据X中能发现什么?无监督学习不存在目标变量值,故而不需要训练算法。但必须用其他的评测手段检验算法的效率。

掌握机器学习的应用步骤是应用机器学习的关键,机器学习应用程序的步骤:

(1) 收集数据

(2) 准备输入数据

(3) 分析输入数据

(4) 训练算法

(5) 测试算法

(6) 使用算法

使用算法:将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。如果碰到新的数据问题,同样需要重复执行上述的步骤。

训练样本:为了构建和训练分离器,必须首先输入大量已知分类的数据,我们将这些数据称为训练样本集。

本文章以监督学习算法K-近邻算法为例

K-近邻算法(k-Nearest Neighbor ,KNN)

K-近邻算法采用测量不同特征值之间的距离方法进行分类。

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

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

适用数据范围:数组型和标称型。

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

K-近邻算法的一般流程:

(1)收集数据:可以使用任何方法。

(2)准备数据:距离计算所需要的数组,最好是结构化的数据格式。

(3)分析数据:可以使用任何方法。

(4)训练算法:此步骤不使用于K-近邻算法。

(5)测试算法:计算错误率。

(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行。

K-近邻算法判断输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

此案例我们用python语言实现,版本python2.7

注意:python对版本兼容性不太好。很多python使用者要同时安装多个版本的 Python:Python2、Python3 甚至是 3.5、3.7。原因在于:Python3 无法与 Python2 完全兼容。甚至一些用小数表示的版本也明显缺乏向后的兼容性。

本案例对应版本Python2.7,装其他版本会不兼容函数

C:\Python27\

本案例要用到numpy函数,先安装;

2.Numpy函数安装

说明windows版本如果是windows10版本在windows命令行提示符号下输入:

pip install --user numpy

我的是windows10,如果不是这个版本安装输入pip install numpy 就直接输入这个命令,就可以装了;

启动python,进入python shell环境,方法:在命令符号下输入python

输入pyhon进入python shell环境:

在python shell环境开发环境中输入下列命令:

From numpy import *

(此命令将Numpy函数库中的所有模块引入当前的命名空间。

如下图,然后输入random.rand(5,5)

此命令构造了一个5x5的随机数组,因此产生的是随机数组,不同计算机输出结果可能与上述输出不同;

下面python -m pip install --upgrade更新安装

我的K-近邻算法程序kNN.py文件在c:\ml目录下,切换到此目录

此程序中分类函数classify0(),数据集有createDataSet创建;

下面切换到目录c:\ml下,此目录是我的kNN.py程序存储位置。

输入python,起点python

执行kNN.classify0()

K-近邻算法,传递的参数为数据【0,0】时分类给出的B,传递的数据为【1,1】分类给出的A,通过此算法把数组中的数据进行有监督分类识别。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器思维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档