PCA之后的sklearn余弦相似度内存错误

问题描述 投票:0回答:1

我有一个包含9000行(文档)和1810列(术语)的文档术语矩阵。我已经将PCA应用于降维,即输出了9000x200矩阵。

我的目的是基于这些数据,而下一步对我来说是应用一些距离度量,例如sklearn的cosine_similarity

如果我直接在DT矩阵上运行cosine_similarity(显然是稀疏的),则一切正常。但是,如果我尝试在PCA产生的矩阵上运行cosine_similarity,我们将其称为reducted_dtm,那么在PyCharm中会出现内存错误:

RecursionError: maximum recursion depth exceeded while calling a Python object
Process finished with exit code -1073741571 (0xC00000FD)

这里是我的代码(dtm是我的文档-术语矩阵,我的代码实际上是以转置的术语-文档矩阵tdm作为输入:]

dtm = tdm.T
# scale dtm in range [0:1] to better variance maximization
scl = MinMaxScaler(feature_range=[0, 1])
data_rescaled = scl.fit_transform(dtm)

# Fitting the PCA algorithm with our Data
pca = PCA(n_components=n).fit(data_rescaled)
data_reducted = pca.transform(data_rescaled)

# for continuity with my pipeline I need to
# return the TDM, so i transpose again
dtm_reducted = pd.DataFrame(data_reducted)

# Here apply cosine similarity
cs = cosine_similarity(dtm_reducted)
cs_pd = pd.DataFrame(cs)
python scikit-learn sklearn-pandas cosine-similarity
1个回答
0
投票

OMG,我已经意识到,实际上在我的代码中,我是从我称为'cosine_similarity'的函数调用cosine_similarity(sklearn)。这导致了无限递归循环。

© www.soinside.com 2019 - 2024. All rights reserved.