一、使用循环:

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. CodeForces 501B Misha and Changing Handles(STL map)

    Misha hacked the Codeforces site. Then he decided to let all the users change their handles. A user ...

  2. Storm处理流程, 基本参数配置

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAksAAAG/CAYAAABIVpOQAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF

  3. 推荐几个Mac/Linux下比较好用的工具

    1.Tmux,连接开发机可以让在任务在开发机一直执行,不用nohup &这种了也相对稳定,还有session可以记录当时的状态. 常用命令: tmux new -s name 指定名字开启一个 ...

  4. pdf.js 在线阅读PDF

    在网上找了一下如何在线显示pdf文件.个人还是觉得这个是比较不错的,这里做一个记录. gitHub:https://github.com/mozilla/pdf.js           这是一个开源 ...

  5. Python Json模块中dumps、loads、dump、load函数介绍哦

    来自: https://www.jb51.net/article/139498.htm 1.json.dumps()       json.dumps()用于将dict类型的数据转成str,因为如果直 ...

  6. 【TOJ 1545】Hurdles of 110m(动态规划)

    描述 In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperit ...

  7. [洛谷]P3704-数字表格

    [洛谷]P3704-数字表格 妙啊,这又是一道反演题,而且个人感觉比较高级 传送门 大意 在\(N\times M\)的数表\(a\)中,\(a_{i,j}\)表示f((i,j)),其中\((i,j) ...

  8. zabbix service安装配置

    1.安装时间同步 yum -y install ntpdate systemctl start ntpdate.service systemctl enable ntpdate.service 2.安 ...

  9. python的基本知识,range在python2.x中和python3.x中的区别

    这些是最开始学习python时的笔记,今天整理一下,在这里记录一下. 各种基础代码解释 for key,item in enumerate(li): print(key,item) inp=input ...

  10. 多线程编程之Apue3rd_Chapter11之互斥锁_读写锁_自旋锁

    学习了apue3rd的第11章,主要讲的是多线程编程.因为线程共享进程的资源比如堆和全局变量,多线程编程最重要的是,使用各种锁进行线程同步. 线程编程首先要学习的三个函数如下: #include &l ...