2017-01-12 8 views
0

enter image description here Ich verwende Python, numpy und scipy, um ein hierarchisches Clustering für die Ausgabe eines Themenmodells durchzuführen, das ich für die Textanalyse erstellt habe.Kopplungsmatrixwertfehler: Setzen eines Arrayelements mit einer Sequenz

Ich habe mein Testcorpus auf das ldamodel angewendet, so dass es zu einer Bag-of-Word-Darstellung wurde. Dann habe ich es in eine Matrix verwandelt. Jetzt möchte ich scipy verwenden, um eine Verknüpfungsmatrix meiner Matrix zu erstellen. Aber es gibt den Wert Fehler: ein Array-Element mit einer Sequenz festlegen. Ich vermute, dass dies daran liegt, dass nur gleichförmige Arrays gruppiert werden können. Und meine Matrix hat einen Unterschied in den Längen zwischen den Listen in der Liste der Listen. Ich weiß jetzt einfach nicht, wie ich das lösen soll. Hier ist ein kleiner Teil des Codes. Ich weiß nicht, ob es hilfreich ist. Ich hoffe nur wirklich, dass mir jemand helfen kann.

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

Wenn Sie Fragen wie diese stellen, müssen Sie die Problemlinie identifizieren und uns etwas über die Eingaben, Arrays oder andersweitig zu dieser Zeile sagen. Sehen Sie sich meine letzte Antwort auf eine andere Frage mit dem gleichen Fehler an: http://stackoverflow.com/questions/41621340/what-is-the-solution-python-gives-me-valueerror-setting-an-array-element-with . Eine entscheidende Frage in Ihrem Fall ist das Problem in der ersten oder letzten Zeile? – hpaulj

+0

HI, danke für deinen Kommentar. Ich bin ziemlich neu in der Programmierung (Sprachschüler, der eine Einführung in Python hatte). Das mag eine dumme Frage sein, aber ist es möglich, mir zu helfen, wie ich die Problemlinie identifizieren kann? – Bambi

+0

@hpaulj, Oh und der Fehler tritt in der letzten Zeile: Z = Verknüpfung (X, 'Cosinus'). Ich kann Matrix X ohne ein Problem drucken, aber es ist Z, die den Fehler gibt. – Bambi

Antwort

1

Wie Sie Matrix immer erwähnt haben X von LDA-Modell, könnte es eine spärliche Matrix irgendeine Art sein. Sie können in dichte Matrix um X.todense() konvertieren und wenden Sie die linkage Methode.Wenn die Matrix zu groß ist, um im Speicher zu halten, können Sie Z=linkage(X.todense(),distance='cosine') tun.

In einigen Fällen hilft die Änderung der dtype Matrix.

P.S: Auch ich hatte das gleiche Problem und konvertierte meine spärliche Feature-Matrix (scipy.sparse.csr-Matrix), um das Problem zu lösen.

Verwandte Themen