巴尔加瓦算法图解:K最近邻算法

news2024/11/17 3:53:00

巴尔加瓦算法图解:K最近邻算法

目录

  • 巴尔加瓦算法图解:K最近邻算法
    • 判断水果
    • 创建推荐系统
      • 1. 判断相似程度
      • 练习
    • 回归(预测结果)
    • 机器学习
    • 总结

本章内容
❑ 学习使用K最近邻算法创建分类系统。❑ 学习特征抽取。❑ 学习回归,即预测数值,如明天的股价或用户对某部电影的喜欢程度。❑ 学习K最近邻算法的应用案例和局限性。

判断水果

判断这个水果是橙子还是柚子呢?一种办法是看它的邻居。来看看离它最近的三个邻居。在这三个邻居中,橙子比柚子多,因此这个水果很可能是橙子。祝贺你,你刚才就是使用K最近邻(k-nearest neighbours,KNN)算法进行了分类!

顺便说一句,其实并非一定要选择3个最近的邻居,也可选择2个、10个或10000个。这就是这种算法名为K最近邻而不是5最近邻的原因!
在这里插入图片描述

创建推荐系统

1. 判断相似程度

例子:比较个头和颜色,绘制坐标轴。
在这里插入图片描述

import matplotlib.pyplot as plt

# 设置坐标轴范围
plt.xlim(0, 5)
plt.ylim(0, 5)

# 绘制坐标轴
plt.axhline(0, color='black',linewidth=0)
plt.axvline(0, color='black',linewidth=0)

# 绘制横坐标
plt.text(4, -0.5, 'size',color='blue')

# 绘制纵坐标(颜色为蓝色)
plt.text(-0.5, 4, 'red', color='blue')

# 绘制点 A、B、C
plt.scatter([1, 4, 2], [1, 2, 4], c='red', marker='o', label='Points')
plt.text(1, 1, 'A', ha='right') #右边对齐
plt.text(4, 2, 'B', ha='right')
plt.text(2, 4, 'C', ha='right')

# 显示图例
plt.legend()

# 显示图形
plt.show()

再用毕达哥拉斯公式
c = a 2 + b 2 c = \sqrt{a^2 + b^2} c=a2+b2

练习

1.在Netflix示例中,你使用距离公式计算两位用户的距离,但给电影打分时,每位用户的标准并不都相同。假设你有两位用户——Yogi和Pinky,他们欣赏电影的品味相同,但Yogi给喜欢的电影都打5分,而Pinky更挑剔,只给特别好的电影打5分。他们的品味一致,但根据距离算法,他们并非邻居。如何将这种评分方式的差异考虑进来呢?

  • 评分归一化: 将用户的评分归一到一个标准范围内,例如0到1之间。这有助于消除由于评分尺度不同而导致的偏差。
  • 用户偏好建模: 考虑到不同用户的评分习惯,推荐系统可以采用更复杂的模型,例如考虑到用户的平均评分水平,以更好地捕捉他们的个性化喜好。
  • 隐式反馈: 有时,用户并不直接给电影打分,而是通过观看时间、点击次数等隐式行为表达他们的喜好。这种隐式反馈也可以用于个性化推荐。
  • 深度学习模型: 使用深度学习技术,能够更好地捕捉用户和电影之间的复杂关系,从而更精准地进行推荐。

2.假设Netflix指定了一组意见领袖。例如,Quentin Tarantino和WesAnderson就是Netflix的意见领袖,因此他们的评分比普通用户更重要。请问你该如何修改推荐系统,使其偏重于意见领袖的评分呢?

  • 给意见领袖的评分赋予更高的权重。例如,如果一部电影被Quentin Tarantino评分为5分,可以将其权重乘以一个调整系数,使其对整体推荐的影响更大。

回归(预测结果)

这就是回归(regression)。你将使用KNN来做两项基本工作——分类和回归:❑ 分类就是编组;❑ 回归就是预测结果(如一个数字)。
找出最近的邻居,进行平均数计算。

回归分析是一种统计学方法,用于研究两个或多个变量之间的关系。主要目的是建立一个数学模型,描述一个或多个自变量如何影响因变量。在回归分析中,我们通常使用已知数据来拟合模型,并利用这个模型来进行预测或理解变量之间的关系。

关键概念:

  1. 因变量(Dependent Variable): 需要解释或预测的变量,通常用 (Y) 表示。

  2. 自变量(Independent Variable): 用来解释或预测因变量的变量,通常用 (X) 表示。可以有一个或多个自变量。

  3. 回归方程(Regression Equation): 描述了自变量和因变量之间关系的数学公式。一般形式为 Y = f ( X ) + ϵ Y = f(X) + \epsilon Y=f(X)+ϵ,其中 ϵ \epsilon ϵ 是误差项。

  4. 回归系数 β \beta β(Regression Coefficients): 描述自变量对因变量影响的系数。回归方程中的参数就是这些系数。

  5. 残差(Residuals): 观测值与回归方程预测值之间的差异,即残差。残差用于评估模型的拟合程度。

回归分析主要分为两类:

  1. 简单线性回归(Simple Linear Regression): 当只有一个自变量时使用。回归方程的形式为 Y = β 0 + β 1 X + ϵ Y = \beta_0 + \beta_1 X + \epsilon Y=β0+β1X+ϵ

  2. 多元线性回归(Multiple Linear Regression): 当有两个或多个自变量时使用。回归方程的形式为 Y = β 0 + β 1 X 1 + β 2 X 2 + … + β k X k + ϵ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_kX_k + \epsilon Y=β0+β1X1+β2X2++βkXk+ϵ

回归分析可以用于预测、解释变量之间的关系、评估因变量对自变量的敏感度等。在实际应用中,回归分析广泛用于经济学、生物统计学、社会科学、工程等领域。

机器学习

  1. OCR指的是光学字符识别(optical character recognition),这意味着你可拍摄印刷页面的照片,计算机将自动识别出其中的文字。
    使用KNN:(1)浏览大量的数字图像,将这些数字的特征提取出来。(2)遇到新图像时,你提取该图像的特征,再找出它最近的邻居都是谁!这与前面判断水果是橙子还是柚子时一样。一般而言,OCR算法提取线段、点和曲线等特征。
  2. 创建垃圾邮件过滤器
    假设你收到一封主题为“collect your million dollars now!”的邮件,这是垃圾邮件吗?你可研究这个句子中的每个单词,看看它在垃圾邮件中出现的概率是多少。例如,使用这个非常简单的模型时,发现只有单词million在垃圾邮件中出现过。朴素贝叶斯分类器能计算出邮件为垃圾邮件的概率,其应用领域与KNN相似。
  3. 预测股票市场(不太可能)
    使用机器学习来预测股票市场的涨跌真的很难。对于股票市场,如何挑选合适的特征呢?股票昨天涨了,今天也会涨,这样的特征合适吗?又或者每年五月份股票市场都以绿盘报收,这样的预测可行吗?在根据以往的数据来预测未来方面,没有万无一失的方法。未来很难预测,由于涉及的变数太多,这几乎是不可能完成的任务。

总结

但愿通过阅读本章,你对KNN和机器学习的各种用途能有大致的认识!机器学习是个很有趣的领域,只要下定决心,你就能很深入地了解它。❑ KNN用于分类和回归,需要考虑最近的邻居。❑ 分类就是编组。❑ 回归就是预测结果(如数字)。❑ 特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。❑ 能否挑选合适的特征事关KNN算法的成败。

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

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

相关文章

JAVA建造者模式详解

建造者模式 1 建造者模式介绍 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 **建造者模式要解决的问题 ** 建造者模式可以将部件和其组装过程分开…

代码编辑器垂直选中列选择

一、vscode 1. alt shift 鼠标左键 效果如下:(可框选字符,也可仅垂直编辑) 2. ctrl alt 方向键 这个不像上个操作那样可以框选字符,只能上下(并不总垂直) 二、VS 1. alt 鼠标左键 或…

动态规划解决棋盘覆盖问题:一步步教你理解

从简单到复杂:理解动态规划通过矩形覆盖问题 动态规划是解决各种算法问题的一种强大方法,特别是当问题可以分解成重叠的子问题时。为了深入理解这个概念,我们将先从一个简单的矩形覆盖问题开始,然后逐步过渡到更复杂的二维棋盘覆盖问题。 简单问题:用2x1的小矩形覆盖2xn…

Linux实验记录:使用DHCP动态管理主机地址

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 动态主机配置协议(DHCP&…

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示:“java: 程序包org.junit不存在”,针对这一问题,我们可以考虑以下三步来解决: 第一步:检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖,但仍需检查…

Redis(十二)Bigkey

文章目录 游标案例生成100万测试数据key生产上限制keys */flushdb/flushall等危险命令不使用keys *&#xff1a;scan Biigkey案例多大算大发现bigkey渐进式删除生产调优示例问题 游标案例 生成100万测试数据key shell: for((i1;i<100*10000;i)); do echo "set k$i v…

CF1404BTree Tag/ BZOJ0487. 树上追逐详解

1.题目 传送门:Tree Tag - 洛谷 2.思路 我们考虑什么情况下Alice可以获胜. 如果​ ≤ da&#xff0c;则Alice可以一步就追上Bob. 如果Alice处在一个能覆盖整棵树的点&#xff0c;即2da 1≥树的直径&#xff0c;那么Bob也无论走到哪里Alice都能追到,Alice获胜. 其它情况下…

浅析现代计算机启动流程

文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程&#xff0c;这个流程中会涉及到各种硬件的配置与交互&#xff0c;包…

(基于xml配置Aop)学习Spring的第十五天

一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…

npm淘宝镜像源换新地址

新的淘宝npm镜像源地址&#xff1a;https://registry.npmmirror.com 切换新的镜像源 npm config set registry https://registry.npmmirror.com然后再执行以下操作查看是否成功 npm config list如果没安装过淘宝镜像源的&#xff0c;则直接安装 npm install -g cnpm --regi…

机器学习之DeepSequence软件使用学习1

简介 DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入&#xff0c;它可以用来预测可获得的突变&#xff0c;提取监督式学习的定量特征&#xff0c;并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非…

【C/C++】字符串长度 ☞ ‘sizeof‘ ‘strlen‘ ‘.length()‘

在C或C中&#xff0c;strlen和sizeof是两个经常被用到的&#xff0c;但作用完全不同的函数或操作符。 结论写在前面&#xff1a; strlen用于获取字符串的实际长度&#xff08;不包含结尾的空字符&#xff09;&#xff0c;而sizeof用于获取变量或类型的内存占用大小。对于std:…

肯尼斯·里科《C和指针》第10章 结构和联合(1)结构的基础知识

聚合数据类型(aggregate data type)能够同时存储一个以上的单独数据。C提供了两种类型的聚合数据类型&#xff1a;数组和结构。 数组是相同类型的元素的集合&#xff0c;它的每个元素是通过下标引用或指针间接访问来选择的。 结构也是一些值的集合&#xff0c;这些值称为它的成…

EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)

目录 小球视频 图像输出函数 loadimage用于从文件中读取图片 putimage在当前设备上绘制指定图像。 initgraph 函数 图片输出 代码详解&#xff1a; 1. 初始化图形界面 2. 设置背景颜色并清除屏幕 3. 加载并显示图片 4. 等待用户输入并退出程序 图形界面中的小球 1…

AI新工具(20240205) AI 对联/春联 - 输入描述,自动生成春联图片;AI写作引擎;满分简历

AI 对联/春联 - 输入描述&#xff0c;自动生成春联图片 AI 对联/春联 AI 对联/春联是一个由YunYouJun开发的开源项目&#xff0c;用于生成春节对联。 https://github.com/YunYouJun/ai-sfc 满分简历 - HR在7秒内决定一份简历去留&#xff0c;让你的简历脱颖而出 满分简历 …

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品

计算机设计大赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数&#xff1a;2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

优思学院|杰克·韦尔奇谈领导的角色是什么?

杰克韦尔奇作为通用电气公司前任董事长及首席执行官的职业轨迹极为辉煌。在他的领导下&#xff0c;通用电气在20年的时间里市值飙升&#xff0c;从130亿美元跃升至高达4,800亿美元&#xff0c;使其成为世界上市值最高的公司之一。他一生获得了无数荣誉&#xff0c;被誉为“世纪…

《动手学深度学习(PyTorch版)》笔记7.5

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

电商开放API商品采集接口、关键字搜索接口,获取商品ID、商品主图接口

API是application programming interface&#xff08;应用程序接口&#xff09;的简称&#xff0c;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。…