KNN算法之图像处理一

news/2024/7/4 22:59:27

KNN:

  1.数据挖掘分类技术中最简单的方法之一。

  2.也称为邻近算法,K最近邻分类算法

  3.每个样本都可以用它最接近的k个邻居来代表

  4.一般,距离使用欧式距离或曼哈顿距离(通常,k≤20)

python代码实现

  例子:

    已有的分类数据:

      A:(1.0,2.0)

      A:(1.2,0.1)

      B:(0.1,1.4)

      B:(0.3,3.5)

    测试数据:(1.1,0.3)

    推测结论(正确):A

  代码:

from array import array

from numpy import *
import operator

## 给出训练数据以及对应的类别
def createDataset():
    group = array([[1.0,2.0],[1.2,0.1],[0.1,1.4],[0.3,3.5]])
    labels = ['A','A','B','B']
    return group,labels

###通过KNN进行分类
def classify(input,dataSet,label,k):
    dataSize = dataSet.shape[0]
    ####计算欧式距离
    diff = tile(input,(dataSize,1))-dataSet
    sqdiff = diff ** 2
    squareDist = sum(sqdiff,axis=1)###行向量分别相加,从而得到新的一个行向量
    dist = squareDist ** 0.5

    ##对距离进行排序
    sortedDisIndex = argsort(dist)##argsort()根据元素的值从大到小对元素进行排序,返回下标

    classCount={}
    for i in range(k):
        voteLabel =label[sortedDisIndex[i]]
        ###对选取的k个样本所属的类别个数进行统计
        classCount[voteLabel] = classCount.get(voteLabel,0) + 1
    ###选取出现的类别次数最多的类别
    maxCount = 0
    for key,value in classCount.items():
        if value > maxCount:
            maxCount =value
            classes =key

    return classes



##函数入口
if __name__ == '__main__':
    dataSet,labels = createDataset()
    input = array([1.1,0.3])
    K=3
    output = classify(input,dataSet,labels,K)
    print("测试数据为:",input,"分类结果为:",output)

    运行结果:

    

 

转载于:https://www.cnblogs.com/gaara-zhang/p/9620461.html


http://www.niftyadmin.cn/n/2145639.html

相关文章

oracle job 调用存过,Oracle Job 调用 PROCEDURE(存储过程)实例

Oracle Job 调用 PROCEDURE(存储过程)实例1.[代码]oracle_job_procedure.sql--一:相关主要查询--查询系统存储过程select name from user_source where typePROCEDURE;--查看job 二 中 步骤4 的25是 job字段值,每个人建立时可能不同select * from sys.us…

为什么说 Java 程序员到了必须掌握 Spring Boot 的时候了?

为什么说 Java 程序员到了必须掌握 Spring Boot 的时候了?Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之…

JDBC中数据库的事务

1.什么叫数据库事务? 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 一组逻辑操作单元: 一个或多个DML操作。 2.事务处理的原则: 保证所有事务都作为一个工作单元来执行,即使出现了故障,都不…

ovirt笔记:基于ovirt4.0的虚拟资源管理的权限分析

前言 虚拟资源管理平台是在ovirt4.0的基础上开发的,从原有的一个admin用户扩展成三个管理员用户和普通用户,下面简单分析一下其实现权限管理的原理。 数据库表 主要包括三张表:roles(角色表)、roles_group(角色与操作组…

linux预留的系统调用号,armlinux系统调用号和系统调用实现函数位置

armlinux系统调用号和系统调用实现函数位置系统调用序号:linux/include/asm-arm/unistd.h系统调用函数:arch/arm/kernel/calls.S对应了的文件:kernel/include/asm-generic/unistd.h可以查找关键字SYSCALL_DEFINE因为kernel/include/linux/sys…

jdbc中首次了解DAO及其子类

DAO: data(base) access object用于与数据库进行交互 1.实体类Customer.java package loey.java1.bean;import java.sql.Date;/** ORM编程思想 (object relational mapping)* 一个数据表对应一个java类* 表中的一条记录对应java类的一个对象* 表中的一…

nginx安装与部署

1:安装工具包 wget、vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake gcc gcc-c 2:下载nginx安装包 wget http://nginx.org/download/nginx-1.6.2.tar.gz3:安装依赖包 yum install -y pcre pcre-devel yum install -y zlib zlib-devel …

linux运行速度慢怎么解决,Linux运行速度太慢的关键原因全都在这了

导读我们在搞清楚如何加速Linux计算机之前,需要知道哪些方法可以帮助我们找到引导时启动的服务、以更高或更低优先级运行的进程、CPU运行状况、内存是否塞满了过多数据,还要检查交换内存区是否已满。最后,我们还要检查硬盘是否运行正常。可能…