ML学习笔记第四周(四):编程作业

1 代码

lrCostFunction.m(逻辑回归的代价函数)

%套用代价函数公式
hx=sigmoid(X*theta);
J = 1 / m * sum((-y) .* log(hx) - (1 - y) .* log(1 - hx)) + lambda / (2 * m) * (sum(theta .^ 2) - (theta(1) ^ 2));

%theta(1)无需进行梯度下降
grad=1/m*(X'*(hx-y)+lambda*theta);
grad(1)=grad(1)-lambda/m*theta(1);

oneVsAll.m(oneVsAll算法应用于多分类)

%theta初始化
initial_theta=zeros(n+1,1);

%设置fminunc选项
options=optimset('GradObj','on','MaxIter',50);

%fmincg使用梯度下降计算代价函数最优解
for i=1:num_labels
    c=i*ones(size(y));
    [theta]=fmincg(@(t)(lrCostFunction(t,X,(y==c),lambda)),initial_theta);
    all_theta(i,:)=theta;
end

predictOneVsAll.m

predict=sigmoid(X*all_theta');
[x,ix]=max(predict,[],2);
p=ix;

predict.m

X=[ones(m,1) X];

a=sigmoid(X*Theta1');
a=[ones(size(a,1),1) a];

[x,p]=max(sigmoid(a*Theta2'),[],2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值