有人可以验证我在numpy.random.rand中对此代码的理解吗?

问题描述 投票:-1回答:1

我试图理解这行代码。哪个试图生成测试/训练集。

msk = np.random.rand(len(df)) < 0.8

根据我的理解,numpy.random.rand(len(df))返回[0,1]均匀分布和满足<0.8之间的数字数组。

每个数字在数组中代表什么?例如:0.001。 0.888,他们是数据的百分位?所以0.001 =>这个数据低于数据集的0.001%?

在这之后,我们得到一组布尔对象,然后创建训练集,测试集。 cdf是一个更简单的数据帧。

train = cdf[msk]
test = cdf[~msk]

在这段代码中,对于cdf中的每一列,它是否匹配数组msk中的每个布尔对象,如果它是True,它是否需要该行并将其放入训练集中?如果错误进入测试集?

我想知道我的理解是否正确。谢谢。

python numpy
1个回答
2
投票

numpy.random.rand(len(df))从统一(0,1)分布中随机生成len(df)数,而不是从正态分布中生成!

除此之外,你已经得到了它。

msk是一个布尔数组,如果由msk[i]随机生成的第i个值小于True,则np.random.rand0.8。如果msk[i]生成的第i个值大于或等于False,则np.random.rand0.8

如果你仍然在努力理解这一点,我建议先创建你的随机数字rands = np.random.rand(len(df))并查看它们,然后创建面具msk = rands < 0.8。比较randsmsk你应该能够清楚地看到他们的关系。

~mskTrue翻转到False,反之亦然,所以是的,cdf mskTrue的值被赋予数组train,而msk的值被赋予test

通过这种设置,您可以预期大约80%的数据cdf包含在train中,其余约20%包含在test中。

© www.soinside.com 2019 - 2024. All rights reserved.