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

网友投稿 282 2022-09-03


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

最近在cousera上面学习台湾大学的机器学习基石的课程,不过上面的课程都是用英文来进行测试的,做起来总是通过不了,于是在网上搜寻解答方法,最后找到了下面的一个博客,里面记录了  机器学习基石  这门课所有测试的答案,作为参考之用还是十分有用的,下面给出其汇总的网址:

具体链接如下:

1.作业一

(1)作业一课后习题解答:

(2)作业一Q15-17 C++实现(PLA)

(2)作业一Q18-20 C++实现(Pocket PLA)

2.作业二

(1)作业二课后习题解答:

(2)作业二Q16-18 C++实现:

(3)作业二Q19-20 C++实现:

3.作业三

(1)作业三课后习题解答:

(2)作业三Q13-15 C++实现(Linear Regression):

(3)作业三Q18-20 C++实现(Logistic Regression):​​

4.作业四

(1)作业四课后习题解答:

(2)作业四Q13-15 MATLAB实现(Regularization+Validation):​​

机器学习基石手写笔记:​​

关于adaboost的一些个人理解:

====================================================================

作业1 中  15题  Python 代码:

#!/usr/bin/env python3#encoding:UTF-8import urllib.requestL=4train_time=0w=[0]*(L+1)dataList=[]"数据读入"def dataLoad(): global dataList url=" repones=urllib.request.urlopen(url) dataList=repones.readlines() dataList=[(float(v) for v in k.strip().split()) for k in dataList] dataList=[(1.0,)+tuple(k) for k in dataList]#训练过程def train(): global train_time def sign(item): s=0 for k in range(L+1): s+=w[k]*item[k] if(s>0):return 1 else:return -1 def w_change(item): global w for k in range(L+1): w[k]+=item[k]*item[-1] while(True): state=0 for item in dataList: value=sign(item) if(value!=item[-1]): w_change(item) train_time+=1 state=1 if(state==0): breakif __name__=="__main__": dataLoad() train() print(train_time)

结果如下:

给出  权重每次更新时候的  训练数据集误差:

error_1 0.71

error_2 0.29

error_2 0.2375

error_2 0.71

error_2 0.2225

error_2 0.29

error_2 0.2475

error_2 0.685

error_2 0.2575

error_2 0.525

error_2 0.28

error_2 0.1825

error_2 0.2875

error_2 0.1425

error_2 0.68

error_2 0.105

error_2 0.2875

error_2 0.05

error_2 0.5275

error_2 0.0625

error_2 0.4375

error_2 0.1475

error_2 0.25

error_2 0.24

error_2 0.0175

error_2 0.2575

error_2 0.0075

error_2 0.365

error_2 0.1025

error_2 0.3225

error_2 0.0975

error_2 0.1625

error_2 0.1925

error_2 0.065

error_2 0.2275

error_2 0.0125

error_2 0.2175

error_2 0.0025

error_2 0.515

error_2 0.03

error_2 0.1875

error_2 0.025

error_2 0.19

error_2 0.015

error_2 0.2

error_2 0.0

可以,发现每次权重更新后 在数据集的误差不是一直减小的,而是存在着起伏的。但是,由于是线性可分,最终都是会收敛,将所有数据正确分割。

第16题:

#!/usr/bin/env python3#encoding:UTF-8import randomimport urllib.requestL=4train_time=0w=[0]*(L+1)dataList=[]"数据读入"def dataLoad(): global dataList url=" repones=urllib.request.urlopen(url) dataList=repones.readlines() dataList=[(float(v) for v in k.strip().split()) for k in dataList] dataList=[(1.0,)+tuple(k) for k in dataList]#训练过程def train(): global train_time global dataList global w w=[0]*(L+1) def sign(item): s=0 for k in range(L+1): s+=w[k]*item[k] if(s>0):return 1 else:return -1 def w_change(item): global w for k in range(L+1): w[k]+=item[k]*item[-1] while(True): state=0 "打乱顺序" random.shuffle(dataList) for item in dataList: value=sign(item) if(value!=item[-1]): w_change(item) train_time+=1 state=1 if(state==0): breakif __name__=="__main__": dataLoad() for _ in range(2000): train() print(train_time/2000)

结果:

约等于  40 。

第17题:

#!/usr/bin/env python3#encoding:UTF-8import randomimport urllib.requestL=4train_time=0w=[0]*(L+1)dataList=[]"数据读入"def dataLoad(): global dataList url=" repones=urllib.request.urlopen(url) dataList=repones.readlines() dataList=[(float(v) for v in k.strip().split()) for k in dataList] dataList=[(1.0,)+tuple(k) for k in dataList]#训练过程def train(): global train_time global dataList global w w=[0]*(L+1) def sign(item): s=0 for k in range(L+1): s+=w[k]*item[k] if(s>0):return 1 else:return -1 def w_change(item): global w for k in range(L+1): w[k]+=0.5*item[k]*item[-1] while(True): state=0 "打乱顺序" random.shuffle(dataList) for item in dataList: value=sign(item) if(value!=item[-1]): w_change(item) train_time+=1 state=1 if(state==0): breakif __name__=="__main__": dataLoad() for _ in range(2000): train() print(train_time/2000)

答案 仍为  40  。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot结合Quartz实现数据库存储
下一篇:matplotlib.pyplot中add_subplot方法参数111的含义(matplotlib.pyplot.plot()参数详解)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~