我想在一些大数据上运行一些机器学习聚类算法。
问题是我在网上找不到适合此目的的有趣数据。
此外,这些数据通常使用起来也不方便,因为格式不适合我的需求。
我需要一个txt文件,每行代表一个数学向量,每个元素之间用空格分隔,例如:
1 2.2 3.11.12 0.13 4.461 2 54.44
因此,我决定先在自己创建的合成数据上运行这些算法。
我该如何使用numpy以一种智能的方式做到这一点?这里的“智能方式”是指数据不会均匀生成,因为这样有点无聊。我该如何生成一些有趣的聚类?
目前我想要5GB/10GB的数据。
回答:
对于这样的问题,没有一个完美的答案。什么是有趣的?对于聚类来说,不幸的是,没有所谓的有趣或甚至定义明确的问题。聚类本身没有明确的评价标准,因此只要方法有明确定义的内部目标,每种方法都同样好/坏。所以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