如何对NumPy数组进行标准化处理,使其数值范围正好在0和1之间

如何对NumPy数组进行标准化处理,使其数值范围正好在0和1之间

在这篇文章中,我们将介绍如何对NumPy数组进行规范化处理,使其数值正好在0和1之间。

对数据进行归一化处理,使数据在所有记录中以相同的比例出现。正常化后,数据中的最小值将被正常化为0,最大值被正常化为1。所有其他的值将在0到1之间。对于以不同尺度表示的数据,归一化是必要的。因为机器学习模型可能会受到数值较高的参数的过度影响。有不同的方法来归一化数据。其中一个标准程序是最小-最大值方法。

使用最小最大值进行归一化

在这里,数据的规范化可以通过用数据中的最小值减去数据,然后用结果除以给定数据中的最大值和最小值之差来完成。

示例

NumPy数组中的最大值和最小值可以通过min()和max()来确定。使用最小-最大值进行规范化的公式如下

归一化数据= ( 数据- 最小(数据))/( 最大(数据)- 最小(数据) )

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40], 
                 [5, 15], [0, 10]])
  
normalizedData = (data-np.min(data))/(np.max(data)-np.min(data))
  
# normalized data using min max value
print(normalizedData)

输出

[[0.25  0.5  ]
[0.75  1.   ]
[0.125 0.375]
[0.    0.25 ]]

也有其他方法可以使数据正常化。它们是

  • 使用sklearn MinMaxScaler进行规范化处理
  • 使用numpy.linalg.norm进行规范化处理
  • 使用数学公式进行归一化

使用sklearn MinMaxScaler进行规范化处理

在Python中,sklearn模块提供了一个叫做MinMaxScaler的对象,它使用最小值和最大值对给定的数据进行标准化。这里fit_tranform方法使用MinMaxScaler对象在0和1之间对数据进行缩放。

# import necessary packages
import numpy as np
from sklearn import preprocessing as p
  
# create an array
data = np.array([[10, 20], [30, 40],
                 [5, 15], [0, 10]])
  
min_max_scaler = p.MinMaxScaler()
normalizedData = min_max_scaler.fit_transform(data)
  
# normalized data using MinMaxScaler
print(normalizedData)

输出

[[0.33333333 0.33333333]
 [1.         1.        ]
 [0.16666667 0.16666667]
 [0.         0.        ]]

使用numpy.linalg .norm进行归一化。

NumPy库提供了一个叫做norm的方法,它可以返回八个不同的矩阵规范中的一个,或者无数个向量规范中的一个。它完全取决于norm方法中的ord参数。默认情况下,规范考虑的是Frobenius规范。这里的数据是通过将给定的数据与norm方法返回的norm相除来实现规范化的。

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40],
                 [5, 15], [0, 10]])
  
normalizedData = data/np.linalg.norm(data)
  
# normalized data using linalg.norm
print(normalizedData)

输出

[[0.17277369 0.34554737]
 [0.51832106 0.69109474]
 [0.08638684 0.25916053]
 [0.         0.17277369]]

使用数学公式进行归一化

在这里,通过用给定数据的平方根之和对数据进行归一化处理。为了实现这一点,需要一个简单的NumPy库,它提供了平方根和总和的方法,有助于减少代码行。下面是使用数据的平方之和对数据进行标准化的代码

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40], 
                 [5, 15], [0, 10]])
  
normalizedData = data/np.sqrt(np.sum(data**2))
  
# normalized data using sum of squares
print(normalizedData)

输出

[[0.17277369 0.34554737]
 [0.51832106 0.69109474]
 [0.08638684 0.25916053]
 [0.         0.17277369]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 数学函数