吴恩达机器学习作业5:Regularized Linear Regression and Bias v.s. Variance python实现

机器学习作业5编程作业(python):Regularized Linear Regression and Bias v.s. Variance 英文文档图片均来自原档作业pdf截图 网址https://www.coursera.org/learn/machine-learning/programming/8f3qT/linear-regression* 1 Regularized Linear Regression 打开ex5data1.mat 文件已经划分好了训练集,交叉验证集,测试集 先画出训练集X,y的散点图: 依旧编写代价函数: 这里包括对常数项的Theta进行正则化,不用像之前把theta0去掉; def cost_linear(t 阅读详情

一、总结

所谓偏差和方差,可以用打靶来作为比喻。
偏差可以用来衡量打中的位置距离靶心的距离(精确度)
方差可以用来衡量打中位置的集中程度(若分散则方差比较大)

偏差大表现为拟合曲线与实际样本不符。
方差大表现为拟合曲线与实际样本过于贴合,当出现新增样本的时候,与其不符合。

二、python实现

1、代价函数和梯度下降

使用的预测模型为线性模型,在前面的练习已经写过,直接上代码:

梯度下降:(注意返回的梯度下降为一维,用flatten函数处理)

import numpy as np


def gradient(theta, x, y, mylamda):

    m = len(theta)
    theta = np.array(theta).reshape([m, 1])

    m = x.shape[0]
    one = np.ones([m, 1])
    x = np.hstack([one, x])

    hx = np.dot(x, theta)
    grad = np.dot(x.T, hx - y) / m
    grad[1:, 0] = grad[1:, 0] + (mylamda / m) * theta[1:, 0]

    return grad.flatten()

代价函数:

import numpy as np


def costfunction(theta, x, y, mylambda):

    m = np.size(theta)
    theta = np.array(theta).reshape([m, 1])

    m = x.shape[0]
    one = np.ones([m, 1])
    x = np.hstack([one, x])
    hx = np.dot(x, theta)
    cost1 = np.sum(np.power(hx - y, 2)) / (2 * m)

    if theta.shape[0] > 2:
        cost2 = mylambda / (2 * m) * np.sum(np.power(theta[1:, :], 2))
    else:
        cost2 = mylambda / (2 * m) * np.power(theta[1:, :], 2)

    return cost1 + cost2

2、学习曲线

根据训练集大小的增加来计算对应训练集的误差、交叉验证集的误差

import numpy as np

from trainLinearReg import trainLinearReg
from costFunction import costfunction


def learningcurve(x, y, xval, yval, mylambda):

    m = x.shape[0]

    cost_train = np.zeros(m)
    cost_val = np.zeros(m)
    init_theta = np.ones(x.shape[1] + 1)

    for i in range(m):

        x_temp = x[0:i+1, :]
        y_temp = y[0:i+1, :]


        theta = trainLinearReg(init_theta, x_temp, y_temp, mylambda)   # 传入0相当于不进行正则化

        cost_train[i] = costfunction(theta, x_temp, y_temp, mylambda)
        cost_val[i] = costfunction(theta, xval, yval, mylambda)

    return cost_train, cost_val

寻找最小值的函数 trainLinearReg 实现 :

import numpy as np
import scipy.optimize as opt

from costFunction import costfunction
from linearRegressionGradient import gradient


def trainLinearReg(theta, x, y, mylambda):

    result = opt.minimize(fun=costfunction, x0=theta,
                          args=(x, y, mylambda), method='TNC', jac=gradient)

    return result.x

结果:
根据
训练集的误差和交叉验证集的误差中间始终存在一条沟壑,且训练集误差不趋近于0。说明拟合的曲线出现偏差,而且增加训练集的方式并不能减少两者之间误差的大小。

3、特征增加来减少偏差

本来训练集X只有一个特征,通过X的高次方来构建新的特征。

import numpy as np


def polyfeature(x, p):

    m = x.shape[0]
    x_ploy = np.zeros([m, p])

    for i in range(p):

        x_ploy[:, i] = np.power(x[:, 0], i+1)

    return x_ploy

练习中的X最高到了八次方,多了七个特征。但是过高阶数的特征其数值比较大,最好将其缩小:处理成正态分布的类型:

import numpy as np


def featureNormalize(x):

    m, n = x.shape
    mu = np.zeros(m)
    sigma = np.zeros(m)
    x_norm = np.zeros([m, n])

    for i in range(n):

        mu[i] = np.mean(x[:, i])
        sigma[i] = np.std(x[:, i])
        x_norm[:, i] = (x[:, i] - mu[i]) / sigma[i]

    return x_norm, mu, sigma

结果,通过λ的设置来观察拟合过程(主要观察过拟合)

  1. 过拟合状态:λ= 0
    在这里插入图片描述
    拟合曲线(不光滑,不具有普遍性,高方差)
    在这里插入图片描述

  2. 过拟合状态,λ= 0.03
    在这里插入图片描述

  3. 过拟合状态, λ = 0.1
    在这里插入图片描述

  4. 最佳状态 λ = 1
    加大对Theta的惩罚之后,训练集的过拟合状态再次得到改善,但是cost也从0增加,交叉验证集的cost再次减少,两者趋于相等。
    在这里插入图片描述
    拟合曲线:(相对平滑)
    在这里插入图片描述
    至此,该练习的思路:

    1 线性模型无法很好拟合数据(偏差,学习曲线沟壑无法随着训练集的增加减少而有效交叉验证集的cost),因此想增加特征来更好的拟合预测曲线。
    2 增加特征后发现预测曲线出现过拟合的现象(训练集的cost接近0, 而交叉验证集最终不会随着训练集的增加减少,学习曲线沟壑无法随着训练集的增加而减少)。
    3 通过增加 λ 的值来减少过拟合,使预测曲线平滑。
    
Coursera吴恩达ML 第六周编程week6 Regularized Linear Regression and BiasVariance编程注释选做 Coursera Machine Learning 第六周编程week6 ex5Regularized Linear Regression and BiasVariance编程全套满分题目+注释选做 立即下载

相关推荐

别再为SCI论文配图发愁了!手把手教你用PS+AI搞定从数据图到模式图的全流程

本文详细解析了如何利用Photoshop(PS)和Illustrator(AI)高效完成SCI论文配图的全流程,涵盖数据可视化、模式图设计及期刊适配性输出。通过实战案例,帮助科研人员掌握位图与矢量图的处理技巧,提升论文配图质量,满足不同期刊的出版要求。

weixin_28630185的博客 381

机器学习算法误差分析 学习曲线分析 代码实现 吴恩达机器学习第五次作业

欠拟合图像 样本很小时,训练集可以较好拟合,一旦样本变多,过于简单的直线无法拟合数据,误差变大。对于交叉验证集而言,样本变多拟合效果自然更好,但是最终趋于跟训练集误差基本相同,因为都有大量的数据点无法拟合。 function [error_train, error_val] = learningCurve(X, y, Xval, yval,lambda) m_train=size(X,1); error_train=zeros(m_train,1); error_val=zeros(m_train,1)

qq_42474833的博客 797

从零配置到稳定运行:A4988步进电机驱动模块的实战避坑指南

本文详细介绍了A4988步进电机驱动模块的配置与优化技巧,涵盖硬件连接、电流调节、微步设置及散热优化等关键环节。通过实战经验分享,帮助用户避开常见陷阱,实现步进电机的稳定运行,特别适合单片机开发者和3D打印机爱好者参考。

weixin_28452161的博客 165

机器学习吴恩达编程作业题5—正则化线性回归和偏差/方差

1、正则化线性回归 1.1可视化数据集 我们将从可视化数据集开始,其中包含水位变化的历史记录x和流出水坝的水量y。将实现线性回归,并使用它来拟合数据的直线并绘制学习曲线。将实现多项式回归,以找到更好的数据拟合。复制ex5data1数据集到D:\Machine Learning\ex5目录下。直接调用plot函数进行数据集的绘制。 1.2正则化线性回归成本函数和梯度 注意,你不应该正则化θ0项。 在当前目录下建立linearRegCostFunction.m文件: function [J, grad]

qq_42148307的博客 769

“华为杯”研究生数学建模竞赛2017年-【华为杯】B题:面向下一代光通信的 VCSEL 激光器仿真模型

得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰值向。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状。方案,包括可能的数学公式,不同温度和偏置电流下的带宽响应曲线,并与问题。线,得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状逐渐变得。得的激光器特性曲线和模型中仿真得到的特性曲线,之后,可以将两组曲线的差。说明的是,由于数值优化算法的成功与否很大程度上依赖于初始参数的猜测,参。

getusushu的博客 97

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 244

吴恩达机器学习作业Python3实现(五):方差和偏差及学习曲线绘制

寻找志同道合的学习伙伴,请访问我的个人网页. 该内容同步发布在优快云和耳壳网. 正则化线性回归 这一部分,我们需要先对一个水库的流出水量以及水库水位进行正则化线性归回。然后将会探讨方差-偏差的问题 数据可视化 import numpy as np import matplotlib.pyplot as plt from scipy.io import loadmat import pandas as pd data = loadmat('ex5data1.mat') data {'__header.

专注当下,持续进步。 1615

手把手教你 Ubuntu 24.04 离线安装 Ollama

本文介绍 Ubuntu 下离线安装 Ollama 并使用 Ollama 部署 llama3.1-70b 大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1018

机器学习:使用matlab实现曲线线性回归拟合并绘制学习曲线

来自coursea机器学习课程ex5。使用线性回归拟合多项式曲线,并通过学习曲线评估模型加以改进

ShadyPi的IT笔记 1万+

《MySQL 入门教程》第 03 篇 管理数据库

本篇主要介绍 MySQL 数据库的创建、查看、选择和删除操作,包括使用 mysql 命令行和 MySQL Workbench 图形工具两种方式。

Tony.Dong的专栏 3522

NSIS教程(8): 基于第三方界面库的安装包界面

前面的几篇文章介绍了NSIS的传统界面的安装包和现代界面的安装包的制作方法,也提到了NSIS支持自定义页面(即使用page custom)的特性,自定义页面需要用户自己创建对话框、控件、添加控件响应等等,虽然NSIS提供了nsDialogs.nsh来支持这些功能,但使用起来还是不太方便(需要专门了解这个插件诸多用法),而且不够灵活,所以本文介绍一种终极的自定义界面的安装包解决方案,即完全使用第三方

while(1) { smile(); } 9万+

斯坦福ML课程——python转写(Week6—课程作业ex5)

利用python完成课程作业ex5,Introduction如下: In this exercise, you will implement regularized linear regression and use it to study models with dierent bias-variance properties. 代码是与Matlab中的Part相对应的,具体如下(代码整体结...

wangzhihao_2015的博客 406

cuMotion 入门教程(一)面向机器人学的GPU加速运动生成技术

NVIDIA cuMotion是一款高性能机器人运动生成库,专注于机械操作任务,利用GPU加速技术提升性能。开发者预览版支持运动学/逆运动学、碰撞感知路径规划、轨迹优化等功能,兼容任意自由度机器人。该库提供C++和Python接口,支持从URDF/XRDF文件加载机器人模型,包含世界建模、碰撞检测等工具。教程详细介绍了安装配置、机器人描述加载、运动学计算、世界建模、逆运动学求解以及轨迹优化等核心功能。cuMotion整合了Lula和cuRobo库的技术优势,将成为Isaac ROS的核心组件,适用于工业机器

2506_90492529的博客 2195

吴恩达机器学习(十三)—— ex5:Regularized Linear Regression and Bias v.s. Variance(MATLAB+Python)

一、线性回归的正则化1.1 可视化数据集1.2 正则化线性回归的代价函数1.3 线性回归梯度的正则化1.4 拟合线性回归二、偏差和方差2.1 学习曲线三、多项式回归3.1 学习多项式回归3.2 可选练习:调整正则化参数3.3 使用交叉验证集选择λλλ3.4 可选的练习:计算测试集误差3.5 可选的练习:使用随机选择的样本绘制学习曲线   本次练习对应的基础知识总结→\rightarrow→线性回归、正则化、应用机器学习的建议和机器学习系统的设计。   本次练习对应的文档说明和提供的MATLAB代码→\ri.

大彤小忆的博客 2697

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

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

吴恩达——机器学习ex5(Regularized Linear Regression and Bias v.s. Variance)

1.1 Visualizing the dataset import matplotlib.pyplot as plt import scipy.io data = scipy.io.loadmat('data/ex5data1.mat') # print(data.keys()) '''绘制training data''' a = data['X'] b = data['y'] plt.s...

qq_34229228的博客 1020

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

吴恩达机器学习编程作业ex5 Regularized Linear Regression and Bias v.s. Variance

一、程序及函数 1.引导脚本ex5.m %% Machine Learning Online Class % Exercise 5 | Regularized Linear Regression and Bias-Variance % % Instructions % ------------ % This file contains code that helps you get started on the % exercise. You will need to complete the .

Polaris的博客 1574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

吴恩达老师机器学习ex5.Regularized Linear Regression and Bias v.s.Variance

吴恩达 机器学习 第六周作业 Regularized Linear Regression and Bias v.s.VariancelinearRegCostFunction.m learningCurve.m polyFeatures.m validationCurve.m Octave command prompt

weixin_42993002的博客 166

吴恩达机器学习(五):Regularized Linear Regression and Bias v.s. Variance

奔跑吧蚂蚁呀 285

python实现吴恩达机器学习练习5(偏差与方差)

Regularized Linear Regression and Bias v.s. Variance import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy.io as io import scipy.optimize as opt data = io.loadmat('D:/py...

qq_17541489的博客 704

吴恩达机器学习作业5---Regularized Linear Regression and Bias vs. Variance

Regularized Linear Regression and Bias vs.Variance 文章目录Regularized Linear Regression and Bias vs.Variance代码分析实现正则化线性回归模型数据集 代码分析 在本练习中,我们将实现正则化线性回归,并使用它来研究具有不同偏差-方差特性的模型 首先导入类库 import numpy as np import matplotlib.pyplot as plt import scipy.io #Used to loa

NP_hard的博客 680

Andrew NG 机器学习 练习5-Regularized Linear Regression and Bias/Variance

1 Regularized Linear Regression本文根据水库中蓄水标线(water level) 使用正则化的线性回归模型预测 水流量(water flowing out of dam),然后 debug 学习算法 以及 讨论偏差和方差对 该线性回归模型的影响。1.1 Visualizing the dataset本作业的数据集分成三部分: ⓐ训练集(training set),样本

无关风月 1725

机器学习:五(Regularized linear regression and bias-variance)

一、引言   本文是总结斯坦福大学机器学习课程的第五次作业。作业分为两个部分,第一部分:根据水库的水位变化情况,要求使用正则化的线性回归预测大坝的出水量。第二部分:诊断调试机器学习算法和检查偏差和方差的影响。   作业,给出12个测试集数据,特征量只有一个x1反应的水库的水位情况,y是对应的大坝出水量。首先使用一元线性回归拟合12个样本序列,画图得出简单的一元线性回归并不能很好的拟合测试数据,...

weixin_34200628的博客 251

Matlab吴恩达机器学习编程练习ex5:正则化线性回归和偏差v.s. 方差Regularized Linear Regression and Bias v.s. Variance

本文基于吴恩达老师第六周的练习,在这次的练习中,你将会实现正则化的线性回归并且用它去实现不同的偏差和方差的性质。 作业大纲1 正则化线性回归1.1 数据可视化1.2 正则化线性回归代价函数1.3 正则化线性回归梯度 linearRegCostFunction.m1.4 线性回归拟合2 偏差-方差2.1 学习曲线 learningCurve.m 1 正则化线性回归 在前半部分的练习中,你将实现正则化线性回归通过水库中水位的变化去预测从大坝中流出的水量。在后半部分,你将会通过调试学习算法诊断和测试偏差和方差的

weixin_44389971的博客 1277

吴恩达cs229|编程作业第五周(Python)

练习五:正则化线性回归与偏置vs方差 目录 1.包含的文件。 2.正则化线性回归。 3.偏差和方差。 4.多项式回归。 1.包含的文件 文件名 含义 ex5.py 实验主程序 ex5data1.mat 数据集 featureNormalize.py 特征缩放程序 trainLinearReg.py 训练程序 plotFit.py ...

qq_24739717的博客 1303

Coursera机器学习 week6 编程作业代码

这是Coursera上 Week4 的 “神经网络的表示” 的编程作业代码。经过测验,全部通过。 下面是 linearRegCostFunction.m 的代码: function [J, grad] = linearRegCostFunction(X, y, theta, lambda) %LINEARREGCOSTFUNCTION Compute cost and gradient for

请叫我AXin 6128

【题解】编程作业ex5: Regularized Linear Regression and Bias/Variance (Machine Learning)

吐槽:这个作业用了几个小时,,光是复习前面的就整了半天=。=不过问题不大,也就debug了好久,虽然最后我还是编出来了+_+以后一定要一鼓作气完成某个课程。。。 题目: If you are using the MATLAB Online access provided for this course (recommended), or if you have an existing installation of MATLAB (>= R2019b), follow the instructio

不知道叫什么的博客 2914
上一篇: 吴恩达机器学习作业4:Neural Networks Learning python实现
下一篇: 吴恩达机器学习作业6 :Support Vector Machines
zsiming
博客等级 码龄7年 43粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值