Ошибка памяти sklearn cosine_s Similarity после PCA - PullRequest
0 голосов
/ 30 марта 2020

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

1 Ответ

0 голосов
/ 30 марта 2020

OMG, я понял, что на самом деле в моем коде я вызывал cosine_sdentifity (sklearn) из функции, которую я назвал 'cosine_simility'. Это вызвало бесконечную рекурсивную l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...