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个点出现概率最高的类别作为当前点的预测分类。
  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/jinjin-2018/p/8563744.html
Copyright © 2011-2022 走看看