我正在尝试理解这行代码:
msk = np.random.rand(len(df)) < 0.8据我所知,numpy.random.rand(len(df))返回一个介于[0,1)之间的数组,该数组是从均匀分布中生成的。
数组中的每个数字代表什么?值是数据的百分位数吗?
这样做之后,我们得到布尔对象的数组,然后创建训练,测试集。
train = cdf[msk]
test = cdf[~msk]在这段代码中,对于cdf中的每一列,它是否与数组msk中的每个布尔对象相匹配,如果是True,则获取该行并将其放入train中?如果False到test集合中呢?
我想知道我的理解是否正确
发布于 2019-02-22 00:29:34
np.random.rand(len(df))从均匀(0,1)分布中随机采样len(df)浮点数。从该分布中采样会生成0到1之间的数字。
msk是一个布尔数组。
如果msk[i]随机生成的i-th值小于(<) np.random.rand,则0.8为0.8。
如果msk[i]随机生成的i-th值大于或等于( np.random.rand ) 0.8,则np.random.rand为0.8。
~msk将True翻转为False,将False翻转为True。这样,将msk为True的cdf的值赋给数组train,将msk为False的cdf的值赋给test。
使用这种设置,您预计大约80%的cdf将被分区到train中,其余的大约20%将被分区到test中。
https://stackoverflow.com/questions/54811762
复制相似问题