在 python 中使用亲和传播聚类 word2vec 向量(sklearn)
Cluster word2vec vectors using Affinity Propagation in python (sklearn)
我想使用亲和力传播对我的 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 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)
我想使用亲和力传播对我的 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 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)