我有一个像这样的一维列表
public class Zeit_und_Eigenschaft
{
[Feature]
public double Sekunden { get; set; }
}
//...
List<Zeit_und_Eigenschaft> lzue = new List<Zeit_und_Eigenschaft>();
//fill lzue
lzue可以
lzue.Sekunden
1
2
3
4
8
9
10
22
55
...
目标是在该列表中找到群集,即可以形成像f.i这样的群组的元素。在这个例子中
lzue.Sekunden
1
2
3
4
8
9
10
22
55
哪种聚类算法合适(我不知道聚类数k)? GMM? PCA? K均值?其他
答案 0 :(得分:6)
不要寻找群集算法。
群集是多变量数据的理想术语,但您的数据是一维的,因此您应该查看更旧的统计文献。例如。自然休息优化。
或者只是核密度估计。事实上,你会在stackoverflow上找到同样的问题数十次......
Cluster one-dimensional data optimally?
partitioning an float array into similar segments (clustering)
Efficiently grouping similar numbers together
Clustering values by their proximity in python (machine learning?)
答案 1 :(得分:1)
几个月前,MSDN杂志就这一主题发表了一篇很好的文章。他们使用k-means算法。链接:
http://msdn.microsoft.com/en-us/magazine/jj891054.aspx
此外,作为Andrew Ng在线机器学习课程的一部分,有一些关于k-means聚类的视频。链接:
https://class.coursera.org/ml-003/lecture/preview
当你不知道k时,有一些算法可以搜索一个好的值。在网上搜索k-means + elbow。