一、使用循环:

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作业之过拟合的更多相关文章

  1. Coursera公开课-Machine_learing:编程作业5

    Regularized Linear Regression and Bias/Variance 大多数时候,我们使用机器学习方法得到的结果都不是特别理想,常见 欠拟合 和 过拟合 问题.通过一些变量画 ...

  2. CS229 5.用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  3. cousera 吴恩达 深度学习 第一课 第二周 作业 过拟合的表现

    上图是课上的编程作业运行10000次迭代后,输出每一百次迭代 训练准确度和测试准确度的走势图,可以看到在600代左右测试准确度为最大的,74%左右, 然后掉到70%左右,再掉到68%左右,然后升到70 ...

  4. CS229 3.用Normal Equation拟合Liner Regression模型

    继续考虑Liner Regression的问题,把它写成如下的矩阵形式,然后即可得到θ的Normal Equation. Normal Equation: θ=(XTX)-1XTy 当X可逆时,(XT ...

  5. 机器学习作业(四)神经网络参数的拟合——Python(numpy)实现

    题目下载[传送门] 题目简述:识别图片中的数字,训练该模型,求参数θ. 出现了一个问题:虽然训练的模型能够有很好的预测准确率,但是使用minimize函数时候始终无法成功,无论设计的迭代次数有多大,如 ...

  6. 机器学习作业(四)神经网络参数的拟合——Matlab实现

    题目下载[传送门] 题目简述:识别图片中的数字,训练该模型,求参数θ. 第1步:读取数据文件: %% Setup the parameters you will use for this exerci ...

  7. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  8. stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)

    本文根据水库中蓄水标线(water level) 使用正则化的线性回归模型预 水流量(water flowing out of dam),然后 debug 学习算法 以及 讨论偏差和方差对 该线性回归 ...

  9. Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)

    #课程设计--博客作业教学数据分析系统(201521123084 李嘉廉) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 數據分析 Kmeans聚類算法實現 多元綫性 ...

随机推荐

  1. ffmpeg 学习

    1.ffmpeg使用语法 命令格式:    ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]    ffmpeg [[options][`-i' input_file]] ...

  2. Java笔试--代码纠错

    package practice.javase; public abstract class Name { private String name; public abstract boolean i ...

  3. win7 bat copy 一个文件 到另外的文件夹内,路径得用引号哦

    win 7 的 用引号 把路径引起来 ,但是win10 的可以不用哦 !

  4. Spring data JPA 理解(默认查询 自定义查询 分页查询)及no session 三种处理方法

    简介:Spring Data JPA 其实就是JDK方式(还有一种cglib的方式需要Class)的动态代理 (需要一个接口 有一大堆接口最上边的是Repository接口来自org.springfr ...

  5. 如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

  6. PostgreSQL异步主从流复制搭建

    1 总体规划   Master库 Slave库 操作系统 CentOS Linux release 7.5.1804 CentOS Linux release 7.5.1804 处理器 1 1 内存 ...

  7. 使用Linux命名将代码上传到GitHub

    GitHub代码上传教程 https://my.oschina.net/baishi/blog/520791 这篇文章讲得挺清楚的,但是在上传的时候出现了问题 ! [rejected] master ...

  8. MySql外键建立在哪里(更新)

    一对一的时候:分为主表和附表  外键建立在附件上  附表的外键关联到主表的主键上,Example:学生表和学生信息表,在学生信息表上建立外键 一对多的时候:分为一和多  外键建立在多上  Exampl ...

  9. laydate js动态添加时间

    $("#test2").click(function(){ var input=$('<input/>'); $("#test1").append( ...

  10. YII2 不通过composer安装Ueditor编辑器

    今天用composer安装Ueditor,一直下载失败,不知道为什么,所以就手动安装了一下.记录一下安装步骤 GitHub地址 https://github.com/BigKuCha/yii2-ued ...