gpt4 book ai didi

python - StandardScaler 无法正确缩放

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:52 24 4
gpt4 key购买 nike

我正在尝试使用 StandardScaler 来缩放神经网络的特征。

假设神经网络具有以下特征:

1.0  2.0   3.0
4.0 5.0 6.0
4.0 11.0 12.0
etc ...

当我将 StandardScaler 应用于整个事物(所有行)时,第一行得到以下结果:

['-0.920854068785', '-0.88080603151', '-0.571888559111']

当我尝试仅将 StandardScaler 应用于第一行(仅由第一行组成的矩阵)时,我得到完全不同的结果。

['0.0', '0.0', '0.0']

显然神经网络不会以这种方式工作,因为行不相同。有什么方法可以在某种程度上使用 Standard scaller,以便每次针对相同的输入(行)得到相同的结果?

这是代码和输出:

from sklearn.preprocessing import StandardScaler
import numpy as np
sc = StandardScaler()

#defining the (big) matrix
AR = np.array([[1.0,2.0,3.0],[4.0,5.0,6.0],[4.0,11.0,12.0],[42.0,131.0,1121.0],[41.0,111.0,121.0]])
AR = sc.fit_transform(AR)
print "fited data from big array:"
m=0
for row in AR:
m = m + 1
if m==1:print [str(m) for m in row]

#defining the (small) matrix
AR1 = np.array([[1.0,2.0,3.0]])
AR1 = sc.fit_transform(AR1)
print "fited data from small array"
for row in AR1:
print [str(m) for m in row]

输出是:

fited data from big array:
['-0.920854068785', '-0.88080603151', '-0.571888559111']
fited data from small array
['0.0', '0.0', '0.0']

最佳答案

StandardScaler 将按mean 移动数据并按std 缩放数据,因为您只向它传递一行,即每一列的平均值是值(value)本身,值(value)将被转移到零。查看更多here .

>>> sc = StandardScaler()
>>> arr = np.array([[1.0,2.0,3.0]])
>>> sc.fit(arr)

>>> sc.mean_, sc.scale_
array([ 1., 2., 3.]), array([ 1., 1., 1.]))

在您的情况下,您应该使缩放器适合所有数据,并且对于每一行,您可以使用transform 来获得结果。

sc.fit(data) # this will compute mean and std on all rows
scaled_row = sc.transform(row) # apply shift to a single row

关于python - StandardScaler 无法正确缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48236866/

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