首页 > 解决方案 > 将数据与比赛得分的理想值进行比较

问题描述

我正在使用基于理想值数组和数据收集数组的余弦相似度的计算分数。(下面的代码)但是,当我运行以下代码时,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)

有谁知道如何根据值的差异计算分数?(不一定必须使用余弦相似度)

标签: pythonnumpycosine-similarity

解决方案


您的公式similarity计算\cos \theta向量(300,25)和之间的(150,23),或者换句话说,测量它们之间夹角的余弦值。如果您查看下图,两个向量之间的角度并不大。实际上,度数,它与具有最高值的度数{\cos} ^{-1}(.994) = 6.27没有太大区别。 0cos1向量 (300,25) 和 (150,23)

您在此处使用的指标应取决于您对相似性的定义。您可以使用的一个简单度量是两点之间的欧几里得距离。

这两点之间的欧式距离d = 150.01为。例如 between (300, 25)and (280,23)isd = 20.09让您了解它们在 2D 平面中的分离程度。


推荐阅读