我正在研究文档聚类,首先从tf-idf结果中构建一个距离矩阵。我使用下面的代码来获得tf-idf矩阵:
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words={'english'})
X = vectorizer.fit_transform(models)
这样得到一个矩阵(9069,22210)。现在我想从这个矩阵(9069*9069)构建一个距离矩阵。我使用下面的代码来实现这一点:
import numpy as np
import pandas as pd
from scipy.spatial import distance_matrix
from scipy.spatial import distance
arrX = X.toarray()
rowSize = X.shape[0]
distMatrix = np.zeros(shape=(rowSize, rowSize))
# build distance matrix
for i, x in enumerate(arrX):
for j, y in enumerate(arrX):
distMatrix[i][j] = distance.braycurtis(x, y)
np.savetxt("dist.csv", distMatrix, delimiter=",")
这段代码的问题是,对于这个矩阵大小来说,它的速度非常慢。有没有更快的方法?
1条答案
按热度按时间7dl7o3gd1#
您可以看到,您给予的NumPy多维矩阵的各个元素以两种方式保存在内存中。它们是:行主要列主要每一个都有它的优点和缺点。你甚至可以控制它的存储方式。我希望你觉得这有帮助