1.9 程序示例--局部加权线性回归-机器学习笔记-斯坦福吴恩达教授

article/2025/9/27 23:49:58

程序示例–局部加权线性回归

现在,我们在回归中又添加了 JLwr() 方法用于计算预测代价,以及 lwr() 方法用于完成局部加权线性回归:

# coding: utf-8
# linear_regression/regression.py# ...def JLwr(theta, X, y, x, c):"""局部加权线性回归的代价函数计算式Args:theta: 相关系数矩阵X: 样本集矩阵y: 标签集矩阵x: 待预测输入c: tauReturns:预测代价"""m,n = X.shapesummerize = 0for i in range(m):diff = (X[i]-x)*(X[i]-x).Tw = np.exp(-diff/(2*c*c))predictDiff = np.power(y[i] - X[i]*theta,2)summerize = summerize + w*predictDiffreturn summerize@exeTime
def lwr(rate, maxLoop, epsilon, X, y, x, c=1):"""局部加权线性回归Args:rate: 学习率maxLoop: 最大迭代次数epsilon: 预测精度X: 输入样本y: 标签向量x: 待预测向量c: tau"""m,n = X.shape# 初始化thetatheta = np.zeros((n,1))count = 0converged = Falseerror = float('inf')errors = []thetas = {}for j in range(n):thetas[j] = [theta[j,0]]# 执行批量梯度下降while count<=maxLoop:if(converged):breakcount = count + 1for j in range(n):deriv = (y-X*theta).T*X[:, j]/mtheta[j,0] = theta[j,0]+rate*derivthetas[j].append(theta[j,0])error = JLwr(theta, X, y, x, c)errors.append(error[0,0])# 如果已经收敛if(error < epsilon):converged = Truereturn theta,errors,thetas# ...

测试

# coding: utf-8
# linear_regression/test_lwr.py
import regression
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import numpy as npif __name__ == "__main__":srcX, y = regression.loadDataSet('data/lwr.txt');m,n = srcX.shapesrcX = np.concatenate((srcX[:, 0], np.power(srcX[:, 0],2)), axis=1)# 特征缩放X = regression.standardize(srcX.copy())X = np.concatenate((np.ones((m,1)), X), axis=1)rate = 0.1maxLoop = 1000epsilon = 0.01predicateX = regression.standardize(np.matrix([[8, 64]]))predicateX = np.concatenate((np.ones((1,1)), predicateX), axis=1)result, t = regression.lwr(rate, maxLoop, epsilon, X, y, predicateX, 1)theta, errors, thetas = resultresult2, t = regression.lwr(rate, maxLoop, epsilon, X, y, predicateX, 0.1)theta2, errors2, thetas2 = result2# 打印特征点fittingFig = plt.figure()title = 'polynomial with bgd: rate=%.2f, maxLoop=%d, epsilon=%.3f'%(rate,maxLoop,epsilon)ax = fittingFig.add_subplot(111, title=title)trainingSet = ax.scatter(srcX[:, 0].flatten().A[0], y[:,0].flatten().A[0])print thetaprint theta2# 打印拟合曲线xx = np.linspace(1, 7, 50)xx2 = np.power(xx,2)yHat1 = []yHat2 = []for i in range(50):normalizedSize = (xx[i]-xx.mean())/xx.std(0)normalizedSize2 = (xx2[i]-xx2.mean())/xx2.std(0)x = np.matrix([[1,normalizedSize, normalizedSize2]])yHat1.append(regression.h(theta, x.T))yHat2.append(regression.h(theta2, x.T))fittingLine1, = ax.plot(xx, yHat1, color='g')fittingLine2, = ax.plot(xx, yHat2, color='r')ax.set_xlabel('temperature')ax.set_ylabel('yield')plt.legend([trainingSet, fittingLine1, fittingLine2], ['Training Set', r'LWR with $\tau$=1', r'LWR with $\tau$=0.1'])plt.show()# 打印误差曲线errorsFig = plt.figure()ax = errorsFig.add_subplot(111)ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e'))ax.plot(range(len(errors)), errors)ax.set_xlabel('Number of iterations')ax.set_ylabel('Cost J')plt.show()

在测试程序中,我们分别对 τ τ τ 取值 0.1 和 1 ,得到了不同的拟合曲线:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ryWgDmIR.shtml

相关文章

LWE和RLWE问题学习

LWE概念 又称误差还原&#xff0c;容错学习问题&#xff0c;即已知一个矩阵 A A A以及一个向量&#xff0c;求解 b ^ A x e \hat{b}A xe b^Axe 这里 e e e是一个固定数值范围内随机采集的一个随机噪音向量&#xff0c;所以这个问题就转化为通过 A A A和 b ^ \hat{b} b^来还…

同态加密简介

同态加密概述 基本概念 同态加密&#xff08;Homomorphic Encryption,HE&#xff09;指将原始数据经过同态加密后&#xff0c;对密文进行特定的运算&#xff0c;得到的密文计算结果在进行同态解密后的得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。 历史与…

机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR

在网上通过看斯坦福大学的机器学习课程&#xff0c;觉得讲的非常好。同时&#xff0c;为了加强自己的记忆&#xff0c;决定将自己学到的东西和一些理解记录下来&#xff0c;希望有所收获。废话不多说&#xff0c;直接开始笔记&#xff1a; 局部加权回归&#xff08;locally we…

ROS中7自由度机械臂自定义发布订阅节点

本篇用来记录一次作业的学习例程&#xff0c;错误之处敬请谅解&#xff0c;后续修改 作业要求&#xff1a; 写两个ROS节点&#xff0c;一个节点发布连续变化&#xff08;可以按sin曲线变化&#xff09;的7自由度的关节角信息&#xff1b;另一个节点订阅第一个节点发布的关节角…

【自己动手写CPU】加载存储指令的实现

目标 修改之前一直做测试的sopc&#xff0c;为其添加数据RAM&#xff0c;测试一般加载指令的实现&#xff0c;加入特殊加载存储指令。 探讨由于加载指令引起的load相关问题&#xff0c;给出OpenMIPS的解决方法&#xff0c;验证解决效果。 加载存储指令说明 31-2625-2120-161…

自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)

将陆续上传新书《自己动手写CPU》。今天是第38篇&#xff0c;我尽量每周四篇&#xff0c;可是近期已经非常久没有实现这个目标了。一直都有事&#xff0c;不好意思哈。 开展晒书评送书活动&#xff0c;在亚马逊、京东、当当三大图书站点上&#xff0c;发表《自己动手写CPU》书评…

LWR--local weighted regression

转自http://www.cnblogs.com/jeromeblog/p/3396486.html 简单回顾一下线性回归。我们使用了如下变量&#xff1a; x —输入变量/特征&#xff1b; y —目标变量&#xff1b; (x,y) —单个训练样本&#xff1b; m —训练集中的样本数目&#xff1b; n —特征维度&#xff1b; (x…

局部加权回归(LWR) Matlab模板

将百度文库上一份局部加权回归的代码&#xff0c;将其改为模板以便复用。 q2x,q2y为数据集&#xff0c;是n*1的矩阵&#xff1b; r是波长参数&#xff0c;就是对于距离的惩罚力度&#xff1b; q_x是要拟合的数据横坐标&#xff0c;是1*n的矩阵&#xff1b; 得到的q_y即为所求坐…

自己动手写CPU之第九阶段(2)——加载存储指令说明2(lwl、lwr)

将陆续上传新书《自己动手写CPU》&#xff0c;今天是第38篇&#xff0c;我尽量每周四篇&#xff0c;但是最近已经很久没有实现这个目标了&#xff0c;一直都有事&#xff0c;不好意思哈。 开展晒书评送书活动&#xff0c;在亚马逊、京东、当当三大图书网站上&#xff0c;发表…

1.3 欠/过拟合,局部加权回归(Loess/LWR)及Python实现(基于随机梯度下降)

import numpy as np import matplotlib.pyplot as plt #定义一个正态分布&#xff0c;参数分别为均值&#xff0c;方差以及X的行向量 def guassianDistribution(mean,var,x):return 1/np.sqrt( 2 * np.pi * var )*np.exp( - (x[1]-mean) ** 2 / (2*var) ) #定义权值计算函数&am…

ubuntu18.04 编译rtt-lwr

https://rtt-lwr.readthedocs.io/en/latest/install/install-18.04-melodic.html 一路通过。 coundt find AF_INET address #4 Open roboticsai opened this issue on Mar 22, 2018 2 comments Comments roboticsai commented on Mar 22, 2018 after i run the rttlua-gnu…

LWR服务管理框架

详细接口文档地址:https://www.showdoc.cc/lwr2 目前支持微信版本&#xff1a;最新版。 主要介绍开发接口 2.0暂时支持tcp和http开发&#xff0c;两者传输json数据是一样的。如下介绍&#xff1a; 1.请求Lwr框架的数据内容如下 {"serverKey": "软件上设置的…

基于物理信息深度学习的交通状态估计:以LWR和CTM模型为例

1.文章信息 本次介绍的文章是2022年发表在IEEE Open Journal of Intelligent Transportation Systems的一篇名为《Physics-Informed Deep Learning for Traffic State Estimation: Illustrations With LWR and CTM Models》的文章&#xff0c;该文章应用物理信息深度学习方法估…

机器学习实战--局部加权线性回归(LWR)

一 概述 通常情况下的线性拟合不能很好地预测所有的值&#xff0c;因为它容易导致欠拟合&#xff08;under fitting&#xff09;&#xff0c;比如数据集是 一个钟形的曲线。而多项式拟合能拟合所有数据&#xff0c;但是在预测新样本的时候又会变得很糟糕&#xff0c;因为它导…

机器学习与算法(8)--局部加权学习算法(LWR)

局部加权学习算法&#xff08;LWR&#xff09; 局部加权回归&#xff08;LWR&#xff09;是非参数学习方法。 首先参数学习方法是这样一种方法&#xff1a;在训练完成所有数据后得到一系列训练参数&#xff0c;然后根据训练参数来预测新样本的值&#xff0c;这时不再依赖之前的…

局部加权回归

通常情况下的线性拟合不能很好地预测所有的值&#xff0c;因为它容易导致欠拟合&#xff08;under fitting&#xff09;&#xff0c;比如数据集是 一个钟形的曲线。而多项式拟合能拟合所有数据&#xff0c;但是在预测新样本的时候又会变得很糟糕&#xff0c;因为它导致数据的 …

冲击波理论

冲击波理论 冲击波理论&#xff08;the kinematic wave theory&#xff0c;也称LWR理论&#xff09;最初是由Lighthill, M. J和Whitham, G. B. 以及Richards, P. I. 于上世纪50年代提出的。该理论假设车流是一种类似于水流的运动&#xff0c;可以通过流量、密度和速度之间的关…

IOS捷径|九宫格切图工具 分享

还在为切九宫格图片找来找去找不到好工具而烦恼? 快使用九宫格切图快捷指令&#xff0c;5秒切出你想要的效果 为保障更好的切图效果&#xff0c;轻使用正方形图片参与切图&#xff0c;如没有&#xff0c;也请尽量裁剪出正方形图片再参与切图 支持22、23、3*3 多种组合方式 …

canvas切割原图为九宫格图片

originUrl 图片原地址cWidth 生成图片的宽度cHeight 生成图片的高度top 第一条切割线距离原图片顶部的距离bottom 第二条切割线距离原图片底部的距离left 第三条切割线距离原图片左侧的距离right 第四条切割线距离原图片右侧的距离 切割 效果图 index.html <!DOCTYPE html…

Unity的UGUI用TexturePacker全自动打图集,包括九宫格切图信息

Unity的UGUI用TexturePacker全自动打图集&#xff0c;包括九宫格切图信息 前言环境准备实现过程注意总结版权声明 前言 最近在学习UGUI的打图集&#xff0c;之前一直在用SpritePacker和Sprite Atlas打图集&#xff0c;现在记录下另一种打图集方式&#xff1a;TexturePacker 主…