KNN算法

文章目录

  • 释义
    • 欧氏距离
    • simple——KNN
    • sklearn——KNN

释义

近朱者赤近墨者黑----从训练数据集中找出和待预测样本最接近的K个样本
对于分类问题,我们使用了多数表决法来判断目标对象的类别。
对于回归问题,我们使用了平均值法来判断目标对象的数值

如上图,若k=3,则预测样本为🔺,
k=5,则预测样本为正方形

欧氏距离

一般采用欧式距离进行计算
d = sqrt( (x1-x2)^2 + (y1-y2)²)

simple——KNN

from numpy import *
import operator# 创建数据集和标签
def createDataSet():group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])	# 数据集4行2列的二维数组labels = ['A', 'A', 'B', 'B']								# 标签return group, labels# 分类函数
def classify0(inX, dataSet, labels, k):							# 1. 距离计算dataSetSize = dataSet.shape[0]# tile生成和训练样本对应的矩阵,并与训练样本求差diffMat = tile(inX, (dataSetSize, 1)) - dataSet	# tile: 列表示复制的行数, 行表示对inx的重复的次数# 取平方sqDiffMat = diffMat ** 2# 将矩阵的每一行相加sqDistances = sqDiffMat.sum(axis=1)# 开方distances = sqDistances ** 0.5#使用argsort函数进行排序sortedDistIndicies = distances.argsort()# 2. 选择距离最小的k个点classCount = {}for i in range(k):# 找到该样本的类型voteIlabel = labels[sortedDistIndicies[i]]classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)return sortedClassCount[0][0]def test():group, labels = createDataSet()print(group)print(labels)print(classify0([0.1, 0.1], group, labels, 3))if __name__ == '__main__':test()

sklearn——KNN

import numpy as np
import matplotlib.pyplot as plt
from numpy import *
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasetsn_neighbors = 3# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data[:, :2]  # 我们只采用前两个feature
y = iris.targeth = .02  # 网格中的步长# 创建彩色的图
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])# 分别以uniform和distance为特征绘图
for weights in ['uniform', 'distance']:# 我们创建了一个knn分类器的实例,并拟合数据。clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)clf.fit(X, y)# 绘制决策边界。为此,我们将为每个分配一个颜色# 来绘制网格中的点 [x_min, x_max]x[y_min, y_max].x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])# 将结果放入一个彩色图中Z = Z.reshape(xx.shape)plt.figure()plt.pcolormesh(xx, yy, Z, cmap=cmap_light)# 绘制训练点plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold)plt.xlim(xx.min(), xx.max())plt.ylim(yy.min(), yy.max())plt.title("3-Class classification (k = %i, weights = '%s')"% (n_neighbors, weights))plt.show()

非常棒的学习资料

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

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

相关文章

【YOLO】语义分割和实例分割(四)

0 YOLO系列笔记 【YOLO】朴实无华的yolov5环境配置(一) 【YOLO】yolov5训练自己的数据集(二) 【YOLO】目标识别模型的导出和opencv部署(三) 1 前言 在之前的实践过程中,总结了如何使用YOLOv…

Vue3响应式原理初探

vue3响应式原理初探 为什么要使用proxy取代defineProperty使用proxy如何完成依赖收集呢? 为什么要使用proxy取代defineProperty 原因1:defineproperty无法检测到原本不存在的属性。打个🌰 new Vue({data(){return {name:wxs,age:25}}})在vue…

电脑版便签软件下载用哪个?

在面对每天繁忙的工作日程,电脑是许多上班族不可或缺的工作助手,而一款得心应手的电脑便签软件,更是可以帮助大家记录、提醒、督促各项任务按时完成的得力助手。那么,究竟在众多的电脑便签软。件中,哪一位能够真正成为…

Ubuntu:Arduino IDE 开发环境配置【保姆级】

物联网开发学习笔记——目录索引 本章主要介绍在Ubuntu系统搭建Arduino IDE 开发环境,windows系统请移步:Windows:Arduino IDE 开发环境配置【保姆级】 参考官网:Arduino - Home 有关更多详细信息,请参阅 Arduino I…

SpringCloud微服务(注册发现Nacos、服务调用SSM、网关gateway)项目环境搭建(项目概况,SSM细节总结)

目录 1.nacos环境搭建nacos安装 2.项目主体结构6.2)表结构分析6.4)**运营端微服务搭建**6.4)登录功能实现 7)接口工具postman、swagger、knife4j7.1)postman7.2)swagger7.3)knife4j 8)网关9)前端集成9.1)前端项目部署思路9.2)配置nginx 1.nacos环境搭建 nacos安装 ①&#xf…

LDAP用户密码自服务平台搭建

源码地址:https://github.com/ltb-project/self-service-password 官方文档 :https://self-service-password.readthedocs.io/en/latest/ 1.创建配置文件 mkdir -p /opt/ssp cd /opt/ssp vim ssp.conf.php2.在ssp.conf.php其中输入如下配置选项&#…

ELK日志分析系统的详细介绍与部署

文章目录 1. ELK的概述1.1 简介1.2 使用ELK的理由1.3 ELK的主要组件1.3.1 Elasticsearch1.3.2 Kibana1.3.3 Logstash1.3.3.1 简介1.3.3.2 Logstash常用相关命令选项 1.3.3.3 Logstash 的输入和输出流1.3.4 Logstash的相关配置文件 1.3.4 Filebeat1.3.4.1 简介1.3.4.2 filebeat …

数学分析:傅里叶级数

卓里奇书好的一点就是,不是直接引出公式,而是告诉你理由。先引出正交的概念,然后在函数空间中,也有正交,只不过是无限维的空间。 这里要注意,明确说明了是有限个。 在函数空间里面,内积是指进行…

studio one6值不值得下载?好用吗

零基础学混音,持之以恒才能有所收获。首先要明确自己的学习目标,然后选择适合自己的教程。这套教程适用于后期制作和直播,同样适用。我切换到了桌面屏幕。 在这个基础上运行,它提供了适合零基础的模板,适合直播唱歌或…

【iOS】使用单例封装通过AFNetworking实现的网络请求

这里写目录标题 前言单例封装网络请求1. 首先创建一个继承于NSObject的单例类,笔者这里以Manager对单例类进行命名,然后声明并实现单例类的初始化方法2.实现完单例的创建方法后我们即可通过AFNetworking中的GET方法进行网络请求3.在Controller文件中创建…

Electron之集成vue+vite开发桌面程序

在electron中集成vue开发桌面程序 使用我们之前创建的electron项目 创建vue 项目 命令行进入electron根目录 执行下面命令 npm create vitelatest vue -- --template vue这样就创建了一个vue项目,文件名是vue,命令行进入vue下,执行下面命…

Camera BSP之GPIO/I2C/PMIC简介

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、GPIO介绍二、IC 总线概括三、PMIC 概括四、思考 一、GPIO介绍 GPIO:General Purpose Input Output (通用输入/输出&#xf…

互联网Java工程师面试题·Java 总结篇·第八弹

目录 72、用 Java 的套接字编程实现一个多线程的回显(echo)服务器。 73、XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式? 74、你在项目中哪些地方用到了 XML? 72、用 Java 的套…

为网站配置SSL

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS…

【AI视野·今日Robot 机器人论文速览 第五十五期】Mon, 16 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 16 Oct 2023 Totally 27 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚***AcTExplore, 对于未知物体的主动触觉感知。基于强化学习自动探索物体的表面形貌,增量式重建。(from 马里兰…

uni-app通过 vuedraggable 创建上下拖动排序组件

我们右键项目 选择 使用命令行窗口打开所在目录 然后 在终端中输入 npm install vuedraggable --save导入 vuedraggable 然后组件编写代码如下 <template><view class"container"><draggable v-model"list" :options"dragOptions&…

ios设备管理软件iMazing 2.17.11官方中文版新增功能介绍

iMazing 2.17.11官方中文版(ios设备管理软件)是一款管理苹果设备的软件&#xff0c; Windows 平台上的一款帮助用户管理 IOS 手机的应用程序&#xff0c;软件功能非常强大&#xff0c;界面简洁明晰、操作方便快捷&#xff0c;设计得非常人性化。iMazing官方版与苹果设备连接后&…

Chrome 115之后的版本,安装和使用chromedriver

在Python中使用selenium 时报如下错误&#xff1a; 1. 老版本chrome对应的chromedriver 下载地址&#xff1a;CNPM Binaries Mirror 2. 新版本chrome对应的chromedriver 下载地址&#xff1a;Chrome for Testing availability

sd卡的坏块管理与负载均衡

坏块管理 坏块是指在存储介质中出现物理损坏或不可靠的数据块。由于SD卡使用的是闪存技术&#xff0c;它也面临着坏块的问题。 SD卡通过实现坏块管理机制来处理坏块。具体的坏块管理方法可能因制造商和产品型号而有所不同&#xff0c;但通常会采取以下策略&#xff1a; 坏块标…

Python 网络爬虫

爬虫原理 计算机一次Request请求和服务器端的Response回应&#xff0c;即实现了网络连接。 爬虫需要做两件事&#xff1a;模拟计算机对服务器发起Request请求。 接受服务器的Response内容并解析、提取所需的信息。 多页面爬虫流程 ​​​​​​​多页面网页爬虫流程