博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 Q13-20 MATLAB实现
阅读量:7043 次
发布时间:2019-06-28

本文共 2952 字,大约阅读时间需要 9 分钟。

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

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

本文出处:

其它问题解答请看汇总帖:

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    endendend

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.主进程

clctrainingData = 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

本文出处:

其它问题解答请看汇总帖:

你可能感兴趣的文章
如何追踪GitHub项目的流行度
查看>>
关于Wi-Fi安全的探讨
查看>>
除了贡献代码 Amaze UI首次探索国内开源商业模式
查看>>
科达董事长陈冬根获选为苏州科技创业十大人物
查看>>
《云云众声》第109期:中国制造千人会 等你开场!
查看>>
关于5G技术你不得不知的5个问题
查看>>
数据中心何时能摆脱夜夜割,蓝瘦香菇
查看>>
PHP生成随机密码的4种方法及性能对比
查看>>
机器学习技术如何打击网络零售欺诈行为
查看>>
云计算发展惹质疑 安全厂商竞逐“云安全”
查看>>
英特尔Michael Greene:联合Ceph社区和合作伙伴,推动存储性能优化提升
查看>>
一个土豪的智能家居梦想
查看>>
大数据如何给运营做支撑
查看>>
35 个 Java 代码性能优化总结
查看>>
理解Android安全机制
查看>>
从代码构建到性能分析,Java开发人员的首选工具
查看>>
如何防止rogue server破坏数据中心
查看>>
传网络安全提供商FireEye有意收购CyberArk
查看>>
手把手教你打造一个纯CSS图标库
查看>>
硬件辅助超融合:任意云中的全闪存VSAN
查看>>