scikit-学习如何知道集群中的文档?

Ash*_*egi 4 python cluster-analysis k-means scikit-learn

我是python和scikit-learn的新手,所以请耐心等待.

我从k意味着聚类的 k意味着聚类算法的这个源代码.

然后我通过使用load_file函数修改为在我的本地集上运行.

虽然算法终止,但它不会产生任何输出,例如哪些文档聚集在一起.

我发现km对象有"km.label"数组,它列出了每个文档的质心id.

它还有"km.cluster_centers_"的质心向量

但它是什么文件?我必须将它映射到"dataset",这是一个"束"对象.

如果我打印dataset.data [0],我得到的第一个文件的数据,我认为是洗牌.但我只是想知道这个名字.

我对像问题这样的问题感到困惑.在datase.dbel [0],dataset.data [0]的文档是否已集中到centoid?

我的基本问题是找到哪些文件聚集在一起.怎么找到?

ogr*_*sel 12

忘了这个Bunch对象.它只是一个实现细节,用于加载与scikit-learn捆绑在一起的玩具数据集.

在现实生活中,您需要直接调用真实数据:

km = KMeans(n_clusters).fit(my_document_features)
Run Code Online (Sandbox Code Playgroud)

然后从以下位置收集群集分配:

km.labels_
Run Code Online (Sandbox Code Playgroud)

my_document_features是一个2D数据结构:numpy数组或带有shape的scipy.sparse矩阵(n_documents, n_features).

km.labels_是一个有形状的1D numpy数组(n_documents,).因此,第一个元素labels_my_document_features特征矩阵的第一行中描述的文档的聚类的索引.

通常,您将my_document_features使用TfidfVectorizer对象构建:

my_document_features = TfidfVectorizer().fit_transform(my_text_documents)
Run Code Online (Sandbox Code Playgroud)

并且my_text_documents将一个或者一个列表的Python Unicode对象,如果你(从一个CSV文件或任何你想要的数据库或行如),或者直接读取文件:

vec = TfidfVectorizer(input='filename')
my_document_features = vec.fit_transform(my_text_files)
Run Code Online (Sandbox Code Playgroud)

其中my_text_files是您的硬盘驱动器上文档文件路径的python列表(假设它们使用UTF-8编码进行编码).

的长度my_text_filesmy_text_documents列表应该n_documents因此映射与km.labels_是直接的.

由于scikit-learn不仅仅用于聚类或分类文档,我们使用名称"sample"而不是"document".这样您就可以看到我们使用n_samples而不是n_documents记录库中所有估算器的参数和属性的预期形状.

  • 否:`dataset.data`是内存中python unicode字符串的列表,其中包含文本文件的内容.如果使用`load_files()`实用程序,`filenames`存储在`dataset.filenames`列表中. (2认同)