gpt4 book ai didi

python - 规范化 VS。 numpy 规范化方法?

转载 作者:太空狗 更新时间:2023-10-30 00:34:16 24 4
gpt4 key购买 nike

我应该规范化一个数组。我读过规范化并遇到了一个公式:

enter image description here

我为它写了下面的函数:

def normalize_list(list):
max_value = max(list)
min_value = min(list)
for i in range(0, len(list)):
list[i] = (list[i] - min_value) / (max_value - min_value)

这应该规范化一个元素数组。

然后我遇到了这个:https://stackoverflow.com/a/21031303/6209399这表示您可以通过简单地执行此操作来规范化数组:

def normalize_list_numpy(list):
normalized_list = list / np.linalg.norm(list)
return normalized_list

如果我用我自己的函数和 numpy 方法规范化这个测试数组 test_array = [1, 2, 3, 4, 5, 6, 7, 8, 9],我得到这些答案:

My own function: [0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]
The numpy way: [0.059234887775909233, 0.11846977555181847, 0.17770466332772769, 0.23693955110363693, 0.29617443887954614, 0.35540932665545538, 0.41464421443136462, 0.47387910220727386, 0.5331139899831830

为什么函数会给出不同的答案?还有其他方法可以规范化数据数组吗? numpy.linalg.norm(list) 做什么?我哪里错了?

最佳答案

规范化有多种类型。您正在使用最小-最大规范化。来自 scikit learn 的 min-max 归一化如下。

import numpy as np
from sklearn.preprocessing import minmax_scale

# your function
def normalize_list(list_normal):
max_value = max(list_normal)
min_value = min(list_normal)
for i in range(len(list_normal)):
list_normal[i] = (list_normal[i] - min_value) / (max_value - min_value)
return list_normal

#Scikit learn version
def normalize_list_numpy(list_numpy):
normalized_list = minmax_scale(list_numpy)
return normalized_list

test_array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
test_array_numpy = np.array(test_array)

print(normalize_list(test_array))
print(normalize_list_numpy(test_array_numpy))

输出:

[0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]    
[0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]

MinMaxscaler 完全使用您的公式进行标准化/缩放: http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.minmax_scale.html

@OuuGiii:注意:使用 Python 内置函数名称作为可变名称并不是一个好主意。 list() 是 Python 内置函数,因此应避免将其用作变量。

关于python - 规范化 VS。 numpy 规范化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915495/

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