python - 在实现逻辑回归梯度下降的矢量化 + 正则化版本时遇到问题
问题描述
我的实现看起来像这样
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] 除外)..
我的代码哪里出错了?
解决方案
想通了,我是个白痴哈哈。第二个总和(在第 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:])
推荐阅读
- javascript - 节点未读取文件的全部内容
- android - Android Emulator SDK--30 不适用于 AR 应用程序 [Google sceneform sdk]
- apache - .htaccess 重定向 Facebook 爬虫,隐私政策除外
- c++ - 在 C++ 中实现策略模式的错误
- node.js - 使用ffmpeg合并两个音频文件后如何添加淡出效果?
- javascript - 如何使用节点获取标头发送“if-modified-since”
- postgresql - 是否可以使用 Asyncpg 与 postgresql 数据库建立 SSL 连接?
- javascript - 如何在 React 中正确处理 input type='number' 中的 'NaN' 值?
- python - 如何根据 Python 中的多个其他列表过滤列表?
- sapui5 - 如何增加输入和按钮的大小