首页
视频
资源
登录
原
python 方差代价函数(学习笔记)
1815
人阅读
2023/4/4 15:36
总访问:
2658715
评论:
0
收藏:
0
手机
分类:
AI
![](https://img.tnblog.net/arcimg/hb/55a6e3fdaa9846cb81829fd20288e216.jpg) >#python 方差代价函数(学习笔记) [TOC] tn2>在Rosenblatt感知器中计算有个问题? 如果只有两个豆豆的情况下,且二者都相差`0.15`一个是正数一个是负数,所以体现的误差值为0。 ![](https://img.tnblog.net/arcimg/hb/27a36cf4e3854e74b352086183776cea.png) 绝对差 ------------ tn2>通过把值进行绝对值的处理产生绝对差,使他们都相差`0.15`. ![](https://img.tnblog.net/arcimg/hb/a22809a03feb4e8dbbebac6843786edd.png) tn2>但是绝对值在绝对差处理上都不是很方便。所以人们提出了平方误差。 平方误差 ------------ tn2>通过将误差的值进行平方处理,就是平方误差。 平方误差越小说明,得出的结果就越接近真相。 ![](https://img.tnblog.net/arcimg/hb/89b6455d447648b7bde73fca7ba6f900.png) tn2>而我们知道是参数w决定了预测函数的样子,如果把误差与w之间的关系画出来就是一个一元二次函数。 ![](https://img.tnblog.net/arcimg/hb/238dec70d69043dba95c0a5b94d73962.png) ![](https://img.tnblog.net/arcimg/hb/68f44bab786c4073bdb4e44d4586ec15.png) tn2>这里通过单个豆豆来举例,公式就是`e=a*w2+b*w +c`(a是0.16、b是-0.544、c是0.4624)。 如果是一组豆豆也是一样的,可以通过把所有的豆豆的平方误差相加然后取平均数,这一过程也叫均方误差。 简化后如下图所示: ![](https://img.tnblog.net/arcimg/hb/a9d24f01451e46068c6210a8dbce838e.png) ![](https://img.tnblog.net/arcimg/hb/60b31a164ab8429fb051c50e8acdb101.png) ![](https://img.tnblog.net/arcimg/hb/4f62c5f5cc224fd9b18b71d28f2e654c.png) tn2>得到公式后,我们只需要让机器计算得到一元二次方程的顶点,就是最好的误差。 ![](https://img.tnblog.net/arcimg/hb/712e29b1119b4307bf598ffcf96c43ee.png) tn2>所以我们可以通过顶点坐标公式来求,最后简化出来如下图所示。 ![](https://img.tnblog.net/arcimg/hb/a81edee321294d5aa40954cb33459225.png) ![](https://img.tnblog.net/arcimg/hb/74ba9740a5734114804cefe69fd470e5.png) 正规方程 ------------ tn2>一次性求出误差最小处的w取值。 ![](https://img.tnblog.net/arcimg/hb/c64d08460c334119a36b1e10f6c3d341.png) tn2>那么直接这样计算就万事大吉了吗?在少量数据的时候确实是这样,但数据量大举例1000个维度就要10亿次。 如何解决呢?可以查看下一篇的梯度下降。 编程实践 ------------ tn2>首先我们初始化豆豆的思考。 ```python # 导入散点数据库 import dataset # matplotlib库 import matplotlib.pyplot as plt # 导入numpy库 import numpy as np # 创建一些散点数据 xs,ys = dataset.get_beans(100) # 配置图像 plt.title("Chi Dou Dou",fontsize=12)# 设置图像名称 plt.xlabel("Size")# 设置横坐标名称 plt.ylabel("Toxicity")# 设置纵坐标名称 # 把值负到图上 plt.scatter(xs,ys) # 初始化设置w为0.1权重 w = 0.1 # 得到预测值 y_pre = w*xs # 画图并展示 plt.plot(xs,y_pre) plt.show() ``` ![](https://img.tnblog.net/arcimg/hb/7c98990baa13467cbc5b324d636e3b51.png) tn2>然后我们更具均方差求出一元二次方程的均方差与权重的图。 ```python # 获取均方差 es = (ys-y_pre)**2 # 算出最优误差顶点,总数和除以总数量 es_sum = np.sum(es) es_len = len(es) es_sum = es_sum / es_len # 显示误差值与权重的二元一次方程 # 配置图像 plt.title("Cost Function",fontsize=12)# 设置图像名称 plt.xlabel("w")# 设置横坐标名称 plt.ylabel("e")# 设置纵坐标名称 # 设置不同的权重带入预测函数的运算 # 起始值,结束值,递进大小 ws = np.arange(0,3,0.1) # 均方误差集合 es = [] for w in ws: # 获取预测值 y_pre = w * xs # 获取误差 e = np.sum((ys-y_pre)**2) / es_len # 输出 es.append(e) plt.plot(ws,es) plt.show() ``` ![](https://img.tnblog.net/arcimg/hb/f5e0cfa0338a427c809ffcb945bee07e.png) tn2>接下来通过所有的最小点来设置权重值。 求一元二次方程的最低点,也就是我们刚刚讲的顶点坐标公式。 ```python w_min = np.sum(xs*ys)/np.sum(xs*xs) # e的最小点w,str表示格式化成字符串 print("e的最小点w:"+str(w_min)) # 计算所有豆豆的最佳值 y_pre = w_min * xs # 打印图形 # 配置图像 plt.title("Chi Dou Dou",fontsize=12)# 设置图像名称 plt.xlabel("Size")# 设置横坐标名称 plt.ylabel("Toxicity")# 设置纵坐标名称 # 把值负到图上 plt.scatter(xs,ys) plt.plot(xs,y_pre) plt.show() ``` ![](https://img.tnblog.net/arcimg/hb/d999598069cf4698861245e800299885.png) ![](https://img.tnblog.net/arcimg/hb/62176b0adf3141109826d4c66444e063.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
171篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
4篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
5篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术