1D数组数组聚类
可能重复:
一维数据最佳聚类?
所以我们说我有一个这样的数组:
[1,1,2,3,10,11,13,67,71]
有没有一种方便的方法来将数组分成这样的东西?
[[1,1,2,3],[10,11,13],[67,71]]
我查看了类似的问题,但大多数人build议使用k-means来聚类点,比如scipy ,这对于像我这样的初学者来说是相当混乱的。 另外我觉得k-means更适合两维或更多维的聚类吗? 有没有办法根据数字将N个数字分成多个分区/集群?
有些人也提出了严格的范围划分,但并不总是如预期的那样提供结果
不要将多维聚类algorithm用于一维问题。 单一的维度比天真的想法要特别的多,因为你实际上可以对它进行分类 ,这使得事情变得更容易。
实际上,它通常不称为聚类,但是例如分割或自然中断优化。
你可能想看看Jenks Natural Breaks Optimization和类似的统计方法。 核密度估计也是一个很好的方法来看,具有强大的统计背景。 密度的局部最小值是将数据分成簇的好地方,有统计学的理由。 KDE可能是一维数据聚类最好的方法。
使用KDE,一维数据performance得更好,这一点再次变得明显。 在一维,你有当地最低标准; 但是在2D中你可能有鞍点和这种“可能”的分裂点。 看这个维基百科的一个鞍点插图 ,因为这样一个点如何可能或可能不适合分裂集群。
你可能会寻找离散化algorithm。 一维离散化问题和你所问的很相似。 他们根据频率,分箱策略等决定分界点。
weka在其离散化过程中使用以下algorithm。
weka.filters.supervised.attribute.Discretize
使用Fayyad和伊朗的MDL方法或Kononeko的MDL标准
weka.filters.unsupervised.attribute.Discretize
使用简单的分箱