如何创建合成数据集

时间:2015-12-01 14:48:00

标签: numpy machine-learning dataset

我想在一些大数据上运行一些机器学习聚类算法 问题是我在网上为此目的找到有趣的数据时遇到麻烦。
另外,通常这些数据可能不方便使用,因为格式不适合我。
我需要一个txt文件,每行代表一个数学向量,每个元素用空格分隔,例如:

1 2.2 3.1
1.12 0.13 4.46
1 2 54.44

因此,我决定首先在我自己创建的一些合成数据上运行这些算法。
如何以numpy的智能方式实现这一点? 以聪明的方式,我的意思是它不会统一生成,因为它有点无聊。我怎样才能生成一些有趣的集群?

我想拥有5GB / 10GB的数据。

2 个答案:

答案 0 :(得分:2)

您需要定义" clusters"的含义,但我认为您要求的是为每个坐标值组合在一起的几个随机参数正态分布。

来自http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.random.randn.html#numpy.random.randn

For random samples from N(\mu, \sigma^2), use:

sigma * np.random.randn(...) + mu

<range> * np.random.rand(<howmany>)sigma

中的每一个使用mu

答案 1 :(得分:1)

这个问题没有一个好的答案。什么是有趣?不幸的是,对于群集而言,没有有趣甚至良好构建问题。这样的聚类没有很好的定义评估,因此每个方法同样好/坏,只要它具有明确定义的内部目标。因此,k-means总是最好的,以最小化簇间欧氏距离,并将与稀疏数据,非凸,不平衡的簇斗争。 DBScan将始终是基于贪婪密度的最佳选择,并将与各种密度集群相结合。 GMM将始终非常适合高斯混合物,并将与不是高斯的簇(例如线,正方形等)结合。

从这个问题可以推断出你正处于聚类工作的初期阶段,所以需要“只是比统一更复杂的东西”,所以我建议你看一下数据集生成器,特别是scikit-learn中的可访问性(python)http://scikit-learn.org/stable/datasets/或在clusterSim(R)http://www.inside-r.org/packages/cran/clusterSim/docs/cluster.Gen或clusterGeneration(R)https://cran.r-project.org/web/packages/clusterGeneration/clusterGeneration.pdf