【发布时间】:2018-08-29 11:38:33
【问题描述】:
我有一个传感器,其输出数据由一个属性(单值)组成。序列数据打孔示例如下:
示例: 199 200 205 209 217 224 239 498 573 583 583 590 591 594 703 710 711 717 719 721 836 840 845 849 855 855 856 857 858 858 928 935 936 936 942 943 964 第977章
您可以看到来自第一张图片的数据输入。
数据分为多个级别。级别数是给我的(本例中为 5 个级别)。但是,每个级别的样本数量是未知的,级别之间的距离也是未知的。
我需要排除异常值并定义每个级别的中心(查看第二张图像输出。
红色样本代表异常值,黄色代表水平中心)。有没有什么算法、数学公式、c++代码可以帮我实现这个要求?
我尝试了 KMeans(在本例中 K = 5),但由于随机的初始 K 质心,我得到了不好的结果。大多数时候,一些初始质心共享相同的级别,使该级别成为两个集群,而其他两个级别属于一个集群。如果我通过从每个级别中选择一个质心来手动设置初始质心,我会得到非常好的结果。
【问题讨论】:
-
不是一个真正的编码问题。你可以考虑cstheory.stackexchange.com或dsp.stackexchange.com或scicomp.stackexchange.com或datascience.stackexchange.com(好吧,也许有很多SE站点......)
标签: c++ cluster-analysis k-means unsupervised-learning statistical-sampling