首页 > 解决方案 > PCA后的sklearn cosine_similarity内存错误

问题描述

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

我的目的是对这些数据进行聚类,对我来说下一步是应用一些距离指标,比如cosine_similarity来自 sklearn。

如果我cosine_similarity直接在我的 DT 矩阵上运行(这显然是稀疏的),那么一切正常。但是,如果我尝试cosine_similarity在由 PCA 生成的矩阵上运行,我们称之为它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)

标签: pythonscikit-learnsklearn-pandascosine-similarity

解决方案


我的天啊,我意识到实际上在我的代码中,我从一个我称之为“cosine_similarity”的函数中调用了 cosine_similarity(sklearn)。这导致了无限递归循环。


推荐阅读