数据生成器是机器学习领域中用于创建人工数据集的工具,它们可以控制数据集的大小和复杂性。这些数据集通常用于测试和验证机器学习算法的性能。本文将详细介绍几种不同类型的数据生成器,包括分类、聚类、回归、流形学习和分解等。
分类和聚类数据生成器能够产生特征矩阵和相应的离散目标。这些生成器通过为每个类别分配一个或多个正态分布的点簇来创建多类别数据集。例如,make_blobs
和make_classification
函数可以创建多类别数据集,其中make_blobs
提供了对每个簇的中心和标准差的更多控制,通常用于聚类演示;而make_classification
则专注于通过相关、冗余和无信息特征,每个类别的多个高斯簇,以及特征空间的线性变换来引入噪声。
make_gaussian_quantiles
函数将单个高斯簇划分为几乎等大小的类,这些类通过同心超球体分隔。make_hastie_10_2
函数生成类似的二元、十维问题。make_circles
和make_moons
函数生成2D二元分类数据集,这些数据集对某些算法(例如基于质心的聚类或线性分类)具有挑战性,包括可选的高斯噪声。这些数据集非常适合可视化。make_circles
产生具有球形决策边界的高斯数据,用于二元分类,而make_moons
产生两个交错的半圆。
多标签数据生成器,如make_multilabel_classification
,生成具有多个标签的随机样本,反映了从主题混合中抽取的词袋模型。每个文档的主题数量从泊松分布中抽取,而主题本身则从固定随机分布中抽取。类似地,词汇数量从泊松分布中抽取,词汇从多项式分布中抽取,其中每个主题定义了词汇上的概率分布。与真实的词袋混合相比,简化之处包括:每个主题的词汇分布是独立抽取的,而在现实中,所有词汇都会受到稀疏基础分布的影响,并且会相互关联。对于从多个主题生成的文档,所有主题在生成其词袋时权重相等。没有标签的文档随机抽取词汇,而不是从基础分布中抽取。
双聚类数据生成器,如make_biclusters
和make_checkerboard
,分别生成用于双聚类的具有恒定块对角结构和块棋盘结构的数组。这些生成器为双聚类任务提供了结构化的输入数据,有助于研究算法在特定数据结构上的表现。
回归数据生成器,如make_regression
,产生回归目标作为随机特征的可选稀疏随机线性组合,带有噪声。其信息特征可能是不相关的,或者是低秩的(少数特征解释了大部分方差)。其他回归生成器从随机化特征中确定性地生成函数。例如,make_sparse_uncorrelated
产生一个目标,作为四个特征的线性组合,具有固定系数。其他生成器明确编码非线性关系:make_friedman1
通过多项式和正弦变换相关;make_friedman2
包括特征乘法和倒数;make_friedman3
与前者类似,但对目标进行了反正切变换。
流形学习数据生成器,如make_s_curve
和make_swiss_roll
,分别生成S曲线数据集和瑞士卷数据集。这些数据集用于测试流形学习算法在非线性数据结构上的性能。
分解数据生成器,如make_low_rank_matrix
、make_sparse_coded_signal
和make_spd_matrix
,分别用于生成具有钟形奇异值的大部分低秩矩阵、作为字典元素的稀疏组合的信号,以及随机对称正定矩阵。这些生成器为分解任务提供了结构化的输入数据,有助于研究算法在特定数据结构上的表现。