【发布时间】:2014-12-06 22:38:01
【问题描述】:
我正在尝试解决聚类问题。我有一个由 CountVectorizer() 函数生成的 tf-idf 加权向量列表。这是数据类型:
<1000x5369 sparse matrix of type '<type 'numpy.float64'>'
with 42110 stored elements in Compressed Sparse Row format>
我有一个以下维度的“质心”向量:
<1x5369 sparse matrix of type '<type 'numpy.float64'>'
with 57 stored elements in Compressed Sparse Row format>
当我尝试通过以下代码行测量 tfidf_vec_list 中质心和其他向量的余弦相似度时:
for centroid in centroids:
sim_scores=[cosine_similarity(vector,centroid) for vector in tfidf_vec_list]
其中相似度函数为:
def cosine_similarity(vector1,vector2):
score=1-scipy.spatial.distance.cosine(vector1,vector2)
return score
我得到错误:
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
sim_scores=[cosine_similarity(vector,centroid) for vector in tfidf_vec_list]
File "/home/ashwin/Desktop/Python-2.7.9/programs/test_2.py", line 28, in cosine_similarity
score=1-scipy.spatial.distance.cosine(vector1,vector2)
File "/usr/lib/python2.7/dist-packages/scipy/spatial/distance.py", line 287, in cosine
dist = 1.0 - np.dot(u, v) / (norm(u) * norm(v))
File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 302, in __mul__
raise ValueError(**'dimension mismatch'**)
我已经尝试了所有方法,包括将矩阵转换为数组并将每个向量转换为列表。但是我得到了同样的错误!!
【问题讨论】:
-
看起来向量和质心有不同的维度,所以检查这两个向量的长度
-
@Michael Plakhov Nope-它们具有相同的尺寸:1*5369,这是我无法理解的
-
这个向量中有什么样的元素?我的意思是典型尺寸?
-
@Michael Plakhov..“Todense”工作...!
标签: python numpy vector tf-idf