Python 基于给定值误差的层次聚类

Python 基于给定值误差的层次聚类,python,pandas,text,hierarchical-clustering,Python,Pandas,Text,Hierarchical Clustering,我正在使用python对文本文档进行聚类,并将其作为数据框架。这就是我正在做的: from __future__ import division from sklearn.feature_extraction.text import TfidfVectorizer from scipy.cluster.hierarchy import dendrogram, linkage import numpy as np import pandas as pd data_lst = data_rd['t

我正在使用python对文本文档进行聚类,并将其作为数据框架。这就是我正在做的:

from __future__ import division
from sklearn.feature_extraction.text import TfidfVectorizer
from scipy.cluster.hierarchy import dendrogram, linkage
import numpy as np
import pandas as pd

data_lst = data_rd['text'].values.tolist()
tfidf_vectorizer = TfidfVectorizer( max_features=200000, stop_words='english',use_idf=True, tokenizer=lambda x: x.split(' '), ngram_range=(1,3))

tfidf_matrix = tfidf_vectorizer.fit_transform(data_lst) 
print(tfidf_matrix.shape)
from sklearn.metrics.pairwise import cosine_similarity
dist = 1 - cosine_similarity(tfidf_matrix)

#(10193, 32757)
linkage_dist=ward(dist)
linkage_matrix = linkage(tfidf_matrix.todense(), 'ward')

dendrogram(linkage_matrix,truncate_mode="lastp",p=40,
show_leaf_counts=True,leaf_rotation=60.,leaf_font_size=8.,
show_contracted=True,  )
is_valid_linkage(linkage_matrix)
is_valid_linkage(linkage_dist)
#False
#False
我得到这个错误:

 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib64/python2.6/site-packages/scipy/cluster/hierarchy.py", line 
 2227, in dendrogram
 is_valid_linkage(Z, throw=True, name='Z')
 File "/usr/lib64/python2.6/site-packages/scipy/cluster/hierarchy.py", line 
 1421, in is_valid_linkage
 % name_str)
 ValueError: Linkage 'Z' uses the same cluster more than once.
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib64/python2.6/site packages/scipy/cluster/hierarchy.py”,第行
2227,在树状图中
链接有效吗(Z,throw=True,name='Z')
文件“/usr/lib64/python2.6/site packages/scipy/cluster/hierarchy.py”,第行
1421,在链接中是否有效
%姓名(u str)
ValueError:链接“Z”多次使用同一群集。
除了fastcluster之外,还有其他方法可以解决这个问题吗?为什么会发生这种情况?
列中有一行是空的,没有文本。

请发布您收到的错误的完整跟踪。此外,如果您提供一个可供使用的数据集,则会更容易提供帮助。我无法提供数据集的示例,但我可以提供关于该数据集的信息。它有10193行,其中包含文本块,数据框只有一列,即要聚类的文本@andrew_Reece您不需要提供实际数据,只需提供生成数据集的代码,该数据集包含重现问题所需的最小功能。这样你就更有可能得到答案。事实上,调试您的问题很困难(而且,看起来您从示例代码中删除了
Z
,这使得错误文本令人困惑)。当我通过fastcluster方法时,同样的数据也可以工作。但它并没有给出直观的树状图。这个问题特别有趣,因为它不能用小数据集或其他类型的数据集复制,同时我知道人们也面临同样的问题。这就是一个例子。此外,错误中的
Z
不是一个变量,但意味着它谈论的是链接矩阵,无论您如何命名链接矩阵,错误将始终称之为
Z
。我正在使用Python 2.7-@andrew_reece