k近邻算法

k-近邻算法(KNN)

馋奶兔 提交于 2019-12-02 03:32:44
采用测量不同特征值之间的距离方法进行分类。 KNN 工作原理 1.假设有一个带有标签的样本数据集(训练样本集),其中包含每条数据与所属分类的对应关系。 2.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。 计算新数据与样本数据集中每条数据的距离。 对求得的所有距离进行排序(从小到大,越小表示越相似)。 取前 k (k 一般小于等于 20 )个样本数据对应的分类标签。 3.求 k 个数据中出现次数最多的分类标签作为新数据的分类。 KNN 开发流程 收集数据:任何方法 准备数据:距离计算所需要的数值,最好是结构化的数据格式 分析数据:任何方法 训练算法:此步骤不适用于 k-近邻算法 测试算法:计算错误率 使用算法:输入样本数据和结构化的输出结果,然后运行 k-近邻算法判断输入数据分类属于哪个分类,最后对计算出的分类执行后续处理 1 from numpy import * 2 import operator 3 4 5 def createDataSet(): 6 group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) 7 labels = ['A','A','B','B'] 8 return group,labels 9 10 def classify0(inX, dataSet, labels, k): 11

k-近邻算法(kNN)

独自空忆成欢 提交于 2019-11-30 04:25:51
一、k-近邻算法(kNN) 工作原理:存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。   输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征醉相思数据(最近邻)的分类标签。   一般来说,我们只选择样本数据集中前k个最相似的数据,(k的来源),通常k<=20的整数,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。   一般流程:收集-准备-分析数据-训练-测试-使用算法。 1.使用Python导入数据 1 from numpy import *#科学计算包 2 import operator #运算符模块 3 4 def createDataSet(): 5 group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) 6 labels = ['A','A','B','B'] 7 return group,labels 8 9 def classify0(inX, dataSet, labels, k):#用于分类的输入向量inX,输入的训练样本集dataSet,标签向量labels,参数k用于选择最近邻居的数目 10 dataSetSize = dataSet.shape[0] 11 diffMat = tile

机器学习之K近邻算法(KNN)

孤街浪徒 提交于 2019-11-29 10:43:06
机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import operator from collections import Counter #KNN需要测试集,训练集,标签和k值 #测试集:你需要测试的数据 #训练集:给定的标准数据 #标签:每个标准数据的类别 #k值 :测试集和训练集相比较下前K个最相识的训练集的值 # 用KNN算法找出测试集的类别 #1,求出已知类别训练集中的点与当前点之间的距离 #2,对所求距离以此递增排序 #3,选取与当前点距离最小的k个点 #4,确定前k个点所在类别的出现频率 #5,返回前k个点出现频率最高的类别作为当前点的预测分类 def kNNClassify(testSet, trainSet, labels, k = 3 ): rows = trainSet.shape[ 0 ] #shape[0]得到训练集的行数 #求距离 distSet = tile(testSet, (rows, 1 )) - trainSet #得到距离矩阵 distance = sum (distSet ** 2 , axis = 1 ) ** 0.5 # 求出距离 #排序 #得到排序后数据原位置的下标,排序后位置是不变的

K近邻算法(KNN)

白昼怎懂夜的黑 提交于 2019-11-28 07:21:04
给定训练集,对于新输进来的样例,寻找训练数据集里面与之距离最近的K个样例,根据多数表决规则,如果K个实例多数属于某个类,则把该输入实例划分为这个类。 模型三要素是:距离度量,K值的选择,分类决策规则。 距离度量 :使用的距离是欧式距离,或者是更一般的Lp距离或Minkowski距离 p为2则为欧式距离,p=1为曼哈顿距离,p为无穷大则为各个坐标距离的最大值。 K值的选取 : k值减小意味着模型变得复杂,容易发生过拟合,选择较大的k值,可以减小学习的估计误差,但缺点是学习的近似误差会增大,k值一般取一个较小的值,通常使用交叉验证法来选择最优的k值。 K近邻的实现需要考虑如何快速地搜索k个最近邻点。kd树是一种便于对k维(注意这个k是指特征维度,而非KNN里面的k) 空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对k维空间的一个划分,其每个节点对应于k为空间划分中的一个超矩形区域。利用kd树可以省去对大量数据点的搜索,从而减少搜索的计算量。 kd树使用于训练实例数远远大于空间维度的k近邻搜索。当空间维度接近训练实例数时,它的效率会迅速下降,几乎接近线性扫描。 来源: https://blog.csdn.net/pku_langzi/article/details/100030835

机器学习-KNN近邻算法

会有一股神秘感。 提交于 2019-11-27 15:29:15
参看文章: 《机器学习-周志华》 《机器学习实战-Peter Harrington》 《统计学习方法-李航》 算法介绍: k近邻学习是一种常用的 监督学习 方法,其工作机制如下,给定测试样本,基于某种距离度量( 曼哈顿距离、欧氏距离、切比雪夫距离、Lp距离、Minkowski距离 )找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。 argmax(f(x))是使得 f(x)取得最大值所对应的变量点x 投票法: 在 分类 任务中使用,选择k个样本出现最多的类别标记作为预测结果 平均法: 在 回归 任务中使用,即将k个样本的实值输出标记的平均值作为预测结果 距离权重法: 称为k近邻算法的优化算法,为每个点的距离增加一个权重,使得距离近的点可以得到更大的权重,既可用于 加权平均又可用于加权投票。 优点: 1.理论成熟,思想简单,既可以用来做分类又可以做回归 2.训练时间复杂度为O(n);无数据输入假定; 3.可用于数值型数据和离散型数据; 4.对异常值不敏感 缺点: 1.计算复杂度高,因无显示的训练过程 2.对k值、距离敏感,不同k值与距离计算方法可能结果不同 3.无法给出任何数据的基础结构信息 最近邻分类器(k = 1) 错误率(暂未看懂) 实现方法: 1. kd树 2. 传统法 代码: 来源: https://www.cnblogs.com/Jacon

K-近邻算法(KNN)

江枫思渺然 提交于 2019-11-27 05:47:12
1. 原理 定义 如果一个样本的特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 K值取的过小,容易受到异常点的影响 K值取的过大,容易受到样本不均衡的影响 距离公式 欧式距离: 曼哈顿距离(绝对值距离) : 2. K-近邻算法API sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto') - n_neighbors:K值 ,int,可选 (默认= 5),k _neighbors查询默认使用的邻居数 - algorithm: {'auto', 'ball_tree', 'kd_tree', 'brute'}, 可选用于计算最近邻居的算法: 'ball_ tree'将会使用BallTree, 'kd_tree'将使用KDTree。 'auto'将 尝试根据传递给fit方法的值来决定最合适的算法。(不同实现方式影响效率) 3. 案例:鸢尾花种类预测 from sklearn . datasets import load_iris from sklearn . model_selection import train_test_split from sklearn . preprocessing import StandardScaler from

决策树和K近邻分类

北城余情 提交于 2019-11-26 19:29:39
python3.6 pycharm 2019-8-10 第一次发布 文章性质:学习资料总结 1. 机器学习介绍 机器学习(Machine Learning):假设用 P 来评估计算机程序在某任务类 T 上的性能,若一个程序利用经验 E 在任务 T 上获得了性能改善,则我们就说关于 T 和 P, 该程序对 E 进行了学习。 在不同的问题设定下,T、P、E 可能指完全不同的东西。机器学习中一些流行的任务 T 包括: 分类:基于特征将实例分为某一类。 回归:基于实例的其他特征预测该实例的数值型目标特征。 聚类:基于实例的特征实现实例的分组,从而让组内成员比组间成员更为相似。 异常检测:寻找与其他样本或组内实例有很大区别的实例。 其他更多任 关于经验 E,《Deep Learning》(Ian Goodfellow、Yoshua Bengio、Aaron Courville 著,2016 年出版)的「Machine Learning basics」一章提供了一份很好的综述: 经验 E 指的是数据(没有数据我们什么也干不了)。根据训练方式,机器学习算法可以分为监督(supervised)和无监督(unsupervised)两类。无监督学习需要训练含有很多特征的数据集,然后学习出这个数据集上有用的结构性质。而监督学习的数据集除了含有很多特征外,它的每个样本都要有一个标签(label)或目标