X.shape[0] => n_samples