當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python cuml.datasets.make_classification用法及代碼示例


用法:

cuml.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, order='F', dtype='float32', _centroids=None, _informative_covariance=None, _redundant_covariance=None, _repeated_indices=None)

生成一個隨機的n-class 分類問題。這最初會創建正態分布 (std=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)

每個類的簇數。

weightsarray-like of shape (n_classes,) or (n_classes - 1,), (default=None)

分配給每個類別的樣本比例。如果沒有,那麽類是平衡的。請注意,如果 len(weights) == n_classes - 1 ,則會自動推斷最後一個類的權重。如果 weights 的總和超過 1,則可能返回超過 n_samples 的樣本。

flip_y浮點數,可選(默認=0.01)

隨機分配類別的樣本的比例。較大的值會在標簽中引入噪聲並使分類任務更加困難。

class_sep浮點數,可選(默認=1.0)

乘以超立方體大小的因子。較大的值會分散集群/類並使分類任務更容易。

hypercube布爾值,可選(默認 = True)

如果為 True,則將簇放在超立方體的頂點上。如果為 False,則將簇放在隨機多麵體的頂點上。

shift浮點數,形狀數組 [n_features] 或無,可選(默認 = 0.0)

按指定值移動特征。如果沒有,則特征將移動 [-class_sep, class_sep] 中繪製的隨機值。

scale浮點數,形狀數組 [n_features] 或無,可選(默認 = 1.0)

將特征乘以指定的值。如果為 None,則按 [1, 100] 中繪製的隨機值對特征進行縮放。請注意,縮放發生在移位之後。

shuffle布爾值,可選(默認 = True)

Shuffle[洗牌]樣本和特征。

random_stateint RandomState 實例或無(默認)

確定數據集創建的隨機數生成。傳遞 int 以獲得跨多個函數調用的可重現輸出。請參閱詞匯表。

order: str, optional (default=’F’)

生成樣本的順序

dtypestr,可選(默認='float32')

生成樣本的 Dtype

_centroids: array of centroids of shape (n_clusters, n_informative)
_informative_covariance: array for covariance between informative features

形狀(n_clusters,n_informative,n_informative)

_redundant_covariance: array for covariance between redundant features

形狀(n_informative,n_redundant)

_repeated_indices: array of indices for the repeated features

形狀 (n_repeated, )

返回

X形狀為 [n_samples, n_features] 的設備數組

生成的樣本。

y形狀為 [n_samples] 的設備數組

每個樣本的類別成員的整數標簽。

注意

該算法改編自 Guyon [1],旨在生成 “Madelon” 數據集。我們如何針對 GPU 進行優化:

  1. 首先,我們從標準單變量而不是零生成 X。這節省了內存,因為我們不需要每次為每個要素類(信息性、重複性等)生成單變量,同時還提供了在 GPU 上生成大矩陣的額外加速

  2. 我們生成order=F 構造。我們利用 X 是從單變量法線生成的事實,並且通過矩陣乘法引入協方差。這意味著,我們可以將 X 生成為一維數組,然後將其重塑為所需的順序,這隻會更新元數據並消除副本

  3. 最後,我們還按構造進行洗牌。對每個樣本的質心 index 進行置換,然後我們為每個質心構建數據。此 shuffle 適用於 order=Corder=F 並且無需輔助副本

參考

1

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

例子

from cuml.datasets.classification import make_classification

X, y = make_classification(n_samples=10, n_features=4,
                           n_informative=2, n_classes=2)

print("X:")
print(X)

print("y:")
print(y)

輸出:

X:
[[-2.3249989  -0.8679415  -1.1511791   1.3525577 ]
[ 2.2933831   1.3743551   0.63128835 -0.84648645]
[ 1.6361488  -1.3233329   0.807027   -0.894092  ]
[-1.0093077  -0.9990691  -0.00808992  0.00950443]
[ 0.99803793  2.068382    0.49570698 -0.8462848 ]
[-1.2750955  -0.9725835  -0.2390058   0.28081596]
[-1.3635055  -0.9637669  -0.31582272  0.37106958]
[ 1.1893625   2.227583    0.48750278 -0.8737561 ]
[-0.05753583 -1.0939395   0.8188342  -0.9620734 ]
[ 0.47910076  0.7648213  -0.17165393  0.26144698]]

y:
[0 1 0 0 1 0 0 1 0 1]

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cuml.datasets.make_classification。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。