有没有人有一篇论文解释了Ckmeans.1d.dp算法是如何工作的?
或者:在一维中进行k均值聚类的最佳方法是什么?
我需要将一个简单的单变量数据集聚集到预设数量的集群中.从技术上讲,它更接近于分类或排序数据,因为它只有1D,但我的老板称它为聚类,所以我将坚持使用该名称.我所使用的系统使用的当前方法是K-means,但这看起来有点过分.
有没有更好的方法来执行此任务?
其他一些帖子的答案提到了KDE(核密度估计),但这是一种密度估算方法,它会如何工作?
我看到KDE如何返回密度,但是如何告诉它将数据拆分成箱?
我如何拥有与数据无关的固定数量的箱(这是我的要求之一)?
更具体地说,如何使用scikit学习来解决这个问题?
我的输入文件如下:
 str ID     sls
 1           10
 2           11 
 3            9
 4           23
 5           21
 6           11  
 7           45
 8           20
 9           11
 10          12
我想将sls编号分组成簇或箱,这样:
Cluster 1: [10 11 9 11 11 12] 
Cluster 2: [23 21 20] 
Cluster 3: [45] 
我的输出文件将如下所示:
 str ID     sls    Cluster ID  Cluster centroid
    1        10       1               10.66
    2        11       1               10.66
    3         9       1               10.66 
    4        23       2               21.33   
    5        21       2               21.33
    6        11       1               10.66
    7 …cluster-analysis machine-learning data-mining kernel-density scikit-learn
我遇到了一个问题,无法找到可行的解决方案。
图像量化
给定一个灰度图像,每个像素的颜色范围从(0到255),将值的范围压缩到给定数量的量子值。
目标是以最小的所需成本总和来实现这一点,像素的成本定义为其颜色与其最接近的量子值之间的绝对差。
例子
有3行3列,图像[[7,2,8],[8,2,3],[9,8 255]]量子= 3个量子值。最佳量子值为(2,8,255)导致成本总和最小|7-8| + |2-2| + |8-8| + |8-8| + |2-2| + |3-2| + |9-8| + |8-8| + |255-255| = 1+0+0+0+0+1+1+0+0 = 3
功能说明
完成编辑器中提供的求解功能。该函数采用以下 4 个参数并返回最小成本总和。
n 表示图像的行数
m 表示图像的列数
image 代表图像
Quantums 表示量子值的数量。
输出:打印单个整数成本的最小总和/
Constraints: 
1<=n,m<=100
0<=image|i||j|<=255
1<=quantums<=256
Sample Input 1
3
3
7 2 8
8 2 3
9 8 255
10
Sample output 1
0
解释
最佳量子值为{0,1,2,3,4,5,7,8,9,255} 领先成本总和|7-7| + |2-2| + |8-8| + |8-8| + |2-2| + |3-3| + |9-9| + …
我有一个在一组对象上运行的算法.该算法产生一个得分值,用于指示集合中元素之间的差异.
排序的输出是这样的:
[1,1,5,6,1,5,10,22,23,23,50,51,51,52,100,112,130,500,512,600,12000,12230]
如果您将这些值放在电子表格中,您会看到它们组成了组
[1,1,5,6,1,5] [10,22,23,23] [50,51,51,52] [100,112,130] [500,512,600] [12000,12230]
有没有办法以编程方式获得这些分组?
也许一些使用机器学习库的聚类算法?还是我在思考这个?
我看过scikit,但他们的例子对我的问题来说太先进了......
我有一个像这样的浮点数组:
[1.91, 2.87, 3.61, 10.91, 11.91, 12.82, 100.73, 100.71, 101.89, 200]
现在,我想像这样对数组进行分区:
[[1.91, 2.87, 3.61] , [10.91, 11.91, 12.82] , [100.73, 100.71, 101.89] , [200]]
// [200]因为群集支持较少而被视为异常值
我必须为几个数组找到这种段,我不知道分区大小应该是多少.我试图通过使用层次聚类(Agglomerative)来实现它 ,它为我提供了令人满意的结果.然而,问题是,我被建议不要将聚类算法用于一维问题,因为它们没有理论上的理由(因为它们用于多维数据).
我花了很多时间来寻找解决方案.但是,建议似乎完全不同,如:这个和这个 VS. 这和这个和这个.
我找到了另一个建议,而不是聚类,即自然中断优化.但是,这也需要声明分区号,如K-means(右?).
这很混乱(特别是因为我必须在几个阵列上执行这种分段,并且不可能知道最佳分区号).
有什么方法可以找到分区(因此我们可以通过一些理论上的合理性来减少分区内的差异并最大化分区之间的差异)?
任何指向文章/论文的指针(如果可用的C/C++/Java实现)都有一些理论上的理由对我很有用.
我有一个像这样的一维列表
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
...
目标是在该列表中找到群集,即在此示例中可以形成像fi这样的群组的元素
lzue.Sekunden
1
2
3
4
8
9
10
22
55
哪种聚类算法是合适的(我不知道聚类数k)?GMM?PCA?K均值?其他?
可能的重复:
一维数字数组聚类
我有一个数字数组,例如[1, 20, 300, 45, 5, 60, 10, 270, 3]. 根据邻近度将这些数字分组在一起的有效算法是什么?在这种情况下,我期望类似[1, 3, 5],[20, 45, 60]和 的东西[270, 300]。
language-agnostic algorithm math statistics cluster-analysis
algorithm ×3
data-mining ×3
k-means ×2
c# ×1
c++ ×1
cran ×1
java ×1
math ×1
python ×1
r ×1
scikit-learn ×1
statistics ×1