1import numpy as np
2np.random.seed(42)
3X = np.random.randn(100, 4) # 100 samples, 4 features
4y = (X[:, 0] > 0).astype(int) # binary labels
5
6# Normalise: z-score per feature column
7X_norm = (X - X.mean(axis=0)) / X.std(axis=0)
8
9# Manual 80/20 train-test split via slicing
10X_train, X_test = X_norm[:80], X_norm[80:]
11y_train, y_test = y[:80], y[80:]
12
13# Per-class statistics via boolean indexing
14print("Class 0 mean:", X_norm[y==0].mean(axis=0).round(3))
15print("Class 1 mean:", X_norm[y==1].mean(axis=0).round(3))
16print("Train shape:", X_train.shape)