当前位置: 首页 > news >正文

KNN算法基础教学

目录

 1、KNN算法概述

2、什么是knn算法

 3、算法原理解析

 3.1、通用步骤

3.2、k的取值对预测结果的影响

 3.3、k的选取

4、实战应用 (癌症检测数据)

完整代码:


 1、KNN算法概述

KNN可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一,注意KNN算法是有监督学习中的分类算法,可以参考一下本篇博客。还有一种是机器学习算法Kmeans,它是无监督学习算法(这里不做过多介绍,可以参考一下本篇博客。

2、什么是knn算法

通俗的说就是根据与要调查的数据相似的数据,来判断要调查的数据的属性和分类。这就好比老”物以类聚,人以群分“,要想了解一个人,可以从他的朋友了解。这就像数学中的找规律一

 样,给你n组相似的数据,通过算法来判断某n个或n组数据是什么。

其实啊,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。听起来有点绕,还是看看图吧。

KNN原理1

图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。

KNN原理2

但是,当K=5的时候,判定就变成不一样了。这次变成红圆多一些,所以新来的绿点被归类成红圆。

 3、算法原理解析

 3.1、通用步骤

  •  计算距离(常用欧几里得距离(推荐使用较为简单)或者马氏距离,不理解的可以看一看俩者的比较)
  • 升序排列:按照距离的远近进行排列(用python内置函数进行排序)
  • 取前k个:在所得的距离中取前k个距离(k任意)数据
  • 加权平均值:对取得的前k个距离数据进行加权平均(原因:前k个距离可能与目标数据的差距都不一样,所以要使用加权平均,而不使用算术平均,这也减小了误差

3.2、k的取值对预测结果的影响

  • k太大:导致分类模糊
  • k太小:受个别样例影响,波动较大,误差较大

 k值和误差的关系

 3.3、k的选取

  • 根据经验(不建议初学者)
  • 多尝试几次,找到比较靠谱的k值
  • 均方差误差

 均方差示例图

4、实战应用 (癌症检测数据)

完整代码:

import random
import csv
#打开文件
with open('E:\maker\培训内容\鸿蒙\相关\阶段五\相关数据集\prostate-cancer\Prostate_Cancer.csv','r') as file:#读取文件reader=csv.DictReader(file)datas=[row for row in reader]
#分组
random.shuffle(datas)#打乱数据的顺序
n=len(datas)//3#得到数据的长度整除3,分成三份
test_set=datas[0:n]#1/3为测试
train_set=datas[n:]#2/3为训练
#KNN
#距离
def distance(d1,d2):#求和sum=0#将计算用的数据放在一个元组中for key in("radius","texture","perimeter","area","smoothness","compactness","symmetry","fractal_dimension"):#转化为浮点型数据sum+=(float(d1[key])-float(d2[key]))**2#平方后在开方return sum**0.5
K=9
def knncount(data):#1、距离sum=[{"result":train['diagnosis_result'],"distance":distance(data,train)}for train in train_set  #解释一下,这里为什么要用train_set,因为在这个示例中train_set是已知的,我们要根据已知来判断test_set中的数据的结果,寻找data和train_set的关系]#2、排序---升序sum=sorted(sum,key=lambda item:item['distance'])#3、取前k个sum1=sum[0:K]#4、加权平均result={'B':0,'M':0}#0代表权重#总距离求和s=0for r in sum1:s+=r['distance']#判断是给B加权还是给M加权for r in sum1:result[r['result']]+=1-r['distance']/s#result[r['result']]表示,result[B]还是result[M]给谁加权#输出预测结果if result['B']>result['M']:return 'B'else:return 'M'
#测试
correct=0
for test in test_set:result=test['diagnosis_result']#真实结果result1=knncount(test)#测试结果#如果真实结果和预测结果相同那么正确个数加1if result==result1:correct+=1
print("准确率:{:.2f}%".format(100*correct/len(test_set)))

 运行结果(部分截图):

 

本例中的数据的网盘地址为:https://pan.baidu.com/s/1w8cyvknAazrAYnAXdvtozw

                               提取码:zxmt

数据集部分截图:

 

学习视频网址:【智源学院】30分钟KNN算法-有意思专题系列(K-Nearest Neighbor, KNN)_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

2022.08.23-力扣刷题(222、789、199、124、257、404)

222. 完全二叉树的节点个数 题目链接: https://leetcode-cn.com/problems/count-complete-tree-nodes/ 方法一:迭代法层序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …...

idea复制当前行快捷键

仅作为记录,大佬请跳过。 在该行的任何位置,直接用ctrl和c即可 参考 感谢大佬博主文章:传送门...

不抛弃异常值的几种情况

异常数据是数据分布的常态,处于特定分布区域或范围之外的数据 通常会被定义为异常或“噪音”。产生数据“噪音”的原因很多,例如业务 运营操作、数据采集问题、数据同步问题等。对异常数据进行处理前, 需要先辨别出到底哪些是真正的数据异常。 从数据异常的状态看分为两 种…...

23种设计模式

一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多…...

Nacos 2.0.2正式版发布

一、介绍Nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用…...

spring框架的各种注解基本意思

//在 spring 配置文件中开启生成代理对象 <!-- 开启 Aspect 生成代理对象--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>Autowired //根据属性类型进行自动装配 Aspect //生成代理对象 Qualifier //根据名称进行注 Resource //可以根据类型注…...

【Java45】旅游案例:数据回显,注销/退出,首页类别显示,精选

文章目录1.登陆数据回显1.1 前端2.登陆案例_注销/退出3.首页类别显示3.1 web3.2 service3.3 dao4.精选4.1 web4.2 service4.3 dao4.4 前端1.登陆数据回显 如上前端写在header.html中。 1.1 前端 //header.html <!-- 头部 start --><header id"header2"&g…...

简单介绍下Python解释器

当我们编写Python代码时&#xff0c;我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码&#xff0c;就需要Python解释器去执行.py文件。 由于整个Python语言从规范到解释器都是开源的&#xff0c;所以理论上&#xff0c;只要水平够高&#xff0c;任何人都…...

出现了,Mac也可以玩的简单扫雷(1.0版本)

总体思路: 1.随机生成雷区 2.将每一个方块旁边有几个雷的数量算出来 3.不断的输入想要翻的方块 4.判断是否输赢 5.改变此方块的状态 直接上代码: #include <iostream> #include <ctime> #include <chrono> //计时头文件 #include <string.h> …...

axios跨域问题

项目配置 vue-cli3vue2element-ui-2.15.3 在网上找了很多方案&#xff0c;但是都没有生效&#xff0c;最后是前端添加了一段代码&#xff0c;后台添加了一段代码 解决了 添加了headers的配置 const instance axios.create({// baseURL: http://mall.huolida.com/,// baseUR…...

原创-Kafka原理

Kafka原理 2017年09月22日 22:39:45317人阅读 评论(0) 收藏 举报 分类&#xff1a; Kafka&#xff08;1&#xff09; 目录(?)[] Kafka 这段时间研究RabbitMQ、Kafka、RocketMQ消息队列&#xff0c;发现对她们原理的介绍都过于简单&#xff0c;所以整理了众多资料&…...

ef dbcontext

dbcontext class 用来crud数据库&#xff0c;也用来配置实体类&#xff0c;关系映射&#xff0c;缓存&#xff0c;事务&#xff0c;变化追踪等 using System.Data.Entity;public class SchoolContext : DbContext {public SchoolContext(){}// Entities public DbSet&l…...

C语言中的整型提升

C语言中的整型提升 提到整型提升,可能刚学c语言的小伙伴们很头疼这个知识点吧,下面我就我的理解简单分析一下整型提升是怎么回事. 首先还是介绍一下整型提升的概念: ​ c的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在…...

Dubbo(一)项目架构演变过程

Dubbo&#xff08;一&#xff09;项目架构演变过程架构演变过程单体架构垂直架构SOA&#xff08;分布式架构&#xff09;微服务架构架构演变过程 dubbo是一款高性能的java rpn框架。 随着互联网的发展&#xff0c;用户群体逐渐壮大&#xff0c;网站的流量成倍增长&#xff0c;…...

Nuxt 项目完结总结

1、状态保存&#xff0c;即localstorage。 这里选择了 nuxt-vuex-localstorage&#xff08;^1.3.0&#xff09; 来做store的持久化保存。 modules: [nuxtjs/style-resources,nuxtjs/axios,[nuxt-vuex-localstorage,{localStorage: [localStorage]}] ] 2、登录token保存&…...

浅入浅出实现一个异步求和函数

简化&#xff1a;两数之和 我们先来简单的实现一个异步两数之和函数 function sumT(a, b) {return await new Promise((resolve, reject) > {asyncAdd(a, b, (err, res) > {if(!err) {resolve(res)}reject(err)})}) }// 测试 const test await sumT(1, 2) console.log…...

入门图形学:屏幕波爆特效

最近bilibili看了黑神话悟空的UE5演示视频&#xff0c;感觉是真牛逼&#xff0c;地址&#xff1a;黑神花悟空UE5实机演示视频 遥想我也算是国内第一批用ue4的开发者了&#xff0c;15年开始用ue4.7源码版&#xff0c;做了一年多就又用回u3d了&#xff0c;哈哈&#xff0c;主要因…...

unity学习笔记(一)

unity基础简介&#xff08;一&#xff09; unity是如何跨平台的&#xff08;附c和c#编译过程&#xff09; 前言 游戏引擎为了兼顾易用性和性能&#xff0c;往往使用一种高效率语言编写核心&#xff0c;使用另一种高级语言作为脚本语言&#xff0c;大部分游戏引擎的底层核心由…...

浮动布局,定位布局,伸缩盒布局

布局 默认文档流 1.元素显示的顺序和代码的顺序是一致的 2.块级元素独占一行空间&#xff0c;默认宽度为父元素的100%&#xff0c;高度由内容或者子元素决定 3.行内元素共享一行空间&#xff0c;默认宽高都由内容决定 浮动布局 float&#xff08;如果一个元…...

Python大数据分析学习基础篇(3)——数据结构

一、函数部分 1、闭包 所谓闭包其实跟回调函数有有相通之处。闭包可以延长作用时间和作用域。 def say(word):def name(name):print(word,name)return name hi say(你好) hi("小明") bye say("再见") bye("小明 ") 运行结果&#xff1a; …...

Google Earth Engine(GEE)——容易犯的错误3(请在select之前使用filter )和(用updateMask()代替mask())、组合reducer的使用!

首先过滤再select() 通常&#xff0c;在对集合执行任何其他操作之前&#xff0c;按时间、位置和/或元数据过滤输入集合。在选择性较少的过滤器之前应用更多选择性过滤器。空间和/或时间过滤器通常更具选择性。例如&#xff0c;请注意select()和之前filter()应用&#xff1a; m…...

elasticsearch7 2021.8.24版本可用 ---head插件总是健康状态未连接

特别要注意跨域和discovery.zen.ping.unicast.hosts 要不然&#xff0c;head插件总是健康状态未连接 1.主节点配置文件 [rootes_master ~]# cat /home/wx/elasticsearch-7.9.0/config/elasticsearch.yml cluster.name: ELK-Cluster node.name: elk-node1 # 开启跨域访问支持&…...

【DCTWVRP】遗传算法求解带容量+距离+时间窗的车辆路径规划问题【Matlab 1211期】

一、VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem&#xff0c;VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况&#xff0c;可以简述为&#xff1a;对一系列发货点和收货点&#xff0c;组织调用一定的车辆&#xff0c…...

post与get请求的区别以及转发和重定向的区别

post 与get请求的额区别 比较角度GETPOST请求的数据是否在url上显示会 url?参数名参数值&#xff08;不安全&#xff09;不会 在Form Data中&#xff08;安全&#xff09;是否是表单的默认提交方式是不是执行效率高低&#xff08;相对于GET&#xff09;提交数据大小最大是102…...

在centos的docker里安装jupyter并开放端口

安装 jupyter pip install jupyter编写脚本运行&#xff1a; #!/bin/bash # run_jupyter.sh jupyter notebook --no-browser --ip 0.0.0.0 --port 8888 --allow-root > .log 2>&1 &可以把这个脚本加入开机运行 docker 端口映射 先把安装好jupyter的容器提交 …...

Qt 中文路径导致构建失败等问题

一、描述 拥有中文路径会导致程序构建失败等一系列问题&#xff0c;那么该如何解决此问题&#xff1f; 二、方案 2.1 由于中文路径导致构建失败 关闭程序&#xff0c;修改当前的路径&#xff0c;将中午替换掉 2.2 无法进入断点 debug模式才能进入断点 之前有中文路径 解决…...

HTML内置对象

目录 前言&#xff1a; 一、基本对象Object: 二、内置对象之Array&#xff1a; 三、内置对象之Math&#xff1a; 四、内置对象之Number&#xff1a; 五、内置对象之String&#xff1a; 六、内置对象之Date&#xff1a; 七、内置对象之JSON&#xff08;ES5新增内置对象&am…...

2022.08.23-力扣刷题(222、789、199、124、257、404)

222. 完全二叉树的节点个数 题目链接&#xff1a; https://leetcode-cn.com/problems/count-complete-tree-nodes/ 方法一&#xff1a;迭代法层序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …...

Openstack了解一下

一&#xff0c;云计算的服务模型 1、laaS 基础设施即服务:基础设施福分包括电脑、网络、存储、负载平衡设备、虚拟机。这 些服务于终端用户的软硬件资源都可以按照它们的需求来进行扩展或收缩。 2、PaaS 软件即服务:顾名思义&#xff0c;这种模式包括类似虚拟桌面、各种实用应用…...

crackme杂记007

花指令的特征&#xff1a; 遇到这种指令&#xff0c;可以立即判断出这是一个花指令&#xff0c;所以花指令较多的话&#xff0c;我们也可以通过搜索代码的方式快速去除 如上图&#xff0c;我们已经知道 E8 01 00 00 00 ?? ?? ?? ?? ?? C3 是花指令&#xff0c;所以…...

计算机发展变化初三英语作文,初三我的变化英语作文

天在变&#xff0c;地在变&#xff0c;万事万物都在变&#xff0c;我也在变。如何写一篇我得变化的英语作文呢?下面是学习啦小编给大家精心挑选的初三我的变化英语作文&#xff0c;希望大家喜欢!供你参考和阅读!我的变化英语作文篇1How I Change初中的学习生活即将结束了。请你…...

计算机与人类关系的英语作文,计算机的英语作文

在日常生活或是工作学习中&#xff0c;大家对作文都不陌生吧&#xff0c;作文可分为小学作文、中学作文、大学作文(论文)。为了让您在写作文时更加简单方便&#xff0c;以下是小编为大家整理的关于计算机的英语作文(通用8篇)&#xff0c;希望对大家有所帮助。计算机的英语作文1…...

关于计算机的英语作文初中,computer初中英语作文范文

电脑的普及程度越来越高&#xff0c;几乎家家户户都配备了电脑&#xff0c;那么试着用英语来介绍一下你对电脑的看法吧。下面是学习啦小编给大家整理的关于computer的&#xff0c;供大家参阅!computer初中英语作文范文(一)Computer games is a hot topic nowadays. Some people…...

计算机网络辅助英语写作,基于计算机网络的英语写作教学

摘 要&#xff1a;写作能力的培养一直是英语教学的一项重要内容。在大学英语四、六级考试中&#xff0c;写作占有较为重要的份量&#xff0c;但写作一直是大学英语教学的难点。目前常见的几种写作教学模式都存在着不足之处。如何利用现代技术丰富写作教学手段、提高教学效果是教…...

2019优质公众号大盘点,果断收藏了慢慢看吧 ~

全世界只有3.14 % 的人关注了青少年数学之旅又到年底了啦&#xff0c;也到了一年一度的年底盘点时间。那么2019年&#xff0c;又有哪些优质公众号崭露头角呢&#xff1f;本期将为您盘点几个优质公众号&#xff0c;总有一个刷屏过你的朋友圈&#xff01;长按二维码&#xff0c;选…...

推荐几个优质公众号,国庆在家可以充个电

前端技术日新月异&#xff0c;发展迅速&#xff0c;作为一个与时俱进的前端工程师&#xff0c;需要不断的学习。这里强烈推荐几个前端开发工程师必备的优质公众号&#xff0c;希望对你有所帮助。大家可以像我一样&#xff0c;利用碎片时间阅读这些公众号的文章。前端技术优选前…...

2021年,推荐这几个优质公众号碎片化学习

2021 年了&#xff0c;前端技术日新月异&#xff0c;发展迅速&#xff0c;前端公众号是不是感觉越来越多了&#xff1f;在着辞旧迎新之际&#xff0c;这里盘点几个前端开发工程师 2021 年必须关注的优质公众号&#xff0c;希望对你有所帮助。大家可以像我一样&#xff0c;利用碎…...

技术人员关注的几个优质公众号

在这个快节奏发展的时代&#xff0c;你需要用最有效的方式&#xff0c;学习最有用的知识。这几个公众号可以帮助你站在技术前沿&#xff0c;也能够充分利用碎片时间来学习。每一个公众号都是通往新世界的大门&#xff0c;绝对会让你受益匪浅。长按二维码&#xff0c;选择“识别…...

推几个大牛的优质公众号

学习如逆水行舟&#xff0c;不进则退&#xff1b;今天给大家精心挑选的这几个超级牛逼的公众号&#xff0c;在行业深耕已久&#xff0c;这些号一般是由深耕技术多年的IT老兵、名校超级学霸运营&#xff01;前端教程免费分享各种前端开发教程&#xff0c;HTML5&#xff0c;CSS3&…...

搬砖之余干什么?推荐这几个优质公众号

不是我不明白&#xff0c;这世界变化太快……现代社会提倡终生学习&#xff0c;程序员更是如此。只有学习热情是不够的&#xff0c;学习方法至关重要。除了书籍&#xff0c;公众号也是不错的学习途径。号主们都有大厂求职、工作经验&#xff0c;在实践中积累的丰富的经验&#…...

墙裂推荐6个优质公众号

推荐6个优质的公众号&#xff0c;每一个公众号都是一个特色的图书馆&#xff0c;为我们的学习提供优质的服务&#xff0c;珍贵的资源&#xff0c;耐心看完&#xff0c;认真选择适合自己的良师益友吧&#xff0c;非诚勿扰&#xff0c;扫码关注。01大数据肌肉猿大数据肌肉猿&…...

推荐几个优质公众号,一个个都好优秀!(大实话)

正所谓三人行必有我师&#xff0c;在我个人技术学习过程中&#xff0c;身边有很多大佬对我的帮助很大。今天&#xff0c;我把这些大佬的资料分享给大家。脑子进煎鱼了 号主&#xff1a;煎鱼。日常分享通俗易懂的 Go、算法、微服务多年&#xff0c;是一个资深 Gopher&#xff0c…...

值得私藏的几个优质公众号,拯救你面试烦恼

学习如逆水行舟&#xff0c;不进则退&#xff1b;只有坚持不断的学习,才能保持进步。今天给大家精心挑选的几个超高质量优质的公众号&#xff0c;在行业深耕已久&#xff0c;相信大家一定会有所收获。不多说&#xff0c;直接看介绍。????高级前端进阶这是我的好哥们木易杨&…...

例行为大家推荐几个优质公众号

为大家推荐几个优质公众号&#xff1a;推荐几个牛人的优质公众号&#xff0c;每一个公众号都是一个特色的图书馆&#xff0c;为我们的学习提供优质的服务&#xff0c;珍贵的资源&#xff0c;耐心看完&#xff0c;认真选择适合自己的良师益友吧。以下是特地给大家挑选的几个大佬…...

推荐一些增长见闻的优质公众号

公众号那么多&#xff0c;文章是看不完的&#xff0c;但我们可以选择一些优质的公众号&#xff0c;学习技术&#xff0c;汲取他们的理念&#xff0c;化为己用~愿你我一起成长~亦无所知说赚钱没那么难&#xff0c;你可能不信。但有个社群「生财有术」&#xff0c;聚集了 6000 多…...

优质公众号文章批量下载

有那么一些优秀的技术公众号&#xff08;我没有说是我&#xff09;&#xff0c;平时可能在手机上不能完全吸收知识&#xff0c;我们可以利用Python将该公众号的所有文章下载到本地&#xff0c;并以PDF的形式保存&#xff0c;什么时候有空就可以一篇一篇打开来仔细推敲。我们选择…...

强烈推荐这7个优质公众号

为大家推荐几个优质公众号&#xff1a;推荐几个一股清流般的优质IT公众号&#xff0c;每一个公众号都是一个特色的图书馆&#xff0c;为我们的学习提供优质的服务&#xff0c;珍贵的资源&#xff0c;耐心看完&#xff0c;认真选择适合自己的良师益友吧。以下是特地给大家挑选了…...

取关几十个优质公众号,是否可惜?

春节假期&#xff0c;花了大量时间去做的一件事就是清理微信公众号&#xff08;以下均指订阅号&#xff09;中未读的文章&#xff0c;并取消关注几十个微信公众号。接下来就聊聊我对此事的看法和思路&#xff0c;读者对照一下&#xff0c;也看看是否需要做出同样的清理行动。 …...

推荐几个优质公众号

各位读者大家好&#xff0c;今天给大家推荐几位在大数据领域的大佬&#xff0c;他们的文章都有比较多的干货&#xff0c;人也很奈斯&#xff0c;扫码关注他们吧&#xff0c;一起进步&#xff01;程序员峰哥知名外企数据开发工程师&#xff0c;对编码和职场经验都有较深的心得。…...

认认真真推荐几个优质公众号

这几天大家放假了&#xff0c;不少人外出旅游&#xff0c;但这几个技术号还在坚持更新推文&#xff0c;因为不少同学担忧的情况——“晋升无望、收入见顶、生活开支飙升、财务危机如影随形”&#xff0c;我挑选了几个优质原创技术号&#xff0c;推荐给大家化解成长的烦恼。他们…...