了解标量、向量和点积
数据科学基础数学:线性代数简介 了解标量、向量和点积
机器只能按着算法理解和处理数据结构存储的数字.
例如创建垃圾邮件检测器,则首先必须将文本数据转换为数字(通过单词嵌入)。
两个句子之间的余弦相似性 两个句子之间的余弦相似性可以通过它们的向量表示法的点积来找到。有多种方法可以将句子/段落表示为向量。
similarity= cos(a,b)= dotproduct(a,b) / ( norm(a) * norm(b) )= a.b / ||a|| * ||b||
这里有两个非常短的文本可以比较:
Julie loves me more than Linda loves me
Jane likes me more than Julie loves me
我们想知道这些文本的相似程度,纯粹从字数上看(而忽略了字数顺序)。我们首先列出两篇文章中的单词:
me Julie loves Linda than more likes Jane
现在我们计算这些词在每个文本中出现的次数:
me 2 2 Jane 0 1Julie 1 1Linda 1 0likes 0 1loves 2 1 more 1 1 than 1 1
对这两个垂直向量的计数感兴趣。例如,每个文本中都有两个 "我 "的例子。我们将通过计算这两个向量的一个函数,即它们之间的角度的余弦,来决定这两个文本之间的距离。
这两个向量也是如此:
a: [2, 1, 0, 2, 0, 1, 1, 1]b: [2, 1, 1, 1, 1, 0, 1, 1]
它们之间的角度的余弦约为0.822。
这些向量是8维的。使用余弦相似性的一个优点显然是,它将问题转化为可视化。在这种情况下,你可以把它看作是大约35度的角度,这与零或完全一致有一些 "距离"。
在我们的下一篇文章中,我们将看到实时的实现。
然后可以将数据存储在向量、矩阵和张量中。图色彩表示为 0 到 255 之间的值矩阵,表示每个像素的每种颜色的亮度。可以利用线性代数领域的工具和概念来操作这些向量、矩阵和张量。
问题描述:数学求解不在我讨论的重点,转向使用 python 求 2D 平面空间的3个点所决定的三角形三边之间的角度。
矢量分析中的点积将用于计算3点之间的角度。
我们使用了多个维度数据,如 1D、2D、3D 和更高维度,而不仅仅是 2D。但我用2D数据点解释。
点积,可以用代数或几何方式定义。几何定义基于角度和距离,矢量的大小的概念。这两个定义的等价性依赖于欧几里得空间的笛卡尔坐标系。
几何定义:
同时具有大小和方向的几何对象。矢量可以描绘成箭头,大小是它的长度,它的方向是箭头指向的方向。
向量 a 的大小用 a 表示|a|
两个欧几里得向量 a 和 b 的点积由下式定义。其中 θ 是 a 和 b 之间的角度。
解释:
Linear Algebra
使用Math库的写法不是今天讨论的重点。因为写法1只照顾到我们熟知的数学思路,仅在最后一步调用对应的python函数求解。
换句话话说,写法1人理解起来比较容易,但在机器看来并不是它的菜。
import mathdef getAngle(a, b, c): y_ca,x_ca = c[1] - a[1], c[0] - a[0] y_ba,x_ba = b[1] - a[1], b[0] - a[0] ang = math.degrees(math.atan2(y_ca,x_ca) - math.atan2(y_ba,x_ba)) return ang + 360 if ang < 0 else ang
a,b,c = (0,0),(4,0),(4,3)print(getAngle(a, b, c))36.86989764584402
今天的重点是在第2种思路:Numpy
a ∗ b (点积) = (a 或 b 在b或a方向上的投影) × (b 或 a)
OA’ × OB = OA × OB ×COSθ
a ∗ b = |a| × |b|× COSθ
numpy.dot() #计算 a ∗ b = 9
numpy.linalg.norm() #|a| × |b|
导入上一篇的任务链接在此
了解标量、向量和点积相关推荐
- 关于标量积和矢量积的理解
矢量积与标量积的对比 标量积(A⃗⋅B⃗\vec {A} \cdot \vec{B}A⋅B) 矢量积(A⃗×B⃗\vec{A} \times \vec{B}A×B) 运算方式 A⃗⋅B⃗=A⋅B⋅co ...
- 数学基础 —— 线性代数
目录 1.向量点积(內积) 2.余弦相似度 3.向量叉乘(外积) 4.矩阵乘法 5.矩阵点乘 6.內积/外积 7.矩阵的迹 1.向量点积(內积) 如果A和B都是nnn维向量,可以这样定义点积:A⋅B= ...
- 【线性代数】机器学习·算法必备 线性代数总结
目录 一.九层之台,起于垒土:坐标与变换 1.1 描述空间的工具:向量(Vector) 1.1.1 重温向量(Vector) 1.1.2 使用Python语言表示向量 1.1.3 向量(Vector) ...
- 集体智慧编程学习之核方法
欢迎关注我的个人博客blog.timene.com 这个算法真是不太好懂,看了好几遍终于有点入门的感觉,就赶紧记录下这点感觉.我从复习线性分类开始,然后复习点积的含义,再引出核方法. 线性分类是最容易 ...
- 论文笔记Dory:Arguments for Inner Products and Polynomial Commitments
Lee, J. (2021). Dory: Efficient, Transparent Arguments for Generalised Inner Products and Polynomial ...
- DirectX 12 3D游戏开发实战(第一章向量)
目录 第1章 向量代数 1.1 向量 1.2 长度和单位向量 1.3 点积 1.4 叉积 1.5 点 1.6 利用DirectXMath库进行向量运算 1.7 小结 1.8 练习 第1章 向量代数 向 ...
- 一文总结排序模型CTR点击率预估
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
- 推荐算法炼丹笔记:排序模型CTR点击率预估系列
微信公众号:炼丹笔记 CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在 ...
- 推荐算法炼丹笔记:CTR点击率预估系列入门手册
CTR点击率预估系列家谱 炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰. (一)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 1.1 背景 本文发表在RecSys 2019 ...
最新文章
- python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换
- jquery完成界面无刷新加载登陆注册
- [Linux]进程(十二)--task_struct结构体
- Nginx反向代理Redis服务
- 信息安全工程师考试大纲-科目1:信息安全基础知识
- JavaScript原生实现《贪吃蛇》
- 关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;...
- #paragma详解
- 计算机网络考研知识点史上最全背诵笔记
- 恶意程序新趋势-钻粪坑+数签
- 林子雨版《大数据技术原理与应用》实验五 信息挖掘详解
- 从快感到成就感:多巴胺vs内啡肽
- halcon之屌炸天的自标定(1)
- conductor介绍
- 开闭原则 by Robert Martin
- 总结教训:stm32f4-Discovery驱动三星s6d1121液晶程序
- 255%可用已接通电源_家用电器电源开关(按钮)的符号使用讲解
- 数字化转型风口,渠道商服务的转型与升级
- BIM轻量化和Web的应用
- (三)初识打印机驱动
热门文章
- 华擎主板bios设置图解_主板BIOS界面解析_华擎 Z170 极限玩家 7+_主板-中关村在线...
- 人工智能导论(5)——搜索策略(Search Strategy)
- 阿里巴巴高效的页面动画解决方案——Ant Motion Design
- Java高级工程师面试题目汇集
- linux 下建立硬链接和软连接
- ES6中字符串和数组新增的方法
- vue 在数组中添加字段
- stm32f103c8t6调试-while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET );卡死
- 进程和线程的区别是什么?
- OpenCV中waitKey()函数的深度解析