Как .scale_ вычисляется sklearn в Python? (Каков именно алгоритм?)

Пожалуйста, предположим, что у нас есть такой массив:

import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])

Мы масштабируем это с помощью .scale_ существовал в sklearn по этому коду:

from sklearn import preprocessing
scaler = preprocessing.StandardScaler().fit(X_train)
scaler.scale_

и был показан такой результат:

array([0.81649658, 0.81649658, 1.24721913])

Вы знаете, как это было рассчитано? Если знаете, напишите, пожалуйста, его формулу, что как она рассчитывается? Я полагаю что.scale_ показывает Interquartile range (IQR), но когда я рассчитываю вручную IQR является:

array([2, 2, 3]) rather than `array([0.81649658, 0.81649658, 1.24721913])`.

Также думаю array([0.81649658, 0.81649658, 1.24721913])это нормальный типarray([2, 2, 3]), но я не знаю, как это было нормализовано. Пожалуйста, помогите мне его найти.

1 ответ

Решение

Три основных статистических показателя: среднее значение, дисперсия и стандартное отклонение рассчитываются с помощью

mean = preprocessing.StandardScaler().fit(X_train).mean_ 
variance = preprocessing.StandardScaler().fit(X_train).var_
Standard_deviation = preprocessing.StandardScaler().fit(X_train).scale_

по вопросу:

X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])

mean = preprocessing.StandardScaler().fit(X_train).mean_ 
print(mean)
array([1.        , 0.        , 0.33333333])

variance = preprocessing.StandardScaler().fit(X_train).var_
print(variance )
array([0.66666667, 0.66666667, 1.55555556])

Standard_deviation = preprocessing.StandardScaler().fit(X_train).scale_
print(Standard_deviation )
array([0.81649658, 0.81649658, 1.24721913])

другими словами:

scaler.scale_ = np.sqrt(scaler.var_)
Другие вопросы по тегам