了解集群中的 np.zeros

Posted

技术标签:

【中文标题】了解集群中的 np.zeros【英文标题】:Understanding np.zeros in clustering 【发布时间】:2019-01-01 06:12:19 【问题描述】:

我正在学习聚类,我在几个教程中看到了一些我在相似性度量部分不太了解的内容:

tfidf_vector = TfidfVectorizer()
tfidf_matrix = tfidf_vector.fit_transform(file)

#and/or

count_vector = CountVectorizer()
count_matrix = count_vector.fit_transform(file)

#AND HERE
file_size = len(file)
x = np.zeros((file_size, file_size))
#and here the similarity measures like cosine_similarity, jaccard...

for elm in range(file_size):
    x[elm] = cosine_similarity(tfidf_matrix[i:i+1], tfidf_matrix)

y = np.subtract(np.ones((file_size, file_size),dtype = np.float), x)

new_file = np.asarray(y)
w = new_file.reshape((1,file_size,file_size))

为什么我们需要 np.zeros? tfidf_matrix/count_matrix 是否不足以进行相似性度量?

【问题讨论】:

我们应该如何知道他们需要np.zeros 做什么?您取出了实际使用零填充数组的所有内容。 你说得对,我编辑了我的问题。 【参考方案1】:

这段代码做同样的事情(我将i 更改为elm,因为它看起来像是一个错字)

x = []
for elm in range(file_size):
    x.append(cosine_similarity(tfidf_matrix[elm:elm+1], tfidf_matrix)
x = np.asarray(x)

您也可以将 np.zeros 替换为 np.empty。预先创建数组然后填充数组的每个元素比附加到列表然后将其转换为 numpy 数组稍微更有效。许多其他编程语言都需要像 numpy 一样预先分配数组,这就是为什么很多人选择以这种方式填充数组的原因。

然而,既然这是 python,你应该做任何你认为对自己和他人来说最容易阅读的方式。

【讨论】:

以上是关于了解集群中的 np.zeros的主要内容,如果未能解决你的问题,请参考以下文章

卡尔曼滤波器行为

了解 Precision、Recall 和 F-mesure

每天讲解一点PyTorch np.zeros

每天讲解一点PyTorch np.zeros

OpenCV 函数学习07-图像的创建(np.zeros)

第六篇:python中numpy.zeros(np.zeros)的使用方法