【问题标题】:How .scale_ is calculated by sklearn in python? (What is it's algorithm exactly?)python中的sklearn如何计算.scale_? (它到底是什么算法?)
【发布时间】:2023-03-19 09:59:01
【问题描述】:

请假设我们有一个这样的数组:

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

我们通过此代码使用存在于sklearn 中的.scale_ 对其进行缩放:

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])正常 类型,但我不知道它是如何标准化的。 请帮我找到它。

【问题讨论】:

    标签: python-3.x scikit-learn normalization iqr standardization


    【解决方案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_)
    

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 2014-04-13
      • 2016-03-08
      • 2015-06-11
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2019-02-14
      相关资源
      最近更新 更多