Как .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_)