numpy.random.rand(len(df))
случайным образом генерирует len(df)
числа из равномерного (0, 1) распределения, а не из нормального распределения!
Кроме этого, вы в значительной степени получили его.
msk
- логический массив, где msk[i]
равно True
, если i-е значение, случайно сгенерированное np.random.rand
, меньше 0.8
.msk[i]
равно False
, если i-е значение, сгенерированное np.random.rand
, больше или равно 0.8
.
Если вам все еще трудно понять это, я бы рекомендовал сначала создатьслучайные числа rands = np.random.rand(len(df))
и, взглянув на них, затем создадим маску msk = rands < 0.8
.Сравнивая rands
и msk
, вы должны четко видеть их соотношение.
~msk
переворачивает True
на False
и наоборот, так что да, значения cdf
гдеmsk
is True
назначены массиву train
, а значения, где msk
False, присвоены test
.
При такой настройке вы ожидаете около 80% ваших данных, cdf
, содержится в train
, а остальные ~ 20% содержатся в test
.