您好,欢迎来到榕意旅游网。
搜索
您的当前位置:首页算法工程师修仙之路:机器学习实战(四)

算法工程师修仙之路:机器学习实战(四)

来源:榕意旅游网

第一部分:分类

第二章 k-近邻算法


k-近邻算法概述

  • 简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。

  • k-近邻算法

    • 优点:精度高、对异常值不敏感、无数据输入假定。
    • 缺点:计算复杂度高、空间复杂度高。
    • 适用数据范围:数值型和标称型。
  • k-近邻算法(kNN)的工作原理

    • 存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。
    • 输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。
    • 一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。
    • 最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。
  • 实例说明:使用k-近邻算法分类爱情片和动作片

    • 首先我们需要知道这个未知电影存在多少个打斗镜头和接吻镜头,图2-1中问号位置是该未知电影出现的镜头数图形化展示,具体数字参见表2-1:
    • 即使不知道未知电影属于哪种类型,我们也可以通过某种方法计算出来。首先计算未知电影与样本集中其他电影的距离,如表2-2所示:
    • 现在我们得到了样本集中所有电影与未知电影的距离,按照距离递增排序,可以找到 k 个距离最近的电影。
    • 假定 k=3,则三个最靠近的电影依次是 He’s Not Really into Dudes、Beautiful Woman 和 California Man。
    • k-近邻算法按照距离最近的三部电影的类型,决定未知电影的类型,而这三部电影全是爱情片,因此我们判定未知电影是爱情片。
  • k-近邻算法的一般流程

    • 收集数据:可以使用任何方法;
    • 准备数据:距离计算所需要的数值,最好是结构化的数据格式
    • 分析数据:可以使用任何方法;
    • 训练算法:此步骤不适用于k-近邻算法;
    • 测试算法:计算错误率;
    • 使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。
准备:使用 Python 导入数据
  • 首先,创建名为 的 Python 模块,本章使用的所有代码都在这个文件中。

  • 在构造完整的k-近邻算法之前,我们还需要编写一些基本的通用函数,在 文件中增加下面的代码:

    import numpy as np  # 导入第一个模块:科学计算包NumPy
    from numpy import *
    import operator     # 导入第二个模块:运算符模块,k-近邻算法执行排序操作时将使用这个模块提供的函数
    
    def createDataSet():        # 为了方便使用 createDataSet() 函数,它创建数据集和标签
        group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
        labels = ['A', 'A', 'B', 'B']
        return group, labels
    
  • 打开 ipython 进行交互式开发环境。

  • 进入 IPython 开发环境之后,输入下列命令导入上面编辑的程序模块:

    # 这里首先要把环境切换到存放 KNN.py 处
    # 由于我存放的位置为桌面,所以首先使用 cd C:\Users\fangz\Desktop
    In [1]: import KNN	# 导入kNN模块。
    
  • 为了确保输入相同的数据集,KNN 模块中定义了函数 createDataSet,在 IPython 命令提示符下输入下列命令:

    # 创建了变量 group 和 labels
    In [2]: group, labels = KNN.createDataSet()
    
  • 在 IPython 命令提示符下,输入变量的名字以检验是否正确地定义变量:

    In [3]: group
    Out[3]: 
    array([[ 1. ,  1.1],
           [ 1. ,  1. ],
           [ 0. ,  0. ],
           [ 0. ,  0.1]])
    
    I

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务