python k-近邻算法实例分享

时间:2022-03-26 14:47:17 

简单说明

这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。

简称kNN。

已知:训练集,以及每个训练集的标签。

接下来:和训练集中的数据对比,计算最相似的k个距离。选择相似数据中最多的那个分类。作为新数据的分类。

python实例


# -*- coding: cp936 -*-

#win系统中应用cp936编码,linux中最好还是utf-8比较好。
from numpy import *#引入科学计算包
import operator #经典python函数库。运算符模块。

#创建数据集
def createDataSet():
    group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels=['A','A','B','B']
    return group,labels

#算法核心
#inX:用于分类的输入向量。即将对其进行分类。
#dataSet:训练样本集
#labels:标签向量
def classfy0(inX,dataSet,labels,k):
    #距离计算
    dataSetSize =dataSet.shape[0]#得到数组的行数。即知道有几个训练数据
    diffMat     =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函数。tile将原来的一个数组,扩充成了4个一样的数组。diffMat得到了目标与训练数值之间的差值。
    sqDiffMat   =diffMat**2#各个元素分别平方
    sqDistances =sqDiffMat.sum(axis=1)#对应列相乘,即得到了每一个距离的平方
    distances   =sqDistances**0.5#开方,得到距离。
    sortedDistIndicies=distances.argsort()#升序排列
    #选择距离最小的k个点。
    classCount={}
    for i in range(k):
        voteIlabel=labels[sortedDistIndicies[i]]
        classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
    #排序
    sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
    return sortedClassCount[0][0]

意外收获

把自己写的模块加入到python默认就有的搜索路径:在python/lib/-packages目录下建立一个 xxx.pth的文件,写入自己写的模块所在的路径即可

标签:python,k-近邻算法
0
投稿

猜你喜欢

  • Python使用当前时间、随机数产生一个唯一数字的方法

    2022-02-10 14:57:07
  • 两种与SQL Server数据库交换数据的方法

    2008-12-10 15:39:00
  • ASP技巧 挂QQ的网页源代码ASP/PHP

    2009-01-05 12:36:00
  • Python将list元素转存为CSV文件的实现

    2022-03-14 20:15:00
  • 详解Python读取和写入操作CSV文件的方法

    2021-03-01 23:13:43
  • WEB标准与XHTML 1.0 Transitional等文档类型介绍

    2007-10-20 21:18:00
  • 讲解SQL Server海量数据导入的最快方法

    2008-12-05 16:21:00
  • python实现五子棋小游戏

    2023-02-28 08:37:59
  • python中Pexpect的工作流程实例讲解

    2021-05-04 15:51:28
  • Python使用pymongo库操作MongoDB数据库的方法实例

    2023-06-04 06:20:22
  • 深入讨论Python函数的参数的默认值所引发的问题的原因

    2022-08-03 00:54:31
  • 100%点击区的滑动门

    2007-06-14 22:00:00
  • 用Javascript正则表达式验证Email地址

    2009-12-09 15:56:00
  • Mootools 1.2教程(8)——输入过滤第一部分(数字)

    2008-11-27 13:01:00
  • PyQT实现菜单中的复制,全选和清空的功能的方法

    2023-08-13 03:09:23
  • 网页超级链接加上快捷键方法

    2010-03-16 12:28:00
  • 解读python如何实现决策树算法

    2021-08-26 19:52:01
  • AJAX:如何处理书签和后退按钮

    2008-03-21 18:44:00
  • 在windows下 1045 access denied for user

    2010-03-04 11:44:00
  • python查询mysql中文乱码问题

    2021-09-28 07:05:42
  • asp之家 网络编程 m.aspxhome.com