to avoid side-effects in case of inplace modifications of the input. Then, if `fit_intercept=True` this preprocessing centers both `X` and `y` as follows: - if `X` is dense, center the data and store the mean vector in `X_offset`. - if `X` is sparse, store the mean in `X_offset` without centering `X`. The centering is expected to be handled by the linear solver where appropriate. - in either case, always center `y` and store the mean in `y_offset`. - both `X_offset` and `y_offset` are always weighted by `sample_weight` if not set to `None`. If `fit_intercept=False`, no centering is performed and `X_offset`, `y_offset` are set to zero. Returns ------- X_out : {ndarray, sparse matrix} of shape (n_samples, n_features) If copy=True a copy of the input X is triggered, otherwise operations are inplace. If input X is dense, then X_out is centered. y_out : {ndarray, sparse matrix} of shape (n_samples,) or (n_samples, n_targets) Centered version of y. Possibly performed inplace on input y depending on the copy_y parameter. X_offset : ndarray of shape (n_features,) The mean per column of input X. y_offset : float or ndarray of shape (n_features,) X_scale : ndarray of shape (n_features,) Always an array of ones. TODO: refactor the code base to make it possible to remove this unused variable. NÚ