K-邻近分类方法通过计算待分类目标和训练样例之间的距离,选取与待分类目标距离最近的K个训练样例,根据K个选取样例中占多数的类别来确定待分类样例。距离类型有很多,大致有欧式距离,曼哈顿距离,切比雪夫距离,闽科夫斯基距离,标准化欧式距离,马氏距离,夹角余弦,汉明距离,相关系数,信息熵等。

KNN算法的具体步骤:

1、计算待分类目标与每个训练样例之间的距离dist;

2、对dist进行排序,选择前K个训练样例作为K-最邻近样例;

3、统计K个训练样例中每个类别出现的频次;

4、选择出现频次最大的类别作为待分类目标的类别。

依据上述流程,给出实现代码:

from numpy import *
import operator
def knn(x,transet,labels,k,type = 0):'''k-近邻算法:param x:待分类特征:param transet: 已知特征:param labels: 特征标签:param k::param type:距离类型:0:欧式,1:曼哈顿,2:切比雪夫,3:闽科夫斯基,4:标准化欧式,5:马氏,6:夹角余弦7:汉明距离,8:杰卡德,9:相关系数,11:信息熵:return:'''distances = zeros_like(labels)if type == 0:tranSize = shape(transet)diffMat = tile(x,(tranSize[0],1)) - transetdistances = ((diffMat**2).sum(axis=1))**0.5#TODO:根据不同的类型计算距离sortedIndex = distances.argsort()classCount = {}for i in labels[sortedIndex[:k]]:classCount[i] = classCount.get(i,0) + 1sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)return sortedClassCount;

KNN算法的优点:理论简单,实现简单。

KNN算法的缺点:1)对K值的选取依赖大,不同的K值选取可能产生不同的结果。可以通过实验选取分类误差最小的K值。2)由于需要计算特征的距离,所以需要特征进行量化和标准化。

转载于:https://blog.51cto.com/janwool/1895064

分类算法——K-邻近相关推荐

  1. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)

    1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...

  2. python人工智能——机器学习——分类算法-k近邻算法

    分类算法-k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源:KNN算法最早是由Cover和Hart提 ...

  3. 机器学习100天(三十):030 K近邻分类算法-K值的选择

    机器学习100天,今天讲的是:K近邻分类算法-K值的选择. <机器学习100天>完整目录:目录 上一节我们讲了 K 折交叉验证的理论,下面我们将 K 折交叉验证算法应用到 K 近邻分类算法 ...

  4. 第4章 最基础的分类算法-k近邻算法

    思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...

  5. 分类算法——K近邻算法及其R实现

    原理:已知样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出"距离"最近的k(通常k<20)数据,选择这k个数据中出 ...

  6. 分类算法python程序_分类算法——k最近邻算法(Python实现)(文末附工程源代码)...

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...

  7. 分类算法之邻近算法:KNN(应用篇)

    起步 这次使用的训练集由 sklearn 模块提供,关于虹膜(一种鸢尾属植物)的数据. 数据载入 from sklearn import datasets iris = datasets.load_i ...

  8. python人工智能——机器学习——分类算法-k近邻算法——kaggle案例: Facebook V: Predicting Check Ins

    题目及翻译 Facebook and Kaggle are launching a machine learning engineering competition for 2016. Faceboo ...

  9. K邻近算法(K-NN)

    简单记录学习<统计学习方法>书中的k近邻模型. k近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法. k邻近算法 k邻近算犯法简单.直观描述:给定一个训练数 ...

  10. k近邻算法_机器学习分类算法之k近邻算法

    本编文章将介绍机器学习入门算法-k近邻算法,将会用demo演示机器学习分类算法. 在先介绍算法时,先回顾分类和回归的区别.像文章分类识别也是这样处理的,如1代表体育,2代表科技,3代表娱乐属于分类问题 ...

最新文章

  1. 浅谈使用openwave测试的几个注意项
  2. 《简明电路分析》——1.6节简单电路分析实例
  3. c++读取json文件_SPARK入门 - json文件读取
  4. linux systemd 服务管理脚本简介
  5. cpu的主频主要影响微型计算机的,在微型计算机中,通常用主频来描述CPU的(1);对计算机磁盘工作影响最小的因 - 问答库...
  6. 美团flutter_ggtalk 聊聊跨平台:后起之秀 Flutter
  7. PyCharm编程环境的中英文字体分别设置的好处多----一石三鸟地解决中文字体不一致、英文字体不涵盖中文字符、编程字体实用性兼顾美观性的三个问题
  8. Linux 命令之 declare -- 声明或显示 shell 变量
  9. MFC CPropertySheet 多页面切换 实例
  10. 关于测试一个接口的面试题
  11. matplotlib 横坐标只显示整数_面试题系列 (168) matplotlib条形图绘制
  12. 往数组里添加键值对_框架都是花哨的东西!js才是根基,分享一下给原生js数组的操作...
  13. CRMEB商城打通版 v3.0发布
  14. 梅西大学研究员创造出新3D打印系统 用螺杆作为进料机构挤出颗粒
  15. nginx 配置 apple-app-site-association
  16. 解决Android在更新安装包时出现“未安装应用”的情况
  17. API网关之网关概述、技术选型
  18. danpianji与ros通信_ROS和Arduino通讯新模式——StandardFirmata
  19. 数据库基本操作(创建主键、外键以及索引)
  20. Kali渗透测试之端口扫描1——UDP、TCP、僵尸扫描、隐蔽扫描

热门文章

  1. 【码支付系统】无授权—个人免签约支付系统二维码收款即时到账源码 –
  2. WebGL编程指南-23 光照原理、漫反射光计算、漫反射光照射下的立方体
  3. blood pressure android app,Blood Pressure Monitor via Bluetooth/Internet in Android
  4. 如何在ubuntu中设置webcam
  5. SiteRAS一款外贸网站SEO分析工具,给您的网站做个深度体检
  6. 重庆大学计算机学院与马云,相聚计科,执梦起航——重庆大学计算机学院2020级研究生迎新会圆满结束...
  7. 彩色图像去马赛克与图像超分辨问题的关系
  8. Vue单文件中引入背景图片时,四周有空白的问题
  9. 智能电视应用与移动应用开发的比较
  10. Web Form ,winform ,