如何在MATLAB中查找一组数据的中心点

我正在尝试在MATLAB中计算中心点。然而,我不知道该如何做。我的数据集包含多个三维数据点(因此是一个具有三个轴的系统中的点云)。中心点是“其与集群中所有其他对象的平均差异最小”的点(维基百科)。

有谁知道如何在MATLAB中计算中心点吗?


顺便说一下,据我所知,k-中心点算法不能有效地计算中心点,这就是为什么我在寻找其他方法的原因。


回答:

一旦你提供了度量标准,这应该不难做到。这里有一个标量实现的例子:

     function m = medoid(set,metric)          [X,Y] = meshgrid(set,set); %创建所有可能的配对          dist = metric(X,Y);  %运行度量标准          %每个距离被计算两次,这没关系。           %同样,添加零也没关系,因为我们在寻找最小值。          totalDist = mean(dist,1);           [~,i] = min(totalDist);          m = set(i);     end

使用示例:

metric = @(x,y) ( abs(x-y));m = medoid([1 2 3 3 3 3 3], metric)

你可以将其扩展到向量,我将其留作读者练习。(或者有人想添加一个改进的答案)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注