【问题标题】:How to create a synthetic dataset如何创建合成数据集
【发布时间】:2016-03-05 12:56:51
【问题描述】:

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

1 2.2 3.1
1.12 0.13 4.46
1 2 54.44

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

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

【问题讨论】:

    标签: numpy machine-learning dataset


    【解决方案1】:

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

    来自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>)

    【讨论】:

      【解决方案2】:

      这样的问题没有一个好的答案。什么是有趣?不幸的是,对于聚类,没有有趣甚至恰当的问题。像这样的聚类没有明确定义的评估,因此每种方法都是一样好/坏的,只要它有明确定义的内部目标。因此,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

      【讨论】:

        猜你喜欢
        • 2022-06-12
        • 2016-04-26
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-12-12
        • 2018-11-20
        • 2011-05-03
        • 1970-01-01
        相关资源
        最近更新 更多