如何生成一个“可聚集的”' MATLAB中的数据集

时间:2013-06-11 16:22:51

标签: matlab cluster-analysis

我需要测试我的Gap Statistics算法(它应该告诉我数据集的最佳k)并且为了做到这一点,我需要生成一个容易具有吸引力的大数据集,以便我先验知道最优的簇数。你知道任何快速的方法吗?

1 个答案:

答案 0 :(得分:3)

这在很大程度上取决于您期望的数据集类型 - 1D,2D,3D,正态分布,稀疏等? “大”有多大?数千,数百万,数十亿的观察结果?

无论如何,我创建易于识别的集群的一般方法是将随机数的顺序向量与不同的偏移和点差连接起来:

DataSet = [5*randn(1000,1);20+3*randn(1,1000);120+25*randn(1,1000)];
Groups = [1*ones(1000,1);2*ones(1000,1);3*ones(1000,1)];

通过使用例如,可以将其扩展到N个特征。

randn(1000,5)

或水平连接

DataSet1 = [5*randn(1000,1);20+3*randn(1,1000);120+25*randn(1,1000)];
DataSet2 = [-100+7*randn(1000,1);1+0.1*randn(1,1000);20+3*randn(1,1000)];
DataSet = [DataSet1 DataSet2];

等等。

randn也需要像

这样的多维输入
randn(1000,10,3);

用于查看更高维的聚类。

如果您没有关于将要应用于哪种数据集的详细信息,您应该查找这些数据集。