【问题标题】:clusterdata Matlab function集群数据 Matlab 函数
【发布时间】:2012-01-15 15:20:33
【问题描述】:
我正在使用 Matlab clusterdata 函数将我的数据(噪声和非噪声)分为 2 类:噪声组和非噪声组。该函数运行良好,只是有时它将所有噪声数据命名为第 1 组,将所有非噪声数据命名为第 2 组。有时它将所有噪声数据命名为第 2 组,将所有非噪声数据命名为第 1 组。
我该如何控制它?我的意思是将所有噪声数据标记为第 1 组。
【问题讨论】:
标签:
matlab
statistics
cluster-analysis
hierarchical-clustering
【解决方案1】:
控制无监督学习算法使用的标签名称通常是个问题。我建议在进行聚类后尝试评估数据的一些特征,看看标签是否符合您的要求。
如果您的所有数据都在 X (N x d) 矩阵中,并且标签向量 Y(N x 1) 取值 -1 和 1,则您可以评估每个集群的方差。我怀疑噪声数据会表现出更高的方差,可以用来查看是否应该切换标签。
在下面的代码中,1 应该是非噪声,-1 应该是噪声(这种标签(组)的选择可以更容易地翻转标签)。
%#Variance summed over all dimensions
varL1 = sum(var(X(Y==1,:)));
varL2= sum(var(X(Y==-1,:)));
%#Flip labels if if L1 is higher than L2
if varL1 > varL2
Y = Y * (-1);
end
如果这可行,您可以随后将噪声簇更改为第 1 组,将非噪声更改为第 2 组
Y(Y==1) = 2; %#NB: The order of which these statements are evaluated is important.
Y(Y==-1) = 1;