Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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中使用亲和传播对word2vec向量进行集群(sklearn)_Python_Scikit Learn_Cluster Analysis_Text Mining_Word2vec - Fatal编程技术网

在python中使用亲和传播对word2vec向量进行集群(sklearn)

在python中使用亲和传播对word2vec向量进行集群(sklearn),python,scikit-learn,cluster-analysis,text-mining,word2vec,Python,Scikit Learn,Cluster Analysis,Text Mining,Word2vec,我想使用关联传播对我的word2vec集群进行集群,并获取集群中心词 我目前的代码如下 model = word2vec.Word2Vec.load("word2vec") word_vectors = model.wv.syn0 affprop = AffinityPropagation(affinity="precomputed", damping=0.5) af= affprop.fit(word_vectors) 但是,这会引发以下错误: ValueError:S必须是方形数组(sha

我想使用关联传播对我的word2vec集群进行集群,并获取集群中心词

我目前的代码如下

model = word2vec.Word2Vec.load("word2vec")
word_vectors = model.wv.syn0
affprop = AffinityPropagation(affinity="precomputed", damping=0.5)
af= affprop.fit(word_vectors)
但是,这会引发以下错误:
ValueError:S必须是方形数组(shape=(77300))

据我所知,300表示word2vec隐藏层维度,77表示我的词汇量

我只是想知道如何使用非方形数组的word2vec向量的亲和传播


请帮帮我

这是因为您说过样本之间的亲和力已经计算过了,它始终是一个平方矩阵。因此,您可以使用已实现的欧几里德距离,或者如果您想使用不同的度量,则必须对其进行预计算,请参见下面的示例代码:

# some dummy data
word_vectors = np.random.random((77, 300))

# using eucliden distance
affprop = AffinityPropagation(affinity='euclidean', damping=0.5)
af = affprop.fit(word_vectors)

# using cosine
from sklearn.metrics.pairwise import cosine_distances
word_cosine = cosine_distances(word_vectors)
affprop = AffinityPropagation(affinity='precomputed', damping=0.5)
af = affprop.fit(word_cosine)

非常感谢你的回答:)我们可以像你提到的那样直接计算余弦距离吗?还是我们需要使用这样的方法:
index=gensim.comparisons.matrix相似性(gensim.matutils.Dense2Corpus(word_vectors))对于索引中的sims:similarity_matrix.append(sims)similarity_array=np.array(similarity_matrix)
您可以使用任何方法计算距离。为了简单起见,我倾向于使用scikit。您能告诉我我们输入到亲和传播的矩阵是否需要是距离矩阵吗?我们可以输入相似矩阵吗?:)它应该是一个相似矩阵。很抱歉,我上次的评论有歧义,基本上scikit使用负欧几里德距离,因此较大的值表示值更接近。