wordpress 首页制作,南宁庄关键词推广优化方案,成都企业网站建设公司,网站建设是永久性的吗一、定义 几何定义#xff1a;向量是一个有方向和大小的量#xff0c;通常用箭头表示。向量的起点称为原点#xff0c;终点称为向量的端点。 代数定义#xff1a;向量是一个有序的数组#xff0c;通常表示为列向量或行向量。
行向量就是 1*n的形式#xff08;行展开向量是一个有方向和大小的量通常用箭头表示。向量的起点称为原点终点称为向量的端点。 代数定义向量是一个有序的数组通常表示为列向量或行向量。
行向量就是 1*n的形式行展开
列向量就是 n*1的形式列展开
二、运算 加法、数乘、点积和叉积向量维度必须相同若不相同可以补零
1、加法 向量加法是将两个向量的对应分量相加得到一个新的向量。
2、数乘 向量数乘是将一个向量的每个分量乘以一个标量得到一个新的向量。
3、点积 向量点积内积是将两个向量的对应分量相乘然后将结果相加得到一个标量。
u⋅v⋯ 。
例如存在两个向量求相加、分别乘2、两者相乘 解
注意加减法、数乘都是得到向量结果向量相乘得到标量准确数值。 三、特征值与特征向量 A 是一个 n×n 的方阵。如果存在一个非零列向量 v 和一个标量 λ使得 Avλv。
那么λ 称为矩阵 A的特征值v 称为对应于特征值 λ 的特征向量λ可以为0而v不能为0并且v是列向量 。 根据 Avλv 推 (A-λE)v0 λ 是标量转化为矩阵才能进行运算则需要乘以单位矩阵
v不可以为零那么 A-λE 0
例如
解求特征值 λ A-λE 0 (-1- λ)(3-λ)(2-λ) - (-4) * (2-λ) (2-λ)((-1- λ)(3-λ)4) (2-λ)((-1- λ)(3-λ) 4) (2-λ)(λ*λ -3λ λ 4) (2-λ)(λ-1)(λ-1) 0
那么 λ 的值为 21 求特征向量 (A-λE)v0 则需要 (A-λE) 的矩阵来得到特征向量
在 λ 2 的情况下 初等变化 第一行和第三行交换第二行减去第三行第二行减去第一行第二行与第三行交换第二行 乘 4加上第一行 第二行除以4最终结果为
令为A1
根据 (A-λE)v0 得到 A1 * v 0 则 等价于 *
1*a 0*b 0*c 0 ; 0*a 1*b 0*c 0 ; 0*a 0*b 0*c 0
综合可得ab0c 可以是任何数值。即 v
在 λ 1 的情况下 ,初等变化 后为 与上面类型一致则结果还是ab0c 可以是任何数值。
四、向量的模 向量 v 的模记作 ∥v∥计算公式为
五向量内积 对于两个 n 维向量 a(a1,a2,…,an) 和 b(b1,b2,…,bn)它们的内积点积表示为 a⋅b计算公式为 a * b⋯ 在几何上内积也可以通过向量的模和它们之间的夹角来表示。具体来说如果 θ 是向量 a 和 b 之间的夹角那么内积可以表示为 a * b||a|| * ||b|| *cos(θ) 例如有两个三维向量 a 和 b a(2,3,1)b(4,−1,2) 其内积为 a⋅b(2⋅4)(3⋅−1)(1⋅2)8-327 a⋅b∥a∥∥b∥cos(θ) cos(θ) a⋅b / ∥a∥∥b∥ 7/ / 0.408 六、根据模扩展 - 余弦相似度 cos ab / (|a|*|b|) 使用余弦相似度计算两段文本的相似度
将语句拆分为多个字或词之后将两个语句的所有内容放入集合按照词在集合中的次数进行整理得到向量集合中的词位置就是向量的下标两个向量求余弦值。
例如
句子A这只皮靴号码大了。那只号码合适。
句子B这只皮靴号码不小那只更合适。
拆分句子得到
listA[这, 只, 皮靴, 号码, 大, 了, 那, 只, 号码, 合适]
listB[这, 只, 皮靴, 号码, 不, 小, 那, 只, 更, 合适]
放入集合
set[号码, 合适, 那, 更, 了, 大, 皮靴, 这, 只, 不, 小]
进行排序加次数计算
freqListA[2, 1, 1, 0, 1, 1, 1, 1, 2, 0, 0]
freqListB[1, 1, 1, 1, 0, 0, 1, 1, 2, 1, 1]
套用余弦函数计算相似度
cos 10 /12.94 0.77 import math
# 输入两个语句
listA1 input(请输入第一个句子)
listB1 input(请输入第二个句子)
print(f你输入的第一个句子为{listA1} )
print(f你输入的第一个句子为{listB1} )#拆分后排序
listA list(listA1)
listB list(listB1)
listA.sort()
listB.sort()#将拆分内容放入集合去掉重复后转成列表获取下标
C set(listAlistB)
listClist(C)
listC.sort()#创建两个空列表
freqlsitA[]
freqlsitB[]#根据两个列表的数据并集 求向量列表的长度
for i in range(len(listC)):freqlsitA.append(str(f{i}))freqlsitB.append(str(f{i}))#根据数据并集内容判断是否存在若存在则计数放在与集合同位置的地方若不存在则将同位置修改为0
for i,j in enumerate(listC):if j in listA:freqlsitA[listC.index(j)] listA.count(j)else:freqlsitA[listC.index(j)] 0if j in listB:freqlsitB[listC.index(j)] listB.count(j)else:freqlsitB[listC.index(j)] 0#创建三个变量用来存放数学计算所需要的数据内容
a0
b0
c0
for i in range(len(freqlsitA)):a freqlsitA[i]*freqlsitB[i]b freqlsitA[i] * freqlsitA[i]c freqlsitB[i] * freqlsitB[i]#余弦值等于相乘累计 处于平方累计之后平方根的相乘
COS a /(math.sqrt(b) *math.sqrt(c))if COS 0.65:print(这两个句子相似)
else:print(这两个句子不相似)