python - 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)
解决方案
我的天啊,我意识到实际上在我的代码中,我从一个我称之为“cosine_similarity”的函数中调用了 cosine_similarity(sklearn)。这导致了无限递归循环。