数模讲座--数据处理方法周德强什么是数据处理?•数据处理是指用简明而严格的方法把获得的实验数据所代表的事物内在的规律提炼出来,得出结果的加工过程,包括数据记录、数据预处理、描绘曲线,从带有误差的数据中提取参数(参数估计),验证和寻找经验规律,外推实验数据等等。数据处理基本方法•列表法•数据预处理•作图法•逐差法•最小二乘法步骤一:列表法•获得数据后的第一项工作就是记录。列表法就是把数据按一定规律列入表中。这是在记录和处理实验数据时最常用的方法,又是其它数据处理方法的基础。列表法的优点是对应关系清楚、简捷,有助于发现实验中的规律。所以在每一个实验中对所测得的数据首先应考虑列表处理。•例1:上海市区社会商品零售总额和全民所有制职工工资总额的数据如下t78798081828284858687y1(亿元)23.827.631.632.433.734.943.252.863.873.4y2(亿元)41.451.861.767.968.777.595.9137.4155.0175.0表1上海市区社会商品零售总额和全民所有制职工工资总额(1)列表的基本要求:1.表格设计合理,简单明了,重点考虑如何能完整地记录原始数据及相关量之间的函数关系;2.表的上方应有表头,写明所列表格的名称;3.各标题栏目必须标明物理量的名称和单位(用国际符号字母表示),名称应尽量用符号表示。4.若为测量函数关系的数据表,一般把作为自变量的数据列在上方(按由小到大或由大到小的顺序排列),把作为因变量的数据对应列在下,便于反映出物理量之间的内在联系;(2)表中数据的录入、保存和调用指令驱动模式m文件模式•通常matlab以指令驱动模式工作,即在matlab窗口下当用户输入单行指令时,matlab立即处理这条指令,并显示结果,这就是matlab命令行方式。•命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。matlab的工作模式1.数据文件.mat•mat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。•mat文件的生成和调用是由函数save和load完成的。软件链接1:matlab文件的类型指令驱动模式1、年份数据以1为增量,用产生向量的方法输入。命令格式:x=a:h:bt=78:872、分别以x和y代表变量职工工资总额和商品零售总额。x=[23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4]y=[41.4,51.8,61.7,67.9,68.7,77.5,95.9,137.4,155.0,175.0]3、将变量t、x、y的数据保存在文件data中。savedatatxy4、进行统计分析时,调用数据文件data中的数据。loaddata指令驱动模式的不足•在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。•命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。m文件模式1.将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。2.程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。m文件简介包含matlab语言代码的文件称为m文件,其扩展名为m。m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。m文件有两类:独立的m文件—称命令文件可调用m文件—称函数文件m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等(1)命令文件—简单的m文件命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。1、输入矩阵:data=[78,79,80,81,82,83,84,85,86,87;23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4;41.4,51.8,61.7,67.9,68.7,77.5,95.9,137.4,155.0,175.0]2、将矩阵data的数据保存在文件data1中:savedata1data3、进行统计分析时,先用命令:loaddata1调用数据文件data1中的数据,再用以下命令分别将矩阵data的第一、二、三行的数据赋给变量t、x、y:t=data(1,:)x=data(2,:)y=data(3,:)说明:若要调用矩阵data的第j列的数据,可用命令:data(:,j)独立的m文件(2)函数m文件—需要输入变量,返回输出变量matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab的能力。•对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。•这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。函数m文件的格式:function返回变量=函数名(输入变量)注释说明语句段程序语句段特定规则:1.函数m文件第一行必须以单词function作为引导词,必须遵循如下形式:function因变量=函数名(自变量)2.m文件的文件名必须是函数名.m。3.程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。1、1.在matlab命令窗口点击file菜单newm-file2.edit——用matlab自带的编辑器编制m文件。2、在编辑器中输入(数据)矩阵:data=[78,79,80,81,82,83,84,85,86,87;23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4;41.4,51.8,61.7,67.9,68.7,77.5,95.9,137.4,155.0,175.0]t=data(1,:);x=data(2,:);y=data(3,:)3、将矩阵data的数据保存在文件data2.m中4、进行统计分析时,先用命令:data2将文件中的数据调入工作空间。注意:所创建的m文件必须纳入matlab搜索路径后,才能在matlab命令窗口运行。可调用m文件(4)函数句柄•函数句柄是matlab6特有的语言结构,•其优点:•方便地实现函数间互相调用•兼容函数加载的所有方式•拓宽子函数包括局部函数的使用范围•提高函数调用的可靠性•减少程序设计中的冗余•提高重复执行的效率•数组、结构数组、细胞型数组结合定义数据函数句柄的调用和操作可通过函数feval进行函数句柄的调用(1)feval(函数句柄)f_h1=@peaks;feval(f_h1)(2)feval(函数句柄,参数列表)f_h=@plot;feval(f_h,0:10,0:10)f_h2=@sin;feval(f_h2,0:10)等价于%x=0:10;y=sin(x)非matlab数据文件的调入•(1)记事本(.txt)文件的调入方法1:先将相关文件中的非数值数据去掉,存为新的txt文件,再用Load文件名(要带上扩展名,否则load视为.m文件,产生错误)方法2:直接用File菜单下的Importdata操作原始文件,包括字符均可调入(可选)。•(2)excel(.xls)文件的调入•方法1:直接用File菜单下的Importdata操作原始文件,若文件中有非数值数据可先选择将数据粘贴在剪贴板上,再导入。方法2:xlsreadsj3.xls(文件不含有非数值数据)步骤二:数据预处理为什么要预处理数据?1.与现实世界有关数据库太大,信息多而杂数据易受噪声数据、空缺数据和不一致性数据的侵扰2.提高数据质量,提高挖掘结果的质量3.使挖掘过程更有效、更容易为什么要预处理数据?4.为保证建模的质量与系统分析的正确结果,对收集来的原始数据必须进行数据变换和处理,使其消除量纲和具有可比性。如何预处理数据?一般的预处理方法数据清理、数据集成和变换、数据归约.数据变换技术为保证建模的质量与系统分析的正确结果,对收集来的原始数据必须进行数据变换和处理,使其消除量纲和具有可比性。定义1设有序列x=(x(1),x(2),,x(n))则称映射f:x→y(())(),1,2,,fxkykkn为序列x到序列y的数据变换。规范化:将属性数据按比例缩放,使之落入一个小的特定区间.9)小数定标规范化:通过移动属性A的小数点位置进行规范化,计算()()XxkXyk8)z-score规范化:属性A的值基于A的平均值和标准差规范化,计算()10()jxkyk•例1:上海市区社会商品零售总额和全民所有制职工工资总额的数据如下t78798081828284858687y1(亿元)23.827.631.632.433.734.943.252.863.873.4y2(亿元)41.451.861.767.968.777.595.9137.4155.0175.0表1上海市区社会商品零售总额和全民所有制职工工资总额data=[78,79,80,81,82,83,84,85,86,87;23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4;41.4,51.8,61.7,67.9,68.7,77.5,95.9,137.4,155.0,175.0]data=[78798081828384858687;23.827.631.632.433.734.943.252.863.873.4;41.451.861.767.968.777.595.9137.4155.0175.0];data1=data';junzhi=mean(data1);junfangcha=std(data1)zuixiao=min(data1)zuida=max(data1)%pr=minmax(data);zongh=sum(data1(:,2:3))xiabiao1=find(data(2,:)35)xiabiao2=find(data(2:3,:)35)[i,j]=find(data(2:3,:)35);[i,j]1:年份的规范化公式:n=data(1,:)-zuixiao(1)+1data=[78,79,80,81,82,83,84,85,86,87;23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4;41.4,51.8,61.7,67.9,68.7,77.5,95.9,137.4,155.0,175.0]2:商品零售总额和全民所有制职工工资总额的数据无量纲化比如选择公式:z-score规范化:()()XxkXykBZhun_data2=(data1(:,2)-junzhi(2))./junfangcha(2);BZhun_data3=(data1(:,3)-junzhi(3))./junfangcha(3);BZhun_data=[BZhun_data2BZhun_data3]huislilunP420步骤三:作图法把实验测得值按其对应关系在坐标纸上描绘成曲线,以此揭示各物理量间的相互关系,这种方法称为作图法。作图法是研究物理规律最常用的方法之一。用作图法可以找出物理量之间的函数关系,探索和验证规律,并找出经验公式;求出某些物理量的数值,按照物理量的变化规律,进行合理的内插和外推。作图法还具有简单,使函数关系一目了然的优点。MATLAB绘图.pptplot(n,data(2,:),'ro',n,data(3,:),'b*')data=[78,79,80,81,82,83,84,85,86,87;23.8,27.6,31.6,32.4,33.7,34.9,43.2,52.8,63.8,73.4;41.4,51.8,61.7,67.9,68.7,77.