zoukankan      html  css  js  c++  java
  • 机器学习笔记之K近邻算法

      今天学习的是机器学习中最为简单的一个算法:K近邻算法,简称KNN。由于学习主要参照《机器学习实战》这本书进行,本系列文章中涉及到的概念与实例绝大部分来源于此。本文主要从KNN算法概述,使用K-近邻算法改进约会网网站的配对效果,手写识别函数三个方面来展开,本文的主要用意在于阐释《机器学习实战》中源代码的涉及到的函数,以及通过实践将本书中涉及到的只能在python2中运行的源代码转为在python3下能够成功运行的代码。

      关键词:  数据可视化   数据归一化   python3     

    环境:  Anaconda

         Python3.6

    一、KNN算法概述

    1.1 工作原理

      存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前K个最相似的数据,选择这K个数据中出现次数最多的分类,作为新数据的分类。

    1.2 python导入数据

      为了简单演示K近邻算法的实现过程,在这一部分导入了一个最简单的数据样本集。新建一个py文件命名为kNN.py(注意k为小写),在该文件下写入下述代码,保存该文件至python的工作路径。

    1 from numpy import *
    2 import operator
    3 def createDataSet():
    4     group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    5     labels = ['A','A','B','B']
    6     return group, labels

      array函数只有在import numpy 的条件下才能使用,需要注意其与默认数据类型list的区别。至此,我们已经完成了createDateSet()函数的编写,在python开发环境中,我们只需要输入下述命令行即可完成数据的导入。

    1 >>>import kNN
    2 >>>group,labels = kNN.createDataSet()

     1.3 kNN分类器的实现

      完成了数据导入工作后,接下来需要考虑的就是如何用代码实现分类器了。首先给出分类器实现的一般步骤:

    • 计算已知类别数据集中的点与当前点的距离;
    • 按照距离递增次序排序;
    • 选取与当前点距离最小的k个点;
    • 确定前k个点所在类别的出现频率;
    • 返回前k个点出现概率最高的类别作为当前点的预测分类。
  • 相关阅读:
    放置消息
    MQ基础概念和介绍
    jQuery之双下拉框
    Spring整合JMS——事务管理
    DataTable学习笔记---排序细则、列隐藏
    jquery datatables api
    JavaScript高级 面向对象(2)--调试工具的使用:音乐循环播放
    JavaScript高级 面向对象(1)--添加一个div标签
    VBA学习笔记(9)--生成点拨(1)
    VBA学习笔记(8)--遍历所有文件夹和文件
  • 原文地址:https://www.cnblogs.com/jinjin-2018/p/8563744.html
Copyright © 2011-2022 走看看