2017-01-12 3 views
0

enter image description here J'utilise Python, numpy et scipy pour effectuer une classification hiérarchique sur la sortie d'un modèle de sujet que j'ai créé pour l'analyse de texte. J'ai appliqué mon testcorpus à la ldamodel de sorte qu'il est devenu une représentation de sac-de-mots. Ensuite, je l'ai transformé en une matrice. Maintenant, je veux utiliser scipy pour faire une matrice de liaison de ma matrice. Mais cela donne l'erreur de valeur: définir un élément de tableau avec une séquence. Je suppose que c'est parce que seuls les tableaux de forme égale peuvent être groupés. Et ma matrice a une différence de longueur entre les listes dans la liste des listes. Je ne viens pas maintenant comment résoudre ce problème. Voici une petite partie du code. Je ne sais pas si c'est utile. J'espère vraiment que quelqu'un pourra m'aider.Erreur de valeur de matrice de liaison: définition d'un élément de tableau avec une séquence

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

Lorsque vous posez des questions comme celle-ci, vous devez identifier la ligne de problème et nous dire quelque chose au sujet des entrées, des tableaux ou autres, à cette ligne. Regardez ma réponse récente à une autre question avec la même erreur, http://stackoverflow.com/questions/41621340/what-is-the-solution-python-gives-me-valueerror-setting-an-array-element-with . Une question cruciale dans votre cas est le problème dans la première ou la dernière ligne? – hpaulj

+0

Salut, merci pour votre commentaire. Je suis assez nouveau dans la programmation (étudiant linguistique qui a eu une introduction à Python). Cela peut sembler une question stupide, mais est-il possible de m'aider avec comment je peux identifier la ligne de problème? – Bambi

+0

@hpaulj, Oh et l'erreur se produit à la dernière ligne: Z = linkage (X, 'cosinus'). Je peux imprimer la matrice X sans problème, mais c'est Z qui donne l'erreur. – Bambi

Répondre

1

Comme vous avez mentionné obtenir la matrice X du modèle LDA, il pourrait être une matrice clairsemée de quelque sorte. Vous pouvez convertir en matrice dense par X.todense() et appliquer la méthode linkage.Si la matrice est trop grande pour contenir dans la mémoire, vous pouvez faire Z=linkage(X.todense(),distance='cosine').

Dans certains cas, modifier le dtype de la matrice aide. P.S: Moi aussi, j'ai fait face au même problème et la conversion de ma matrice de caractéristiques creuses (matrice scipy.sparse.csr) en dense a résolu le problème.