邻近算法

K邻近算法

Deadly 提交于 2020-02-18 04:05:38
1. k邻近算法概述: k邻近算法简单直观,给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类 2. k邻近算法的模型复杂度体现在哪里?什么情况下会造成过拟合 k邻近算法模型复杂度体现在k值,k比较小时容易造成过拟合,k较大时容易造成欠拟合 3. 线性扫描算法 线性扫描算法步骤如下: 输入:训练数据集T={(x1,y1),(x2,y2),...(xn,yn)}    待预测数据:(x_test)    k值 (1)计算x_test与 xi的欧式距离 (2)欧式距离排序 (3)取前k个最小距离,对应训练数据点的类型y (4)对k个y值进行统计 (5)返回频率出现最高的点 1 import numpy as np 2 from collection import Counter 3 from draw import draw 4 class KNN: 5 def _init_(self,x_train,y_train,k=3): 6 self.k=k 7 self.x_train=x_train 8 self.y_train=y_train 9 10 def predict(self,x_new): 11 #计算欧式距离 12 dist_list=[(np.linalg.norm(x_new=self.x

K最邻近分类

徘徊边缘 提交于 2020-02-07 06:19:47
最邻近分类是分类方法中比较简单的一种,下面对其进行介绍 1.模型结构说明 最邻近分类模型属于“基于记忆”的非参数局部模型,这种模型并不是立即利用训练数据建立模型,数据也不再被函数和参数所替代。在对测试样例进行类别预测的时候,找出和其距离最接近的 个样例,以其中数量最多的类别作为该样例的类预测结果。 最邻近分类模型的结构可以用下图来说明,图中叉号表示输入的待分类样例,对其分类时选定一个距离范围(虚线圆圈表示的范围),在该范围内包含有 个样例(除去待分类样例外,这里 =5),这里所说的距离并不专指距离度量(如曼哈顿距离、欧氏距离等),它可以是任意一种邻近度度量(在我的博文《数据测量与相似性分析》中有介绍),此时最邻近的5个样例中,有3个“+”例,2个“-”例,故待分类样例的类别定位“+”。为了便于确定类别, 一般取奇数。 ​ 2.模型构建 2.1 K值选取 从 最邻近分类方法的分类过程可知, 值对模型的误分类率影响较大。 较小时,相当于用较小邻域中的样例进行预测,“学习”的近似误差会减小,但是“学习“的估计误差会增大,且对邻域内的样例非常敏感,若邻近的样例中包含部分噪声,预测结果就会出错, 较大时的情况则相反。 总的来说, 值减小意味着整体模型变复杂,容易发生过拟合, 值增大意味着模型变简单,导致忽略“训练”样例中一些有用信息,预测误分类率会增高。在应用中,一般 取较小的值

python数据分析——KNN邻近算法

非 Y 不嫁゛ 提交于 2019-12-01 02:20:52
K-近邻算法(KNN) 0、导引 如何进行电影分类 众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影分类时必须要考虑的问题。没有哪个电影人会说自己制作的电影和以前的某部电影类似,但我们确实知道每部电影在风格上的确有可能会和同题材的电影相近。那么动作片具有哪些共有特征,使得动作片之间非常类似,而与爱情片存在着明显的差别呢?动作片中也会存在接吻镜头,爱情片中也会存在打斗场景,我们不能单纯依靠是否存在打斗或者亲吻来判断影片的类型。但是爱情片中的亲吻镜头更多,动作片中的打斗场景也更频繁,基于此类场景在某部电影中出现的次数可以用来进行电影分类。 本章介绍第一个机器学习算法:K-近邻算法,它非常有效而且易于掌握。 1、k-近邻算法原理 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。 优点:精度高(计算距离)、对异常值不敏感(单纯根据距离进行分类,会忽略特殊情况)、无数据输入假定(不会对数据预先进行判定)。 缺点:时间复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。 工作原理 存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据 与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的 特征进行比较