Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 具有Kmeans函数输出中心的群集数据_Opencv_K Means - Fatal编程技术网

Opencv 具有Kmeans函数输出中心的群集数据

Opencv 具有Kmeans函数输出中心的群集数据,opencv,k-means,Opencv,K Means,嗨,我用kmeans函数对一些数据进行了集群,并将其生成的集群中心存储为输出。现在我在Mat对象中有了一组新的向量,我想知道每个向量属于哪个簇。有没有一个简单的方法可以做到这一点,或者我应该只计算每个向量的欧几里德距离和所有中心,然后选择它最接近的簇 如果我选择第二种方法,是否有任何效率方面的考虑使其快速进行?您似乎有兴趣使用在初始数据集上运行K-Means的结果来执行某种类型的集群分配,对吗 你可以将新的观察值指定为最接近的平均值。不幸的是,对于K-Means,您对每个簇的形状或大小一无所知。

嗨,我用kmeans函数对一些数据进行了集群,并将其生成的集群中心存储为输出。现在我在Mat对象中有了一组新的向量,我想知道每个向量属于哪个簇。有没有一个简单的方法可以做到这一点,或者我应该只计算每个向量的欧几里德距离和所有中心,然后选择它最接近的簇


如果我选择第二种方法,是否有任何效率方面的考虑使其快速进行?

您似乎有兴趣使用在初始数据集上运行K-Means的结果来执行某种类型的集群分配,对吗

你可以将新的观察值指定为最接近的平均值。不幸的是,对于K-Means,您对每个簇的形状或大小一无所知。例如,考虑一种新的向量从两种方式等距(或大致等距)的情形。在这种情况下你会怎么做?您是否对其中一个集群进行了艰难的分配

在这种情况下,最好实际查看包含每个集群的原始数据,并执行某种类型的K-最近邻分配()。例如,结果可能是,虽然新向量与两个不同的聚类中心的距离大致相等,但它更接近其中一个聚类的数据(表明它可能属于该聚类)

作为K-Means的替代方法,如果你使用一些类似高斯和EM的混合,你不仅有一组簇中心(就像你用K-Means做的那样),还有一个方差,描述簇的大小。对于每个新的观测,您可以计算它属于每个簇的概率,而无需重新访问每个簇的数据(因为它被烘焙到MoG EM模型中)