机器学习基石课程作业1习题解答如何获取?

2026-06-09 12:487阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1493个文字,预计阅读时间需要6分钟。

机器学习基石课程作业1习题解答如何获取?

最近在Coursera上学习了台湾大学的机器学习基石课程,所有课程都是用英文进行测试的。总体来说,主要通过网上搜索解答方法。最后找到一个博客,上面详细记录了解答过程。

最近在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-8

import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __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

机器学习基石课程作业1习题解答如何获取?

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-8

import random
import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __name__=="__main__":
dataLoad()

for _ in range(2000):
train()

print(train_time/2000)

结果:



约等于 40 。

第17题:

#!/usr/bin/env python3
#encoding:UTF-8

import random
import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __name__=="__main__":
dataLoad()

for _ in range(2000):
train()

print(train_time/2000)

答案 仍为 40 。


本文共计1493个文字,预计阅读时间需要6分钟。

机器学习基石课程作业1习题解答如何获取?

最近在Coursera上学习了台湾大学的机器学习基石课程,所有课程都是用英文进行测试的。总体来说,主要通过网上搜索解答方法。最后找到一个博客,上面详细记录了解答过程。

最近在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-8

import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __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

机器学习基石课程作业1习题解答如何获取?

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-8

import random
import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __name__=="__main__":
dataLoad()

for _ in range(2000):
train()

print(train_time/2000)

结果:



约等于 40 。

第17题:

#!/usr/bin/env python3
#encoding:UTF-8

import random
import urllib.request

L=4
train_time=0
w=[0]*(L+1)
dataList=[]


"数据读入"
def dataLoad():
global dataList

url="www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_math/hw1_15_train.dat"
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):
break

if __name__=="__main__":
dataLoad()

for _ in range(2000):
train()

print(train_time/2000)

答案 仍为 40 。