机器学习的几个公式

news2025/1/15 19:56:02

今天看了几个公式的推演过程,有些推演过程还不是很明白,再着担心自己后面会忘记,特来此记下笔记。python 是由自己特定的公式符号的,但推演过程需要掌握,其实过程不过程不是重点,只要是要记得公式的含义,以便符合业务场景需求。

  1. 均值

  1. 向量的模

  1. 欧式距离

  1. 余弦相似度

  1. 方差

  1. 协方差

  1. 相关系数

将公式之前,先把numpy和数据引入下。示例是以sklearn.datasets 中鸢尾花数据做示例。

#加载numpy和数据

import numpy as np

from sklearn.datasets import load_iris

#加载数据

X,y = load_iris(return_X_y=True)

    • 均值

均值用的比较多,也是相对简单的计算公式,也就是总数除以总个数.

X0 = X[0,:] #取特征数据第一行

X1 = X[1,:]#取特征数据第二行

求X0的平均值:

算法推演写法:

X0.sum()/X0.size

换成python--nupmy公式写法为:

X0.mean()

下面截图是在python上运行的结果

    • 向量的模

求X0的向量的模:

算法推演写法:

np.sqrt((X0**2).sum())

换成python--nupmy公式写法为:

np.linalg.norm(X0)

下面是python运行结果

    • 欧式距离

欧式距离是两点之间的直线距离。以上面的X0,X1为例。欧式距离其实是向量的模的扩展版,都是运用勾股定理,只不过向量的一个点假定为原点,所以不用计算,直接求出。而欧式距离需要相减后平方再相加,最后开根号。

求X0 ,X1的直线距离

推演写法:

np.sqrt(((X0-X1)**2).sum())

换成python--nupmy公式写法为:

np.linalg.norm(X0-X1) #公式都是一样的,只不过参数从X0,换成X0-X1

    • 余弦相似度

余弦也就是我们中学时候接触得cos,求得是两个变量之间得夹角大小。

以X0,X1为例:

cos = X0 * X1 / |X0| / |X1|

要求出他们得余弦相似度,需要先求出两者得模。用两者的乘积 除以两者各自的模

求X0 ,X1的余弦相似度

推演写法:

(X0 * X1 ).sum()/ (np.sqrt(X0**2).sum())) / (np.sqrt(X1**2).sum()))

换成python--nupmy公式写法为:

X0@X1 / np.linalg.norm(X0) / np.linalg.norm(X1)

下面是python的运行结果

    • 方差

方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。【百度百科】

这里多说一些,方差分”有偏统计“和”无偏统计“。定义:

拿一个样本的统计量,评估出来的结果再取一个期望值,这个期望值等于真实结果就是“无偏统计”,不等于真实结果就是”有偏统计“。无偏统计除以(n-1),”有偏统计“除以n。这是科学上的理论知识,有兴趣的同学可自行深入了解,但工程上的数据量往往比较大,减一不减一差别不大。所以一般不用理会。

求X0 的方差

推演写法:

(X0 - X0.mean() )**2/ X0.size

换成python--nupmy公式写法为:

X0.var() #默认ddof = 0,也就是有偏差统计

X0.var(ddof = 1) #设置成无偏差统计

下面的python运行结果

    • 协方差

方差是考察一列数据的离散程度,而协方差是考察两列数据的离散程度。

协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。【百度百科】

求X0、X1 的协方差

推演写法:

(X0 - X0.mean() ) *(X1-X1.mean())/X0.size #X0,X1的size(形状)是一样大的

或:X0 - X0.mean() ) *(X1-X1.mean()).mean()

换成python--nupmy公式写法为:

X0.cov()[0][1]

或X0.cov()[1][0] #主要是两个数列的离散程度, 0-0,1-1都是一个数列的X0,X1自己离散程度

下面是python运行结果

    • 相关系数

相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量。

简单理解就是把上面的协方差结果缩放到-1 ~1之间。这样更容易看出两者的相关系统。

求X0、X1 的相关系数

推演写法:

首先先求协方差:

(X0 -X0.mean()) * (X1-X1.mean()).mean()

然后求X0 与X1 的方差

X0: ((X0-X0.mean)**2).mean()

X1: ((X1-X1.mean)**2).mean()

最后求整体: (X0 -X0.mean()) * (X1-X1.mean()).mean() /np.sqrt( ((X0-X0.mean)**2).mean()* ((X1-X1.mean)**2).mean())

换成python--nupmy公式写法为:

np.corrcoef(X0,X1)[0][1]

下面是python运行效果

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

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

相关文章

SocketCAN 命名空间 VCAN VXCAN CANGW 举例

文章目录NAMESPACESocketCAN最新 can-utils 安装VCAN 举例VXCAN 举例CANGW 举例参考NAMESPACE namespaces, 命名空间, 将全局系统资源包装在抽象中, 使命名空间中的进程看起来拥有自己全局资源的独立实例. 命名空间的一个用途是实现容器. Linux 命名空间类型及隔离物(Isolate…

译文 | Kubernetes 1.26:PodDisruptionBudget 守护不健康 Pod 时所用的驱逐策略

对于 Kubernetes 集群而言,想要确保日常干扰不影响应用的可用性,不是一个简单的任务。上月发布的 Kubernetes v1.26 增加了一个新的特性:允许针对 PodDisruptionBudget (PDB) 指定不健康 Pod 驱逐策略,这有助于在节点执行管理操作…

电商云仓是如何包装发货的?

包装不时是为了维护产品,而它从工厂地板移动到大型仓库,并最终经过批发或批发店抵达消费者。但是,自21世纪初以来,消费者希望与那些不时吸收着某种情感的品牌联络在一同,同时央求他们在心理上对品牌中止投资&#xff0…

【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ④ ( AWT 绘图窗口闪烁问题 )

文章目录一、AWT 绘图窗口闪烁问题二、完整代码示例一、AWT 绘图窗口闪烁问题 使用 Graphics 第一次绘图 完成后 , 如果在循环中 持续调用 Canvas#repaint() 函数刷新界面 , 代码如下 : import java.awt.*;public class HelloAWT {public static void main(String[] args) thr…

MySQL进阶——存储引擎

MySQL有9种存储引擎,不同的引擎,适合不同的场景,我们最常用的,可能就是InnoDB,应该是从5.5开始,就成为了MySQL的默认存储引擎。 show engines可以查询MySQL支持的这几种存储引擎,从表头能看出来…

SVN工程转Git工程Github托管

SVN工程转Git工程&Github托管1. 介绍2. autoAudioTest之SVN转Github步骤Step 1 工作环境(ubuntu)Step 2 安装升级必要软件Step 3 转换脚本Step 4 检查软件运行环境Step 5 生成authors.txtStep 6 SVN转换Git格式Step 7 Github新建空工程Step 8 Git提交已有工程Step 9 Git提交…

Dubbo快速入门看这一篇文章就够了

网站用户少,流量小,抗压力差(eg: ssm)网站用户量进一步增长,流量增多,服务器不能平滑扩容(eg: 多个ssm)网站用户和流量随时间稳步升高,需要随时进行服务器扩容(eg: rpc/http) 第2节 分布式框架解决的问题 1 2 3 4 5 6随着互联网架构的越来越复杂,由原来的单一架构 ...到... 流动…

M320、M601、HD1(RTU)功能对比

M320、M601、HD1_RTU硬件 / 软件功能对比一、硬件1.HD1-RTU2.Haas506-M3203.Haas506-M6014.对比区别二、软件1.对比区别一、硬件 1.HD1-RTU 详情参考HaaS506-HD1 (RTU) - 硬件介绍 2.Haas506-M320 详情参考HaaS506-M320 - 开发板介绍 3.Haas506-M601 详情参考HaaS506…

(二十二)简单算法和Lambda表达式

目录 前言: 1.选择排序 2.二分查找 3.Lambda表达式 前言: 算法是一个程序和软件的灵魂,要成为一名优秀的程序员,只有对基础算法全面掌握,才能在设计程序和编写代码的过程中显得得心应手。常用的基础算法有快速排序算法、堆排序算法、归并排…

每日一问-ChapGPT-20230115-关于断舍离

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230115-关于断舍离人类脑是适合专心做一件事,还是适合并行做多件事做事情的优先顺序怎样安排chapGPT你是怎么学到这么多知识的chapGPT你拥有智慧吗chapGPT你是实时更新自己的模型吗chapGPT你有情感吗chapGPT你有…

C++程序卡死、UI界面卡顿问题的原因分析与总结

目录 1、概述 2、软件卡死问题 2.1、死循环 2.2、死锁 3、客户端软件的UI界面卡顿问题 3.1、UI线程在频繁地写日志到文件中,导致UI线程时不时的卡顿 3.2、从网上拷贝的代码中调用Sleep函数,导致UI界面有明显的卡顿 4、总结 VC常用功能开发汇总&a…

COCO_03 制作COCO格式数据集 dataset 与 dataloader

文章目录1 引言2 pycocotools介绍3 Dataset 构建4 Dataloader 构建4.1 解决batch中tensor维度不一致的打包问题4.2 collate_fn()函数分析AppendixA. convert_coco_poly_maskB. COCO_Transform参考1 引言 在之前的文章中,我们认识了COCO数据集的基本格式https://blo…

【设计模式】创建型模式·工厂模式

设计模式学习之旅(四) 查看更多可关注后查看主页设计模式DayToDay专栏 一.引子 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】&…

NoSQLBooster for MongoDB 8.0.1 Crack

最智能的 MongoDB IDE NoSQLBooster 是 MongoDB Server 3.6-6.0 的跨平台 GUI 工具,它提供内置的 MongoDB 脚本调试器、全面的服务器监控工具、链接流畅查询、SQL 查询、查询代码生成器、任务调度、ES2020 支持和高级 IntelliSense经验。新版本 8.0 现已推出&#x…

Laravel文档阅读笔记-How to Build a Rest API with Laravel: A Beginners Guide①

随着移动端和JavaScript框架的发展,比如React和Vue,Restful风格的API越来越流行。使用Restful风格的好处就是一个后端程序可以与多个版本的前端用户界面关联。 Laravel提供了创建Rest API的环境和生态。 首先得导入依赖包比如Laravel Passport和Larave…

MySQL中给字符串字段加索引

文章目录前言一、前缀索引和普通索引二、前缀索引对覆盖索引的影响三、优化前缀索引前言 学完了MySQL索引部分,我们清楚的认识到给子段添加索引可以快速的进行查询,节约时间。但是索引有很多。那么对于字段怎么加索引,加什么索引。加到索引不…

linux基本功系列之useradd命令实战

文章目录一. useradd 命令介绍二. 语法格式及常用选项三. 参考案例3.1 不加任何参数创建用户3.2 创建不能登录系统且没有家目录的用户3.3 创建一个用户,ID为23333.4 创建一个用户并指定其附加组3.5 创建用户并账户过期时间3.6 与useradd相关的目录文件总结前言&…

InfluxDB的查询优化

首先,在学习influxDB的查询优化之前,我们要先学习下InfluxDB的解释器profiler(类似于mysql的Explain语句,不一样的是,sql,hivesql是提前查看执行计划等,Influx是在当前查询的最后一页两张表&…

力扣(LeetCode)382. 链表随机节点(2023.01.15)

给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。 实现 Solution 类: Solution(ListNode head) 使用整数数组初始化对象。 int getRandom() 从链表中随机选择一个节点并返回该节点的值。链表中所有…

WhatsApp居然有3个版本?深度详解区别!外贸圈获客神器用起来!

近两年,外贸圈用WhatsApp来营销获客,越来越火。不少走在前头的外贸人,已经尝到了甜头。但也有不少后来者,站在门外张望的时候,整个人都是蒙圈的。❓听说动不动要整几十个账号,还要花老长时间养号&#xff1…