网站如何做伪静态页面,做云教育集群网站,专做立体化的网站,本地化吃喝玩乐平台网站可以做吗目录
一、向量化
二#xff1a;向量化逻辑回归
三、Python中的广播 一、向量化
向量化#xff08;Vectorization#xff09;是一种优化技术#xff0c;可以在机器学习和数值计算中加快代码的执行速度。它的核心思想是使用矩阵和向量运算#xff0c;而不是显式地循环处…目录
一、向量化
二向量化逻辑回归
三、Python中的广播 一、向量化
向量化Vectorization是一种优化技术可以在机器学习和数值计算中加快代码的执行速度。它的核心思想是使用矩阵和向量运算而不是显式地循环处理每个元素。
在传统的循环实现中我们需要通过迭代逐个处理数组或矩阵中的元素。这种方式可能会导致代码运行缓慢特别是在处理大规模数据时。而向量化技术能够将循环操作转化为对整个数组或矩阵进行并行运算从而提高计算效率。
在Python和NumPy等科学计算库中广泛使用向量化来进行数值计算和线性代数操作。以下是几个常见的向量化示例
1. 广播Broadcasting当两个形状不同的数组进行运算时NumPy通过自动复制元素来匹配数组形状从而避免了显式的循环。例如可以直接对一个数组与一个标量相加而无需显式地遍历数组的每个元素。
2. 矩阵运算使用向量化代码可以一次性对整个矩阵或多个矩阵进行运算如矩阵乘法、矩阵转置、矩阵求逆等。这种方式比逐个元素进行循环运算更高效。
3. 数组函数NumPy提供了许多针对整个数组或矩阵的函数例如求和、均值、标准差等。这些函数能够直接对整个数组进行操作而不需要显式地使用循环。
通过向量化技术可以简化代码实现并且利用底层库的优化提高计算效率。在机器学习中向量化通常用于加速模型的训练和推理过程特别是在处理大规模数据时能带来明显的性能提升。因此合理地应用向量化技术可以提高程序的执行效率和可读性。
二向量化逻辑回归
向量化逻辑回归Vectorized Logistic Regression是将逻辑回归算法中的计算过程通过向量和矩阵运算进行优化以提高代码的执行效率。
在传统的逻辑回归实现中我们需要对每个样本逐个计算预测值和梯度并进行循环迭代更新模型参数。而向量化技术可以将这些计算过程转化为对整个训练集的矩阵和向量操作从而实现并行加速。
以下是向量化逻辑回归的详细说明
1. 初始化参数首先我们初始化权重向量w和偏置b。
2. 计算线性输出使用矩阵乘法运算将输入特征矩阵X与权重向量w相乘并加上偏置b得到线性输出z。其中X的形状为(m, n)m为样本数量n为特征数量。
z X * w b
3. 计算sigmoid函数应用sigmoid函数将线性输出z映射到0和1之间的概率值表示为属于正类的概率。
y_hat 1 / (1 exp(-z))
4. 计算损失函数使用交叉熵损失函数衡量预测结果与真实标签之间的差异。
loss - (1/m) * (y * log(y_hat) (1-y) * log(1-y_hat))
其中y是真实标签向量y_hat是预测概率向量。
5. 计算梯度通过对损失函数求导计算权重向量w和偏置b的梯度。
dw (1/m) * X.T * (y_hat - y)
db (1/m) * sum(y_hat - y)
其中X.T表示X的转置sum表示求和。
6. 更新参数使用学习率learning rate将梯度乘以负一并加到原来的参数上更新权重向量w和偏置b。
w w - learning_rate * dw
b b - learning_rate * db
7. 重复步骤2到步骤6多次迭代更新参数直到达到停止条件如达到最大迭代次数或损失函数变化小于阈值。
三、Python中的广播
在Python的NumPy库中广播Broadcasting是一种强大的机制用于处理不同形状的数组之间的运算。它允许在不显示复制数据的情况下对具有不同形状的数组进行元素级别的操作。
广播的原理是通过自动复制数组的值来匹配形状使得两个数组具有兼容的形状从而可以进行相应的运算。这样我们可以避免显式地编写循环来处理每个元素而是直接对整个数组进行运算提高了代码的效率和可读性。
以下是一些常见的广播操作示例
1. 标量和数组的广播可以将一个标量单个值与一个数组相加、相乘等。在广播过程中标量会被自动扩展成与数组形状相同并且复制到每个对应位置上。
import numpy as npa np.array([1, 2, 3])b 2c a b # [3, 4, 5]
2. 行向量和列向量的广播可以对形状不同的行向量和列向量进行运算。在广播过程中行向量会被自动复制为多行列向量会被自动复制为多列以匹配另一个操作数的形状。
import numpy as npa np.array([[1, 2, 3]]) # 行向量b np.array([[4], [5], [6]]) # 列向量c a b[[5, 6, 7],[6, 7, 8],[7, 8, 9]
3. 形状不同的数组广播可以对具有不同形状的数组进行元素级别的运算。在广播过程中NumPy会自动复制或调整数组的形状使得它们的形状兼容。
import numpy as npa np.array([[1, 2, 3]]) # 形状为(1, 3)的数组b np.array([4, 5, 6]) # 形状为(3,)的数组c a b[[5, 7, 9]]
需要注意的是在广播操作中数组的形状必须满足一定的条件才能进行广播。通常广播操作要求两个数组的维度相等或其中一个数组的维度为1。如果无法满足这些条件将会引发广播错误。
广播机制在编写简洁高效的代码时非常有用能够避免显式地编写循环提高代码的可读性和执行效率。在进行数组运算时要充分利用广播特性以更方便地处理不同形状的数组。