我试着理解这行代码:
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
呢?
我想知道我的理解是否正确
2条答案
按热度按时间toiithl61#
np.random.rand(len(df))
从均匀(0,1)分布中随机采样len(df)
浮点数。从该分布中采样生成0到1之间的数字。msk
是一个布尔数组。如果
np.random.rand
随机生成的第i
个值小于(<)0.8
,则msk[i]
为True
。如果
np.random.rand
随机生成的第i
个值大于或等于(>=)0.8
,则msk[i]
为False
。~msk
将True
翻转为False
,将False
翻转为True
。这样,cdf
的值(其中msk
是True
)被分配给数组train
,cdf
的值(其中msk
是False
)被分配给test
。通过这种设置,您可以预期大约80%的
cdf
被分区到train
中,剩余的约20%被分区到test
中。pgpifvop2#
np.random.rand(len(df))
=>总之,上面的代码行只是一个选择标准生成器,其中df的长度用于生成0和1之间的随机值。msk = np.random.rand(len(df)) < 0.8
=>msk
返回一个布尔数组,其中小于0.8的随机值为true,反之亦然。train = cdf[msk]
=>这将返回cdf Dataframe 索引,其中msk
值为True,test = cdf[~msk]
=>这将返回cdf Dataframe 索引,其中msk
值为False,因此将 Dataframe cdf分为训练数据(80%)和测试数据(20%)enter image description here