Python 链接矩阵值错误:使用序列设置数组元素

Python 链接矩阵值错误:使用序列设置数组元素,python,arrays,numpy,matrix,hierarchical-clustering,Python,Arrays,Numpy,Matrix,Hierarchical Clustering,我正在使用Python、numpy和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') 我将我的测试语料库应用到ldamodel中,使它成为一个单词包

我正在使用Python、numpy和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') 
我将我的测试语料库应用到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') 

正如您提到的从lda模型中获取矩阵X,它可能是某种稀疏矩阵。您可以通过X.todense转换为稠密矩阵并应用链接方法。如果矩阵太大而无法保存在内存中,则可以执行以下操作 Z=linkageX.todense,距离为余弦

  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') 
在某些情况下,更改矩阵的数据类型会有所帮助

  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') 

附言:我也面临同样的问题,将我的稀疏特征矩阵scipy.sparse.csr矩阵转换为稠密矩阵解决了这个问题

当你问这样的问题时,你需要确定问题行,并告诉我们关于该行的输入、数组或其他方面的信息。看看我最近对另一个问题的回答,有同样的错误。在您的案例中,一个关键问题是第一行或最后一行中的问题?嗨,谢谢您的评论。我是编程语言方面的新手,对Python有过介绍。这听起来可能是一个愚蠢的问题,但有没有可能帮助我识别问题行?@hpaulj,哦,错误发生在最后一行:Z=linkageX,'cosine'。我可以毫无问题地打印矩阵X,但产生错误的是Z
  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')