慕哥5146797
应该是计算有差别
慕粉8371238
theta定义时用了reshape(4, 1),那最终的计算结果应该就是4*1的形式,不需要转置吧
慕粉8371238
dot(X, theta1)返回的是一个 200 * 1 矩阵,而 Y不是一个200 * 1的矩阵,所以需要对Y进行重新规划, Y = Y.values.reshape(200, 1)就可以了
weixin_慕设计7006565
这里的x[0]=1实际上是任意的,在代码运行的时候会有theta[0]*x[0],如此得到才是最终的截距。
慕后端6255604
数据文件在哪里下载?
qq_913_0
是老师本地的一个csv格式的文件,相当于一个excel文件,也就是老师第一次输出的那些值
明天也爱你
。。。
明天也爱你
在'alpha=0.1 #学习速率' 之前 加上 temp=theta
琳克队长
Atom
正宗好凉茶
学习率设大了所以没能收敛 改成0.01就好了
暗域天堂
既然没人回答,我只好自己写了一个程序来生成数据了。
import random
def Y(X1, X2, X3):
return 0.65 * X1 + 0.70 * X2 - 0.55 * X3 + 1.95
def Produce():
filename = 'data.csv'
with open(filename, 'w') as file:
file.write('X1,X2,X3,Y\n')
for i in range(200):
random.seed()
x1 = random.random() * 10
x2 = random.random() * 10
x3 = random.random() * 10
y = Y(x1, x2, x3)
try:
file.write(str(x1) + ',' + str(x2) + ',' + str(x3) + ',' + str(y) + '\n')
except Exception, e:
print 'Write Error'
print str(e)
if __name__ == '__main__':
Produce()