小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

KNN算法

机器学习,python 额外说明

收录于:15天前

KNN算法简述

1、算法概述

KNN算法的核心思想是:一个样本空间中最相邻的k个样本中最常见的类别就是待测试数据的类别,并且具有相同的特征。

2、算法介绍

当待测数据与数据集有相同的属性时,可以用knn算法判断是否为同一类别,具体计算,待测样本到数据集中每个样本的距离。有k决定范围,考虑k个距离样本距离最近的数据,其中多数属于某个类别则样本属于属于该类别。
Alt

如上图所示,当k=5时,绿色属于红色三角形类别,当k=7时属于蓝色正方形类别,说明k值在很大程度上决定了样本类别。

3、工作原理

1.计算待分类数据与其他物体的距离。
2.统计最近的k个邻居。
3.待测类别则为样本中最多的类别。

4、步骤

1.加载数据集
2.计算待测数据到到个数据的距离
3.将计算的距离从小到大排序
4.确定k值,找最小的k个数据
5.计算k个数据中出现频次最高的类别
6.返回该类别即为待测数据的类别

距离公式
Alt

5、代码小试
//训练集样本
movie_data={
    "宝贝当家": [45, 2, 9, "喜剧片"],
              "美人鱼": [21, 17, 5, "喜剧片"],
              "澳门风云3": [54, 9, 11, "喜剧片"],
              "功夫熊猫3": [39, 0, 31, "喜剧片"],
              "谍影重重": [5, 2, 57, "动作片"],
              "叶问3": [3, 2, 65, "动作片"],
              "伦敦陷落": [2, 3, 55, "动作片"],
              "我的特工爷爷": [6, 4, 21, "动作片"],
              "奔爱": [7, 46, 4, "爱情片"],
              "夜孔雀": [9, 39, 8, "爱情片"],
              "代理情人": [9, 38, 2, "爱情片"]
            }  //字典类型
// 待测样本
test_data={
    "唐人街探案":[23,3,17,"?"]}
//求训练集到测试集的距离
import math
x=[23,3,27]
test_distance=[]
for key,v in movie_data.items():
	d=math.sqrt((x[0]-v[0])**2+(x[1]-v[1])**2+(x[2]-v[2])**2) //欧式距离计算公式
	test_distance.append([key,round(d,2),v[3])
print(test_distance)
// 对距离排序
test_distance.sort(key=lamba dis:dis[1])
print(test_distance)
// 通过k值确定样本范围
test1_distance=test_distance[:5]
print(test1_distance)
// 找出样本中出现最多的类别即为待测数据类别
types=[["喜剧片",["动作片"],["爱情片"]]
for i in test1_distance:
	for j in types:
		if i[2]=j[0]:
			j[1]+=1
print(types)
// 输出待测样本类别
types.sort(key=lamba d:d[1] reverse=True)
print(types[0][0])

最终的结果应该是喜剧电影的输出。

. . .

相关推荐

额外说明

oracle存储过程开始结束;

begin…end语句简介 begin...end语句用于定义语句块,语句块由一组一起执行的SQL语句组成。 语句块也称为批处理。 begin end形成一个语句块,语句块不会起到事务的作用,也不会起到作用域的作用,它只是有时候看起来更清晰。 begin

额外说明

设置Intellij Idea支持JS ES6语法

在使用箭头函数时,其实代码没有错误,而IDEA却提示报红了,作为强迫症看着很不舒服 是因为IDEA在js语法校验时默认的是ES5(ECMAScript 5),这就需要在IDEA设置中修改为ES6 找到File | Settings | Languages

额外说明

注释33-HTML&CSS

HTML标签:表单标签 * 表单: * 概念:用于采集用户输入的数据的。用于和服务器进行交互。 * form:用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围 * 属性: * action:指定提交

额外说明

莱迪思系列FPGA

博主的帖子很不错:时间的诗 是有关fpga的系列文章,是有阅读价值的。 https://blog.csdn.net/times_poem/article/category/6649772

额外说明

企业级实战——畅购商城SpringCloud-JAVA实战商城管理后台——工程搭建-准备工作

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

Python每日一练——字符串与正则表达式第五关:字符串居中显示的各种方法

面试题第五关: 第一部分——考点: 学会让字符串居中显示的各种方法。 第二部分——面试题: 1.面试题一:如何让字符串居中显示,有哪些方法? 2.面试题二:请使用center方法让字符串居中显示,两侧显示#号? 第三部分——解析: center方法 #

额外说明

Java面试准备篇:全面了解面试流程与常见问题

文章目录 1.1 Java面试概述 1.2 面试流程和注意事项 1.3 自我介绍及项目介绍 1.4 常见面试问题 在现代职场中,面试是求职过程中至关重要的一环,特别是对于Java开发者而言。为了帮助广大Java开发者更好地应对面试,本文将提供一份全面的J

额外说明

6.2 (课后题)转置输入矩阵和转置卷积核得到的结果

import torch '''6.2 图像卷积 课后题''' # a:卷积核[1,-1]应用于具有对角线边缘的图像会得到什么结果? 得到的结果还是以对角线为边缘 #%% X = torch.tensor([[0.0,1.0,2.0],

额外说明

无心剑中译柒歌《爱的回音》

Echo of Love 爱的回音 Love is a leave, it goes from green to yellow Love is a rock, it bears rain and snow Love is a stove, it keep

额外说明

wordpress 自定义_如何在WordPress中创建自定义表格

WordPress 定制 您想为您的 WordPress 网站制作自定义 Airtable 表单吗? 您想为您的 WordPress 网站制作自定义 Airtable 表单吗? Airtable 是一种数据管理工具,可让您创建自己的自定义数据驱动应用程序

ads via 小工具