У меня есть матрица документов-терминов с 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)