CS229作业之过拟合
一、使用循环:
1.1原始版逻辑回归:
function g = sigmoid(z)
g = zeros(size(z));
g = ./ ( + exp(-z));
end
function [J, grad] = costFunction(theta, X, y) % Initialize some useful values
m = length(y); % number of training examples J = ;
grad = zeros(size(theta)); n = size(theta);
gradtemp = ; %compute costfunction
for i = :m
temp1 = y(i) * log(sigmoid(X(i,:) * theta)) + ( - y(i)) * log( - sigmoid(X(i,:) * theta));
J = J + temp1;
endfor J = -(J / m); %compute grade
for j = :n
for i = :m
temp2 = (sigmoid(X(i,:) * theta) - y(i)) * X(i,j);
gradtemp = gradtemp + temp2;
endfor
gradtemp = gradtemp / m;
grad(j) = gradtemp;
gradtemp = ;
endfor end
function p = predict(theta, X) m = size(X, ); % Number of training examples p = zeros(m, ); for i =:m
h = sigmoid(X(i,:) * theta);
if h >= 0.5
y = ;
else
y = ;
endif
p(i) = y;
endfor end
1.2正则化版逻辑回归:
function [J, grad] = costFunctionReg(theta, X, y, lambda) % Initialize some useful values
m = length(y); % number of training examples J = ;
grad = zeros(size(theta)); n = length(theta)
temp1 = ;
temp2 = ;
temp3 = ;
result1 = ;
result2 = ;
%compute costfunction
for i = :m
h = sigmoid(X(i,:) * theta)
temp1 = y(i) * log(h) + ( - y(i)) * log(-h);
result1 = result1 + temp1;
endfor
for j = :n
temp2 = theta(j) * theta(j);
result2 = result2 + temp2;
endfor J = (- / m) * result1 + lambda / ( * m) * result2; temp3 =
temp4 =
result3 =
for i = :m
h = (sigmoid(X(i,:) * theta))
temp3 = (h - y(i)) * X(i,);
result3 = result3 + temp3;
endfor
grad() = ( / m) * result3 %compute grade
for j = :n
result4 = ;
for i = :m
h = (sigmoid(X(i,:) * theta))
temp4 = (h - y(i)) * X(i,j);
result4 = result4 + temp4;
endfor
grad(j) = ( / m) * result4 + (lambda / m) * theta(j)
endfor end
二、矩阵向量方式整体运算:
2.1原始版逻辑回归:
function g = sigmoid(z) g = zeros(size(z)); g = ./ ( + exp(-z)); end
function [J, grad] = costFunction(theta, X, y)
% Initialize some useful values
m = length(y); % number of training examples J = ;
grad = zeros(size(theta)); h = sigmoid(X * theta); J = sum(- y .* log(h) - ( - y) .* log( - h)) / m; grad = (/m * sum((h - y).* X))'; end
function p = predict(theta, X) m = size(X, ); % Number of training examples p = zeros(m, ); h = sigmoid(X * theta); p(find(h >= 0.5)) = ; end
2.2正则化版逻辑回归:
function [J, grad] = costFunctionReg(theta, X, y, lambda) % Initialize some useful values
m = length(y); % number of training examples J = ;
grad = zeros(size(theta)); n = size(theta,); h = sigmoid(X * theta); J = sum(- y .* log(h) - ( - y) .* log( - h)) / m + lambda / ( * m) * sum(theta(:n) .^ ); grad = (/m * sum((h - y).* X))'; grad(:n) = grad(:n) + lambda / m * theta(:n); end
CS229作业之过拟合的更多相关文章
- Coursera公开课-Machine_learing:编程作业5
Regularized Linear Regression and Bias/Variance 大多数时候,我们使用机器学习方法得到的结果都不是特别理想,常见 欠拟合 和 过拟合 问题.通过一些变量画 ...
- CS229 5.用正则化(Regularization)来解决过拟合
1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...
- cousera 吴恩达 深度学习 第一课 第二周 作业 过拟合的表现
上图是课上的编程作业运行10000次迭代后,输出每一百次迭代 训练准确度和测试准确度的走势图,可以看到在600代左右测试准确度为最大的,74%左右, 然后掉到70%左右,再掉到68%左右,然后升到70 ...
- CS229 3.用Normal Equation拟合Liner Regression模型
继续考虑Liner Regression的问题,把它写成如下的矩阵形式,然后即可得到θ的Normal Equation. Normal Equation: θ=(XTX)-1XTy 当X可逆时,(XT ...
- 机器学习作业(四)神经网络参数的拟合——Python(numpy)实现
题目下载[传送门] 题目简述:识别图片中的数字,训练该模型,求参数θ. 出现了一个问题:虽然训练的模型能够有很好的预测准确率,但是使用minimize函数时候始终无法成功,无论设计的迭代次数有多大,如 ...
- 机器学习作业(四)神经网络参数的拟合——Matlab实现
题目下载[传送门] 题目简述:识别图片中的数字,训练该模型,求参数θ. 第1步:读取数据文件: %% Setup the parameters you will use for this exerci ...
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结
Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...
- stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
本文根据水库中蓄水标线(water level) 使用正则化的线性回归模型预 水流量(water flowing out of dam),然后 debug 学习算法 以及 讨论偏差和方差对 该线性回归 ...
- Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)
#课程设计--博客作业教学数据分析系统(201521123084 李嘉廉) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 數據分析 Kmeans聚類算法實現 多元綫性 ...
随机推荐
- React 相关开发工具
Gulp:是一个NodeJs项目构建工具,高效易学:把一个开发中的项目构建成一个可以部署在服务器上的项目,压缩 整合 gulp.task('1',['2','3'],function(){});// ...
- 关于object类的两个重要方法以及为什么重写equals一定要重写hashcode()
toString()----------------------输出对象的地址 重写后输出对象的值对象.equals(对象)---------------比较两个对象的内存地址 可以被重写,重写后比较 ...
- spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type
问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...
- 6.Spring Cloud初相识-------Zool路由
前言: 在生产环境中,我们不可能将每个服务的真实信息暴漏出去,因为这样太不安全. 我们会选择使用路由代理真实的服务信息,由它负责转发给真实的服务. 新建一个Zool: 1.添加依赖 <?xml ...
- [USACO06NOV]玉米田Corn Fields(动态规划,状态压缩)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- python 中的UDP和TCP(1)
一.TCP: TCP是Transmission Control Protocol的简称,中文名传输控制协议.是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP通信需要经过创建连接.数据传输. ...
- 20.2 解析与序列化【JavaScript高级程序设计第三版】
JSON 之所以流行,拥有与JavaScript 类似的语法并不是全部原因.更重要的一个原因是,可以把JSON 数据结构解析为有用的JavaScript 对象.与XML 数据结构要解析成DOM 文档而 ...
- Java学习笔记一:三步搭建Java开发环境
Java开发环境搭建 一:安装JDK: 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads 非常显眼的下载界面 2.点击下载后 ...
- PHP中的面向对象魔术方法大全
1.__construct 构造方法 2.__destruct 析构方法 3.__get 获取成员值 4.__set 设定成员值 5.__isset 判断成员值 6.__unset unset成员 ...
- R语言学习笔记(一):mode, class, typeof的区别
要了解这三个函数的区别,先了解numeric, double与integer. 在r中浮点数有两个名字叫numeric与double. double是指它的类型(type)名字,numeric是指它的 ...