Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业(逻辑回归)
一. 逻辑回归
1.背景:使用逻辑回归预测学生是否会被大学录取。
2.首先对数据进行可视化,代码如下:
pos = find(y==); %找到通过学生的序号向量
neg = find(y==); %找到未通过学生的序号向量
plot(X(pos,),X(pos,),'k+','LineWidth',,'MarkerSize',); %使用+绘制通过学生
hold on;
plot(X(neg,),X(neg,),'ko','MarkerFaceColor','y','MarkerSize',); %使用o绘制未通过学生
% Put some labels
hold on;
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')
% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;
3.sigmoid函数的实现,代码如下:
function g = sigmoid(z) %函数文件名为sigmoid.m
%SIGMOID Compute sigmoid function
% g = SIGMOID(z) computes the sigmoid of z.
% You need to return the following variables correctly
g = zeros(size(z));
temp=-z;
temp=e.^temp;
temp=temp+;
temp=./temp;
g=temp;
end
4.代价函数的实现代码如下:
function [J, grad] = costFunction(theta, X, y) %函数名文件名为costFunction.m
m = length(y); % number of training examples % You need to return the following variables correctly
J = /m*(-(y')*log(sigmoid(X*theta))-(1-y)'*log(-sigmoid(X*theta))); %计算代价函数
grad = zeros(size(theta));
grad = /m*X'*(sigmoid(X*theta)-y); %求梯度
end
5.代替梯度下降的优化方法fminunc(),代码如下:
% 参数GradObj设置为on表示,通知函数fminunc()我们的代价函数costFunction()可以返回代价值和梯度值,函数fminunc()可以直接使用梯度值进行计算
options = optimset('GradObj', 'on', 'MaxIter', );
% Run fminunc to obtain the optimal theta
% This function will return theta and the cost
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
6.使用计算出的θi值做预测,预测函数如下:
function p = predict(theta, X) m = size(X, ); % Number of training examples
p = zeros(m, );
p=floor(sigmoid(X*theta).*); %因为使用了floor()函数,所以函数值要扩大二倍
二. 正规化逻辑回归
1.特征映射(Feature Mapping):使用两个特征(x1,x2)组合出更多的特征如x1x2,x12,x22等。代码如下:
function out = mapFeature(X1, X2) degree = ;
out = ones(size(X1(:,)));
for i = :degree
for j = :i
out(:, end+) = (X1.^(i-j)).*(X2.^j); %一共生成27项
end
end
end
2.计算在逻辑回归中经过正规化的代价函数和梯度:
function [J, grad] = costFunctionReg(theta, X, y, lambda) m = length(y); % number of training examples
J = /m*(-(y')*log(sigmoid(X*theta))-(1-y)'*log(-sigmoid(X*theta)))+(/(*m))*lambda*(sum(theta .^) - theta()^); %正规化时不用对θ1正规化
grad = zeros(size(theta) grad = /m*X'*(sigmoid(X*theta)-y)+lambda*theta/m;
grad() = grad()-lambda*theta()/m; end
Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业(逻辑回归)的更多相关文章
- Coursera-AndrewNg(吴恩达)机器学习笔记——第三周编程作业
一. 逻辑回归 1.背景:使用逻辑回归预测学生是否会被大学录取. 2.首先对数据进行可视化,代码如下: pos = find(y==); %找到通过学生的序号向量 neg = find(y==); % ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第三周
一.逻辑回归问题(分类问题) 生活中存在着许多分类问题,如判断邮件是否为垃圾邮件:判断肿瘤是恶性还是良性等.机器学习中逻辑回归便是解决分类问题的一种方法.二分类:通常表示为yϵ{0,1},0:&quo ...
- 吴恩达机器学习笔记(三) —— Regularization正则化
主要内容: 一.欠拟合和过拟合(over-fitting) 二.解决过拟合的两种方法 三.正则化线性回归 四.正则化logistic回归 五.正则化的原理 一.欠拟合和过拟合(over-fitting ...
- [吴恩达机器学习笔记]12支持向量机5SVM参数细节
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...
- [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...
- 吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...
- 吴恩达机器学习笔记19-过拟合的问题(The Problem of Overfitting)
到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致 ...
- 吴恩达机器学习笔记 —— 7 Logistic回归
http://www.cnblogs.com/xing901022/p/9332529.html 本章主要讲解了逻辑回归相关的问题,比如什么是分类?逻辑回归如何定义损失函数?逻辑回归如何求最优解?如何 ...
- [吴恩达机器学习笔记]14降维5-7重建压缩表示/主成分数量选取/PCA应用误区
14.降维 觉得有用的话,欢迎一起讨论相互学习~Follow Me 14.5重建压缩表示 Reconstruction from Compressed Representation 使用PCA,可以把 ...
随机推荐
- JBOSS Spring Web
jndi: <datasources> <xa-datasource> <jndi-name>jdbc/sss-local</jndi-name> &l ...
- 监控prometheus
一.prometheus-webhook-daingtalak github地址:[Releases · timonwong/prometheus-webhook-dingtalk · GitHub] ...
- JavaScript 日期多加一天 方法
今天查看项目发现有出bug,由于未了符合sql语句的要求,前台网页显示的时候传到后台的时候要+1天, 网上查看了别人写的,发现多多少少有点漏洞,经过我自己总结,写出了达到了我要求的 var str = ...
- Mac破解Sublime Text 3 3176
## Sublime Text 3 Serial key build is 3176 > * Added these lines into /etc/hosts 127.0.0.1 www.su ...
- MySQL的安装与维护
一.数据库的基本概念 数据库: 以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度的特点.是与应用程序彼此独立的数据集合. DBMS(DataBase Management System,数 ...
- Linux常用基本命令(more)
more命令 作用:相比cat一次性显示文件内容,more用于分页显示内容,less比more更强大,大多数的参数类似 more [option] [file] -num : 每页显示num行 +nu ...
- POJ1611(KB2-B)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 39211 Accepted: 18981 De ...
- 对象属性键值[key]属性问题
1,obj[key]此时key代表是循环中的一个变量. var obj = {key:3,key1:1,key2:2,key3:3,toSting:4}; for (key in obj) { con ...
- apicloud 自定义模块引用aar
apicloud 引入aar包,如果使用apicloud自定义模块的话,如果是一般的jar包,我们需要把jar down到本地然后添加到module的libs中就可以了(不要想着用远程地址了,既然用a ...
- 本地服务器搭建服务:ftp
开启FTP 服务针对局域网上需要管理的一些文件共享还是有一些帮助的,感兴趣的小伙伴可以尝试下: 1.开启internt 中ftp协议服务 完成即可 -> 可以访问了. tip: UTF-8 选f ...