gpt4 book ai didi

python - 在 numpy 中实现零均值和单位方差

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:14 26 4
gpt4 key购买 nike

我得到了一个函数的定义,并要求我按如下方式实现它:

# Problem 1 - Apply zero mean and zero variance scale to the image features
def normalize(data):
pass

然后提供使用 numpy 的单元测试,这将断言我的实现成功

编辑

不是我的单元测试,而是由类(class)的讲师布置的。

np.testing.assert_array_almost_equal(
normalize(np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])),
np.array([-0.4, -0.3, -0.2, -0.099, 0.0, 0.099, 0.199, 0.3, 0.4, 0.5]),
decimal=3)

我的解决方案是

def normalize(data):
return ((data - data.mean()) / data.max() - data.min())

但是我的理解肯定有差距,因为我越来越

AssertionError: 
Arrays are not almost equal to 3 decimals

(mismatch 100.0%)
x: array([-1.45, -1.35, -1.25, -1.15, -1.05, -0.95, -0.85, -0.75, -0.65, -0.55])
y: array([-0.4 , -0.3 , -0.2 , -0.099, 0. , 0.099, 0.199, 0.3 ,
0.4 , 0.5 ])

通过谷歌搜索我也找到了

(data - data.mean()) / data.std()

经过更多的搜索我尝试了

(data - data.mean()) / data.var()

但是这两种解决方案都断言不正确。

那么这里的正确实现是什么?

最佳答案

首先你可能打算这样做:

(data - data.mean()) / (data.max() - data.min())

而不是这个:

((data - data.mean()) / data.max() - data.min())

那么它就不是规范化的正确定义。相反,正如您通过搜索发现的那样,正确的定义是:

(data - data.mean()) / data.std()

最后你的单元测试是错误的,所以当用正确的定义调用时它失败了。

关于python - 在 numpy 中实现零均值和单位方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40188922/

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