2011-05-27 40 views
1

我有一个数组列表中的数字。每个元素的索引是X,值是Y.我如何去分区/集群这些数据? 如果我有一个数组,我只想要一组标记每个分区结束的值。由于我正在研究Python,如果有库可以做同样的事情,请提一下。在一维数据上使用什么聚类算法?

谢谢。

+0

什么是数据?你的申请是什么?你确定你想要聚类而不是分段吗?即你是否希望群集中的所有点都是连续的X个样本?这是你通常为时间系列做的事情。 – dimatura 2011-05-27 06:53:17

+0

[1D数据集中没有随机簇的可能重复](http://stackoverflow.com/questions/5738490/not-random-clusters-in-1d-data-set) – 2013-02-01 07:42:40

回答

5

K-Means是一个非常简单的聚类算法,我会说在进行更复杂的事情之前先测试一下。 K-Means算法http://en.wikipedia.org/wiki/K-means_clustering

正确的K-Means初始化强烈建议http://en.wikipedia.org/wiki/K-means%2B%2B,因为它。

如果你对K-Means不满意,那么你可以使用EM算法和高斯混合(http://en.wikipedia.org/wiki/Mixture_model),不要太难编码,你可以使用K-Means来初始化它!

这些已经在Python中实现了100次,检查任何机器学习工具箱。

+5

SciPy有一个非常友好的kmeans实现其集群包。事实上,我今天刚刚使用它,而我恰好现在在另一个选项卡中有文档:http://docs.scipy.org/doc/scipy/reference/cluster.vq.html – 2011-05-27 03:27:47

+2

** Don在一维数据上不使用k-means。使用优化的一维技术。** – 2013-02-01 07:41:18