part 1 数据导入以及可视化
fprintf("Loading and Visualizing Data....\n");
load('ex5data1.mat');
m=size(X,1);
plot(X,y,'rx','Markersize',10,'LineWidth',1.5);
xlabel("Change in Water level(x)");
ylabel("Water flowing out of the dam (y)");
part2 正则化逻辑回归损失函数
#对于2维向量,初始化的theta是和特征维数一样的
theta=[1;1];
J=linearRegCostFunction([one(m,1) X],y, theta,1);
定义函数linearRegCostFunction
逻辑回归函数正则化的函数公式定义如下:
其中是正则化参数,帮助防止过拟合,正则化就是给损失函数一个惩罚;
function [J,grad]=linearRegCostFunction(X,Y,theta,lambda)
m=length(y); #number of training examples
J=0;
grad=zeros[size(theta)]
theta_1=[0;theta(2:end)];
J=sum((X*theta-y).^2)/2*m+lambda/(2*m)*theta_1'*theta_1;
grad=(X'*(X*theta-y))/m+lamda/m*theta_1;
end
part3 线性回归正则化梯度
求出当前梯度的值大小
theata=[1;1]
[J,gra