K近邻算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
向量labels包含了每个数据点的标签信息, labels包含 的元素个数等于group矩阵行数。这里我们将数据点 (1, 1.1)定义为A类,数据点(0,0.1)定义为B类。为了方便说明, 例子中的数值是任意选择的,并没有给出轴标签。
实施kNN分类算法
现在我们已经知道Python如何解析数据,如何加载数据,以 及kNN算法的工作原理,接下来我们将使用这些方法完成分 类任务。 (1)以下为K-近邻算法的伪代码 对未知类别属性的数据集中的每个点依次执行以下操作: ① 计算已知类别数据集中点与当前点之间的距离; ② 按照距离递增次序排序; ③ 选取与当前点距离最小的k个点; ④ 确定前k个点所在类别出现的频率; ⑤ 返回前k个点出现频率最高的类别作为当前点的预测分类。
K-近邻算法示例
2.示例
(1)问题描述:
电影的分类可以按照题材来,然而题材本身 是如何定义的?也就是说同一题材的电影具 有哪些共同特征?这些都是电影分类时必须 要考虑的因素。现在有一种简单的方法,例 如在爱情片中会出现打斗场面,动作片亦会 出现轻吻镜头,但是很明显两者的频率是不 同的,因此接下来将讲述K-近邻算法关于此 的简单应用。
其优缺点及适用数据范围如下: 优点:精度高、对异常值不敏感、无数 据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。
K-近邻算法工作原理
1.工作原理: 存在一个样本数据集合(1)(也称为训练样本
集),并且样本集中每个数据都存在标签(即我们 知道样本集中每一数据与所属分类的对应关系(2))。 输入没有标签的新数据后,将新数据的每个特征 与样本集中数据对应的特征进行比较,然后算法 提供样本集中特征最相似数据(最近邻)的分类标 签(3)。一般来说,我们只选择样本数据集中前k 个最相似的数据(4),这便是算法中k的出处(通常 k≤20)。最后,选择k个最相似数据中出现次数最 多的分类,作为新标签的分类。
K-近邻算法
目录
一、K-近邻算法优缺点 二、K-近邻算法工作原理及示例 三、K-近邻算法的一般流程 四、准备:使用Python导入数据 五、实施kNN分类算法 六、示例1:改进约会网站的配对结果 七、示例2:手写识别系统 八、小结
K-近邻算法优缺点
简单地说,K-近邻算法 (又称KNN)采用测 量不同特征值之间的距离方法进行分类。
return group, labels
准备:使用Python导入数据
在上述代码中,我们导入了两个模块: 科学计算包Numpy以及运算符模块,k-近邻算 法执行排序操作时将使用这个模块提供的参 数,后面我们将进一步介绍。
为了方便使用createDataSet()函数,它创 建数据集和标签,我们需进入Python开发环 境并输入以下命令:
(1)首先编写一些基本的通用函数 ,将下列代码保存 在创建好的 kNN.py 文件中:
from numpy import* import operator
def createDataSet():
group = array([1.0, 1.1], [ labels = ['A', 'A', 'B', 'B']
准备:使用Python导入数据
>>> labels
结果显示,这里有四组数据,每组数据有两个我们已 知的属性或特征值 。上面的group矩阵每行包含一个不同 的数据,我们可以将其想象成某个日志文件中不同的测量 点或者入口。由于人类大脑的限制,我们通常只能可视化 处理三维以下的实务。因此 为了简单地实现数据可视化, 对于每个数据点我们通常只使用两个特征 。
实施kNN分类算法
(2)以下为kNN近邻算法代码,将其保存于 kNN.py中 def classify0( inX, dataSet, labels, k):
(3)分析数据:可以使用任何方法。 (4)测试算法:计算错误率。 (5)使用算法:首先需要输入样本数据和结构化的输 出结果,然后运行k-近邻算法判定输入数据属于哪个分 类,最后应用对计算出的分类执行后续的处理。
准备:使用Python导入数据
1.创建名为 kNN.py 的Python 模块
注:接下来所有的代码均保存于这个文件夹中,读者可以按照自己的习 惯在自己创建的文件夹中编写代码,也可以去网上查找源代码,但笔者 建议读者按照本PPT的顺序去创建模块并编写代码。
K-近邻算法示例
(2)下图示例了六部电影的打斗和接吻镜头数。
K-近邻算法示例
(3)假如有一部未看过的电影,如何确定它是爱情片 还是动作片呢?接下来将 展示如何使用 KNN来解决 这个问题 。 ① 首先我们需要知道需分类电影的打斗镜头和接吻
镜头数量,下图给出了一个Hale Waihona Puke Baidu细示例:
K-近邻算法示例
② 即使不知道待分类电影属于哪种类型,我 们也可以通过某种方法计算方法。下图展 示的是待分类电影与样本集中其他电影的 距离计算结果:
④ 结果: K-近邻算法按照距离最近的三部电影的类型,决 定待分类电影的类型,而这三部电影均为爱情片, 因此我们判定待分类电影为爱情片。
K-近邻算法的一般流程
接下来主要讲解如何在实际中应用K-近邻算法, 同时涉及如何使用Python工具和相关的机器学习术语, 以下为该算法的一般流程:
(1)收集数据:可以使用任何方法。 (2)准备数据:距离计算所需要的数值,最好是结构 化的数据格式。
(1)>>> import kNN 上述命令导入kNN模块。
准备:使用Python导入数据
(2)为了确保输入相同的数据集,继续输 入以下命令:
>>> group,labels = kNN.createDataSet() 该命令创建了变量group和labels。 (3)输入变量的名字以检验是否正确的定 义变量: >>> group
(此处暂时不关心如何计算得到的这些距离值 ,稍 后会具体讲解。 )
K-近邻算法示例
③ 现在我们得到了样本集中所有电影与未知电影的 距离,按照距离递增排序,可以 找到k个距离最 近的电影 。假定 k=3,则三个最靠近的电影依次 是He's Not Really into Dudes 、Beautiful Woman 和 California Man 。
实施kNN分类算法
现在我们已经知道Python如何解析数据,如何加载数据,以 及kNN算法的工作原理,接下来我们将使用这些方法完成分 类任务。 (1)以下为K-近邻算法的伪代码 对未知类别属性的数据集中的每个点依次执行以下操作: ① 计算已知类别数据集中点与当前点之间的距离; ② 按照距离递增次序排序; ③ 选取与当前点距离最小的k个点; ④ 确定前k个点所在类别出现的频率; ⑤ 返回前k个点出现频率最高的类别作为当前点的预测分类。
K-近邻算法示例
2.示例
(1)问题描述:
电影的分类可以按照题材来,然而题材本身 是如何定义的?也就是说同一题材的电影具 有哪些共同特征?这些都是电影分类时必须 要考虑的因素。现在有一种简单的方法,例 如在爱情片中会出现打斗场面,动作片亦会 出现轻吻镜头,但是很明显两者的频率是不 同的,因此接下来将讲述K-近邻算法关于此 的简单应用。
其优缺点及适用数据范围如下: 优点:精度高、对异常值不敏感、无数 据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。
K-近邻算法工作原理
1.工作原理: 存在一个样本数据集合(1)(也称为训练样本
集),并且样本集中每个数据都存在标签(即我们 知道样本集中每一数据与所属分类的对应关系(2))。 输入没有标签的新数据后,将新数据的每个特征 与样本集中数据对应的特征进行比较,然后算法 提供样本集中特征最相似数据(最近邻)的分类标 签(3)。一般来说,我们只选择样本数据集中前k 个最相似的数据(4),这便是算法中k的出处(通常 k≤20)。最后,选择k个最相似数据中出现次数最 多的分类,作为新标签的分类。
K-近邻算法
目录
一、K-近邻算法优缺点 二、K-近邻算法工作原理及示例 三、K-近邻算法的一般流程 四、准备:使用Python导入数据 五、实施kNN分类算法 六、示例1:改进约会网站的配对结果 七、示例2:手写识别系统 八、小结
K-近邻算法优缺点
简单地说,K-近邻算法 (又称KNN)采用测 量不同特征值之间的距离方法进行分类。
return group, labels
准备:使用Python导入数据
在上述代码中,我们导入了两个模块: 科学计算包Numpy以及运算符模块,k-近邻算 法执行排序操作时将使用这个模块提供的参 数,后面我们将进一步介绍。
为了方便使用createDataSet()函数,它创 建数据集和标签,我们需进入Python开发环 境并输入以下命令:
(1)首先编写一些基本的通用函数 ,将下列代码保存 在创建好的 kNN.py 文件中:
from numpy import* import operator
def createDataSet():
group = array([1.0, 1.1], [ labels = ['A', 'A', 'B', 'B']
准备:使用Python导入数据
>>> labels
结果显示,这里有四组数据,每组数据有两个我们已 知的属性或特征值 。上面的group矩阵每行包含一个不同 的数据,我们可以将其想象成某个日志文件中不同的测量 点或者入口。由于人类大脑的限制,我们通常只能可视化 处理三维以下的实务。因此 为了简单地实现数据可视化, 对于每个数据点我们通常只使用两个特征 。
实施kNN分类算法
(2)以下为kNN近邻算法代码,将其保存于 kNN.py中 def classify0( inX, dataSet, labels, k):
(3)分析数据:可以使用任何方法。 (4)测试算法:计算错误率。 (5)使用算法:首先需要输入样本数据和结构化的输 出结果,然后运行k-近邻算法判定输入数据属于哪个分 类,最后应用对计算出的分类执行后续的处理。
准备:使用Python导入数据
1.创建名为 kNN.py 的Python 模块
注:接下来所有的代码均保存于这个文件夹中,读者可以按照自己的习 惯在自己创建的文件夹中编写代码,也可以去网上查找源代码,但笔者 建议读者按照本PPT的顺序去创建模块并编写代码。
K-近邻算法示例
(2)下图示例了六部电影的打斗和接吻镜头数。
K-近邻算法示例
(3)假如有一部未看过的电影,如何确定它是爱情片 还是动作片呢?接下来将 展示如何使用 KNN来解决 这个问题 。 ① 首先我们需要知道需分类电影的打斗镜头和接吻
镜头数量,下图给出了一个Hale Waihona Puke Baidu细示例:
K-近邻算法示例
② 即使不知道待分类电影属于哪种类型,我 们也可以通过某种方法计算方法。下图展 示的是待分类电影与样本集中其他电影的 距离计算结果:
④ 结果: K-近邻算法按照距离最近的三部电影的类型,决 定待分类电影的类型,而这三部电影均为爱情片, 因此我们判定待分类电影为爱情片。
K-近邻算法的一般流程
接下来主要讲解如何在实际中应用K-近邻算法, 同时涉及如何使用Python工具和相关的机器学习术语, 以下为该算法的一般流程:
(1)收集数据:可以使用任何方法。 (2)准备数据:距离计算所需要的数值,最好是结构 化的数据格式。
(1)>>> import kNN 上述命令导入kNN模块。
准备:使用Python导入数据
(2)为了确保输入相同的数据集,继续输 入以下命令:
>>> group,labels = kNN.createDataSet() 该命令创建了变量group和labels。 (3)输入变量的名字以检验是否正确的定 义变量: >>> group
(此处暂时不关心如何计算得到的这些距离值 ,稍 后会具体讲解。 )
K-近邻算法示例
③ 现在我们得到了样本集中所有电影与未知电影的 距离,按照距离递增排序,可以 找到k个距离最 近的电影 。假定 k=3,则三个最靠近的电影依次 是He's Not Really into Dudes 、Beautiful Woman 和 California Man 。