建立分類#

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 類分類問題。

此函式首先創建點的群集,這些點以常態分佈(標準差 = 1)分佈在邊長為 2*class_sepn_informative 維超立方體的頂點周圍,並為每個類別分配相同數量的群集。它引入這些特徵之間的相互依賴性,並為資料添加各種其他類型的雜訊。

在不打亂順序的情況下,X 水平堆疊以下順序的特徵:主要的 n_informative 個特徵,接著是 n_redundant 個資訊性特徵的線性組合,然後是從資訊性和冗餘特徵中隨機抽取的 n_repeated 個重複項。其餘特徵則填充隨機雜訊。因此,在不打亂順序的情況下,所有有用的特徵都包含在 X[:, :n_informative + n_redundant + n_repeated] 這些列中。

請參閱使用者指南以瞭解更多資訊。

參數:
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,) 或 None 的 ndarray,預設值為 0.0

將特徵平移指定的值。如果為 None,則特徵會平移 [-class_sep, class_sep] 中隨機抽取的值。

scalefloat,形狀為 (n_features,) 或 None 的 ndarray,預設值為 1.0

將特徵乘以指定的值。如果為 None,則特徵會乘以 [1, 100] 中隨機抽取的值。請注意,縮放是在平移之後進行。

shufflebool,預設值為 True

打亂樣本和特徵的順序。

random_stateint、RandomState 實例或 None,預設值為 None

決定資料集建立的隨機數生成。傳遞一個 int 以便在多次函式呼叫中產生可重複的輸出。請參閱詞彙表

返回:
X形狀為 (n_samples, n_features) 的 ndarray

產生的樣本。

y形狀為 (n_samples,) 的 ndarray

每個樣本的類別成員資格的整數標籤。

另請參閱

make_blobs

sklearn.datasets.make_blobs 簡化變體。

make_multilabel_classification

sklearn.datasets.make_multilabel_classification 多標籤任務的不相關產生器。

註解

此演算法改編自 Guyon [1],旨在產生「Madelon」資料集。

參考文獻

[1]

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

範例

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