大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作业四 Q13-20的MATLAB实现。

曾经的代码都是通过C++实现的。可是发现C++实现这些代码太麻烦。这次作业还要频繁更改參数值,所以选择用MATLAB实现了。与C++相比。MATLAB实现显然轻松非常多。在数据导入方面也更加方便。我的代码尽管可以得到正确答案,可是当中可能有某些思想或者细节是错误的,假设各位博友发现,请及时留言纠正,谢谢。再次声明,博主提供实现代码的原因不是为了让各位通过測试,而是为学习有困难的同学提供一条解决思路。希望我的文章对您的学习有一些帮助!

本文出处:http://blog.csdn.net/a1015553840/article/details/51173020

其它问题解答请看汇总帖:http://blog.csdn.net/a1015553840/article/details/51085129

1.sign函数

function S = sign(x)  %计算sign
[m,n] = size(x);
for i = 1:m,
for j = 1:n; if x(i,j) <= 0,
S = 1;
else
S = -1;
end
end
end
end

2.计算正则化线性回归函数LGwithRegularization

function Wreg = LGwithRegularization(X,y,lambda)
[m,n] = size(X);
Wreg = inv(X' * X + lambda * eye(n)) * X' * y;%正则化的线性回归求解
end

3.错误计算函数Error01 (注意。这里用的是0/1错误)

function E = Error01(X,y,Wreg)
[m,n] = size(X);
E = 1 - sum(sign(X * Wreg) == y) / m;%计算错误率
end

4.主进程

clc
trainingData = load('trainingData.txt');
Xtrain = trainingData(:, [1, 2]); ytrain = trainingData(:, 3);
testData = load('testData.txt');
Xtest = testData(:,[1,2]);ytest = testData(:,3);
[m,n] = size(Xtrain);
Xtrain = [ones(m,1), Xtrain];
[a,b] = size(Xtest);
Xtest = [ones(a,1), Xtest]; %13-15
%lambda = 10^-3;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg) %16-17
%lambda = 10^-3;
%Wreg = LGwithRegularization(Xtrain(1:120,:),ytrain(1:120,:),lambda);
%Etrain = Error01(Xtrain(1:120,:),ytrain(1:120,:),Wreg)
%Eval = Error01(Xtrain(121:200,:),ytrain(121:200,:),Wreg)
%Eout = Error01(Xtest,ytest,Wreg) %18
%lambda = 10^0;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg) %19
%lambda = 10^-6
%Ecv = 0;
%v = 5;
%per = m / v;
%for i = 1:v,
% Xtemp = Xtrain;
% ytemp = ytrain;
% Xtemp(1+(i-1)*per:i*per,:) = [];%出去用于求交叉验证的样本
% ytemp(1+(i-1)*per:i*per,:) = [];
% Wreg = LGwithRegularization(Xtemp,ytemp,lambda);
% Error01(Xtrain(1+(i-1)*per:i*per,:),ytrain(1+(i-1)*per:i*per,:),Wreg)%利用交叉验证的样本求Ecv
% Ecv = Ecv + Error01(Xtrain(1+(i-1)*per:i*per,:),ytrain(1+(i-1)*per:i*per,:),Wreg);
%end
%Ecv = Ecv / v %20
%lambda = 10^-8;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg)

13.第十三题



(1)题意:从两个站点下载训练样本和測试样本,利用正则化的线性回归,參数lambda取10。得到Ein 和Eout

(2)答案:Ein = 0.050 Eout = 0.045

14-15:第14-15题

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(1)题意: 14.分别取lamda值为.....计算Ein和Eout。选取最小的Ein相应的正确答案,假设两个lambda相应的答案一样,选择大的lambda

15.选取最小Eout相应的正确答案

(2)答案:14.log = -8, Ein = 0.015,Eout = 0.02

15.log = -7,Ein = 0.03,Eout = 0.015

16.第十六题

(1)题意:利用前120个样本作为训练样本,后80个样本作为測试样本,分别计算不同lambda相应的Etrain,Eval,Eout。选择最小的Etrain相应的答案

(2)答案:log = -8,Etrain = 0, Eval = 0.05, Eout = 0.025

17.第十七题

(1)题意:和16题的做法一样。选择最小Eval相应的正确答案

(2)答案:log = 0, Etrain = 0.0333,Eval = 0.0375,Eout = 0.0280

18.第十八题

(1)题意:利用17题得到的最优lambda,利用全部样本作为训练样本。计算Ein,Eout

(2)答案:Ein = 0.035 Eout=0.02

19-20:第19-20题

(1)题意:19.把样本分为5份,利用交叉验证的方法计算Ecv,计算得到最小的Ecv

20.利用19得到的最小Ecv相应的lambda值,计算Ein,Eout

(2)答案:19. log=-8, Eval = 0.03

20.Ein = 0.015。Eout = 0.02

本文出处:http://blog.csdn.net/a1015553840/article/details/51173020

其它问题解答请看汇总帖:http://blog.csdn.net/a1015553840/article/details/51085129

機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 Q13-20 MATLAB实现的更多相关文章

  1. 機器學習基石(Machine Learning Foundations) 机器学习基石 课后习题链接汇总

    大家好,我是Mac Jiang,非常高兴您能在百忙之中阅读我的博客!这个专题我主要讲的是Coursera-台湾大学-機器學習基石(Machine Learning Foundations)的课后习题解 ...

  2. 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答

    今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...

  3. 機器學習基石 (Machine Learning Foundations) 作业1 Q15-17的C++实现

    大家好,我是Mac Jiang.今天和大家分享Coursera-台湾大学-機器學習基石 (Machine Learning Foundations) -作业1的Q15-17题的C++实现. 这部分作业 ...

  4. 機器學習基石 机器学习基石 (Machine Learining Foundations) 作业2 Q16-18 C++实现

    大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作业2 Q16-18的C++实现.尽管有非常多大神已经 ...

  5. 機器學習基石 机器学习基石(Machine Learning Foundations) 作业2 第10题 解答

    由于前面分享的几篇博客已经把其他题的解决方法给出了链接,而这道题并没有,于是这里分享一下: 原题: 这题说白了就是求一个二维平面上的数据用决策树来分开,这就是说平面上的点只能画横竖两个线就要把所有的点 ...

  6. 機器學習基石 机器学习基石(Machine Learning Foundations) 作业1 习题解答 (续)

    这里写的是  习题1 中的    18 , 19, 20 题的解答. Packet 方法,我这里是这样认为的,它所指的贪心算法是不管权重更新是否会对train data有改进都进行修正,因为这里面没有 ...

  7. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

  9. 【Machine Learning】机器学习の特征

    绘制了一张导图,有不对的地方欢迎指正: 下载地址 机器学习中,特征是很关键的.其中包括,特征的提取和特征的选择.他们是降维的两种方法,但又有所不同: 特征抽取(Feature Extraction): ...

随机推荐

  1. 关于ros stage与navigation仿真总结5月16号

    主要总结内容 在costmap里是怎么判断机器人和障碍物碰撞了 stage_ros包输入输出,stage是怎么回事 rviz 中footprint和stage中position怎么联系到一起 voxe ...

  2. Linux下如何批量转码iconv

    来源:http://hi.baidu.com/curioz/blog/item/2555863514f9491d90ef390d.html 下载了不少文本txt,如verycd上的致纯书苑,解压看看是 ...

  3. 图解Javascript——执行上下文

    什么是执行上下文? 执行上下文(Execution Context)是ECMAScript规范中用来描述 JavaScript 代码执行的抽象概念,规定了当前代码执行的环境(当前执行代码片段中的变量. ...

  4. 【转】Celery 分布式任务队列快速入门

    Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 分布式 Celery 定时任务 与django结合 通过 ...

  5. jquery ajax事件执行顺序

    jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...

  6. HDU 1013 Digital Roots(字符串,大数,九余数定理)

    Digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  7. 51nod 编辑距离问题(动态规划)

    编辑距离问题 给定两个字符串S和T,对于T我们允许三种操作:(1) 在任意位置添加任意字符(2) 删除存在的任意字符(3) 修改任意字符 问最少操作多少次可以把字符串T变成S? 例如: S=  “AB ...

  8. 去掉Chrome手机版首屏的“推荐的文章”

    百度可得很多类似的文章,然而都是失效的,,比如此文,本文演示所使用的Chrome版本为59. 百度所得的解决办法都是同一个,排版,截图都是一样的,害我浪费了不少力气. 第一,转载文章未标明文章出处: ...

  9. [CF494C]Helping People

    题意:有$n$个穷人,每个穷人有$a_i$的钱,有一个富人决定做$q$次捐赠$(l_i,r_i,p_i)$,表示他有$p_i$的概率给$[l_i,r_i]$的人捐$1$的钱,捐赠的价值为捐赠后最富的人 ...

  10. 【网络流】【Dinic】【最大流】bzoj3396 [Usaco2009 Jan]Total flow 水流

    #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using ...