台大林轩田《机器学习基石》:作业四python实现

机器学习基石 作业四 机器学习基石 作业四 1 假设函数空间变小了,固定噪声大体上会变大。因为假设函数与真实函数之间的差距可能变大了。 2 从第三项就等于0的假设函数包含于从第四项系数才等于0的。 3 直接求导 4 因为加正则项相当于对系数加了个限制。如果最优点在那个限制的球内则相等,否则肯定小于不加限制的时候。具体可以看图理解: 5 计算即可 6.整体过程为,每次随机猜测两种结果,下一轮只再发给上次说准的... 阅读详情

台大林轩田《机器学习基石》:作业一python实现
台大林轩田《机器学习基石》:作业二python实现
台大林轩田《机器学习基石》:作业三python实现
台大林轩田《机器学习基石》:作业四python实现

完整代码:
https://github.com/xjwhhh/LearningML/tree/master/MLFoundation
欢迎follow和star

在学习和总结的过程中参考了不少别的博文,且自己的水平有限,如果有错,希望能指出,共同学习,共同进步

##13

13题题目描述

下载训练样本和测试样本,利用正则化的线性回归,参数lambda取10,得到Ein和Eout

我计算w的方式是使用正规方程,即calculate_w_reg方法

import numpy as np


# load data
def load_data(filename):
    code = open(filename, "r")
    lines = code.readlines()
    xn = np.zeros((len(lines), 3)).astype(np.float)
    yn = np.zeros((len(lines),)).astype(np.int)

    for i in range(0, len(lines)):
        line = lines[i]
        line = line.rstrip('\r\n').replace('\t', ' ').split(' ')
        xn[i, 0] = 1
        for j in range(1, len(xn[0])):
            xn[i, j] = float(line[j - 1])
        yn[i] = int(line[len(xn[0]) - 1])
    return xn, yn


# 正规方程
def calculate_w_reg(x, y, lambda_value):
    return np.dot(np.dot(np.linalg.inv(np.dot(x.transpose(), x) + lambda_value * np.eye(x.shape[1])), x.transpose()), y)


# test result
def calculate_E(w, x, y):
    scores = np.dot(w, x.transpose())
    predicts = np.where(scores >= 0, 1.0, -1.0)
    E_out_num = sum(predicts != y)
    return (E_out_num * 1.0) / predicts.shape[0]


if __name__ == '__main__':
    # prepare train and test data
    train_x, train_y = load_data("hw4_train.dat")
    test_x, test_y = load_data("hw4_test.dat")

    # Q13
    lambda_value = 10
    W = calculate_w_reg(train_x, train_y, lambda_value)
    Ein = calculate_E(W, train_x, train_y)
    Eout = calculate_E(W, test_x, test_y)
    print('Q13: Ein = ', Ein, ', Eout= ', Eout)

Ein = 0.05 , Eout= 0.045

##14,15

14题题目描述

Q14:分别取log10lamda值为{2,1…-10},分别计算Ein和Eout。选取最小的Ein对应的lambda,如果两个lambda对应的Ein一样,选择大的lambda

15题题目描述

Q15:与Q14类似,选取最小的Eout对应的lambda

1.因为优先选大的lambda,所以循环从大到小
2.因为是log10lambda,所以在调用calculate_w_reg()方法时需要的参数为pow(10,lambda)

# Q14-Q15
Ein_min = float("inf")
optimal_Eout = 0
optimal_lambda_Ein = 0
Eout_min = float("inf")
optimal_Ein = 0
optimal_lambda_Eout = 0
for lambda_value in range(2, -11, -1):
    # calculate ridge regression W
    w_reg = calculate_w_reg(train_x, train_y, pow(10, lambda_value))
    Ein = calculate_E(w_reg, train_x, train_y)
    Eout = calculate_E(w_reg, test_x, test_y)
    # update Ein,Eout,lambda
    if Ein_min > Ein:
        Ein_min = Ein
        optimal_lambda_Ein = lambda_value
        optimal_Eout = Eout
    if Eout_min > Eout:
        Eout_min = Eout
        optimal_lambda_Eout = lambda_value
        optimal_Ein = Ein
# Q14
print('Q14: log10lambda = ', optimal_lambda_Ein, ', Ein= ', Ein_min, ', Eout = ', optimal_Eout)
# Q15
print('Q15: log10lambda = ', optimal_lambda_Eout, ', Ein = ', optimal_Ein, ', Eout= ', Eout_min)

运行结果:
Q14: log10lambda = -8 , Ein= 0.015 , Eout = 0.02
Q15: log10lambda = -7 , Ein = 0.03 , Eout= 0.015

##16,17

16题题目描述

Q16:利用前120个样本作为训练样本,后80个样本作为测试样本,分别计算不同lambda对应的Etrain,Eval,Eout,选择最小的Etrain对应的lambda

17题题目描述

Q17:与Q16类似,选择最小Eval对应的lambda

本来训练样本和测试样本的选取应当是随机的,但由于这道题给的数据已经随机排列过了,所以我们只要固定分配就好了

# Q16-Q17
Etrain_min = float("inf")
Eval_min = float("inf")
# 跟着Etrain_min更新的值
Eout_Etrain_min = 0
Eval_Etrain_min = 0
optimal_lambda_Etrain_min = 0
# 跟着Eval_min更新的值
Etrain_Eval_min = 0
Eout_Eval_min = 0
optimal_lambda_Eval_min = 0
split = 120
for lambda_value in range(2, -11, -1):
    w_reg = calculate_w_reg(train_x[:split], train_y[:split], pow(10, lambda_value))
    Etrain = calculate_E(w_reg, train_x[:split], train_y[:split])
    Eval = calculate_E(w_reg, train_x[split:], train_y[split:])
    Eout = calculate_E(w_reg, test_x, test_y)
    if Etrain_min > Etrain:
        optimal_lambda_Etrain_min = lambda_value
        Etrain_min = Etrain
        Eout_Etrain_min = Eout
        Eval_Etrain_min = Eval
    if Eval_min > Eval:
        optimal_lambda_Eval_min = lambda_value
        Eout_Eval_min = Eout
        Eval_min = Eval
        Etrain_Eval_min = Etrain
# Q16
print('Q16: log10 = ', optimal_lambda_Etrain_min, ', Etrain= ', Etrain_min, ', Eval = ', Eval_Etrain_min,
      ', Eout = ', Eout_Etrain_min)
# Q17
print('Q17: log10 = ', optimal_lambda_Eval_min, ', Etrain= ', Etrain_Eval_min, ', Eval = ', Eval_min, ', Eout = ',
      Eout_Eval_min)

运行结果:
Q16: log10 = -8 , Etrain= 0.0 , Eval = 0.05 , Eout = 0.025
Q17: log10 = 0 , Etrain= 0.03333333333333333 , Eval = 0.0375 , Eout = 0.028

#18

18题题目描述

利用17题得到的最优lambda,利用所有样本作为训练样本,计算Ein,Eout

注意

# Q18
# optimal_lambda_Eval_min是第17题得到的最优lamda
w_reg = calculate_w_reg(train_x, train_y, pow(10, optimal_lambda_Eval_min))
optimal_Ein = calculate_E(w_reg, train_x, train_y)
optimal_Eout = calculate_E(w_reg, test_x, test_y)
print('Q18: Ein = ', optimal_Ein, ', Eout = ', optimal_Eout)

运行结果:
Q18: Ein = 0.035 , Eout = 0.02

#19

19题题目描述

把样本分为5份,每份40个实例,利用交叉验证的方法计算Ecv,计算得到最小的Ecv及对应的lambda

train_data= raw_data-test_data,test_data可能在中间或两边,这时要自己构造一下train_data

# Q19
folder_num = 5
split_folder = 40
Ecv_min = float("inf")
optimal_lambda = 0
for lambda_value in range(2, -11, -1):
    total_cv = 0
    for i in range(folder_num):
        # get test_data
        test_data_x = train_x[i * split_folder:(i + 1) * split_folder, :]
        test_data_y = train_y[i * split_folder:(i + 1) * split_folder]
        # train_data= raw_data-test_data,test_data可能在中间或两边
        if 0 < i < (folder_num - 1):
            train_data_x = np.concatenate((train_x[0:i * split_folder, :], train_x[(i + 1) * split_folder:, :]),
                                          axis=0)
            train_data_y = np.concatenate((train_y[0:i * split_folder], train_y[(i + 1) * split_folder:]), axis=0)
        elif i == 0:
            train_data_x = train_x[split_folder:, :]
            train_data_y = train_y[split_folder:]
        else:
            train_data_x = train_x[0:i * split_folder, :]
            train_data_y = train_y[0:i * split_folder]
        w_reg = calculate_w_reg(train_data_x, train_data_y, pow(10, lambda_value))
        Ecv = calculate_E(w_reg, test_data_x, test_data_y)
        total_cv += Ecv
    total_cv = total_cv * 1.0 / folder_num
    if Ecv_min > total_cv:
        Ecv_min = total_cv
        optimal_lambda = lambda_value
print('Q19: log10=', optimal_lambda, ' Ecv=', Ecv_min)

运行结果:
Q19: log10= -8 Ecv= 0.03

##20

20题题目描述

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

# Q20
w_reg = calculate_w_reg(train_x, train_y, pow(10, optimal_lambda))
Ein = calculate_E(w_reg, train_x, train_y)
Eout = calculate_E(w_reg, test_x, test_y)
print('Q20: Ein = ', Ein, 'Eout = ', Eout)

运行结果:
Q20: Ein = 0.015 Eout = 0.02

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

相关推荐

台大林轩田《机器学习基石》:作业一python实现

15 下载训练数据,每一行都是一个训练实例,每一行的数据中,前四项是特征值,最后一项是标签,编写PLA算法进行分类,设w初始为0,sign(0)=-1,问迭代多少次后算法结束? 1.需要自己手动添加一维特征,X0=1 2.一个点分类正确的条件是x*w*y&amp;amp;amp;amp;amp;gt;0(PLA) 3.算法结束的条件是所有实例都被分配正确 代码如下: import numpy class NaiveCy...

devil_bye的博客 6140

机器学习基石-作业四-代码部分

这次的作业内容主要就是对带正则化项的线性规划的闭式解做各种操作:选择、把数据分成训练集和交叉验证、k-折交叉验证。完全套公式就可以了,这里唯一的一个问题就是偏移量参不参加正则化; 在林老师的课程中,最后的闭式解的公式为: 按照这个公式,线性得分函数中的b也参加了正则化。 而在吴恩达的课程,以及很多其他的地方得到的经验是,b一般是不参加正则化的。按照这样的理解,假设w0=b,那么公式为: ...

萝卜地里的兔子的博客 419

台大林轩田《机器学习基石》:作业二python实现

17,18 分类方法是”positive and negative rays”,老师上课讲过的 第17题是要在[-1,1]种取20个点,分隔为21个区间作为theta的取值区间,每种分类有42个hyphothesis,枚举所有可能情况找到使E_in最小的hyphothesis,记录最小E_in 第18题的意思是在17题得到的最佳hyphothesis的基础上,利用第16题的公式计算E...

devil_bye的博客 1185

林轩田-机器学习基石-作业4-python源码

林轩田-机器学习基石-作业4-python源码

rikichou的专栏 1196

林轩田机器学习作业代码

林轩田机器学习视频的的作业代码 --- Learning-from-data-作业代码

ScanNet数据集详解

ScanNet 是一个 RGB-D 视频数据集,在超过 1500 次扫描中包含了 250 万个视图,并标注了 3D 相机位姿、表面重建和实例级的语义分割。为了收集这些数据,设计了一个易于使用且具有扩展性的 RGB-D 捕获系统,包括自动化的表面重建和众包的语义标注。如果您想下载 ScanNet 数据,请使用您的机构邮箱地址填写一份 ScanNet 使用条款协议,并发送至 scannet@googlegroups.com。压缩包是将3D的标注信息“拍扁”成2D图片的结果,对应原始视频的每一帧。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 3917

台大林轩田《机器学习基石》:作业三python实现

台大林轩田《机器学习基石》:作业一python实现 台大林轩田《机器学习基石》:作业一python实现 台大林轩田《机器学习基石》:作业三python实现 13 给定target function,我们的工作是在X=[-1,1]x[-1,1]上随机产生1000个点,利用f(x1,x2)计算它的值,然后在基础上添加10%的噪声(二元分类的噪声就是把10%的样本的y值取相反数)。如果不做f...

devil_bye的博客 1351

防止加入域主机脱离域的控制(管理员权限)

一、简介   当公司所有主机加入到域后,SA首要工作就是防止加入域的主机脱离域的控制。让我发现该工作的必要性是一程序猿,前一天刚配完禁止执行QQ、微信执行,第二天就看到那家伙在用微信聊天,肯定是用回旧的本地账号登陆了。   本人所在公司安装软件的类型繁杂,无管理员权限运行不少软件会报错,不得不授予「域账号」本地管理员权限。过大的权限带也来了一系列后果:用户可随意退出域、创建本地管理员...

der69615的博客 3173

台大机器学习基石(Machine Learning Foundations)(Quiz3--作业三)的Python实现(带详细注释)

Quiz 3 (q13-15, q18-20) 源码文件链接:https://github.com/Alex-YP-Jiang/Machine-Learning-Foundations-Taiwan-University-Quiz-1-4-Python-Codes >>> # Q13-15 1st order and feature-transformed(2nd ...

weixin_45135272的博客 278

手把手教你学veriolg(二十六)-- Verilog CIC 滤波器设计

目录 Verilog CIC 滤波器设计1. CIC 滤波器的基本原理2. Verilog 实现3. 说明4. 测试激励5. 总结 CIC(Cascade-Integrator-Comb)滤波器是一种特殊的数字滤波器,常用于多速率信号处理中,尤其是用于信号的上采样(插值)和下采样(抽取)。CIC 滤波器的特点在于它具有简单的硬件实现、不需要乘法器(仅使用加法器和延迟元件)、且具有线性相位特性。然而,CIC 滤波器的缺点是它会产生较大的量化误差,因此在设计时需要特别注意字长的选择以避免溢出。1. CIC 滤波

MHD0815的博客 888

使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型

智能家居中的智能照明控制系统旨在通过自动化手段优化家庭照明,提高能源效率和居住舒适度。这通常涉及传感器(如光敏传感器、运动传感器)、控制器(如微控制器或PLC)以及执行器(如调光器或开关)。在这个教程中,我们将使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型。

xiaoheshang_123的博客 217

《机器学习基石》作业一

已入机器学习坑,下决心走下去。《统计学习方法》一书介绍了十种算法,不算太难,但仍需重读以仔细研究其中的推导。《机器学习实战》一书则给出了各种算法的具体实例,Python实现,适合入门者了解算法的具体应用。另在Cousera上选了两门课:斯坦福Andrew Ng的《Machine Learning》、台大林田轩的《机器学习基石》和《机器学习技法》。Andrew的课程简单,省去了很多的数学推导和证明,但

Marcovaldong的博客 5486

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

机器学习基石作业一(NTU-林轩田) Python代码部分

机器学习基石作业一(NTU-林轩田) Python代码部分 Q15 这题是写PLA演算法 import numpy as np import pandas as pd def PLA(data): n,m = data.shape w = np.zeros([m-1,1]) counts = 0 k = 0 while 1: k=0 ...

weixin_39765532的博客 408

Openclaw第5章 知识库管理

💡:学会使用 OpenClaw构建个人知识库系统,实现网页文章存档、GitHub项目管理、论文笔记整理和跨设备同步。

Maynor的博客 774

爆肝整理:微信公众号文章HTML编写完整规范,运营必备手册

微信公众号文章排版总是出错?📱 这份完整的HTML编写规范文档帮你彻底解决!文档包含所有支持的标签、CSS属性、实用代码模板和注意事项 📋,让你快速掌握微信文章的HTML编写技巧,告别第三方编辑器依赖 ✅

XiaoqiangClub的博客 2301

机器学习路径规划

机器学习路径规划从知乎上听说了林轩田老师机器学习的课程,又偶然从百度云上获得了他讲课的视频,看了一节课程介绍后,大体规划了下machine learning的学习路径视频

Jade_Moon的博客 5045

Adams Car——Adams car与Simulink联合仿真

Adams与simulink悬架联合仿真

Mr.邹的博客 2124

深度盘点:机器学习这6套技术资料真香啊

大家好,这几天我对机器学习资料进行了整理,发现这些年已积攒了太多的学习资料。当初从小白到现在一路走来真心不易。至今记得,当初反复阅读了4遍周志华老师的《机器学习》,满满的都是理论基础,非常的枯燥。 后面开始接触林轩田、李宏毅、吴恩达等老师的课程。今天我把这些资料都进行了梳理,分析给大家,喜欢的文末获取。整理不易,获取前记得点赞、收藏、关注。 1.资料展示 1.1 全部资料展示 1.2 机器学习技法(台大-林轩田) 1.3 斯坦福吴恩达 1.4 唐宇迪 python 数据分析与机器学习(视频) 1.5

机器学习社区 1265

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

机器学习笔记

教程 吴恩达机器学习视频教程; 吴恩达机器学习讲义; 吴恩达机器学习课程资源,包括笔记、视频、python作业;

qq_36699238的博客 164

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Machine Learning学习资源

machine learning学习资源

好记性不如烂笔头 257

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

撒花!李宏毅机器学习 2021 版正式开放上线

提起李宏毅老师,熟悉机器学习的读者朋友一定不会陌生。最典型的就是开局一言不合就“宝可梦”。李宏毅老师幽默风趣的教学风格也吸引力很多机器学习爱好者。李宏毅老师的机器学习课程可以说是最具代表性...

红色石头的专栏 2266

年终超全整理:机器学习视频教程和 Python 技术路线来了

大家好,2022马上要来了,这几天对学习机器学习时收藏的资料进行了整理,当初看过《吴恩达老师》的几个视频,但是没看几个视频就直接去磕《机器学习》(又名“西瓜书”)和《机器学习实战》了。现在主要是跟着李宏毅老师的机器学习视频。 先说一句“资料在精,不再多”。选好一个资料,把这个资料给磕完就是很不错的。以上提到的资料都会有,给大家准备这么多,是给大家多点选择的机会. 1.资料展示 1.1 全部资料展示 1.2 机器学习技法(台大-林轩田) 1.3 斯坦福吴恩达 1.4 唐宇迪 pytho

slw20010213的博客 1199

超全整理:机器学习和 Python 技术路线来了

大家好,2022年已开始一段时间了,这几天对学习机器学习时收藏的资料进行了整理,当初看过《吴恩达老师》的几个视频,但是没看几个视频就直接去磕《机器学习》(又名“西瓜书”)和《机器学习实战》了。现在主要是跟着李宏毅老师的机器学习视频。 先说一句“资料在精,不再多”。选好一个资料,把这个资料给磕完就是很不错的。以上提到的资料都会有,给大家准备这么多,是给大家多点选择的机会. 1.资料展示 1.1 全部资料展示 1.2 机器学习技法(台大-林轩田) 1.3 斯坦福吴恩达 1.4 唐宇迪 python 数据分

Python学习与数据挖掘 543

B站好资源: 数据科学,机器学习,python

数学基础 1、Up主:3Blue1Brown的数学基础 https://space.bilibili.com/88461692 课程介绍:用动画讲述数学专业知识,其视频涵盖了线性代数、微积分、拓扑学等领域,每门课都配有直观生动的动画演示,帮助观众加深对数学概念定理的理解。 2、数学分析 https://www.bilibili.com/video/av8042121 课程介绍:复旦陈纪修老师的数学...

一直在路上 1624

不要浪费时间!直到你到达你的蟒蛇机器学习

Python——书 这里推荐三本最有价值的书吧: 《流畅的Python》,作者:[巴西]Luciano Ramalho,很厚,比较全面,可以作为工具书常常翻看 《 Python编程从入门到实践(第2版)》,作者:[美]埃里克·马瑟斯(Eric,Matthes)非常全面,对新手还算友好,里面有很多的练习项目非常不错。 《利用Python进行数据分析·第2版》数据分析入门必读书,主要介绍了python 3个库numpy(数组),pandas(数据分析)和matplotlib(绘图)的学习。 Pyt..

weixin_59071011的博客 330
上一篇: 台大林轩田《机器学习基石》:作业三python实现
下一篇: 《数学之美》读后感
不晓得X
博客等级 码龄10年 114粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值