请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

和您写的代码一样,案例数据通过了,但我边的数据报错了

正在回答

插入代码

1回答

使用np.hsplit切割矩阵以后,y还是一个二维矩阵,是m*1的二维数组。但是我们传的参数,y需要是一个向量。


所以,需要使用reshape,把二维数组转成一维数组。

1
= y.reshape(-1,)


另外,对于课程的代码,gradient的值建议再做一次归一化:

1
2
gradient = dJ(theta, X_b, y)
gradient /= np.linalg.norm(gradient)


否则的话,使用一般的数据,很容易溢出。当然了,还需要调整eta和n_iters的参数:)


关于这一点,可以参考这里:

https://coding.imooc.com/learn/questiondetail/69537.html

https://coding.imooc.com/learn/questiondetail/113270.html


当然,也可以对整体数据做一次标准化处理:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕少409219 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-06-24 09:45:33
  • 提问者 weixin_慕少409219 #2
    不过有点糊涂,一会矩阵一会向量的,不是矩阵相乘吗,行列也对上了,为什么还要将y向量化,不过测试了一下是需要向量化要不x_b.dot(theta)-y是个矩阵
    回复 有任何疑惑可以回复我~ 2019-06-24 11:10:03
  • liuyubobobo 回复 提问者 weixin_慕少409219 #3
    其实本质是你要实现的数学公式是什么样子的。在这里,我的循环中,每次计算一个数。向量和向量的点乘,结果是一个数字。向量个矩阵做乘法,在数学里是没有意义的(但是矩阵对向量做乘法,是有意义的)。
    回复 有任何疑惑可以回复我~ 2019-06-24 11:16:26
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号