python - 将数据与比赛得分的理想值进行比较
问题描述
我正在使用基于理想值数组和数据收集数组的余弦相似度的计算分数。(下面的代码)但是,当我运行以下代码时,99.4
我认为结果很奇怪,因为 150 与理想值 300 非常不同。
import numpy as np
def cos_sim(speechrate, pitch): #speechrate and pitch are the data collected
v1 = np.array([300, 25]) #array of ideal values
v2 = np.array([speechrate, pitch]) #array of data
similarity = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
print("{:.1f}".format(similarity*100))
cos_sim(150, 23)
有谁知道如何根据值的差异计算分数?(不一定必须使用余弦相似度)
解决方案
您的公式similarity
计算向量(300,25)
和之间的(150,23)
,或者换句话说,测量它们之间夹角的余弦值。如果您查看下图,两个向量之间的角度并不大。实际上,度数,它与具有最高值的度数没有太大区别。
0
cos
1
您在此处使用的指标应取决于您对相似性的定义。您可以使用的一个简单度量是两点之间的欧几里得距离。
这两点之间的欧式距离d = 150.01
为。例如 between (300, 25)
and (280,23)
isd = 20.09
让您了解它们在 2D 平面中的分离程度。
推荐阅读
- python - 如何在熊猫中重新排列其他数据框中的列顺序
- ruby-on-rails - Rails:强制 SSL 会导致 Google Analytics 中的流量源丢失
- reactjs - Index.jsx 不会在状态更改时重新呈现
- c++ - 是否可以通过 getasynckeystate 使用存储在双字中的十六进制?
- multithreading - 互斥锁被 LOCKED 但预期的线程锁定
- docker - 如何在 Docker 容器上重新启动 Oracle WebLogic
- php - 如何在不使用外部 PHP 库的情况下在 MySQL 中进行弹性搜索?
- css - DIV 如何在 2 个不同的位置分别显示背景和文本?
- ionic-v1 - Ionic V1 Cordova 未定义
- python - python使用shell命令并发送输出