Why using numpy.random.seed():
np.random.seed(40)
Does not garant me always the same train/test split with np.random.rand ?
np.random.rand