【问题标题】:Having trouble implementing a vectorized + regularized version of logistic regressions gradient descent在实现逻辑回归梯度下降的矢量化 + 正则化版本时遇到问题
【发布时间】:2019-07-05 20:27:21
【问题描述】:

所以公式看起来像这样

我的实现看起来像这样

grad[0] = ((utils.sigmoid(X.dot(theta))-y).dot(X[:,0])).sum()
grad[1:] = ((utils.sigmoid(X.dot(theta))-y).dot(X[:,1:])).sum()
grad[1:] = grad[1:] + (lambda_*theta[1:])
grad = grad/m

但是,我得到的值有点偏(当然除了 grad[0])..

我的代码哪里出错了?

【问题讨论】:

  • 介意分享您的输入数组吗?同样对于第二个公式,您不应该除以m 之前您添加lambda_*theta吗?
  • 这些是输入数组:i.gyazo.com/784b144bb365888aa1948d4896f587c1.png 至于公式,没关系,因为 1/m 是这两个术语的一部分,所以我可以把它拿出来并在最后应用它,但是我会在添加之前尝试这样做以防万一
  • @user3483203 将其更改为这个,但仍然得到与我将其全部除以 m 时相同的答案:i.gyazo.com/0d0db41de0d14bda73fac8a234d3c261.png

标签: python numpy machine-learning logistic-regression regularized


【解决方案1】:

想通了,我是个白痴哈哈。第二个总和(第 2 行)不应该存在,因为应该添加 2 列。

还清理了一点代码,但这是正确的做法

h = utils.sigmoid(X.dot(theta))
grad[0] = (1/m)*((h-y).dot(X[:,0])).sum()
grad[1:] = (1/m)*((h-y).dot(X[:,1:])) + ((lambda_/m)*theta[1:])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2021-12-22
    • 2015-07-15
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多