機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 Q13-20 MATLAB实现

大家好,我是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题

(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

时间: 2024-08-02 15:11:06

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

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

大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业四的习题解答.笔者在做这些题目时遇到很多困难,当我在网上寻找答案时却找不到,而林老师又不提供答案,所以我就想把自己做题时对题目如何思考的写下来,为大家提供一些思路.当然,我对题目的理解不一定是正确的,如果各位博友发现错误请及时留言联系,谢谢!再次提醒:请不要以此博客作为通过考试的用途,还是更好学习.理解课程的途径!希望我的博客对您的学习有所帮助!

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

大家好,我是Mac Jiang,首先祝贺大家清明节快乐!作为一名苦逼的程序员,博主只能窝在实验室玩玩游戏,顺便趁着大早上没人发一篇微博.不过还是祝各位出行的兄弟玩的开心! 今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业二的习题解答.笔者在做这些题目时遇到很多困难,当我在网上寻找答案时却找不到,而林老师又不提供答案,所以我就想把自己做题时对题目如何思考的写下来,为大家提供一些思路.当然,我对题目的理解不一定是正确的,如果各位博

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

今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到很多困难,当我在网上寻找答案时却找不到,而林老师又不提供答案,所以我就想把自己做题时对题目如何思考的写下来,为大家提供一些思路.当然,我对题目的理解不一定是正确的,如果各位博友发现错误请及时留言联系,谢谢!再次提醒:请不要以此博客作为通过考试的用途,还是更好学习.理解课程的途径!希望我的博客对您的学习有所帮助! 本文出处:http://blog

機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 Q18-20 C++实现

大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三 Q18-20的C++实现.虽然有很多大神已经在很多博客中给出了Phython的实现,但是给出C++实现的文章明显较少,这里为大家提供一条C++实现的思路!我的代码虽然能够得到正确答案,但是其中可能有某些思想或者细节是错误的,如果各位博友发现,请及时留言纠正,谢谢!再次声明,博主提供实现代码的原因不是为了让各位通过测试,而是为学习有困难的同学提供

機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 Q13-15 C++实现

大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三 Q6-10的C++实现.虽然有很多大神已经在很多博客中给出了Phython的实现,但是给出C++实现的文章明显较少,这里为大家提供一条C++实现的思路!我的代码虽然能够得到正确答案,但是其中可能有某些思想或者细节是错误的,如果各位博友发现,请及时留言纠正,谢谢!再次声明,博主提供实现代码的原因不是为了让各位通过测试,而是为学习有困难的同学提供一

機器學習基石(Machine Learning Foundations) 机器学习基石 手写版笔记大全

大家好,我是Mac Jiang.看到大家对我的博客的支持,非常感动.今天和大家分享的是我在学习机器学习基石时的手写笔记.当时在学习的时候,我把一些我认为重要的东西写了下来,一来是为了加深印象,二来是为了供以后复习之用. 网上的机器学习基石笔记也有很多,但大多是电子版,个人更加倾向于手写版的自由.毛主席曾经说过,"不动笔墨不读书",我觉得这句话非常有道理,以我个人的学习方法而言,是离不开笔墨的. 分享自己的笔记的目的主要是为大家提供一些学习上的帮助,和大家一起讨论学习,当然也可以在以后学

機器學習基石 (Machine Learning Foundations) 作业1 Q18-20的C++实现(pocket)

大家好,我是Mac Jiang,今天和大家分享Coursera---台湾大学---機器學習基石 (Machine Learning Foundations)---作业1:Q18-20的C++实现.虽然我的代码得到了较为正确的结果,但是肯定不是最好的,如果各位博友有更好的实现思路,请留言指正,谢谢!希望我的博客能给您带来一些学习上的帮助!Q15-17的实现过程已经在:http://blog.csdn.net/a1015553840/article/details/50979434中给出,有需要的博

NTU-Coursera机器学习:机器学习基石 (Machine Learning Foundations)

课讲内容 这门课以8周设计,分成 4个核心问题,每个核心问题约需2周的时间来探讨.每个约2个小时的录影中,每个小时为一个主题,以会各分成4到5个小段落,每个段落里会有一个后多个随堂的练习.我们在探讨每个核心问题的第二周.依上所述,課程的規畫如下: When Can Machines Learn? [何时可以使用机器学习] 第一周:(NTU-Coursera机器学习:机器学习问题与二元分类) 第一讲:The Learning Problem [机器学习问题]第二讲:Learning to Answ

機器學習的看法

看了官方的機器學習的介紹文檔,感覺機器學習的發展方向還是有很大的空間的.雖然說現在的方向很好,但是,這不是唯一的途徑. 生命科學的發展還在繼續,硬件產業的技術還在突破提升,雖然速度慢了,但是我相信,那些存在于實驗室里的東西,仍不是這個時代所能接受的. 如果到了未來的某一天,機器學習和人工智能真的發展到了一定的境界,那麽,機器終究會有超越人類的一天. 科學是無限制的,這也是人的欲望的表現. 現在的人類和機器的耦合度越來越高了,未來的某一天(現在也有表現),如果人類發展到終究是得依靠機器才能生存的話