Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:余弦相似m*n矩阵_Python_Vector_Numpy_Cosine Similarity - Fatal编程技术网

Python:余弦相似m*n矩阵

Python:余弦相似m*n矩阵,python,vector,numpy,cosine-similarity,Python,Vector,Numpy,Cosine Similarity,我有两个M X N矩阵,是我从图像中提取数据后构造的。这两个向量都有很长的第一行,第三行之后它们都成为第一列。 例如,原始向量如下所示 1,23,2,5,6,2,2,6,2, 12,4,5,5, 1,2,4, 1, 2, 2 : 这两个向量有一个相似的模式,其中前三行有一个较长的行,然后随着进程逐渐变细。Do Do cosine similarity我正在考虑使用填充技术来添加零,并使这两个向量为nxn。我查看了关于cosine similarity的Python选项,但有些示例使用了一个名为

我有两个M X N矩阵,是我从图像中提取数据后构造的。这两个向量都有很长的第一行,第三行之后它们都成为第一列。 例如,原始向量如下所示

1,23,2,5,6,2,2,6,2,
12,4,5,5,
1,2,4,
1,
2,
2
:

这两个向量有一个相似的模式,其中前三行有一个较长的行,然后随着进程逐渐变细。Do Do cosine similarity我正在考虑使用填充技术来添加零,并使这两个向量为nxn。我查看了关于cosine similarity的Python选项,但有些示例使用了一个名为numpy的包。我想不出numpy到底是如何完成这种填充并实现余弦相似性的。任何指导都将不胜感激

为什么不能在两个锯齿状列表上运行嵌套循环(大概是这样),使用欧几里得/向量点积求和每一行,并使用结果作为相似性度量。这假设锯齿形尺寸相同


虽然我不太确定如何从位图图像中获得锯齿状数组(我当然会假设它是MxN形式的适当密集矩阵),或者上面的锯齿状数组是如何表示MxN矩阵/图像数据的,因此,用零填充数据有何意义?如果这是一种稀疏矩阵表示法,人们会期望用值注释行/列信息。

为什么不能在两个锯齿列表上运行一个嵌套循环(假设),使用欧几里得/向量点积求和每一行,并将结果用作相似性度量。这假设锯齿形尺寸相同


虽然我不太确定如何从位图图像中获得锯齿状数组(我当然会假设它是MxN形式的适当密集矩阵),或者上面的锯齿状数组是如何表示MxN矩阵/图像数据的,因此,用零填充数据有何意义?如果这是一种稀疏矩阵表示法,则需要使用值注释行/列信息。

如果两个数组的维数相同,我将使用NumPy将它们展平。NumPy(和SciPy)是一个强大的科学计算工具,使矩阵操作更容易

下面是我如何使用NumPy和SciPy的示例:

import numpy as np
from scipy.spatial import distance

A = np.array([[1,23,2,5,6,2,2,6,2],[12,4,5,5],[1,2,4],[1],[2],[2]], dtype=object )
B = np.array([[1,23,2,5,6,2,2,6,2],[12,4,5,5],[1,2,4],[1],[2],[2]], dtype=object )

Aflat = np.hstack(A)
Bflat = np.hstack(B)

dist = distance.cosine(Aflat, Bflat)
这里的结果是
dist=1.10e-16
(即0)


请注意,我在这里使用了
dtype=object
,因为这是我知道的唯一能够在NumPy中将不同形状存储到数组中的方法。这就是为什么后来我使用
hstack()
来展平数组(而不是使用更常见的
flatte()
函数)。

如果两个数组具有相同的维度,我将使用NumPy展平它们。NumPy(和SciPy)是一个强大的科学计算工具,使矩阵操作更容易

下面是我如何使用NumPy和SciPy的示例:

import numpy as np
from scipy.spatial import distance

A = np.array([[1,23,2,5,6,2,2,6,2],[12,4,5,5],[1,2,4],[1],[2],[2]], dtype=object )
B = np.array([[1,23,2,5,6,2,2,6,2],[12,4,5,5],[1,2,4],[1],[2],[2]], dtype=object )

Aflat = np.hstack(A)
Bflat = np.hstack(B)

dist = distance.cosine(Aflat, Bflat)
这里的结果是
dist=1.10e-16
(即0)


请注意,我在这里使用了
dtype=object
,因为这是我知道的唯一能够在NumPy中将不同形状存储到数组中的方法。这就是为什么后来我使用
hstack()
来展平数组(而不是使用更常见的
flatte()
函数)。

我将它们制作成一个scipy稀疏矩阵(),然后从scikit学习模块运行余弦相似性

from scipy import sparse
sparse_matrix= scipy.sparse.csr_matrix(your_np_array)

from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine

distance_matrix= pairwise_distances(sparse_matrix, metric="cosine")

我会将它们生成一个scipy稀疏矩阵(),然后从scikit学习模块运行余弦相似性

from scipy import sparse
sparse_matrix= scipy.sparse.csr_matrix(your_np_array)

from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine

distance_matrix= pairwise_distances(sparse_matrix, metric="cosine")

这是如何获得选票的。这是scipy提供的错误:
TypeError:scipy距离度量不支持稀疏矩阵。
我是否遗漏了什么?它对稀疏矩阵不起作用。我也犯了同样的错误。你能解决这个问题吗?使用sklearn.metrics.pairwise import cosine\u similarity中的
来代替工作如何获得选票。这是scipy提供的错误:
TypeError:scipy距离度量不支持稀疏矩阵。
我是否遗漏了什么?它对稀疏矩阵不起作用。我也犯了同样的错误。你能解决这个问题吗?改用sklearn.metrics.pairwise import cosine\u similarity中的