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,可以把 ...
随机推荐
- Linux QT 连接 Sqlite数据库
#include <QApplication> #include <QDebug> #include <QSqlQuery> #include <QSqlDa ...
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...
- 【跟着开涛学Shiro】(一)Shiro简介
声明:本部分内容均转自于张老师的博客,因为本人很喜欢他的博客,所以一直在学习,转载仅是记录和分享,若也有喜欢的人的话,可以去他的博客首页看:http://jinnianshilongnian.itey ...
- ajax传递数组到后台,js传递数组到后台
用angular做商品搜索功能,后台接口那边过滤条件必须传递数组过去,结果比较尴尬的事情发生了,每次传递数组过去,查看请求发送的数据,自动被转成了对象,很头疼. 数据传递前 传递后我查看了请求的数据 ...
- [总结]其他杂项数学相关(定理&证明&板子)
目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...
- C# Azure 设置云端应用程序的默认时间
在微软云Azure中,应用程序(website)的默认时间是按照美国UTC的时间的. 例如,在应用程序中获取DateTime.Now,的时候,是获取UTC的时间,不是中国的时间. 所以我们开始在这里设 ...
- oracle 备份数据库,导出数据库
导出数据库 exp hljslfh2/hljslfh@dbsvr file=d:\hljslfh2Of0426.dmp 导入数据库 imp hljslfh2/hljslfh@localhost/dbs ...
- 批量导出VBA工程中的Source
在做Excel宏相关项目的开发和维护过程中,我们经常需要导出VBA中的Source,但是Excel提供的宏编辑器中只能一个文件一个文件地导出,很不方便. 下面介绍2种批量导出的方法: 1.Source ...
- groovy编程注意事点
集合中一些方法工作在集合的一个副本上并且完成的时候返回这个副本,而另外一些方法直接操作这个集合对象. 和Java一样不能通过迭代移除元素. list和map遵循java规则限制,但通过附加的方法降低了 ...
- mongodb远程连接访问
随着云计算,云服务的不断发展演进,数据库的管理及维护方式也在转变,传统基于C/S客户端工具管理的方式,已经无法满足实际需要. TreeSoft数据库管理系统,采用web方式,对mongoDB,MySQ ...