今天中午在那里试着退推了一下正规方程法,这个方法的道理也很简单就和高中学导数的时候一样,由于梯度下降法就是想办法下降到最低点,正规方程法就是直接令导数为0然后直接求θ,下面会展示我的推导过程以及代码实现结果以供参考
先确定这个式子值为零然后对式子进行调整把θ提取出来下面就写出我的转化过程
(x'表示矩阵x的转置矩阵)
接下来就给兄弟姐妹们代码实现一下
load ex1data2.txt %老样子先把咱数据取出来,并设定x和y
x=[ones(47,1),ex1data2(:,1:2)]
y=ex1data2(:,3)
theta=zeros(3,1)
theta=pinv(x)*y %pinv(x)就是求x的伪逆矩阵,不建议用inv,因为inv求逆矩阵但是x不一定存在逆矩阵
scatter3(x(:,2),x(:,3),y) %把散点图画出来一会儿看一下拟合的怎么样
hold on
plot3(x(:,2),x(:,3),x*theta) %下面就来看看运行结果
hold off
分别从三个面和整体看,效果还行哈
至于为什么拟合出来不是一条直线兄弟姐妹们可以参考一下我另一篇博客,那里面有对应的说明也有需要的数据
吴恩达机器学习实践笔记,第四章的多元梯度下降的实现-CSDN博客
哈哈哈到这就告一段落咯😁,这就是用正规方程法求得theta的过程了,可能还有不足之处希望大家可以帮忙指正一下呀😘