如何创建合成数据集

How to create a synthetic dataset

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

1 2.2 3.1
1.12 0.13 4.46
1 2 54.44

因此,我决定首先 运行 那些我将自己创建的合成数据的算法。
我怎样才能用 numpy 巧妙地做到这一点? 以聪明的方式,我的意思是它不会统一生成,因为它有点无聊。我怎样才能生成一些有趣的集群?

我现在想要 5GB / 10GB 的数据。

您需要定义 "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

并且 sigmamu 中的每一个都使用 <range> * np.random.rand(<howmany>)

这样的问题没有一个好的答案。什么是有趣?不幸的是,对于聚类,没有 有趣的 甚至 适当的 问题。这样的聚类没有明确定义的评估,因此只要每个方法具有明确定义的内部 objective,每个方法都是相同的 good/bad。因此,k-means 始终是最小化集群间欧氏距离的好方法,并且会与稀疏数据、非凸、不平衡集群作斗争。 DBScan 在基于贪婪密度的意义上永远是最好的,并且会与不同的密度集群作斗争。 GMM 将始终非常适合高斯混合,并且会与非高斯的簇(例如线、正方形等)斗争。

从这个问题可以推断出您刚开始使用聚类,因此需要 "just anything more complex than uniform",所以我建议您看一下数据集生成器,尤其是在 scikit-learn 中可访问( python) http://scikit-learn.org/stable/datasets/ or in clusterSim (R) http://www.inside-r.org/packages/cran/clusterSim/docs/cluster.Gen or clusterGeneration (R) https://cran.r-project.org/web/packages/clusterGeneration/clusterGeneration.pdf