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聚類算法實現 多元綫性 ...
随机推荐
- PAT1067. Sort with Swap(0, *) (25) 并查集
PAT1067. Sort with Swap(0, *) (25) 并查集 题目大意 给定一个序列, 只能进行一种操作: 任一元素与 0 交换位置, 问最少需要多少次交换. 思路 最优解就是每次 0 ...
- EF6 AddOrUpdate之后,数据没有改变而是新增了一条数据解决办法
EF:修改不是查询出来的对象dbContext.Web_User.AddOrUpdate(user);dbContext.SaveChanges(); 上面的写法有时候可能不起作用,而且把这条数据重复 ...
- php常见的几种排序以及二分法查找
<?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 ...
- Android 初步-Android文件目录介绍
src:存放的是应用程序使用到的java文件. gen:系统自动生成的目录,不需要程序员进行修改,包含了R.java文件.该文件包含了 程序使用到的资源文件对应的唯一资源ID,注意:如果R文件生成错误 ...
- Flask—01-轻松入门Flask
Flask入门 WEB工作原理 C/S与B/S架构:客户端-服务器,浏览器-服务器 B/S架构工作原理 客户端(浏览器) <=> WEB服务器(nginx) <=> WSGI( ...
- 仿LordPE获取PE结构
乍一看LordPE一个小工具一般般,真的动手做起来才知道技术含量高的很. 当前只是获取到PE结构并打印,仅此而已. PE.h #pragma once #include <stdio.h> ...
- 【例题收藏】◇例题·6◇ 电压机制(voltage)
◆例题·6◆ 电压机制 周六日常模拟赛……已经不知道该说什么了(感觉做不出来的都是好题) ▷ 题目 (终于不用自己翻译英文题了╮(╯-╰)╭) [问题描述] 科学家在“无限神机”(Infinity M ...
- 简单使用PuTTy登录centos虚拟机
博主刚刚开始学习Linux,想通过写博客的方式加深对linux学习的记忆 使用虚拟机安装精简版的linux后发现窗口字体太小,于是就想着通过PuTTy登录的方式解决 简单安装linux后 将linux ...
- linux命令之磁盘和文件系统操作
1. fdisk:磁盘分区命令 语法:fdisk [选项][参数] 命令说明:fdisk是linux系统里常用的一种磁盘管理工具,可以创建和管理系统分区 常用命令选项: -l:列出指定的并退出,没 ...
- less学习一
Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 可以运行在 Node 或浏览器端. less文件只有被编译后才 ...