作业ex2题目及答案源码下载地址ex2题目及答案

一、逻辑回归

问题背景,根据学生两门课的成绩和是否入学的数据,预测学生能否顺利入学

  1. plotData.m:数据可视化
% Find Indices of Positive and Negative Examples
pos = find(y == 1); neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, 'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y','MarkerSize', 7);

matlab中find函数返回索引列表,详见Matlab 之 find()函数

  1. sigmoid.m:完成sigmoid函数
    g(z)=11+e−zg(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1​
g = 1 ./ ( 1 + exp(-z) ) ;

hypothesis函数定义为
hθ(x)=g(θTx)h_\theta(x)=g(\theta^T x) hθ​(x)=g(θTx)

  1. costFunction.m:计算代价和梯度
    逻辑回归似然函数取对数为(详见视频课程)
    l(θ)=∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]l(\theta)=\sum_{i=1}^m[y^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))] l(θ)=i=1∑m​[y(i)loghθ​(x(i))+(1−y(i))log(1−hθ​(x(i)))]
    要想取得最大似然估计,可令代价函数为
    J(θ)=−1ml(θ)=1m∑i=1m[−y(i)loghθ(x(i))−(1−y(i))log(1−hθ(x(i)))]J(\theta)=-\frac{1}{m}l(\theta)=\frac{1}{m}\sum_{i=1}^m[-y^{(i)}logh_\theta(x^{(i)})-(1-y^{(i)})log(1-h_\theta(x^{(i)}))] J(θ)=−m1​l(θ)=m1​i=1∑m​[−y(i)loghθ​(x(i))−(1−y(i))log(1−hθ​(x(i)))]
    求导得
    ∂∂θjJ(θ)=1m∑i=1m(hθ(x(i))−y(i))xj(i)\frac{\partial}{\partial{\theta_j} }J(\theta)=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j ∂θj​∂​J(θ)=m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​
J= -1 * sum( y .* log( sigmoid(X*theta) ) + (1 - y ) .* log( (1 - sigmoid(X*theta)) ) ) / m ;
grad = ( X' * (sigmoid(X*theta) - y ) )/ m ;
  1. 利用fminunc函数求得最小代价
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

其中,GradObj:On 表示使用自己的梯度公式,Maxlter:400表示最大迭代次数。costFunction函数完整形式为function [J, grad] = costFunction(theta, X, y)
该函数作用是求函数的最小值,代价函数虽然复杂,但是xy等数据是已知的,未知的只有θ\thetaθ的分量,这就相当于几元一次函数的求最值问题。

  1. plotDecisionBoundary.m:画决策边界

这里只考虑本题的输入(1,x2,x3)(1,x_2,x_3)(1,x2​,x3​),sigmoid函数的分界点是z=0z=0z=0,即
θTx=θ1+θ2x2+θ3x3=0\theta^Tx=\theta_1+\theta_2 x_2 +\theta_3 x_3=0 θTx=θ1​+θ2​x2​+θ3​x3​=0
要画一条直线将平面分开,首先求得x2x_2x2​的最小值和最大值,然后根据上式求得相应的x3x_3x3​,两点确定一条直线。

 plot_x = [min(X(:,2))-2,  max(X(:,2))+2];plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));plot(plot_x, plot_y)
  1. predict.m:计算模型精确度
    根据给定的数据,查看预测值与实际值是否吻合,先计算预测值
k = find(sigmoid( X * theta) >= 0.5 );
p(k)= 1;

与实际值比较,相加除以总数(均值)

mean(double(p == y)) * 100)

二、逻辑回归(多项式回归)

问题背景:根据以往微晶片两项测试和是否合格的数据,进行预测。

  1. plotData.m:数据可视化

  1. mapFeature.m: 特征提取
    从图中数据分布可以看到,显然不再是线性边界。那么便需要将每个点的特征进一步提取出来。
    [x1x2]&lt;=&gt;[1x1x2x12x1x2x22...x15x2x26]\left[ \begin{aligned} x_1\\ x_2 \end{aligned} \right] &lt;=&gt; \left[ \begin{aligned} 1\\ x_1\\ x_2\\ x_1^2\\ x_1 x_2\\ x_2^2\\ .\\ .\\ .\\ x_1^5x_2\\ x_2^6 \end{aligned} \right] [x1​x2​​]<=>⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​1x1​x2​x12​x1​x2​x22​...x15​x2​x26​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​
    从二维变换到28维。
degree = 6;
out = ones(size(X1(:,1)));
for i = 1:degreefor j = 0:iout(:, end+1) = (X1.^(i-j)).*(X2.^j);end
end
  1. costFunctionReg.m:计算代价和梯度
    为了防止过拟合,采用L2正则化方法,代价函数为
    J(θ)=1m∑i=1m[−y(i)loghθ(x(i))−(1−y(i))log(1−hθ(x(i)))]+λm∑j=2nθj2J(\theta)=\frac{1}{m}\sum_{i=1}^m[-y^{(i)}logh_\theta(x^{(i)})-(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{m}\sum_{j=2}^n \theta_j^2 J(θ)=m1​i=1∑m​[−y(i)loghθ​(x(i))−(1−y(i))log(1−hθ​(x(i)))]+mλ​j=2∑n​θj2​
    注意:第一项θ1\theta_1θ1​不参与正则化
    梯度为
    ∂∂θ1J(θ)=1m∑i=1m(hθ(x(i))−y(i))x1(i)forj=1∂∂θjJ(θ)=1m∑i=1m(hθ(x(i))−y(i))xj(i)+λmθjforj≥2\begin{aligned} \frac{\partial}{\partial{\theta_1} }J(\theta)&amp;=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_1 \qquad \qquad \quad for\quad j=1\\ \frac{\partial}{\partial{\theta_j} }J(\theta)&amp;=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j+\frac{\lambda}{m}\theta_j \qquad for\quad j\geq2 \end{aligned} ∂θ1​∂​J(θ)∂θj​∂​J(θ)​=m1​i=1∑m​(hθ​(x(i))−y(i))x1(i)​forj=1=m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​+mλ​θj​forj≥2​
theta_1=[0;theta(2:end)];    % 先把theta(1)拿掉,不参与正则化
J= -1 * sum( y .* log( sigmoid(X*theta) ) + (1 - y ) .* log( (1 - sigmoid(X*theta)) ) ) / m  + lambda/(2*m) * theta_1' * theta_1;
grad = ( X' * (sigmoid(X*theta) - y ) )/ m + lambda/m * theta_1;
  1. 利用fminunc函数求解
  2. plotDecisionBoundary.m:画决策边界
  u = linspace(-1, 1.5, 50);v = linspace(-1, 1.5, 50);z = zeros(length(u), length(v));for i = 1:length(u)for j = 1:length(v)z(i,j) = mapFeature(u(i), v(j))*theta;endendz = z'; % important to transpose z before calling contourcontour(u, v, z, [0, 0], 'LineWidth', 2)

这里利用contour函数,[0,0]表示画值为0的等高线,[0,1,2]则表示画值为0,1,2的三条等高线。

吴恩达机器学习课后作业深度解析(附答案)(ex2)相关推荐

  1. 目录:吴恩达机器学习课后作业

    简单介绍 本博客为作者自行完成的吴恩达机器学习课后练习题目录,均使用PyTorch进行实现,无法保证对错,仅供参考. 作业题目以及源代码 百度云盘连接 提取码:3dvb 题目的命名方式与下表中的作业名 ...

  2. 吴恩达机器学习课后作业——偏差和方差

    1.写在前面 吴恩达机器学习的课后作业及数据可以在coursera平台上进行下载,只要注册一下就可以添加课程了.所以这里就不写题目和数据了,有需要的小伙伴自行去下载就可以了. 作业及数据下载网址:吴恩 ...

  3. 吴恩达机器学习课后作业——线性回归(Python实现)

    1.写在前面 吴恩达机器学习的课后作业及数据可以在coursera平台上进行下载,只要注册一下就可以添加课程了.所以这里就不写题目和数据了,有需要的小伙伴自行去下载就可以了. 作业及数据下载网址:吴恩 ...

  4. 吴恩达机器学习课后作业ex1(python实现)

    作业介绍 吴恩达老师的作业资源可以在github或者网上找到 . ex1主要是对线性回归的一些复习和梯度下降.损失函数等的具体代码实现. pdf文件是对作业的说明.文件夹则是作业数据的各种格式,pyt ...

  5. 吴恩达机器学习课后作业1——单变量线性回归(Linear regression with one variable)

    1. 问题和数据 假设你是一家连锁餐车店的老板,但是你又和别的土老板不一样,你又刚好是个懂线性回归,还懂编程的老板,正在考虑在不同的城市开一家新店.该连锁店已经在各个城市开设了餐车,你可以获得这些城市 ...

  6. 吴恩达机器学习课后作业1.1——多变量线性回归(Linear regression with multiple variable)

    1. 问题和数据 假设你要卖掉你的房子,你想知道一个好的市场价格是多少.其中一种方法是,首先收集最近出售的房屋的信息.在本部分的练习中,你将使用多元线性回归来预测房屋价格. 数据ex1data2.tx ...

  7. 吴恩达机器学习课后作业——SVM支持向量机

    支持向量机 一.作业内容 在本练习的前半部分,您将对各种示例2D数据集使用支持向量机(svm).使用这些数据集进行试验将帮助您直观地了解支持向量机的工作方式,以及如何在支持向量机中使用高斯核.在练习的 ...

  8. 吴恩达机器学习课后作业——线性回归

    一.单变量线性回归 一.作业内容 假设你是一家特许经营餐厅的首席执行官,正在考虑在不同的城市开一家新店,该连锁店已经在各个城市开设了餐车,文件ex1data1.txt中包含你这些城市的利润和人口数据. ...

  9. 吴恩达机器学习课后作业ex3(python实现)

    ex3是机器学习中经典的手写数字识别(使用逻辑回归分类),给出的数据是.mat后缀,可以用python中load方法加载数据.手写体"1"到"9"的类别分别标为 ...

最新文章

  1. ftl if else判断_07.合意就执行,不行就拉倒-if/else条件控制(一)
  2. 如何打造一支高效的AI团队
  3. Spring MVC请求处理流程
  4. 局域网mysql数据库访问
  5. How to use wget to download mail archives?
  6. 【连载】【FPGA黑金开发板】NIOS II那些事儿--LED实验(四)
  7. 查询系统--基于Solr4.9.0实现
  8. POJ1029 UVA158 Calendar题解
  9. uniapp打包H5与uniapp打包apk交互,实现扫码功能。
  10. 逸致金品:如何从零开始学习板绘?
  11. java FreeMarker模板路径问题
  12. 使用FOP将xml转换pdf
  13. Ubuntu16.04下好用的pdf阅读器
  14. Marshmallow 快速文档
  15. 谈谈百度贴吧、豆瓣小组以及BBS这个产品形态
  16. javamail 可以发邮件,发附件(附件大小可以超过2M),抄送多人,抄送密件,定时发送,消除乱码[附javamail的jar包]...
  17. html格子像素画,有趣的CSS像素
  18. Densely Connected Convolutional Networks 阅读
  19. 【重磅推荐】中国车牌识别数据集(CBLPRD):China-Balanced-License-Plate-Recognition-Dataset-330k
  20. ASEMI代理NXP汽车芯片FS32K146HAT0MLLT

热门文章

  1. 转: oracle中schema指的是什么?
  2. 西湖区政府门户网站项目签约西部动力We7网站群系统
  3. 简便无刷新文件上传系统
  4. 十二个月内 仅仅依靠Google打造成功网站
  5. Asp.net性能优化-提高ASP.Net应用程序性能的十大方法
  6. 退出功能—session
  7. 洛谷2149 Elaxia的路线(dp+最短路)
  8. 12-关于DOM操作的相关案例
  9. 【bzoj4321】queue2 dp
  10. Linux字符串转换函数汇总