想要理解逻辑回归算法中的数组维度

计算科学 机器学习
2021-12-18 08:23:10

我正在尝试在 python 中从头开始实现一个简单的逻辑回归算法(用于学习目的)。到目前为止,我在网上看到的每篇文章都呈现以下表达式z(sigmoid 函数的参数):

z=θTx

然而,当他们在代码中实现它时,他们总是使用np.dot(X, theta)不同的东西。我已经仔细尝试跟踪所有数组的维度,如下所示:

点积属性:θTx=xTθ

  • x有维度l×(d+1)在哪里l是记录数和d+1特征的数量(包括x0个向量)。

  • θ是维度1×(d+1)(中的每一列x得到一个权重,包括那些向量)。

  • z是的点积θTx,它将有尺寸((d+1)×1)(l×1)=??-->不工作

似乎没有办法安排最后一条语句,使其在数学上保持正确并产生一个维度数组l×1要么1×l没有从根本上改变:

  • 的形状x
  • 方程本身(就像他们在代码中所做的那样)

那么哪个是正确的?代码还是数学语句?为什么它们是矛盾的?请帮忙。谢谢。

1个回答

他们使用一次调用对每条记录进行点积np.dot(.,.)他们这样做是为了利用对整个数据集的快速 numpy 操作,而不是让你循环计算z使用显式 Python 代码分别为每个记录。他们基本上是在说X=[x1,x2,,xn]T和做Z=Xθ这样Z=[z1,,zn]Tzk=θTxk.