我在Matlab中寻找一种方便的方法来模拟N维空间中的数据集,以测试我已经处理过的一组集群验证标准,看看它们是否有用。
我通常使用的数据是高度维度的(互相关矩阵N乘N,每个N约50K特征),因此我不仅寻找具有明确边界的随机数据。我想要一种噪声(或重叠)参数,我可以操作以查看我的聚类方法无法获得正确的答案。
以前的回答here基于简单地将随机数的顺序向量与预定义的偏移量和点差相连接,并且它很好但我想扩展该答案以进行更加可控的模拟。
例如,这是我写的代码(基于上面链接中的答案 - 更多内容)
N = [10,10,50]; % observations per cluster
D = 2; % dimensions; set to 2 for visualization
mean=[0,25,80]; % mean of each cluster
dev=[5,10,60]; % spread around the mean of each cluster
DataSet=[];
Groups=[];
for i=1:length(N),
DataSet = [DataSet;...
mean(i)+dev(i)*randn(N(i),D)];
Groups = [Groups;...
i*ones(N(i),1)];
end
plot(DataSet(Groups==1,1),DataSet(Groups==1,2),'ro', ...
DataSet(Groups==2,1),DataSet(Groups==2,2),'bo',...
DataSet(Groups==3,1),DataSet(Groups==3,2),'mo')
它应该给出3个簇的这个图
这很酷,但如何以系统的方式定义重叠(可能还有其他噪声参数)?
另见R package that simulate Gaussian distributions based on overlap parameters and other cool stuff
有什么想法吗?