make_classification#

sklearn.datasets.make_classification(n_samples=100, n_features=20, *, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)#

生成一个随机的n类分类问题。

最初,这会在一个边长为 2*class_sepn_informative 维超立方体的顶点周围创建正态分布(标准差=1)的点簇,并将相等数量的簇分配给每个类。它引入了这些特征之间的相互依赖性,并向数据添加了各种类型的进一步噪声。

在不进行洗牌的情况下, X 按以下顺序水平堆叠特征:首先是主要的 n_informative 特征,然后是 n_redundant 信息特征的线性组合,接着是 n_repeated 重复特征,这些重复特征从信息特征和冗余特征中随机抽取并替换。剩余的特征用随机噪声填充。因此,在不进行洗牌的情况下,所有有用的特征都包含在列 X[:, :n_informative + n_redundant + n_repeated] 中。

有关使用示例,请参见 绘制随机生成的分类数据集

更多信息请参阅 用户指南

Parameters:
n_samplesint, 默认=100

样本数量。

n_featuresint, 默认=20

特征总数。这些包括 n_informative 信息特征、 n_redundant 冗余特征、 n_repeated 重复特征和 n_features-n_informative-n_redundant-n_repeated 无用的随机特征。

n_informativeint, 默认=2

信息特征的数量。每个类由多个高斯簇组成,这些簇位于 n_informative 维子空间中超立方体的顶点周围。对于每个簇,信息特征独立地从N(0, 1)中抽取,然后在每个簇内随机线性组合以增加协方差。然后将这些簇放置在超立方体的顶点上。

n_redundantint, 默认=2

冗余特征的数量。这些特征是作为信息特征的随机线性组合生成的。

n_repeatedint, 默认=0

重复特征的数量,从信息特征和冗余特征中随机抽取。

n_classesint, 默认=2

分类问题的类别(或标签)数量。

n_clusters_per_classint, 默认=2

每个类的簇数量。

weights形状为(n_classes,)或(n_classes - 1,)的数组类对象, 默认=None

分配给每个类的样本比例。如果为None,则类是平衡的。请注意,如果 len(weights) == n_classes - 1 ,则最后一个类的权重会自动推断。如果 weights 的总和超过1,则可能会返回超过 n_samples 的样本。请注意,当 flip_y 不为0时,实际的类比例不会完全匹配 weights

flip_yfloat, 默认=0.01

随机分配类别的样本比例。较大的值会在标签中引入噪声,使分类任务更加困难。请注意,默认设置flip_y > 0可能会在某些情况下导致y中的类别少于 n_classes

class_sepfloat, 默认=1.0

乘以超立方体大小的因子。较大的值会分散簇/类,使分类任务更容易。

hypercubebool, 默认=True

如果为True,簇将放置在超立方体的顶点上。如果为False,簇将放置在随机多面体的顶点上。

shiftfloat, 形状为(n_features,)的ndarray或None, 默认=0.0

按指定值平移特征。如果为None,则特征会按在[-class_sep, class_sep]中随机抽取的值平移。

scalefloat, 形状为(n_features,)的ndarray或None, 默认=1.0

按指定值缩放特征。如果为None,则特征会按在[1, 100]中随机抽取的值缩放。请注意,缩放发生在平移之后。

shufflebool, 默认=True

洗牌样本和特征。

random_stateint, RandomState实例或None, 默认=None

确定数据集创建的随机数生成。为多个函数调用传递一个int以获得可重复的输出。 请参阅 术语

Returns:
X形状为(n_samples, n_features)的ndarray

生成的样本。

y形状为(n_samples,)的ndarray

每个样本的类成员资格的整数标签。

See also

make_blobs

简化变体。

make_multilabel_classification

不相关的多标签任务生成器。

Notes

该算法改编自Guyon [1],旨在生成“Madelon”数据集。

References

[1]

I. Guyon, “Design of experiments for the NIPS 2003 variable selection benchmark”, 2003.

Examples

>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(random_state=42)
>>> X.shape
(100, 20)
>>> y.shape
(100,)
>>> list(y[:5])
[0, 0, 1, 1, 0]