精华内容
下载资源
问答
  • MATLAB实验报告学 号实验名称MATLAB数据处理实验实验目的掌握二维曲线图、三维曲线图、三维曲面图的绘制方法掌握常用统计图的绘制方法熟悉三维图形常用编辑方法了解动画的绘制方法实验记录1.离散数据可视化实验:2...

    MATLAB实验报告

    学  号实验名称MATLAB数据处理实验实验目的掌握二维曲线图、三维曲线图、三维曲面图的绘制方法

    掌握常用统计图的绘制方法

    熟悉三维图形常用编辑方法

    了解动画的绘制方法实验记录1.离散数据可视化实验:

    2.二维曲线绘制实验:

    1)Plot方法用于绘制图像

    2)Subplot绘制子表

    3)Axis函数表示坐标的范围

    4)Set设置坐标轴系统

    5)Legend用于添加图例或者图表的声明

    6)xlabel、ylabel、zlabel、用于标示各个坐标轴的名称

    7)Title设置图表的标题

    8)Text添加文本,注释坐标系中一点

    9)grid on

    10)Hold指令的基本格式

    11)双坐标轴

    3、三维曲线绘制实验

    1)plot3函数

    2)Mesh绘制曲面

    3)Surf函数的使用方法

    4)Fplot函数的使用方法

    4、统计图绘制实验:

    1)面域图(area)

    2)直方图(bar、barh、bar3、bar3h)

    3)Pie指令

    4)散点图(scatter、scatter3、plotmatrix)

    5、三维图形编辑(精细控制)实验:

    1)View的用法

    2)Rotate的用法

    3)Colordef指令的使用

    4)Colormap方法

    5)Shading方法

    6)Light方法

    7)Lighting命令

    8)Material指令

    9)Surfl指令

    6、制作动画

    实验总结1、Matlab绘图的基本步骤:

    准备图标的数据。用户需要确定图标的绘制范围,制定对应的自变量,最后计算相应的函数值。

    设置显示图表的位置。在多个自读的情况下,需要设置每个子图的显示位置。对应命令为subplot。

    绘图,并设置相应的参数。主要命令plot,用户可以通过该命令绘制图表,同时为了显示方便还应该调用其他辅助函数设定表的颜色,形状等等。

    设置坐标轴的属性,添加刻度,和坐标系的分隔等等。

    添加表的注释。如坐标的名称,图例,文字说明等等。

    2、总结plot和surf的用法;

    1)Plot方法用于绘制图像plot命令

    基本形式:plot(x,y,’s’) 其中:

    x,y 是相同类型的等长向量s 可选用于控制图形属性

    原理: 点?线

    输入: 点坐标向量

    输出: 插值曲线

    函数 Plot 常用的使用格式

    - plot(x): 缺省自变量

    - plot(x,y): 单条曲线

    - plot(x1,y1,x2,y2,…): 多条曲线

    - plot(x,y,’s’): 带属性修饰的曲线

    - ‘s’ : 属性开关描述自符串变量

    2)Surf函数的使用方法

    Surf用于与绘制已经着色的三维曲面,默认的着色方案是得到网格后,根据该网格代表的节点的色值来定义该网格的颜色。

    Surf(a,b,c)常用的网线绘制方法,以a矩阵的元素作为曲线上每一给点的x坐标,以b矩阵的对应元素作为曲线上对应点的y坐标,以c矩阵的对应元素作为曲线上对应点的z坐标。

    Surf(x,y,z,c)其中c表示网格的颜色

    3、总结

    通过本次实验,掌握了在matlab中基本绘制一个简单的函数图形,同时能够完成对图形着色,修改形状等等的操作。并根据需要设定对应的坐标轴及辅助信息以解释图例。重点掌握了常用统计图的绘制方法,三维图形常用编辑方法,了解动画的绘制方法。在今后学习中将进一步掌握matlab强大的绘图功能。

    成绩评定注:实验方案要详略得当、条理清晰,实验记录数据详实,实验总结应做高度归纳和提炼。

    2

    展开全文
  • 计算机试验简介

    2021-07-05 06:24:57
    很早就想为COS写一篇关于计算机试验的东西。可是始终也未敢动笔,觉得自己才疏学浅,生怕写得偏颇。但是另外一方面,又觉得这是COS上一块空白的话题,没有人提及过。今天写这篇文章,主要是为抛砖引玉,另外丰富一下...

    很早就想为COS写一篇关于计算机试验的东西。可是始终也未敢动笔,觉得自己才疏学浅,生怕写得偏颇。但是另外一方面,又觉得这是COS上一块空白的话题,没有人提及过。今天写这篇文章,主要是为抛砖引玉,另外丰富一下主站文章的题材。

    在这篇文章中,我想大致介绍一下计算机试验的设计以及建模,另外会有一些R中专门做计算机试验的包的相关介绍。

    目前,比较流行的计算机试验设计与建模的教材有两本(似乎也只有这两本)。一本是Thomas J. Santner, Brian J.Williams以及William I.Notz合著的,Springer2003年出版的《The Design and Analysis of Computer Experiment》。另外一本是Kai-Tai Fang ,Runze Li以及Agus Sudjianto合著的,2005年由Chapman&Hall出版的《Design and Modeling for Computer Experiment》。所谓的计算机试验(computer experiment),是相对于传统的实体试验(physical experiment)而言的。我们都知道,实体试验的数据(比如农业试验,生物试验等得到的数据)总是会受到随机误差的影响,因此在实体试验设计中,引入了“重复”的原则,目的就是要通过重复的试验,减小随机误差对于分析的影响。(关于实体试验的设计以及建模,国内外已经有很多教材讨论这些,我相信大多数统计专业的同学所学习的试验设计入门课程都是在学习实体试验的设计以及数据分析。)与此相对的,计算机试验得到的数据并不受到随机误差的干扰。因为一段固定的代码,在计算机上无论运行多少次,得到的结果都是一样的。

    计算机试验,通常比实体试验包含了更多的变量,用于研究特别复杂的系统,比如航天探测器。对于这些特别复杂的系统,往往需要用一个更加简单的拟模型(meta model)来逼近。计算机试验的目的之一,就是要通过在计算机上,利用代码模拟某个复杂的设备或者某个过程,得到了试验的数据之后,通过分析建模,从而得到一个相对更简单的模型,被称为拟模型,拟模型是非常有用的。

    由于计算机试验具有复杂性,以及输出结果的确定性,做计算机试验收集数据的时候,我们需要一些特殊的设计。

    试验设计,总是和模型紧密相联系的。事实上,试验设计是一种收集数据的策略。在实体试验中,当我们需要比较某种因子不同水平之间的差别,我们通常会选用因析设计。因析设计事实上就是和因子模型相对应而产生的收集数据的策略。另外,所谓的最优设计,也是相对应于模型的最优化准则而产生的收集数据的策略。而在计算机试验中,常用的是模型是所谓的全局均值模型(overall mean model)。

    不失一般性,我们考虑试验区域是一个s维的单位立方Cs=[0,1]s。当试验次数给定了,比如说n次,我们就需要考虑如何找到一个好的试验Dn={x1,?,xn},使得f(x)?g(x)对于试验区域上的所有点,都尽可能的小。其中f(x)是真实的模型,而g(x)是拟模型。我们考虑到,对于所有的点,都要求上述差分达到最小是很困难的。因此,很多学者都将该问题进行了简化,转而去寻找全局均值E(y)=∫Csf(x)dx的最佳的估计值。而通常,都用样本均值,也就是平均数yˉ(Dn)=1n∑ni=1f(xi)来估计总体均值。因此,我们的问题也就转化为了如何找到一个试验,使得这个试验得到的数据做样本均值来估计总体均值是最好的。这也就是计算机试验设计的动因。

    从统计学的角度来看,如果样本点x1,?,xn是在Cs上均匀分布上独立抽取的,那么样本均值是无偏的,并且方差为var(f(x))n。但是,通常来说,这个方差太大了。因此很多学者提出了不同的抽样方法来降低这个样本均值的方差。1979年,McKay,Beckman和Conover基于分层抽样提出了一种新的抽样方法,这种方法使得随机选择的样本点并不独立,并且边际分布相同,因此

    Var(yˉ(Dn))=1nVar(f(x))+n?1nCov(f(x1),f(x2))

    当f(x1)与f(x2)负相关时,方差就减小了。这种方法被人不断的推广,创新。成为了现在计算机试验设计中一块非常重要的内容——拉丁超立方体设计(Latin-Hypercube design)。在后来的不断发展中,拉丁超立方和正交表相结合,产生了很多正交拉丁超立方设计。此外,当引入一些准则时,比如熵准则,最大最小距离准则等,也产生了对应该准则的最优的设计,包括最大最小拉丁超立方等。这些设计在计算机试验中应用非常广泛,最近也有人将这种设计用在变量选择的过程中,通过模拟,大大提高了变量选择的精确度。

    与拉丁超立方设计相对应的另外一种设计,是由我国科学家方开泰,王元在上世纪八十年代提出的均匀设计。均匀设计这一想法的提出,起源于伪蒙特卡洛方法中的Koksma-Hlawaka不等式。|E(y)?yˉ(Dn)|≤V(f)D(Dn)。其中D(Dn)是设计Dn的星偏差(star-discrepancy),而V(f)是方程f的总体变动情况。其中星偏差是一种均匀性的度量,当试验点在试验区域分布越均匀时,星偏差的值就越小,因此,样本均值与总体均值之差的绝对值的上界也就越小,相当于提高了估计的精度。一个试验区域上具有最小星偏差的设计,就是所谓的均匀设计。均匀设计由我国科学家自主提出,并且在国际上得到了非常好的反响以及应用。之后,有很多学者,对于均匀设计做出了改进,使得均匀设计也不断地发展壮大。

    下面简单介绍一下对于计算机试验得到的数据建模的常用方法。事实上,统计学习中的常用的建模方法都可以用来对计算机试验数据进行建模。包括样条回归,局部回归,神经网络等,都可以对数据进行建模。这里要要重点介绍的是一种非常常用的模型,高斯-克里金模型(Gaussian-Kriging models)。克里金是南非地质学家,他在其硕士论文中分析矿产数据的时候,提出了克里金模型,后来由几位统计学家发展了他的模型,得到了目前在计算机试验中非常常用的高斯-克里金模型。

    y(x)=∑Lj=0βjBj(x)+z(x)

    其中Bj(x)是选定的基函数,z(x)是随机误差,来自于高斯过程。该高斯过程零均值,方差为σ2,协方差函数为r(θ,s,t)=corr(z(s),z(t))。通常情况下r是预先选定的。可以证明,高斯克里金模型的预测值是BLUP。

    关于计算机试验数据的建模,方法很多,但是建模方法仅仅是建模方法,无论是计算机试验还是实体试验,建模方法往往通用,因此,这里不做展开论述了。

    下面简单介绍一下R语言中,做计算机试验的一些包。

    lhs包,主要用来生成拉丁超立方体设计。DiceDesign包可以生成更多的一些空间填充设计。DiceKriging提供了对计算机试验数据构建高斯-克里金模型的功能,DiceView则提供了多维模型可视化的手段。以上的包在task view中都有所介绍。此外,值得一提的是VizCompX包,其对计算机试验的数据拟合高斯模型,并且提供可视化的手段。感兴趣的童鞋可以参看这几个包的帮助文档,帮助文档都不长,容易上手。

    最后,提一点我个人的小感想。我认为,计算机试验中,更应该引人注意的话题应该是试验的设计。一个好的设计,不光能够提高试验的精度,更能体现一种美感。生成一个好的设计,大致上有两种路可以走,一种是预先设定一个准则,然后利用最优化的算法,进行搜索。常用的算法包括一些全局的最优算法,比如门限接受算法,模拟退火算法等。另外一种方法,则是利用数学中其他学科,比如伽罗瓦理论,编码理论等,通过这些学科的理论特点,精巧地构造一个设计。这两种构造设计的方法相互补充,相辅相成,提供了非常广大的研究空间。另外,这些为计算机试验而提出的设计,也可以用在很多其他的统计学的课题中,比如之前已经提到过的变量选择方法精确度的提升方面。总之,试验设计是研究如何有效收集数据的,无论数据是来自于实体试验,还是计算机试验,一个设计了的试验,往往都可以提高效率,提高精度。这也是试验设计这门课程的意义所在。越南的Nyuan开发了一款试验设计的软件Gendex,通过输入试验的行数,列数,选择你所需要的设计种类,便可以生成多种不同的设计阵。这款软件,是目前可以生成设计阵种类最多的,感兴趣的童鞋,不妨搜来玩一玩。

    展开全文
  • JAVA第二次试验

    2021-03-09 07:05:29
    课程:Java实验班级:201353姓名:武西垚 学号:2015332成绩:指导教师:娄佳鹏实验日期:15.05.05实验密级:预习程度:实验时间:仪器组:必修/选修:选修实验序号:2实验名称:java面向对象程序设计实验目的与...

    课程:Java实验   班级:201353     姓名:武西垚  学号:2015332

    成绩:           指导教师:娄佳鹏     实验日期:15.05.05

    实验密级:         预习程度:       实验时间:

    仪器组次:         必修/选修:选修    实验序号:2

    实验名称:java面向对象程序设计

    实验目的与要求:

    1. 初步掌握单元测试和TDD

    2. 理解并掌握面向对象三要素:封装、继承、多态

    3. 初步掌握UML建模

    4. 熟悉S.O.L.I.D原则

    5. 了解设计模式

    实验要求

    1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

    2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

    3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

    实验仪器:

    名称

    型号

    数量

    PC

    1

    实验内容、步骤与体会(附纸):

    (一)单元测试

    (1) 三种代码

    编程是智力活动,不是打字,编程前要把干什么、如何干想清楚才能把程序写对、写好。与目前不少同学一说编程就打开编辑器写代码不同,我希望同学们养成一个习惯,当你们想用程序解决问题时,要会写三种码:

    伪代码

    产品代码

    测试代码

    e704a2ec004194ec91107f1cdf5f546d.png

    (2) TDD(Test Driven Devlopment, 测试驱动开发)

    (二)面向对象三要素

    422d8f6cb4d00a39355803daecd01f9a.png

    7f7f6a4f286fb37faaf555adfa504eab.png

    +表示public

    #表示 protected

    -表示 private

    4a1075c43c87f169dac024416f4f9417.png

    (三)设计模式初步

    (1)S.O.L.I.D原则

    面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:

    SRP(Single Responsibility Principle,单一职责原则)

    OCP(Open-Closed Principle,开放-封闭原则)

    LSP(Liskov Substitusion Principle,Liskov替换原则)

    ISP(Interface Segregation Principle,接口分离原则)

    DIP(Dependency Inversion Principle,依赖倒置原则)

    (2)模式与设计模式

    模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。 计算机科学中有很多模式:

    GRASP模式

    分析模式

    软件体系结构模式

    设计模式:创建型,结构型,行为型

    管理模式: The Manager Pool 实现模式

    界面设计交互模式

    这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。

    (3)设计模式实示例

    设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。

    (四)练习

    使用TDD的方式设计关实现复数类Complex。

    伪代码:

    无输入 --- 则复数的实部为0,虚部为0

    仅输入实部 --- 复数的实部为所输入的实部,虚部为0

    仅输入虚部 --- 复数的实部为0,虚部为所输入的虚部

    实部虚部都输入 --- 复数的实部与虚部对应相应输入的实部虚部。

    加法 --- 复数的实部与实部相加,虚部与虚部相加 ,即输出p1.rePart+p2.rePart,p1.imPart+p2.imPart

    减法 --- 复数的实部与实部相减,虚部与虚部相减 , 即输出 p1.rePart-p2.rePart,p1.imPart-p2.imPart

    产品代码:

    package Exercise;

    public class Complex {  double rePart,imPart;  Complex()  {  this.rePart=0;  this.imPart=0;  }  Complex(double rePart)  {  this.rePart=rePart;  this.imPart=0;  }  Complex(double rePart,double imPart)  {  this.rePart=rePart;  this.imPart=imPart;  }  Complex Jia(Complex p1,Complex p2)  {  Complex p =new Complex(p1.rePart+p2.rePart,p1.imPart+p2.imPart); return p;  }  Complex Jian(Complex p1,Complex p2)  {  Complex p =new Complex(p1.rePart-p2.rePart,p1.imPart-p2.imPart); return p; }  void Print()  {  System.out.println("复数的值为:"); if(this.imPart!=0) System.out.println(this.rePart+"+"+this.imPart+"i");  else System.out.println(this.rePart);  }  }

    测试代码:

    package Exercise;

    public class Test  {  public static void main(String[] args)  {  Complex c=new Complex();  Complex c1=new Complex(2,7); Complex c2=new Complex(5,2);  c1.Print();  c2.Print();  System.out.println("这两复数和为:");  System.out.println((c.Jia(c1, c2).rePart+"+"+c.Jia(c1, c2).imPart+"i").toString());  System.out.println("这两复数差为:");  System.out.println(c.Jian(c1, c2).rePart+"+"+c.Jian(c1, c2).imPart+"i"); }  }

    步骤

    耗时

    百分比

    需求分析

    5

    6.25%

    设计

    10

    12.5%

    代码实现

    50

    62.5%

    测试

    10

    12.5%

    分析总结

    5

    6.25%

    总结单元测试的好处:

    1.单元测试能保证项目进度还能优化你的设计。

    2.单元测试代码可以通过简单的事务回滚功能在生产环境上做基于真实数据的测试而不用担心会产生不必要的数据。

    3. 单元测试能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。

    遇到的问题:无

    解决方法:

    实验总结:

    本次实验代码较多,难度较大,花费了大量的时间,期间出现了各种大大小小的错误,但这也是对我的一次锻炼,将对我未来的学习产生很大的帮助。

    展开全文
  • 机器学习算法实验的重复次数估计

    千次阅读 2017-05-04 09:53:14
    因此,为了比较随机算法的优劣或是检验参数的最优解,我们需要多次重复实验,取平均值来衡量算法。 那么问题来了,假设场景不变,随机算法实验需要重复多少次才足以客观公正地反映模型的效果呢? 有些朋友建议至少...

    原文:Estimate the Number of Experiment Repeats for Stochastic Machine Learning Algorithms
    作者: Jason Brownlee
    编译: KK4SBB

    我们在实验机器学习算法时,常常遇到一种情况:相同的算法,相同的数据,但每次计算得到的结果都不同。这是因为算法中存在随机的因素,导致最终的结果不稳定。因此,为了比较随机算法的优劣或是检验参数的最优解,我们需要多次重复实验,取平均值来衡量算法。

    那么问题来了,假设场景不变,随机算法实验需要重复多少次才足以客观公正地反映模型的效果呢?

    有些朋友建议至少重复30次,甚至100次,更有甚者重复上千次的实验。

    在本文中,我们将会用统计学的方法来教你如何正确地估计随机算法实验的重复次数。本文所有代码的执行环境可以是Python 2或者3,并且安装了NumPy、Pandas和Matplotlib。

    准备数据

    假设我们在一组训练数据上重复训练了1000次结构相同的神经网络模型或是其它随机算法,并且记录模型在测试集的RMSE。另外,我们假设数据是正态分布的,这是开展后续分析的必要条件。

    记得每次查看预测结果的分布,往往也是呈正态分布。这里我们随机生成一组均值为60、标准差为10的正态分布数据。生成数据的代码如下图所示,并将结果保存为CSV格式的文件,命名为results.csv。

    我们用seed函数作为随机数生成器,以保证每次运行这段代码时得到的数据都一致。用normal()函数生成正态分布随机数,savetxt()函数保存结果。

    from numpy.random import seed
    from numpy.random import normal
    from numpy import savetxt
    # define underlying distribution of results
    mean = 60
    stev = 10
    # generate samples from ideal distribution
    seed(1)
    results = normal(mean, stev, 1000)
    # save to ASCII file
    savetxt('results.csv', results)

    运行这段代码,我们会得到包含1000个随机数的文件,模拟随机算法重复运行的结果。下图是该文件最后十行。

    ...
    6.160564991742511864e+01
    5.879850024371251038e+01
    6.385602292344325548e+01
    6.718290735754342791e+01
    7.291188902850875309e+01
    5.883555851728335995e+01
    3.722702003339634302e+01
    5.930375460544870947e+01
    6.353870426882840405e+01
    5.813044983467250404e+01

    基本分析

    首先,我们对上一步得到的结果简单地做一个统计分析。

    基本的统计分析有三种常用方法:

    1. 计算统计信息,比如均值、标准差、百分位等等;
    2. 对数据绘制箱形图或者;
    3. 绘制数据的直方图分布。

    下面的代码用来实现基本分析的功能。首先加载results.csv文件,然后计算统计信息和绘制图形。

    from pandas import DataFrame
    from pandas import read_csv
    from numpy import mean
    from numpy import std
    from matplotlib import pyplot
    # load results file
    results = read_csv('results.csv', header=None)
    # descriptive stats
    print(results.describe())
    # box and whisker plot
    results.boxplot()
    pyplot.show()
    # histogram
    results.hist()
    pyplot.show()

    上述样本的统计量如下图所示,算法的平均性能为60.3,标准差为9.8。如果我们假设这个分值表示的是某种误差,例如RMSE,那么最差的性能会达到99.5,而最好的情况是29.4。

    count  1000.000000
    mean     60.388125
    std       9.814950
    min      29.462356
    25%      53.998396
    50%      60.412926
    75%      67.039989
    max      99.586027

    下图所示的箱形图展示了数据的分布,其中箱子部分是中段50%的样本,原点表示异常值,绿线表示中位数的值。

    图片描述

    下图是数据的直方图分布,整体趋势符合正态分布,均值落在60附近。

    重复次数的影响

    我们总共伪造了1000个数据。那么1000次究竟是已经足够我们做出准确的决策呢,还是远不足所需的实验重复次数?我们该怎么判断?

    首先,我们可以绘制实验重复次数与分值均值的函数。期初,均值的波动幅度预计较大。随着重复次数增长,我们预期均值也将很快收敛到期望值附近。

    from pandas import DataFrame
    from pandas import read_csv
    from numpy import mean
    from matplotlib import pyplot
    import numpy
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    # collect cumulative stats
    means = list()
    for i in range(1,len(values)+1):
        data = values[0:i, 0]
        mean_rmse = mean(data)
        means.append(mean_rmse)
    # line plot of cumulative values
    pyplot.plot(means)
    pyplot.show()

    执行上面这段代码,可以得到下图。如图所示,重复次数在200次以内时,曲线波动较大;当实验超过600次之后,均值几乎趋于稳定。

    接下来,我们只取前500次实验结果绘制图形,并将最终的平均结果也用橙色线绘制到同一张图上。下面是代码和展示图形。

    from pandas import DataFrame
    from pandas import read_csv
    from numpy import mean
    from matplotlib import pyplot
    import numpy
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    final_mean = mean(values)
    # collect cumulative stats
    means = list()
    for i in range(1,501):
        data = values[0:i, 0]
        mean_rmse = mean(data)
        means.append(mean_rmse)
    # line plot of cumulative values
    pyplot.plot(means)
    pyplot.plot([final_mean for x in range(len(means))])
    pyplot.show()

    可见,当重复到100次时,结果已经接近期望值。当重复400次时,结果更加接近期望值,但是提升的比例不多。

    以上只是定性分析了实验重复次数对决策判断的影响,是否有更合理的方法呢?

    计算标准误差

    标准误差( standard error )是样本统计量的标准差,体现样本均值与总体均值的偏差范围。标准误差与标准差不同。标准差是离均差平方的算术平均数的平方根,反映一个数据集的离散程度。

    标准误差一般用来判定该组测量数据的可靠性,在数学上它的值等于测量值误差的平方和的平均值的平方根。由于在测量中的待测物体的真值很难得到。因此我们在实际的计算中,用标准误差估算值代替实际误差。

    我们期望随着实验次数的增加,标准误差逐渐减小。

    下面的代码计算了每次重复实验之后的标准误差。

    from pandas import read_csv
    from numpy import std
    from numpy import mean
    from matplotlib import pyplot
    from math import sqrt
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    # collect cumulative stats
    std_errors = list()
    for i in range(1,len(values)+1):
        data = values[0:i, 0]
        stderr = std(data) / sqrt(len(data))
        std_errors.append(stderr)
    # line plot of cumulative values
    pyplot.plot(std_errors)
    pyplot.show()

    横坐标是实验重复次数,纵坐标表示标准误差。如我们预期,随着实验重复次数增加,标准误差逐渐减小。我们还能发现,标准误差下降到一定程度之后,下降趋势变得非常缓慢,这称作可接受误差,大约在1~2个单位量。

    我们在上图中在添加两条辅助线,分别标识标准误差在0.5和1的情况。代码如下图所示。

    from pandas import read_csv
    from numpy import std
    from numpy import mean
    from matplotlib import pyplot
    from math import sqrt
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    # collect cumulative stats
    std_errors = list()
    for i in range(1,len(values)+1):
        data = values[0:i, 0]
        stderr = std(data) / sqrt(len(data))
        std_errors.append(stderr)
    # line plot of cumulative values
    pyplot.plot(std_errors)
    pyplot.plot([0.5 for x in range(len(std_errors))], color='red')
    pyplot.plot([1 for x in range(len(std_errors))], color='red')
    pyplot.show()

    若标准误差低于1在可接受的范围,那么大约重复100次实验就够了。若标准误差低于0.5才能接受,那么大约需要重复300~350次实验。

    再强调一遍,标准误差是衡量在模型配置参数和随机初始条件不变的前提下,模型效果的样本均值与整体均值的偏差范围。

    我们也可以把标准误差当做模型平均效果的置信区间。比如,若置信度为95%,置信区间的上下界可以表示为:

    样本均值 +/- ( 标准误差 * 1.96 )

    用下面这段代码重新绘制带有置信区间的样本均值。

    from pandas import read_csv
    from numpy import std
    from numpy import mean
    from matplotlib import pyplot
    from math import sqrt
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    # collect cumulative stats
    means, confidence = list(), list()
    n = len(values) + 1
    for i in range(20,n):
        data = values[0:i, 0]
        mean_rmse = mean(data)
        stderr = std(data) / sqrt(len(data))
        conf = stderr * 1.96
        means.append(mean_rmse)
        confidence.append(conf)
    # line plot of cumulative values
    pyplot.errorbar(range(20, n), means, yerr=confidence)
    pyplot.plot(range(20, n), [60 for x in range(len(means))], color='red')
    pyplot.show()

    结果如下图所示。其中红线表示总体的均值。通过观察可以发现,尽管样本均值高估了总体均值,但是总体均值还是落在了置信度为95%的置信区间之内。95%置信度的含义是若样本数目不变的情况下,做100次实验,有95个置信区间包含了总体均值的真值,剩余5个置信区间没有包括。

    如图所示,随着实验的重复次数增多,置信区间的范围逐渐缩小,当重复次数超过500次之后,继续重复实验对效果的提升并不明显。

    若把20~200次的区间放大绘制,趋势会看的更加明显。

    from pandas import read_csv
    from numpy import std
    from numpy import mean
    from matplotlib import pyplot
    from math import sqrt
    # load results file
    results = read_csv('results.csv', header=None)
    values = results.values
    # collect cumulative stats
    means, confidence = list(), list()
    n = 200 + 1
    for i in range(20,n):
        data = values[0:i, 0]
        mean_rmse = mean(data)
        stderr = std(data) / sqrt(len(data))
        conf = stderr * 1.96
        means.append(mean_rmse)
        confidence.append(conf)
    # line plot of cumulative values
    pyplot.errorbar(range(20, n), means, yerr=confidence)
    pyplot.plot(range(20, n), [60 for x in range(len(means))], color='red')
    pyplot.show()

    小结

    通过阅读本文,我们列举了几种选择随机算法实验重复次数的方法。

    • 简单地尝试重复30次、100次或者1000次等等;
    • 绘制样本均值与重复次数的关系图,并根据拐点选择;
    • 绘制标准误差与重复次数的关系图,并根据误差阈值选择;
    • 绘制置信区间与重复次数的关系图,并根据误差的分布选择。

    【6位AI技术大咖分享研发经验 | 本周直播限时特惠 】本期直播(5月13日 周六)邀请来自阿里巴巴、思必驰、第四范式、一点资讯、58集团、PercepIn等在AI领域有着领先技术研究的一批专家,他们将针对人脸识别、卷积神经网络、大规模分布式机器学习系统搭建、推荐系统、自然语言处理及SLAM在机器人领域应用等热点话题进行分享。限时特惠:199元即可听6位技术专家的在线分享,点击报名,加微信小助手 csdncxrs 备注“人工智能”入群。
    图片描述

    展开全文
  • SPSS正交试验设计及其方差分析

    千次阅读 2021-02-12 07:37:19
    原创: 数据小兵试验优化设计,指在最优化思想的指导下,进行最优设计的一...主要优点是能在多试验条件中选出代表性强的少数试验方案,通过对这些少数试验方案结果的分析,从中找出最优方案或最佳生产工艺条件,并可...
  • 试验设计习题及答案

    千次阅读 2020-12-24 11:33:42
    或因素某水平值的多次实现。2.因素:试验中要考虑的可能会对试验结果产生影响的条件。常用大写字母表示。3.水平:因素所处的不同状态或数值。4.处理:试验中各个因素的每一水平所形成的组合5.响应:试验的结果...
  • 在科研和生产中,影响一个事物的因素有很个。有些因素影响大,有些因素影响小。为了保证优质、高产、低消耗,就必须找出对产品质量与产量有显著影响的那些因素。 本章介绍如何充分利用试验诗句进行分析、推断因素...
  • 1.1 随机试验 随机试验: 可以在相同的条件下进行重复。 每次试验的可能结果不止一个,并且知道所有可能的结果。 进行一次试验之前不能确定哪一个结果会出现。 eg: ...
  • 快速瞬变脉冲群试验

    万次阅读 2017-05-15 13:39:31
    4.2.2.3 试验目的: 试验单个设备或系统的抗静电干扰的能力。它模拟:(1)操作人员或物体在接触设备时的放电。(2)人或物体对邻近物体的放电。 4.2.2.4 ESD 的模拟: 图 11 和图12 分别给出了ESD 发生器...
  • 又称样本量估计(sample size estimation),是指为满足统计的准确性和可靠性(I类错误的控制和检验效能的保证)计算出所需的样本量,它是临床试验设计中一个极为重要的环节,直接关系到研究结论的可靠性、可重复性,...
  • 周期耐久性测试(Endurance Cycling Test ) 目的:评估非挥发性memory器件在多次读写算后的持久性能 Test Method:将数据写入memory的存储单元,在擦除数据,重复这个过程多次 测试条件:室温,或者更高,每个数据...
  • Java—重复调用的代码块—方法

    千次阅读 2020-07-31 15:30:07
    就如一个班级里有8个人重名,都叫“张三”,授课老师无法仅从姓名上区别这8个同学,为了达到区分不同同学的目的,老师需要用到这些同学的其他信息(如脸部特征、声音特征等)。 同样,编译器为了区分这些函数,除了...
  • 重复测量的方差分析

    千次阅读 2019-12-24 12:07:23
    重复测量的意义:由于重复测量时,每个个体的测量结果之间存在一定程度的相关,违背了方差分析数据独立性的要求,如果仍使用一般的方差分析,将会增加犯I类错误的概率,所以重复测量资料有相对应的方差分析方法。...
  •  随机试验有很种,例如常出现的掷骰子,摸球,射击,抛硬币等。所有的随机试验的结果可以分为两类来表示:数量化表示:射击命中的次数,商场每个小时的客流量,每天经过某个收费站的车辆等,这些结果本身就是数字...
  • 这些严酷等级可供产品试验的设计者在制定具体产品试验规范时参考和选择,不同的产品其试验的条件是不一样的,不同类型的振动试验条件制定的方法也是不一样的,振动环境试验条件的制定较为复杂,其制定的原理如下。...
  • 点上方人工智能算法与Python大数据获取更干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :知乎 https://zhuanlan.zhih...
  • 一、冲击、碰撞试验设备的分类 冲击、碰撞试验台的分类见表1 表1 冲击、碰撞试验台的类型与特点 二、冲击、碰撞试验对设备的要求 1.冲击试验对设备的要求 国家标准GB/T 2423.5对试验设备在进行条件试验...
  • 端口服务探测试验

    2021-10-27 15:16:39
    但无连接服务不能防止报文的丢失、重复或失序。 端口-服务的关系 由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理。服务和端口是一个一一对应的关系,相互依赖,没有服务的运行也就...
  • 处理机调度试验

    2021-05-18 05:59:21
    《处理机调度试验》由会员分享,可在线阅读,更相关《处理机调度试验(19页珍藏版)》请在人人文库网上搜索。1、实验报告的基本内容及要求1实验预习在实验前每位同学都需要对本次实验进行认真的预习,并写好预习报告...
  • 2.一个随机区组试验有8个处理,四次重复,误差自由度是( )。 A.27 B.21 C.32 D.28 3.在推广教师的指导下,学员运用已有的知识、经验,从事一定的实践工作,这种教学方法是( )。 A.实验法 B.实习法 C.参与法 D.演示法 4....
  • 一般说到概率,就喜欢拿抛硬币做例子。大多数时候,会简单认为硬币正背面的概率各为二分之一,...主要目的是以抛硬币试验为例说明现代数学观点下的概率是什么样子以及以概率论为基础的一些基本数理统计方法。 概率
  • 《计算机系统维护试验讲解》由会员分享,可在线阅读,更相关《计算机系统维护试验讲解(30页珍藏版)》请在人人文库网上搜索。1、河南科技大学学生实验报告计算机系统维护实验报告班 级: 学 号:姓 名: 指导教师:河南...
  • 试验设计[实验设计]

    千次阅读 2013-05-30 09:09:24
    试验设计自20世纪20年代问世至今,其发展大致经历了三个阶段:即早期的单因素和因素方差分析,传统的正交试验法和近代的调优设计法。   内容 产品质量的高低主要是由设计决定的,一个好的试验设计包含几个方面...
  • 《倚天屠龙记中》有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有。张无忌说记住了一半。...目的就是为了把 Android 中关于 View 测量的机制一性说清楚。算是自己对自己较
  • 文章目录Breeding Theory and Genetic Testing介绍循环选择原则一个典型繁殖周期的活动和种群基地的种群选择和育种部署基因改良品种先进的下一代树育种...与农业作物和动物的育种计划一样,这些计划的目的是通过诸如选
  • 原标题:从统计到概率,入门者都能用Python试验的机器学习基础 作者:Christian Pascual机器之心编译 参与:王淑婷、思源本文转自机器之心,转载需授权概率论与统计学是机器学习的基础,但很初学者不太了解它们。...
  • 对3因素混合水平[3,3,4]和有交互作用,采用18次试验的方案,D-optimal的试验设计表格如下: warning off; sortrows(rowexch(3,18,'interaction','categorical',1:3,'levels',[3,3,4],'tries',1000,'maxiter',50)) 方差...
  • 由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。...
  • 1.1 这个试验方法规定了测定产品和可见烟(见标注1)或组件置于不同程度的辐射热下的热和可见烟释放率。 标注1—可见烟的描述是就燃烧产物在试验过程中释放的昏暗的投射光而言的。 1.2这个点火试验响应法使用一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,955
精华内容 9,982
关键字:

多次重复实验的目的