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

来源:6-4 实现线性回归中的梯度下降法

weixin_慕少409219

2019-06-23

图片描述
图片描述
请问数据结构哪里错了吗?

写回答

1回答

liuyubobobo

2019-06-24

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


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

y = y.reshape(-1,)


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

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
6
weixin_慕少409219
回复
liuyubobobo
真的么?
2019-06-24
共6条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程