2017-01-12 6 views
0

enter image description here Я использую Python, numpy и scipy для выполнения иерархической кластеризации на выходе модели темы, созданной для текстового анализа.Ошибка значения матрицы привязки: установка элемента массива с последовательностью

Я применил свой testcorpus к ldamodel, чтобы он стал представлением в виде мешков. Затем я превратил его в матрицу. Теперь я хочу использовать scipy для создания матрицы связей моей матрицы. Но он дает значение Ошибка: установка элемента массива с последовательностью. Я предполагаю, что это связано с тем, что массивы одинаковой формы могут быть сгруппированы. И моя матрица имеет разницу в длинах между списками внутри списка списков. Я просто не понимаю, как это решить. Вот небольшая часть кода. Я не знаю, полезно ли это. Я просто надеюсь, что кто-то может мне помочь.

import numpy as np 
    X = np.array(corpus) 
    from matplotlib import pyplot as plt 
    from scipy.cluster.hierarchy import dendrogram, linkage 
    Z = linkage(X, 'cosine') 
+0

Когда вы задаете такие вопросы, вам нужно определить проблемную строку и рассказать нам что-то о входах, массивах или по другой, к этой строке. Посмотрите на мой недавний ответ на другой вопрос с той же ошибкой, http://stackoverflow.com/questions/41621340/what-is-the-solution-python-gives-me-valueerror-setting-an-array-element-with , Важным вопросом в вашем случае является проблема в первой или последней строке? – hpaulj

+0

HI, спасибо за ваш комментарий. Я довольно новичок в программировании (лингвистический студент, у которого было введение в Python). Это может показаться глупым вопросом, но возможно ли мне помочь мне в том, как я могу определить проблему? – Bambi

+0

@hpaulj, Oh и ошибка возникает на последней строке: Z = привязка (X, 'cosine'). Я могу распечатать матрицу X без проблем, но это Z, которая дает ошибку. – Bambi

ответ

1

Как бы вы упомянули получение матрицы X из LDA модели, это может быть разреженной матрицей некоторого вида. Вы можете преобразовать в плотную матрицу на X.todense() и применить метод linkage.Если матрица слишком велика для хранения в памяти, вы можете сделать Z=linkage(X.todense(),distance='cosine').

В некоторых случаях смена dtype матрицы помогает.

P.S: Я тоже столкнулся с той же проблемой и преобразовал свою разреженную матрицу функций (scipy.sparse.csr matrix) в плотную, решив проблему.