python - 我想知道如何在 Python 中计算两种 numpy 数组类型的相似度(数值精度)
问题描述
我是一名刚开始使用 Python 进行深度学习的学生。
首先,我的母语不是英语,所以我可能不擅长使用翻译。
我在深度学习中使用时间序列数据来创建一个模型,该模型可以预测未来某些情况的可能性。我们甚至使用图表完成了可视化。
但不是通过图表将其可视化,我想了解训练数据和测试数据之间的相似性,以及数字的准确性。
这两个数据格式如下:
In [51] : train_r
Out[51] : array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
注:此数据由 0 和 1 组成。
In [52] : test_r
Out[52] : array([[0. , 0. , 0. , ..., 0.03657577, 0.06709877,
0.0569071 ],
[0. , 0. , 0. , ..., 0.04707848, 0.07826 ,
0.0819832 ],
[0. , 0. , 0. , ..., 0.04467918, 0.07355513,
0.08117414],
我使用余弦相似度方法来确定这两类数据的准确性,但是出现了错误。
from numpy import dot
from numpy.linalg import norm
cos_sim = dot(train_r, test_r)/(norm(train_r)*norm(test_r))
ValueError: shapes (100,24) and (100,24) not aligned: 24 (dim 1) != 100 (dim 0)
所以我在网上搜索了另一种方法,但没有帮助,因为它们大多数都是字符串分析。
我能弄清楚如何计算两个列表之间的相似度,并用数字来描述吗?
解决方案
找到了原因。
错误的原因是train_r和test_r中总共存储了24个列表。
我试图一次计算 24 的列表,并且出现了错误。
这是一个简单的解决方案。您可以在 train_r 和 test_r 中指定一个列表以通过余弦相似度方法进行计算。
train_c = train_r[:,12]
test_c = test_r[:,12]
from numpy import dot
from numpy.linalg import norm
a = train_c
b = test_c
cos_sim = (dot(a, b)/(norm(a)*norm(b))) * 100
print(cos_sim)
95.18094658851624
推荐阅读
- c# - 基于 C# 的 Facebook 营销 API - /adsets 的问题
- c# - 不同线程上的异步执行和同步工作流之间的区别
- javascript - 如何使用包含凭据的 fetch 和 POST 请求发送数据?
- tensorflow - 张量流中的摘要和检查点有什么区别?
- r - 数据框的表列表和变量列表
- sql-server - 在基于参数的动态存储过程中使用通配符搜索
- postman - postman环境变量中的json解析异常
- reactjs - 如何使用 useTheme() 钩子使用我的自定义主题?
- python - Pandas:计算一列每2行的平均值并将其放入新列
- c - 父子进程之间的管道问题