sklearn.preprocessing.StandardScaler() needs a degrees of freedom tunable parameter for scale_

### Describe the workflow you want to enable

I'm scaling a dataset using the standard procedure.

```
from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
sc.fit(data)
sc.transform(data)
```

I'm comparing the results I get with the results from the R function `scale()`. They are subtly different. Tracking down the difference, it turns out sklearn uses a different definition for the standard deviation, one that differs from R in the degrees of freedom assumed. sklearn assumes ddof=0, while R assumes ddof=1.

https://stackoverflow.com/questions/27296387/difference-between-r-scale-and-sklearn-preprocessing-scale/72758497

I do not wish to debate which approach is "more correct". I am fine with sklearn continuing with the current approach as the default. I only want to suggest that, for those who think the slight DoF correction is necessary, `StandardScaler()` should provide an option to tune the degrees of freedom, either in the initial `StandardScaler()` call, or later in the `fit()` call, or wherever it is deemed more appropriate.

### Describe your proposed solution

Basically, leave the default as-is. Introduce a new parameter, let's call it `ddof`, with a default value of 0, but allow the user to specify a different value for it if they need it.

Or have a boolean switch, by default False, which when True enables the Bessel correction, which is the same as using N-1 instead of N for the standard deviation.

I do not know enough about the sklearn internals to judge which solution is better.

### Describe alternatives you've considered, if relevant

This workaround forces `StandardScaler()` to use ddof=1, but it's an extra step and it computes the STD twice. With large datasets, that would slow down the computation and it's wasteful.

```
from sklearn.preprocessing import StandardScaler
import numpy as np

sc = StandardScaler()
sc.fit(data)
sc.scale_ = np.std(data, axis=0, ddof=1).to_list()
sc.transform(data)
```

### Additional context

https://en.wikipedia.org/wiki/Bessel%27s_correction

COMMENT:
A feature that does not bring a significant improvement to usecases should be left out of scikit-learn: it brings complexity (more branching to read, a greater combinatorial to test)

On Jun 30, 2022, 22:30, at 22:30, Diadochokinetic ***@***.***> wrote:
>> @GaelVaroquaux @agramfort do you think this is useful ?
>> No, I don't think so. It amounts to changing the features' scale by a
>value close to 1 and the same for all features. It will have very
>little importance for machine learning.
>
>>From a practical ML engineer view, I agree. ddof has very little
>impact on the results of a ML pipeline. But I do understand that some
>people want/need that behavior for research purposes. I don't mind
>spending some time on it, it's a fun task.
>
>-- 
>Reply to this email directly or view it on GitHub:
>https://github.com/scikit-learn/scikit-learn/issues/23758#issuecomment-1171646833
>You are receiving this because you were mentioned.
>
>Message ID:
***@***.***>

Labels: New Feature, module:preprocessing, Needs Decision - Include Feature