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
投稿

猜你喜欢

  • Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用

    2024-01-23 01:00:10
  • iframe的防插与强插

    2009-03-03 12:33:00
  • Python函数高级(命名空间、作用域、装饰器)

    2022-03-15 23:31:44
  • 搜索结果页(SERP):个性化如何影响用户行为?

    2009-07-22 21:00:00
  • JavaScript中Object基础内部方法图

    2023-08-15 02:36:11
  • PyTorch 如何将CIFAR100数据按类标归类保存

    2023-01-10 06:01:03
  • Windows 安装 Anaconda3+PyCharm的方法步骤

    2023-05-21 07:40:53
  • numpy.random模块用法总结

    2023-05-11 00:48:19
  • Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例

    2023-04-19 19:40:57
  • MySQL查询优化:LIMIT 1避免全表扫描提高查询效率

    2024-01-29 08:33:13
  • python实现微信小程序用户登录、模板推送

    2021-10-15 23:25:17
  • 深入浅析pycharm中 Make available to all projects的含义

    2023-08-26 00:59:06
  • python内存监控工具memory_profiler和guppy的用法详解

    2023-02-17 01:15:18
  • mysql中coalesce()的使用技巧小结

    2024-01-23 18:27:56
  • 基于python pygame实现的兔子吃月饼小游戏

    2023-10-26 21:25:23
  • 百度留言本js 大家可以参考下

    2024-04-16 09:31:55
  • python+appium自动化测试之如何控制App的启动和退出

    2023-06-24 12:45:01
  • Python 实现图像特效中的油画效果

    2021-04-10 18:29:49
  • Python与C++中梯度方向直方图的实现

    2022-03-17 20:37:34
  • .NET 2.0获取配置文件AppSettings和ConnectionStrings节数据的方法

    2023-06-30 11:34:10
  • asp之家 网络编程 m.aspxhome.com