说我有一个矩阵stock = {}
for warehouse in warehouses:
stock[warehouse] = []
for row in results:
stock[warehouse].append(row[0])
fruit_list = [fruit for warehouse in stock.values() for fruit in warehouse]
duplicates = {fruit for fruit in set(fruit_list) if fruit_list.count(fruit) > 1}
for fruit in duplicates:
print(fruit + " is a duplicate")
final_result = {warehouse:[fruit for fruit in fruits if fruit not in duplicates] for warehouse,fruits in stock.items()}
和mat
数组。
我的问题是双重的:
如何计算第一行与其他所有行的余弦相似度?我尝试使用100 x 200
的{{1}}函数,但是传入sklearn
矩阵会给我一个cosine_similarity
数组(而不是100 x 200
数组)。
如果我想计算所有行相对于其他行的余弦相似度,比如说计算所有行的所有100 C 2 = 4950个不同组合,那么不使用类似100 x 100
的东西,但实际上通过100 x 1
存储每一行的范数,然后通过cos_sim = dot(a, b)/(norm(a)*norm(b))
计算每个相似度?
答案 0 :(得分:1)
1-尝试:
cosines = (numpy.inner(mat[0], mat) / (numpy.linalg.norm(mat[0]) * numpy.linalg.norm(mat, axis=1)))
2-您可以检查先前的代码以了解类似情况
numpy.linalg.norm(mat, axis=1)
计算所有向量的范数,然后将每一步乘以当前向量。 也
numpy.inner(mat, mat)
将为您提供矩阵内积的对称矩阵。