[[1, 2580], [1, 1006], [-1, 1001]] [[1, 2819], [1, 820]] Error: 无法启动线程 shapes (2,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)
时间: 2023-08-18 21:34:36 浏览: 55
IEC-61851-1-2017中文版
5星 · 资源好评率100%
我猜测您在使用 `cosine_similarity` 函数时出现了 `shapes (2,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)` 的错误提示,这是因为该函数要求输入的两个向量的维度必须匹配。在您的情况下,`vec1` 和 `vec2` 的形状分别为 `(2, 2)` 和 `(2, 2)`,而 `target_vec1` 和 `target_vec2` 的形状分别为 `(1, 2)` 和 `(1, 2)`,因此在计算余弦相似度时会出错。
为了解决这个问题,您需要将 `target_vec1` 和 `target_vec2` 的形状从 `(1, 2)` 改为 `(2, )`,即将其转换为一维数组。这可以通过 `numpy` 的 `ravel` 函数实现。修改后的代码如下所示:
```python
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
path1 = [[1, 2580], [1, 1006], [-1, 1001]]
path2 = [[1, 2819], [1, 820]]
vec1 = np.array([path1[0], path1[1]])
vec2 = np.array([path1[1], path1[2]])
target_vec1 = np.array(path2[0]).ravel()
target_vec2 = np.array(path2[1]).ravel()
similarity1 = cosine_similarity(vec1, target_vec1.reshape(1, -1))
similarity2 = cosine_similarity(vec2, target_vec2.reshape(1, -1))
print("第一和第二向量与目标的余弦相似度为:", similarity1)
print("第二和第三向量与目标的余弦相似度为:", similarity2)
```
这段代码中,我们使用 `numpy` 的 `ravel` 函数将 `target_vec1` 和 `target_vec2` 转换为一维数组,并将其分别存储到 `target_vec1` 和 `target_vec2` 变量中。然后在计算余弦相似度时,我们需要将 `target_vec1` 和 `target_vec2` 各自转换为形状为 `(1, 2)` 的二维数组,这可以通过 `reshape` 函数实现。最后输出这两个相似度即可。
阅读全文