单变量与多变量线性回归(Linear Regression with One Variable)




2.1 线性回归算法模型表示

让我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子。

它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,这是一个回归问题。回归指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是0/1离散输出的问题。

更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。

我将在整个课程中用小写的来表示训练样本的数目。

以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:

我们将要用来描述这个回归问题的标记如下:

m 代表训练集中实例的数量

 x 代表特征/输入变量

 y 代表目标变量/输出变量

 (x,y)代表训练集中的实例

 (x(i),y(i))代表第i个观察实例

 h代表学习算法的解决方案或函数也称为假设(hypothesis

监督学习算法的工作方式,通过将数据集中的训练集传入线性模型算法中,即可输出一个

我们可以看到这里有我们的训练集里房屋价格 我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写 h表示。 代表hypothesis(假设),表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 h根据输入的x值来得出y值,y值对应房子的价格 因此,h是一个从x到y的函数映射。

我将选择最初的使用规则代表hypothesis,因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设,然后将我们要预测的房屋的尺寸作为输入变量输入给,预测出该房屋的交易价格作为输出变量输出为结果。那么,对于我们的房价预测问题,我们该如何表达 ?

一种可能的表达方式为:

因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。

2.2 代价函数

代价函数的概念有助于理解如何把最有可能的直线与数据相拟合。

如图:

在线性回归中我们有一个像这样的训练集,代表了训练样本的数量,比如 m=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:

接下来我们会引入一些术语我们现在要做的便是为我们的模型选择合适的参数θ0和θ1 ,在房价问题这个例子中便是直线的斜率和在y轴上的截距。

我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差modeling error)。

我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数

 最小。

我们绘制一个等高线图,三个坐标分别为和θ0、θ1和J(θ0,θ1):

则可以看出在三维空间中存在一个使得J(θ0,θ1)最小的点。

代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。


通过穷举法实现实现寻找最低点or最小误差

数据集设计

问题:如图一某校学生在A课程中每周投入时间y与最终成绩的数值x,因此设y=wx,设计算法求w的权重的最佳拟合数值。 

图1 数据集

图2 损失函数

 代码:

import numpy as np
import matplotlib.pyplot as plt#数据集
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]#构建 y = w * x ===>预测值
def forward(x):return x*w#计算loss 即 loss 公式如上图,预测值减去原始数据求误差
def loss(x,y):y_pred=forward(x)return (y_pred-y)*(y_pred-y)
#权重w的列表
w_list=[]
#损失loss的列表
mse_list=[]#对w使用穷举法,计算机y=w*x的最佳拟合值
for w in np.arange(0.0,4.1,0.1):print(w)l_sum=0#zip()当传递参数长度不一样时候,以短的为标准for x_val,y_val in zip(x_data,y_data):#计算新的预测值y_pred_val=forward(x_val)#新预测值与loss_val=loss(x_val,y_val)l_sum= l_sum+loss_valprint(x_val,y_val,y_pred_val,loss_val)#除以样本数,即平均误差MSR=l_sum/3w_list.append(w)mse_list.append(MSR)
#绘制损失loss与权重w之间的函数图像
plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

运行结果:可知当w为2时loss的损失最小


问题2

作业题目:实现线性模型(y=wx+b)并输出loss的3D图像。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D#数据集
x_data = [1.0,2.0,3.0]
y_data = [5.0,8.0,11.0]# 数据集长度
m=len(x_data)# 权值
W=np.arange(0.0,4.0,0.1)
B=np.arange(-2.0,2.0,0.1)
[w,b]=np.meshgrid(W,B)
#即三维坐标下 W做X周 B做Y周,在绘图时候一定要用小写,因为小写是N×N的二维数组,大写是一维N个数组成的数组# 注意矩阵的运算
def farword(x):return x * w+bdef loss(y_test,y):return (y_test-y)*(y_test-y)total_loss = 0
for x_val,y_val in zip(x_data,y_data):y_test=farword(x_val)total_loss=(total_loss+loss(y_test,y_val))/mfig = plt.figure()# MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4. Starting two minor releases later, gca() will take no keyword arguments. The gca() function should only be used to get the current axes, or if no axes exist, create new axes with default keyword arguments. To create a new axes with non-default arguments, use plt.axes() or plt.subplot().
# ax = fig.gca(projection='3d') 改为
# ax = fig.add_subplot(projection='3d')
ax = Axes3D(fig)print(W.shape) #(40,)
print(W)
print(w.shape)#(40,40)
print(w)# ax.plot_surface(W,B,total_loss)
ax.plot_surface(w,b,total_loss)
plt.show()

效果图

 numpy.meshgrid()理解

numpy.meshgrid()理解_lllxxq141592654的博客-CSDN博客https://blog.csdn.net/lllxxq141592654/article/details/81532855

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPI、I2C、UART三种串行总线的原理、区别及应用

SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765349 串口UART串行总线协议 https://blog.csdn.net/weiqifa0/article/details/8269988…

计算机网络课制作双绞线实验,《计算机网络》课程实验——网线制作.pdf

第1 章 网线的制作和应用第1 章 网线的制作和应用实验1 直连双绞线的制作和应用双绞线一般分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP )两类。如果没有特殊要求,在计算机网络中一般使用非屏蔽双绞线,所以本节主要以非屏蔽双绞线为例进行介绍。1.1.1 实验概述…

Python网络数据采集系列-------概述

这是一个正在准备中的系列文章,主要参考的是《Web Scraping with Python_Collecting Data from the Modern Web-OReilly(2015)》。这是一本关于网络数据采集(俗称的爬虫)的书,由浅入深,比较适合入门。在学习过程中也肯…

AttributeError: ‘list‘ object has no attribute ‘ndim‘

错误&#xff1a; AttributeError Traceback (most recent call last) <ipython-input-6-9b77ac20aa23> in <module>()1 # Print the images dimensions ----> 2 print(images.ndim)3 4 # Print the number of imagess elements5 p…

驱动程序操作IO口API函数

驱动程序总会操作一些CPU的IO口下面列一些常用函数 int check_region(unsigned int from,unsigned int extent); 这个函数查看系统的I/O表,看是否有别的驱动程序占用某一段的I/o口 参数1:端口基地址 参数2:端口占用范围 返回:0为没有占用 非0 为已经有驱动占用 void re…

网络教育计算机 判断,北京师范大学网络教育计算机作业1、4、8

计算机11.自计算机问世至今已经经历了4个时代&#xff0c;划分时代的主要依据是计算机的__D__。A规模 B功能 C性能 D构成元件2.世界上第一台电子数字计算机采用的逻辑元件是__D__。A大规模集成电路 B集成电路 C晶体管 D电子管3.早期的计算机体积大、耗能高、速度慢&#xff0c;…

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

解决方案一&#xff08;自己的方法&#xff09;&#xff1a; 找到Anaconda3\pkgs\python-3.8.12-h900ac77_2_cpython\DLLs下的_ssl.pyd文件&#xff0c;查阅在该环境上安装的python版本号&#xff0c;下载python寻找对应的_ssl.pyd覆盖到上述目录中&#xff0c;即可解决问题。解…

Python核心编程-细节

直接从六张开始看看书里有什么。 cmp()  len()  max() and min()  sorted() and reversed()  enumerate() and zip()  sum()  list() and tuple()  dir()方法来得到它所有的方法和属性    extend() and append() extend()接受一个列表的内容&#xff0c;然…

查看linux IO地址范围

端口统一编址原理是把IO控制器中的端口地址归入存储器寻址空间范围内&#xff0c;因此这种编址方式也成为存储器映像编址。CPU访问一个端口的操作与访问内存的操作一样&#xff0c;也使用访问内存的指令。 在linux下可以查看设置的IO地址范围

命令行import torch正常,但pycharm中显示“No module named torch”解决方法

pytorch第一步配置环境测试运行就遇到了如题目所述问题&#xff0c;问题如图&#xff1a; 步骤一 首先检查环境导入是否有问题&#xff0c;工具栏file–settings–project–project interpreter&#xff0c;在这里添加配置好的conda环境&#xff0c;注意添加时要选中对应的con…

机械厂html5手机模板,营销型机械消费设备企业通用织梦模板(带html5手机端) v1.0...

营销型机械消费设备企业通用织梦模板简介营销型机械消费设备企业通用织梦模板(带html5手机端)v1.0是一个自适应手机端和PC端的最新版织梦V5.7为内核的网站模板&#xff0c;软件兼容主流浏览器&#xff0c;模板包含安装说明&#xff0c;并包含测试数据。dedecms最新版内核开发&a…

Ubuntu通过修改配置文件进行网络配置

Ubuntu系统进行网络配置有的时候用图形界面不起作用&#xff0c;这种情况下可以直接修改某些启动脚本或配置文件Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/interfaces 2./etc/resolv.conf操纵步骤&#xff1a;1.打开ubuntu的/etc/network/interfaces文件默认的内…

删掉SQL Server登录时登录名下拉列表框中的选项

问题&#xff1a; 我以前创建了一个登录名如kpi&#xff0c;之后在“安全性-登录名” 里删掉了&#xff0c;但是每次登录时&#xff0c;登录名的下拉框中总是能显示登录名kpi&#xff0c;怎么把它删掉呢&#xff1f; 解决方案&#xff1a; 1).SQL Server 2008 R2和SQL Server 2…

Tensorboard --logdir=logs 无法显示图像的处理办法

Tensorboard --logdirlogs 无法显示图像的处理办法 问题描述&#xff1a; 解决方案&#xff1a;【要和工程目录对应&#xff01;写全日志地址】 tensorboard --logdir"torch learning\logs" #注意要是双引号&#xff0c;而且路径不能单单是logs&#xff0c;还要包括…

计算机网络对口题目,2011-2015计算机对口升学网络试题汇总.doc

2011-2015计算机对口升学网络试题汇总2011-2015对口升学计算机网络试题及答案汇总2017年9月30日整理(2011年河北省普通高等学校对口招生考试计算机网络试题及答案&#xff1a;)一、选择题&#xff1a;36&#xff0e;计算机网络中的计算机之间的关系是……………………( C )A&am…

SPI单片机发送ARM接收

发送&#xff1a; void MCUSPI_WRITE_ADDRESS_DATA(unsigned char data) {unsigned char i0;ENABLE_SPI_CS();//????????_delay(10);DISABLE_SPI_CS();Master(data);ENABLE_SPI_CS();//???????? _delay(10);}void Master(unsigned short Data) { unsigned sho…

73个word使用终极技巧

1、问&#xff1a;Word里边怎样设置每页不同的页眉&#xff1f;如何使不同的章节显示的页眉不同&#xff1f;答&#xff1a;分节&#xff0c;每节可以设置不同的页眉。文件——页面设置——版式——页眉和页脚——首页不同2、问&#xff1a;请问Word中怎样让每一章用不同的页眉…

AttributeError: type object ‘Image‘ has no attribute ‘open‘

AttributeError: type object ‘Image‘ has no attribute ‘open‘ 原因分析&#xff1a;Image调用顺序出错&#xff0c;因为第一行的from PIL import Image与第二行tkinter import *冲突&#xff0c;tkinter中也含有Image类&#xff0c;所以你使用的是tkinter.Image 解决方法…

微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...

《微机原理》复习思考题第十二章存储器第章 存储器?????????????????????????????????????????????????????????? ????????????? ??????????微型计算机中存储器分成哪几个等级&#xff1f;它…

怎么在右键菜单添加快速比较的功能

如果安装beyond compare后&#xff0c;右键不能出现比较选项&#xff0c;可以通过设置 beyond compare完成。选择 工具->选项&#xff0c;在资源管理器整合下面&#xff0c;有一个在资源管理器关联菜单中显示beyond compare的选项&#xff0c;选中该选项即可