scikit-learn:使用DBSCAN集群文本文档

基督教

我正在尝试使用scikit-learn对文本文档进行聚类。总的来说,我找到了解决之道,但是我在特定问题上有问题。我发现的大多数示例都说明了使用scikit-learn和k-means作为聚类算法的聚类。原则上,将这些带有k均值的示例用于我的设置。但是,k-means不适合,因为我不知道簇的数量。从到目前为止的内容看-如果需要,请在此处更正-DBSCAN或MeanShift在我看来更合适。scikit-learn网站提供了每种聚类算法的示例。现在的问题是,无论是使用DBSCAN还是MeanShift,我都会遇到我无法理解的错误,更不用说解决了。

我的最小代码如下:

docs = []
for item in [database]:
    docs.append(item)

vectorizer = TfidfVectorizer(min_df=1)
X = vectorizer.fit_transform(docs)

X = X.todense() # <-- This line was needed to resolve the isse

db = DBSCAN(eps=0.3, min_samples=10).fit(X)
...

(我的文档已经处理过,例如,停用词已被删除,Porter Stemmer已应用。)

运行此代码时,在初始化DBSCAN并调用时会出现以下错误fit()

...
File "/usr/local/lib/python2.7/dist-packages/sklearn/cluster/dbscan_.py", line 248, in fit
clust = dbscan(X, **self.get_params())
File "/usr/local/lib/python2.7/dist-packages/sklearn/cluster/dbscan_.py", line 86, in dbscan
n = X.shape[0]
IndexError: tuple index out of range

单击dbscan_.py引发错误的行,我注意到以下行

...
X = np.asarray(X)
n = X.shape[0]
...

当我使用这些代码直接在我的代码中进行测试时,会遇到相同的错误。我真的不知道np.asarray(X)在这里做什么,但是在命令之后X.shape = ()因此,X.shape[0]炸弹-之前X.shape[0]正确地指代了文件数量。出于好奇,我X = np.asarray(X)撤离dbscan_.py当我这样做时,某些东西正在大量计算。但是几秒钟后,我又得到了一个错误:

...
File "/usr/lib/python2.7/dist-packages/scipy/sparse/csr.py", line 214, in extractor
(min_indx,max_indx) = check_bounds(indices,N)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/csr.py", line 198, in check_bounds
max_indx = indices.max()
File "/usr/lib/python2.7/dist-packages/numpy/core/_methods.py", line 17, in _amax
out=out, keepdims=keepdims)
ValueError: zero-size array to reduction operation maximum which has no identity

简而言之,我不知道如何使DBSCAN正常工作,或者我通常可能错过的东西。

有QUIT--Anony-Mousse

sklearn中实现似乎假定您正在处理一个有限的向量空间,并且想要找到数据集维数文本数据通常表示为稀疏向量,但现在具有相同的维数。

您的输入数据可能不是数据矩阵,但是sklearn实现需要它们是一个。

您需要找到其他实现。也许尝试ELKI中的实现,这是非常快的,不应有此限制。

您需要花一些时间首先了解相似性。对于DBSCAN,您必须选择epsilon对数据有意义的方式。没有经验法则。这是特定于域的。因此,您首先需要确定哪个相似性阈值意味着两个文档相似。

Mean Shift实际上可能需要您的数据为固定维数的向量空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中使用scikit-learn kmeans对文本文档进行聚类

来自分类Dev

Scikit-Learn:使用DBSCAN预测新点

来自分类Dev

在Scikit中加载自定义数据集(类似于20个新闻组集)以对文本文档进行分类

来自分类Dev

了解Scikit Learn中的Birch集群设置

来自分类Dev

了解Scikit Learn中的Birch集群设置

来自分类Dev

scikit学习PDF文档

来自分类Dev

使用scikit-learn查找LDA的每个主题的文档数

来自分类Dev

在 scikit-learn k-means 集群中预测文档时出现 ValueError

来自分类Dev

scikit-learn包中DBSCAN函数的输入格式

来自分类Dev

如何使用 scikit-learn 评估基于文本的模型?

来自分类Dev

.arff文件与scikit-learn?

来自分类Dev

Scikit Learn中的交叉验证

来自分类Dev

Python scikit-learn-TypeError

来自分类Dev

scikit-learn StratifiedKFold实现

来自分类Dev

Scikit Learn中的距离指标

来自分类Dev

输出 Scikit Learn OLS 报告

来自分类Dev

scikit-learn:最近的邻居

来自分类Dev

Scikit-learn 导入约定

来自分类Dev

使用scikit-learn训练多维数据

来自分类Dev

使用scikit-learn让熊猫玩得开心

来自分类Dev

使用Scikit Learn进行Unigram分析

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

如何使用 scikit learn 预测目标标签

来自分类Dev

使用 Anaconda 更新 scikit-learn 失败

来自分类Dev

从scikit-learn / numpy中的集群中心计算标签?

来自分类Dev

使用 SciKit Learn 将 K-Means 输出到 CSV - 给出集群名称

来自分类Dev

使用变量从python中的文本文档中读取

来自分类Dev

使用文本文档中的枚举快速搜索