sample_without_replacement#

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

采样整数而不进行替换。

从集合 [0, n_population) 中选择 n_samples 个整数,不进行替换。

Parameters:
n_populationint

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

n_samplesint

要采样的整数数量。

random_stateint, RandomState 实例或 None, default=None

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

method{“auto”, “tracking_selection”, “reservoir_sampling”, “pool”}, default=’auto’

如果 method == “auto”,则使用 n_samples / n_population 的比率来确定使用哪种算法: 如果比率在 0 和 0.01 之间,则使用跟踪选择。 如果比率在 0.01 和 0.99 之间,则使用 numpy.random.permutation。 如果比率大于 0.99,则使用水库采样。 所选整数的顺序未定义。如果需要随机顺序,应打乱所选子集。

如果 method == “tracking_selection”,则使用基于集合的实现,适用于 n_samples <<< n_population

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

如果 method == “pool”,则使用基于池的算法,速度特别快,甚至比跟踪选择方法更快。然而,必须初始化包含整个集合的向量。 如果 n_samples ~ n_population,则水库采样方法更快。

Returns:
outndarray of shape (n_samples,)

采样的整数子集。所选整数的子集可能未随机化,请参见 method 参数。

Examples

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