4 python cluster-analysis text-mining scikit-learn word2vec
我想使用亲和力传播对我的 word2vec 集群进行聚类并获取集群中心单词。
我当前的代码如下。
model = word2vec.Word2Vec.load("word2vec")
word_vectors = model.wv.syn0
affprop = AffinityPropagation(affinity="precomputed", damping=0.5)
af= affprop.fit(word_vectors)
Run Code Online (Sandbox Code Playgroud)
但是,这会引发以下错误:
ValueError: S must be a square array (shape=(77, 300))
据我了解,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)
Run Code Online (Sandbox Code Playgroud)