吴恩达Coursera机器学习:exercise2

1. 逻辑回归

    根据exam1和exam2的考试成绩,来预测学生能否被大学录取。

1.1 可视化数据

    画出训练样本exam1和exam2的分布散点图。

    

1.2 步骤

1.2.1 sigmoid函数

                            

1.2.2 代价函数和梯度

    代价函数为:

                    

    梯度为:

                                                

for i = 1:m
    J = J + (-y(i) * log(sigmoid(theta.'* X(i,:).')) - (1-y(i)) * log(1 - sigmoid(theta.'* X(i,:).')));
end
J = J/m;
for j = 1:length(theta)
    for i = 1:m
        grad(j) = grad(j) + (sigmoid(theta.'* X(i,:).') - y(i))*X(i,j);
    end
    grad(j) = grad(j)/m;
end

1.2.3 用fminunc求解参数最优解

                                

1.2.4 评价逻辑回归估计效果

p = sigmoid([X(:,1) X(:,2) X(:,3)] * theta);
p(find(p >= 0.5)) = 1;
p(find(p < 0.5)) = 0;

估计准确度为89%。

2. 正则化逻辑回归

2.1 可视化数据

                               

2.2 增加特征数量

                                        

2.3 代价函数和梯度

    正则化逻辑回归的代价函数和梯度为:

                

                            

for i = 1:m
    J = J + (y(i) * log(sigmoid(X(i,:) * theta)) + (1-y(i)) * log(1 - sigmoid(X(i,:) * theta)));
end
J = -J/m;
for i = 1:length(theta)
    J = J + lambda/2/m * theta(i)^2;
end

for j = 1:length(theta)
    if j == 1
        for i = 1:m
            grad(j) = grad(j) + 1/m * (sigmoid(X(i,:) * theta) - y(i)) * X(i,j);
        end
    else
        for i = 1:m
            grad(j) = grad(j) + 1/m * (sigmoid(X(i,:) * theta) - y(i)) * X(i,j);
        end
        grad(j) = grad(j) + lambda/m * theta(j);
    end
end

2.3.1 用fminunc函数求参数最优解

2.4 画出决策边界线

                                 

    最终模型的准确度为:83.05%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值