sample_without_replacement#

sklearn.utils.random.sample_without_replacement(n_population, n_samples, method='auto', random_state=None)#

不重复地抽样整数。

从集合 [0, n_population) 中不重复地选择 n_samples 个整数。

参数:
n_population整型

要从中抽样的集合的大小。

n_samples整型

要抽样的整数数量。

random_state整型、RandomState 实例或 None,默认为 None

如果为整型,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。

method{“auto”, “tracking_selection”, “reservoir_sampling”, “pool”},默认为 'auto'

如果 method == “auto”,则使用 n_samples / n_population 的比率来确定使用哪种算法:如果比率在 0 到 0.01 之间,则使用 tracking selection。如果比率在 0.01 到 0.99 之间,则使用 numpy.random.permutation。如果比率大于 0.99,则使用 reservoir sampling。所选整数的顺序是未定义的。如果需要随机顺序,应将所选子集打乱。

如果 method ==“tracking_selection”,则使用基于集合的实现,适用于 n_samples 远小于 n_population 的情况。

如果 method == “reservoir_sampling”,则使用水塘抽样算法,适用于内存限制较高或当 O(n_samples) ~ O(n_population) 的情况。所选整数的顺序是未定义的。如果需要随机顺序,应将所选子集打乱。

如果 method == “pool”,基于池的算法特别快,甚至比跟踪选择方法更快。然而,必须初始化一个包含整个总体的向量。如果 n_samples ~ n_population,水塘抽样方法更快。

返回:
out形状为 (n_samples,) 的 ndarray

抽样得到的整数子集。所选整数的子集可能不是随机的,请参阅 method 参数。

示例

>>> from sklearn.utils.random import sample_without_replacement
>>> sample_without_replacement(10, 5, random_state=42)
array([8, 1, 5, 0, 7])