sample_without_replacement#
- sklearn.utils.random.sample_without_replacement(n_population, n_samples, method='auto', random_state=None)#
不放回地抽取整数样本。
从集合 [0, n_population) 中选择 n_samples 个不重复的整数。
- 参数:
- n_populationint
要从中抽样的集合的大小。
- n_samplesint
要抽样的整数个数。
- random_stateint, RandomState instance or 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 之间,则使用跟踪选择(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,则水塘抽样方法更快。
- 返回:
- outndarray of shape (n_samples,)
抽样的整数子集。所选整数的子集可能不是随机化的,请参阅 method 参数。
示例
>>> from sklearn.utils.random import sample_without_replacement >>> sample_without_replacement(10, 5, random_state=42) array([8, 1, 5, 0, 7])