这是我必须均匀地随机选择30个数据点的代码。让我感到困惑的部分是为什么我们要检查if random.random() <= p
?谁能解释?
from sklearn import datasets
import random
iris = datasets.load_iris()
d = iris.data
# sample 30 points uniform randomly from 150 points dataset
n = 150
m = 30
p = m/n
lst = []
for i in range(0, n):
if random.random() <= p:
lst.append(d[i,:])
答案 0 :(得分:3)
所以p
代表元素被选中的概率。
由于共有150
个元素,并且需要选择30
个元素,因此选择一个元素的概率为30/150
。设置为p
。
然后迭代每个元素,并且如果random.random()
(在0
和1
之间)的结果大于p
,则该元素被选中(我假设这个;我不完全了解您的数据集。
平均而言,这应该包含约30
个元素。