python怎么用sklearn包进行聚类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么用sklearn包进行聚类相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-
from sklearn.cluster import KMeans
from sklearn.externals import joblib
import numpy

final = open(\'c:/test/final.dat\' , \'r\')

data = [line.strip().split(\'\\t\') for line in final]
feature = [[float(x) for x in row[3:]] for row in data]

#调用kmeans类
clf = KMeans(n_clusters=9)
s = clf.fit(feature)
print s

#9个中心
print clf.cluster_centers_

#每个样本所属的簇
print clf.labels_

#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数
print clf.inertia_

#进行预测
print clf.predict(feature)

#保存模型
joblib.dump(clf , \'c:/km.pkl\')

#载入保存的模型
clf = joblib.load(\'c:/km.pkl\')

\'\'\'
#用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数
for i in range(5,30,1):
    clf = KMeans(n_clusters=i)
    s = clf.fit(feature)
    print i , clf.inertia_
\'\'\'
参考技术A 、K均值聚类 K-Means算法思想简单,效果却很好,是最有名的聚类算法。聚类算法的步骤如下: 1:初始化K个样本作为初始聚类中心; 2:计算每个样本点到K个中心的距离,选择最近的中心作为其分类,直到所有样本点分类完毕; 3:分别计算K个类中所...

python:使用sklearn在文档聚类中面临内存问题

【中文标题】python:使用sklearn在文档聚类中面临内存问题【英文标题】:python : facing memory issue in document clustering using sklearn 【发布时间】:2017-03-16 21:23:45 【问题描述】:

我正在使用 sklearn 的 TfIdfVectorizer 进行文档聚类。我有 2000 万条文本,我想为其计算集群。但是计算 TfIdf 矩阵需要花费太多时间并且系统会卡住。

有什么技术可以解决这个问题吗?在任何 python 模块中是否有任何替代方法?

【问题讨论】:

【参考方案1】:

嗯,2000 万 个文本的语料库非常大,没有细致全面的预处理,也没有一些好的计算实例(即大量的内存和好的 CPU ),TF-IDF 计算可能需要很长时间。

你能做什么

将您的文本语料库限制为数十万个样本(比如说 200.000 个文本)。与小得多(但合理)的数据集相比,文本过多可能不会引入更多差异。

尽量预处理您的文本。一个基本的方法是:标记你的文本,使用停用词,词干,小心使用 n_grams。 完成所有这些步骤后,看看你减少了多少词汇量。它应该比原来的小很多。

如果不是太大(谈论您的数据集),这些步骤可能会帮助您更快地计算 TF-IDF。

【讨论】:

【参考方案2】:

从小处着手

第一个集群只有 100.00 个文档。只有当它起作用(因为它可能不会),然后考虑扩大规模。 如果你没有成功地对子集进行聚类(文本聚类通常很糟糕),那么你在大集合上的表现就不会很好。

【讨论】:

以上是关于python怎么用sklearn包进行聚类的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用 kmeans sklearn 对数据点进行聚类

在 python (sklearn) 中使用 Affinity Propagation 对 word2vec 向量进行聚类

如何使用sklearn找到最接近K的点的索引意味着聚类中心?

python:使用sklearn在文档聚类中面临内存问题

用Python,在 import sklearn 总是报错怎么办

如何使用聚类对具有相似意图的句子进行分组?