k-近邻算法采用测量不同特征值之间的距离方法进行分类,属于监督学习。

主要代码如下:
def createDataSet():group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])labels = ['A','A','B','B']return group,labelsdef classify0(inX,dataSet,labels,k):dataSetSize = dataSet.shape[0]diffMat = tile(inX,(dataSetSize,1)) - dataSetsqDiffMat = diffMat **2sqDistances = sqDiffMat.sum(axis=1)distances = sqDistances **0.5sortedDistIndicies = distances.argsort()classCount = {}for i in range(k):voteIlabel = labels[sortedDistIndicies[i]]classCount[voteIlabel] = classCount.get(voteIlabel,0) +1sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)return sortedClassCount[0][0]

createDataSet()用于导入数据;
主要介绍classify0(inX,dataSet,labels,k):
  1. 4个输入参数:用于分类的输入向量inX,训练样本集dataSet(是一个数组),标签向量labels,用于选择最近邻的数目k;
  2. dataSetSize = dataSet.shape[0] 这一句使用到了NumPy的shape函数,返回矩阵/数组的不同维数的长度,第一个元素(shape[0])表示第一维的长度,亦即行数,即有几个训练数据;
  3. diffMat = tile(inX, (dataSetSize,1)) - dataSet 这里用到了NumPy中的tile(A,reps)函数,用于扩充A,numpy.tile([0,0],(3,1))表示将(0,0)在行上重复3次,在列上重复1次;
  4. sqDiffMat = diffMat**2 求平方;
  5. sqDistances = sqDiffMat.sum(axis=1) 在列上求和;
  6. distances = sqDistances**0.5 求开方,上面的几步是用来计算距离的;
  7. sortedDistIndicies = distances.argsort()使用了argsort()函数,升序排序,返回数组值从小到大的索引index;
  8. classCount={} 这是一个dict,用于存储不同标签出现的次数;
  9. for i in range(k):
      voteIlabel = labels[sortedDistIndicies[i]]
      classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    这里是选择距离最小的k个点, sortedDistIndicies已经排好序,只需迭代的取前k个样本点的labels(即标签),并计算该标签出现的次数,这里还用到了dict.get(key, default=None)函数,key就是dict中的键voteIlabel,如果不存在则返回一个0并存入dict,如果存在则读取当前值并+1;
  10. sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) 这里使用了sorted()函数sorted(iterable, cmp=None, key=None, reverse=False),iteritems()将dict分解为元组列表,operator.itemgetter(1)表示按照第二个元素的次序对元组进行排序,排序默认是升序,reverse=true表示反转,降序排序

K-近邻算法实现简单filmClassify相关推荐

  1. knn k的选取_KNN - 初窥K近邻算法

    1>算法概述 KNN: 全名K-NearestNeighbor,K近邻算法,简单讲就是每个样本都可以用最接近的k个邻居表示,或者说共享同一个标签.KNN是一种分类(classification) ...

  2. 机器学习实战之K近邻算法

    k近邻算法概述 简单地说,K近邻算法采用测量不同特征值之间的距离方法进行分类. 优 点 :精度高.对异常值不敏感.无数据输入假定. 缺点:计算复杂度高.空间复杂度高. 适用数据范围:数值型和标称型. ...

  3. 机器学习[k近邻算法]

    k近邻算法简称kNN算法,由Thomas等人在1967年提出[1].它基于以下思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计这些样本的类别进行投票, ...

  4. C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)

    C++实现的简单的K近邻算法(K-Nearest Neighbor,K-NN) 前一段时间学习了K近邻算法,对K近邻算法有了一个初步的了解,也存在一定的问题,下面我来简单介绍一下K近邻算法.本博客将从 ...

  5. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

  6. 一文搞懂K近邻算法(KNN),附带多个实现案例

    简介:本文作者为 CSDN 博客作者董安勇,江苏泰州人,现就读于昆明理工大学电子与通信工程专业硕士,目前主要学习机器学习,深度学习以及大数据,主要使用python.Java编程语言.平时喜欢看书,打篮 ...

  7. K近邻算法:以同类相吸解决分类问题!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:游璐颖,福州大学,Datawhale成员 前言 KNN(k-nea ...

  8. k近邻算法之 k值的选择

    k近邻算法之 k值的选择 举例说明: K值过小:  [过拟合] ​ 容易受到异常点的影响   [如:美人鱼本身就是喜剧片,假如统计的时候记为动作片,则对预测值的影响太大] k值过大:  [欠拟合] ​ ...

  9. K近邻算法(KNN)原理小结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 目录 1. KNN算法原理 2. KNN算法三要素 3. KNN算 ...

  10. K近邻算法KNN的简述

    什么是KNN K近邻算法又称KNN,全称是K-Nearest Neighbors算法,它是数据挖掘和机器学习中常用的学习算法,也是机器学习中最简单的分类算法之一.KNN的使用范围很广泛,在样本量足够大 ...

最新文章

  1. 【ACM】杭电OJ 2064(汉诺塔III)
  2. 独家 | 攀登数据科学家和数据工程师之间的隔墙
  3. 吃鸡2019年5月7日服务器维护,绝地求生正式服5月17日停机更新维护多久到几点
  4. 开启mysql慢查询日志,不重启数据库的方法
  5. 什么是MyCat?为什么要用到MyCat呢?
  6. while(getchar()=='\n')continue;为什么作用是清空行
  7. 本地搭建K8s环境,并配置Ingress代理(1)
  8. java 选中指定文件_Java如何打开一个文件夹并选中指定文件
  9. 【报告分享】中国城市人工智能发展指数报告.pdf(附下载链接)
  10. SylixOS USB Gadget层介绍
  11. 【最短路】 Johnson 算法
  12. iOS使用自定义字体,比如楷体
  13. Ubuntu Linux 15.04安装 nginx + passenger
  14. 华为机试od社招刷题攻略-目录
  15. centos 7 安装sql 审核工具 inception + archer
  16. [绍棠] iOS视频播放AVPlayer的视频内容拉伸设置
  17. ICESat2学习笔记5 :ICESat-2数据下载
  18. netflix自动续费关闭_如何禁用Netflix的自动播放预览
  19. VBA增加sheet,重名时自动命名
  20. 2020年代,中国AI创业公司将走向何方

热门文章

  1. [python](爬虫)如何使用正确的姿势欣赏知乎的“长得好看是怎样一种体验呢?”问答中的相片...
  2. Gif(2)-加载视图-波纹
  3. 以交互方式安装ESXi 6.0
  4. SCUT个人整理的常见问题
  5. iOS 富文本类库RTLabel
  6. CodeIgniter笔记4
  7. 网站测试自动化系统—系统应该有的功能
  8. 微软社区精英计划 - 你会如何回答【6月26日】北京.Net学习活动QA时提出的问题...
  9. Juliane Begenau
  10. SHADER效果收集