gpt4 book ai didi

scikit-learn - scikit learn中MinMaxScaler中属性min_的含义

转载 作者:行者123 更新时间:2023-12-05 04:02:09 29 4
gpt4 key购买 nike

来自文档:

sklearn.preprocessing.MinMaxScaler.min_ : ndarray, shape (n_features,) Per feature adjustment for minimum.

我不明白这是什么意思,也找不到其他更好的解释。

from sklearn import preprocessing
import numpy as np

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

scaler = preprocessing.MinMaxScaler().fit(x_test)

print(scaler.min_)

哪些输出:

[0.         0.5        0.33333333]

所以它不仅仅是数据中观察到的最小值(实际上是 data_min_)。这个 min_ 属性代表什么?

最佳答案

您可以在以下站点找到有关 MinMaxScaler 工作原理的很好的解释:http://benalexkeen.com/feature-scaling-with-scikit-learn/#Min-Max-Scaler

enter image description here

在 scikit-learn 中,您可以:

import numpy as np
from sklearn import preprocessing

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

print(x)
# [[ 1. -1. 2.]
# [ 2. 0. 0.]
# [ 0. 1. -1.]]

scaler = preprocessing.MinMaxScaler().fit(x)
x_transformed = scaler.transform(x)

print(x_transformed)
# [[0.5 0. 1. ]
# [1. 0.5 0.33333333]
# [0. 1. 0. ]]

MinMaxScaler 的拟合实例在内部保存均值:

# [[ 1. -1.  2.]
# [ 2. 0. 0.]
# [ 0. 1. -1.]]

print(scaler.data_min_)
# [ 0. -1. -1.]

print(scaler.data_max_)
# [ 2. 1. 2.]

或者,您可以使用 numpy 计算和缩放每个值:

x_plain_np = np.apply_along_axis(lambda col: (col- np.min(col)) / (np.max(col) - np.min(col)), 0, x)

print(x_plain_np)
# [[0.5 0. 1. ]
# [1. 0.5 0.33333333]
# [0. 1. 0. ]]

这是关于self.min_的所有内容:

data_range = data_max - data_min
self.scale_ = ((feature_range[1] - feature_range[0]) /
_handle_zeros_in_scale(data_range))
self.min_ = feature_range[0] - data_min * self.scale_

(0, 1)feature_range 的默认值。在您的示例中,我们可以重现每个步骤:

第 1 步:计算 data_range:

data_range = scaler.data_max_ - scaler.data_min_
print(data_range) # [2. 2. 3.]

第二:计算scale_:

scale_ = ((scaler.feature_range[1] - scaler.feature_range[0]) / # 1 - 0
preprocessing.data._handle_zeros_in_scale(data_range)) # we have no zeros
print(scale_) # [0.5 0.5 0.33333333]

第三:计算min_:

min_ = scaler.feature_range[0] - scaler.data_min_ * scale_
print(min_) # [0. 0.5 0.33333333]

我们的结果与内部结果相符:

print(min_)         # [0.         0.5        0.33333333]
print(scaler.min_) # [0. 0.5 0.33333333]

最后我们可以使用scale_min_ 来转换我们的数据:

x *= self.scale_
x += self.min_

关于scikit-learn - scikit learn中MinMaxScaler中属性min_的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714960/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com