如何将 NumPy 数组标准化为单位向量?

Numpy 或数值 python 是一种免费的软件工具,可以使 Python 中的科学计算变得容易。它是一个非常强大的Python库,提供了大量用于数组操作的函数。它包含用于数组操作的逻辑、线性代数和数学函数。

numpy 数组是一个类似矩阵的对象,包含相同类型的对象,可以使用方括号(如列表)来实现。它是一种有序数据类型,因为它由一个不可变的元组对象索引,该对象为我们提供了数组的大小或维数。

为什么我们需要数组标准化?

数组标准化有助于轻松比较两个不同大小的数组。在机器学习中,当值较小时,训练算法的学习速度会更快。当不同变量的大小不同且值出现分歧时,通过对值进行归一化以使它们收敛来训练模型会更容易。

这就是为什么将数组标准化为单位向量在数据科学和人工智能模型训练中非常有用。

Numpy 数组的属性

NumPy 数组有许多特定于此数据类型的属性。其中一些是:

  • 与结构与数组非常相似的 Python 列表不同,Numpy 数组具有固定大小。
  • numpy 数组中所有变量的数据类型必须相同。
  • 使用 NumPy 数组可以处理大量数据。
  • 有许多 NumPy 函数可用于涉及复杂 NumPy 数组的科学计算。

在处理这种数据类型时,必须牢记 numpy 数组的这些属性。要了解有关 numpy 数组的更多信息,请访问官方文档

将 numpy 数组标准化为单位向量的方法。

我们可以通过三种方式轻松地将 numpy 数组标准化为单位向量。他们是:

  • 使用该numpy.linalg.norm() 功能。
  • 使用该scipy.linalg.norm()功能。
  • 使用scikit-learn图书馆。

让我们分别探讨每种方法。

功能numpy.linalg.norm()_

该 numpy 函数根据矩阵的顺序返回七个不同的矩阵范数之一。

该函数的语法如下:linalg.norm(M, ord=None, axis=None, keepdims=False)

这里,M是输入矩阵,ord参数表示矩阵的阶。当轴设置为确定值时,它返回沿该轴的范数。keepdims 参数指定向量范数的维度。该函数返回 N,它是 afloat或 an,ndarray具体取决于 ord 函数。要访问官方文档,请单击此处。

该功能可以通过以下方式实现:

#importing required modules
import numpy as np
from numpy import linalg as LA
#creating the matrix
M = np.arange(9) - 1
#reshaping the matrix
M=M.reshape((3,3))
#display the original matrix
print("original matrix=",M)
#calculating the norm of the matrix
N=LA.norm(M)
#displaying the result
print("the matrix norm is=",N)

上述代码的输出将是:

original matrix= [[-1  0  1]
 [ 2  3  4]
 [ 5  6  7]]
the matrix norm is= 11.874342087037917

另请阅读:numpy.linalg.norm() 函数

Numpy Linalg Norm()

功能scipy.linalg.norm()_

该函数的语法是scipy.linalg.norm(M, ord=None, axis=None, keepdims=False, check_finite=True)

该函数与上图所示的函数类似numpy.linalg.norm()参数和输入都是相同的,只是添加了一个名为 的参数,check_finite该参数检查矩阵中的所有数字是否是有限的。

该函数还返回 N,它是 afloat或 an,ndarray具体取决于输入矩阵的维度。让我们看看它的实现。

#importing required modules
import numpy as np
from scipy.linalg import norm
#creating the matrix
M = np.arange(9) - 2
#reshaping the matrix
M=M.reshape((3,3))
#display the original matrix
print("original matrix=",M)
#calculating the norm of the matrix
N=norm(M)
#displaying the result
print("the matrix norm is=",N)

输出将是:

original matrix= [[-2 -1  0]
 [ 1  2  3]
 [ 4  5  6]]
the matrix norm is= 9.797958971132712
Scipy Linalg Norm()

要了解更多信息scipy.linalg.norm,请访问官方文档

使用 scikit-learn 库。

该函数还将矩阵缩放为单位向量。该函数看起来像这样:sklearn.preprocessing.normalize(M, norm='l2', *, axis=1, copy=True, return_norm=False)

这里,就像前面的例子一样,第一个参数M是输入矩阵。默认情况下,norm 参数设置为 12,这意味着如果将归一化向量相加,则结果将不等于 1。它可以采用另外两个值,即 l1 和 max。

axis 参数定义要进行标准化的轴。copy 参数用于从输入矩阵中删除副本。最后一个参数返回所有计算的范数。该函数返回 N、一个 float 或一个 ndarray,它是标准化向量。

我们看一下这个功能的实现代码:

#importing required modules
import numpy as np
from sklearn.preprocessing import normalize
#creating the matrix
M = np.arange(9) - 5
#reshaping the matrix
M=M.reshape((3,3))
#display the original matrix
print("original matrix=",M)
#calculating the norm of the matrix
N=normalize(M)
#displaying the result
print("the matrix norm is=",N)

上述代码的输出将是:

original matrix= [[-5 -4 -3]
 [-2 -1  0]
 [ 1  2  3]]
the matrix norm is= [[-0.70710678 -0.56568542 -0.42426407]
 [-0.89442719 -0.4472136   0.        ]
 [ 0.26726124  0.53452248  0.80178373]]
Scikit Learn 标准化。

另请阅读:Python 中的机器学习 – 初学者的简单指南

概括

本文介绍了如何通过归一化的方法,轻松地将一个巨大的矩阵归一化为所需的单位向量。处理大量不同数据时,标准化是一个重要的过程。矩阵的归一化是在模型训练和机器学习算法中完成的,以加快学习速度。可以使用三种方法来标准化矩阵,上面详细描述了这些方法。您可以了解矩阵归一化的数学方面