knn机器学习算法_K-最近邻居(KNN)算法| 机器学习

knn机器学习算法

Goal: To classify a query point (with 2 features) using training data of 2 classes using KNN.

目标:使用KNN使用2类的训练数据对查询点(具有2个要素)进行分类。

K最近邻居(KNN) (K- Nearest Neighbor (KNN))

KNN is a basic machine learning algorithm that can be used for both classifications as well as regression problems but has limited uses as a regression problem. So, we would discuss classification problems only.

KNN是一种基本的机器学习算法,可用于分类和回归问题,但作为回归问题用途有限。 因此,我们仅讨论分类问题。

It involves finding the distance of a query point with the training points in the training datasets. Sorting the distances and picking k points with the least distance. Then check which class these k points belong to and the class with maximum appearance is the predicted class.

它涉及在训练数据集中找到查询点与训练点之间的距离。 排序距离并选择距离最小的k个点。 然后检查这k个点属于哪个类别,并且外观最大的类别是预测的类别。

KNN Algo

Red and green are two classes here, and we have to predict the class of star point. So, from the image, it is clear that the points of the red class are much closer than points of green class so the class prediction will be red for this point.

红色和绿色是这里的两个类别,我们必须预测星点的类别。 因此,从图像中可以明显看出,红色类别的点比绿色类别的点近得多,因此该类别的预测将是红色。

KNN Algo 1

We will generally work on the matrix, and make use of "numpy" libraries to evaluate this Euclid’s distance.

通常,我们将在矩阵上工作,并使用“ numpy”库来评估该Euclid的距离。

Algorithm:

算法:

  • STEP 1: Take the distance of a query point or a query reading from all the training points in the training dataset.

    步骤1:从训练数据集中的所有训练点获取查询点或查询读数的距离。

  • STEP 2: Sort the distance in increasing order and pick the k points with the least distance.

    步骤2:按递增顺序对距离进行排序,并选择距离最小的k个点。

  • STEP 3: Check the majority of class in these k points.

    步骤3:在这k点中检查大部分班级。

  • STEP 4: Class with the maximum majority is the predicted class of the point.

    步骤4:具有最大多数的类别是该点的预测类别。

Note: In the code, we have taken only two features for a better explanation but the code works for N features also just you have to generate training data of n features and a query point of n features. Further, I have used numpy to generate two feature data.

注:在代码中,我们采取了只有两个功能,一个更好的解释,但该代码适用于N个特征也只是你要生成的n个特征和n个特征查询点的训练数据。 此外,我使用numpy生成了两个特征数据。

Python Code

Python代码

import numpy as np
def distance(v1, v2):
# Eucledian 
return np.sqrt(((v1-v2)**2).sum())
def knn(train, test, k=5):
dist = []
for i in range(train.shape[0]):
# Get the vector and label
ix = train[i, :-1]
iy = train[i, -1]
# Compute the distance from test point
d = distance(test, ix)
dist.append([d, iy])
# Sort based on distance and get top k
dk = sorted(dist, key=lambda x: x[0])[:k]
# Retrieve only the labels
labels = np.array(dk)[:, -1]
# Get frequencies of each label
output = np.unique(labels, return_counts=True)
# Find max frequency and corresponding label
index = np.argmax(output[1])
return output[0][index]
# monkey_data && chimp data
# Data has 2 features 
monkey_data = np.random.multivariate_normal([1.0,2.0],[[1.5,0.5],[0.5,1]],1000)
chimp_data = np.random.multivariate_normal([4.0,4.0],[[1,0],[0,1.8]],1000)
data = np.zeros((2000,3))
data[:1000,:-1] = monkey_data
data[1000:,:-1] = chimp_data
data[1000:,-1] = 1
label_to_class = {1:'chimp', 0 : 'monkey'}
## query point for the check
print("Enter the 1st feature")
x = input()
print("Enter the 2nd feature")
y = input()
x = float(x)
y = float(y)
query = np.array([x,y])
ans = knn(data, query)
print("the predicted class for the points is {}".format(label_to_class[ans]))

Output

输出量

Enter the 1st feature
3
Enter the 2nd feature
2
the predicted class for the points is chimp

翻译自: https://www.includehelp.com/ml-ai/k-nearest-neighbors-knn-algorithm.aspx

knn机器学习算法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 指令的分类 (man page 可查看)

man page 常用按键 转载于:https://www.cnblogs.com/aoun/p/4324350.html

Springboot遇到的问题

Springboot遇到的问题1_访问4041.1_url错误1.2_controller和启动项不在同级目录1.3_未加ResponseBody2_字母后端显示大写,传到前端变为小写2.1_Data注释问题1_访问404 1.1_url错误 1.2_controller和启动项不在同级目录 1.3_未加ResponseBody 在方法上面加&#…

45 张图深度解析 Netty 架构与原理

作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事。如果你要进阶,想了解 Java 服务器的…

ajax实现浏览器前进后退-location.hash与模拟iframe

为什么80%的码农都做不了架构师?>>> Aajx实现无数据刷新时,我们会遇到浏览器前进后退失效的问题以及URL不友好的问题。 实现方式有两种 1、支持onhashchange事件的,通过更新和读取location.hash的方式来实现 /* 因为Javascript对…

java环境变量配置以及遇到的一些问题

java环境变量配置以及遇到的一些问题1_下载2_配置环境变量2.1_配置JAVA_HOME2.2_配置CLASS_PATH2.2_配置系统路径PATH3_遇到的问题3.1_输入java -version无效3.2_javac无效1_下载 2_配置环境变量 打开我的电脑,右击空白处点击属性 点击高级系统设置 点击环境变量…

c fputc 函数重写_使用示例的C语言中的fputc()函数

c fputc 函数重写C中的fputc()函数 (fputc() function in C) Prototype: 原型: int fputc(const char ch, FILE *filename);Parameters: 参数: const char ch, FILE *filenameReturn type: int 返回类型: int Use of function: 使用功能&a…

信息系统状态过程图_操作系统中的增强型过程状态图

信息系统状态过程图The enhanced process state diagram was introduced for maintaining the degree of multiprogramming by the Operating System. The degree of multiprogramming is the maximum number of processes that can be handled by the main memory at a partic…

Java中竟有18种队列?45张图!安排

今天我们来盘点一下Java中的Queue家族,总共涉及到18种Queue。这篇恐怕是市面上最全最细讲解Queue的。本篇主要内容如下:本篇主要内容帮你总结好的阻塞队列:18种Queue总结一、Queue自我介绍 队列原理图1.1 Queue自我介绍hi,大家好&…

肯德尔相关性分析_肯德尔的Tau机器学习相关性

肯德尔相关性分析Before we begin I hope you guys have a basic understanding of Pearson’s and Spearmans correlation. As the name suggests this correlation was named after Maurice Kendall in the year 1938. 在开始之前,我希望你们对皮尔逊和斯皮尔曼的…

40 张图带你搞懂 TCP 和 UDP

我们本篇文章的组织脉络如下运输层位于应用层和网络层之间,是 OSI 分层体系中的第四层,同时也是网络体系结构的重要部分。运输层主要负责网络上的端到端通信。运输层为运行在不同主机上的应用程序之间的通信起着至关重要的作用。下面我们就来一起探讨一下…

腾讯推出高性能 RPC 开发框架

Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年…

看完这篇文章,我再也不怕面试官问「垃圾回收」了...

前言 Java 相比 C/C 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这些恼人的问题,这也是 Java 能大行其道的重要原因之…

react从不会到入门

react从不会到入门1_react初识1.1_react基础环境搭建1.2_文件目录介绍1.2_JSX基础1.2.1_JSX介绍1.2.2_JSX表达式1.2.3_列表渲染1.2.4_条件渲染1.2.5_函数调用1.2.6_样式控制2_组件基础2.1_函数组件2.2_点击事件3_组件通讯3.1_父子关系4_生命周期4.1_挂载阶段4.2_更新阶段5_Hook…

Microsoft Dynamics CRM 数据库连接存储位置在哪里 是在注册表里

Microsoft Dynamics CRM 数据库连接存储位置是在注册表里

Redis的8大数据类型,写的真好

来源 | blog.itzhouq.cn/redis2最近这几天的面试每一场都问到了,但是感觉回答的并不好,还有很多需要梳理的知识点,这里通过几篇 Redis 笔记整个梳理一遍。Redis 的八大数据类型官网可查看命令:http://www.redis.cn/commands.htmlR…

前后端(react+springboot)服务器部署

前后端(reactspringboot)服务器部署1_前端reactumi服务器部署1.1_前端生成dist目标文件1.2_准备连接服务器的工具1.3_安装nginx1.4_部署项目1.4.1_传输dist文件1.4.2_配置配置文件1.4.3_启动nginx2_后端springboot项目部署服务器2.1_后端生成目标文件2.2…

提高生产力,最全 MyBatisPlus 讲解!

如果你每天还在重复写 CRUD 的 SQL,如果你对这些 SQL 已经不耐烦了,那么你何不花费一些时间来阅读这篇文章,然后对已有的老项目进行改造,必有收获!一、MP 是什么MP 全称 Mybatis-Plus ,套用官方的解释便是成…

c#象棋程序_C ++程序确定象棋方块的颜色

c#象棋程序A chess board is equally divided into 64 identical squares that are black and white alternately. Each square on the chessboard can be identified by the coordinates as A to H on the horizontal axis and 1 to 8 on the vertical axis as shown in the f…

MySQL中你必须知道的10件事,1.5万字!

攻击性不大,侮辱性极强1、SQL语句执行流程MySQL大体上可分为Server层和存储引擎层两部分。Server层:连接器:TCP握手后服务器来验证登陆用户身份,A用户创建连接后,管理员对A用户权限修改了也不会影响到已经创建的链接权…

Xamarin只言片语2——Xamarin下的web api操作

在很多时候,我们是希望手机app是要和服务端关联,并获取服务端的数据的,本篇博文我们看一下在xmarin下,怎么和用web api的方式与服务端连接并获取数据。首先看web api的开发,本实例是用Visual Studio 2013 with update …