机器学习作业 2- 多变量线性回归以及normal equation(正规方程)(吴恩达)

多变量线性回归

练习1还包括一个房屋价格数据集,其中有2个变量(房子的大小,卧室的数量)和目标(房子的价格)。 我们使用我们已经应用的技术来分析数据集。

path =  'ex1data2.txt'
data2 = pd.read_csv(path,header=None,names=['Size','Bedrooms','price'])
data2.head()

在这里插入图片描述
对于此任务,我们添加了另一个预处理步骤 - 特征归一化。 这个对于pandas来说很简单

如果这个房子价格不归一化,它的数量级和你输入值规一化数量级差别太大,几十万的数量级和个位小数做回归,就不能保证收敛了 预测的y和实际上y几十万差的太多了

data2 = (data2 - data2.mean()) / data2.std()
data2.head()

在这里插入图片描述
现在我们重复第1部分的预处理步骤,并对新数据集运行线性回归程序。点击上一小节里面单变量线性回归

# add ones column
# data2.insert(0,'Ones',1)
# set X (training data) and y (target variable)
cols = data2.shape[1]
X2 = data2.iloc[:,0:cols-1]
y2 = data2.iloc[:,cols-1:cols]

# convert to matrices and initialize theta
X2 = np.matrix(X2.values)
y2 = np.matrix(y2.values)
theta2 = np.matrix(np.array([0,0,0]))

# perform linear regression on the data set
g2 , cost2 = gradientDescent(X2,y2,theta2,alpha,iters)
computeCost(X2,y2,g2)

在这里插入图片描述

fig, ax = plt.subplots(figsize=(12,8))
ax.plot(np.arange(iters), cost2, 'r')
ax.set_xlabel('Iterations')
ax.set_ylabel('Cost')
ax.set_title('Error vs. Training Epoch')
plt.show()

在这里插入图片描述

normal equation(正规方程)(选做)

在这里插入图片描述
np.linalg.inv求逆操作 @相当于dot() ,dot函数可以通过numpy库调用,也可以由数组实例对象进行调用。a.dot(b) 与 np.dot(a,b)效果相同。

# 正规方程
def normalEqn(X, y):
    # your code here  (appro ~ 1 lines)
    theta = np.linalg.inv(X.T@X)@X.T@y
    return theta
final_theta2=normalEqn(X, y)#感觉和批量梯度下降的theta的值有点差距
final_theta2

在这里插入图片描述
#梯度下降得到的结果是matrix([[-3.24140214, 1.1272942 ]])

推导

在这里插入图片描述

数据以及源码:https://github.com/XiangLinPro/MLPractice

所有巧合的是要么是上天注定要么是一个人偷偷的在努力。

个人微信公众号,专注于学习资源、笔记分享,欢迎关注。我们一起成长,一起学习。一直纯真着,善良着,温情地热爱生活,,如果觉得有点用的话,请不要吝啬你手中点赞的权力,谢谢我亲爱的读者朋友
五角钱的程序员,专注于学习资源、笔记分享。
The distance between your dreams and reality is called action.
梦想和现实之间的那段距离叫做行动。

2020年4月12 00:32日于重庆城口
好好学习,天天向上,终有所获

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值