Review
Core idea
Randomness should be controlled enough that an experiment can be rerun.
Random numbers
Create a generator:
rng = np.random.default_rng()
Generate integers:
rng.integers(1, 7, size=5)
Generate floats:
rng.random(5)
Seeds
A seed initializes the generator:
rng = np.random.default_rng(42)
Same seed, same sequence.
The generator state advances after each draw. Recreate a generator from the recorded seed to rerun a sequence from its beginning.
Sampling
Sample with:
rng.choice(items, size=3)
Use replace=False to sample without replacement.
Shuffling and splitting
Shuffle indices:
Use the same indices for paired arrays such as X and y.
Fit on training data and reserve test data for a final check. Repeated choices need a separate validation set.
Saving results
Save the seed, configuration values, and result:
seed: 7
trials: 100
mean: 0.48
Configuration values
Use a dataclass when settings need names:
Configuration says what to do. Result says what happened.