数学建模--数据预处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nat-model-data.txt这个数据非常庞大,而且每一个DNA 串非常长,每一个DNA串的长度都不一样,在txt文件中, 每一个串用它的串号开始,空行结束。而且串号并不是 统一编码为3位,而是不同的位数。这给计算机处理和判 别带来困难。可以手工去掉前面的数字,若工作量太大, 使用fgetl一行行读进来,,进行判断,如果第一个字符是 数字,表示是每个DNA的开头;继续读字符直到数字结束, 出现:符号后,后面的字符表示DNA; 再遇到空白行,则表示上一个DNA串结束,下一个是新的 DNA串。同样把这182个DNA读进来,每个DNA作一行, 并转换成Cell结构,这样每一行的长度都是该DNA的实际 长度。
分析:这个数据比较小,有很多处理方法,但是推荐大家 把原始数据做个备份,再用手工整理一下使用。 一行行的拷贝比较麻烦,可以先仔细观察数据,将不需 要的字符去掉,再整体拷贝。 麻烦之处在于:提供的数据没有空格,完全就是一串字符 本可以将数据存成矩阵,但因为长度不一样。 可先将数据读出来存成字符串,再转换成一个cell数据。 具体的程序请见程序shumodata00.m的第一部分;
1.直接在access中使用sql语言进行查询(续) 若输入 SELECT * from 第一次调查数据 where 西餐=yes; 则列出所有选择西餐的人 按照如上方法可以统计出同学们所需要的数据。
2.从access中导入到excel后,进行查询 a.打开数据库 b.选择“表”,选定一张表 c.“文件”,选择“导出”,或右键“导出” d.保存类型选择为“.xls” e.依次把3张表都导成excel格式,这时会发现打钩变成 true,不打勾变成false,因为使用的逻辑类型。 f.按如下方法可以得到统计值: 选定excel表格上一个空白格; 选择菜单“插入”,选项“函数”,选择COUNTIF; 在弹出的对话框中选择如下一页所示; 即可统计出所需要的数据。
图像数据的MATLAB提取与处理: 1.图像的读取 I=imread (' cameramen.tif'); 读取图像文件的数据,以矩阵形式存储在I中; 若图像为灰度图像,则I为m*n维数组; 若图像为彩色图像,则I为m*n*3维数组。 每个像素值位于0~255之间,用uint8存储。 对于灰度图像,0表示纯黑,255表示纯白。 2. 数据存到I中后,则可double(I)化成双精度型数据,按 照普通数组一样参与运算和处理。 其他一些函数:imshow;imwrite;rgb2gray;。。。
第二部分 一些有用的matlab的函数使用
以下提供了一些matlab的对数据提取与分析非常有用 的函数,以及他们的用法。 给定任意矩阵A;A=fix(rand(10,10)*20);
若想找出矩阵A中,某些特定值,或者特定值的 位置: [X,Y]=find(A==10);%返回A中元素为10时的坐标 [X,Y]=find(A>9 & A<13); A(find(A>9 & A<13)) %访问所有在9~13之间的元素 想找出符合条件的元素的个数 Num=nnz(A==10);%返回总个数; 一些有用的绘图函数 Hist;bar,stem,pie,pie3,fill, plotmatrix,…,充分利用, 可以为论文增色。
即所查找到的符合要求的个数
另外的方法: 如果同学们想把表变成纯数字表,可以用查找, 替换的方式进行;然后把数字表导入matlab,可以很方 便的处理;(演示)
2004年第2题 电力市场的输电阻塞管理 数据可以先导入excel,再导 入matlab。 2005年第1题 长江水污染 2005年第2题 DVD在线租赁 均可按上面提供的方法
数学建模培训之
数据预处理
杨文霞 数学系 2009.7.11
数据预处理的重要性 自2000年以来,数学建模竞赛题目的数据提供方式 越来越多样(txt文档、acess数据、exLeabharlann Baiduel数据); 数据量越来越庞大; 快速而方便的从提供的数据中,找到我们所需要使用 的数据,就可以为后面的分析和处理节约时间,而不 为提取数据所累; 数据的存储、重用和传递,也是数学建模竞赛中常常 用到的; 对数据的使用和分析是建模的基础。
你要统计的列数的序号;后面的 数字表示行号; 代表从H列的第2行到3201行;
表示满足条件的值,等于FALSE, 即找出这一列中所有值==FALSE的个数; 也即:不坐东地铁的个数; 若写TURE,则表示==TRUE的个数,即坐地 铁的个数;
更“笨”的方法: 1.选择excel表格中的一列; 2.菜单“编辑”,选择“查找”; 3.输入关键词“TRUE”,选择查找全部;
1.直接在access中使用sql语言进行查询 a.打开数据库 b.选择“查询” c.新建“简单设计视图” d.把“显示表”关掉 e.在查询1窗口的上半部分 点右键“SQL视图” f.输入如下指令: SELECT count(*) from 第一次调查数据 where 西餐=yes; g.点工具栏的那个红色惊叹号,运行,可以得出选择西 餐的人数 h.窗口关掉选择保存,以后直接就可以用了 j.菜单选择“视图”,选择“SQL视图”,即可修改SQL 语言
本课内容安排
(1)以2000-08年数据为例,介绍如何将竞赛中提供的 不同数据,转换成被matlab所用的处理方法; ------核心问题是转化成矩阵 (2)推荐一些重要中间数据存储和处理方法; (3)利用matlab函数对数据进行基本观察。
第一部分 原始数据的预处理
2000年A题 DNA序列分类 数据格式:文本文档 Art-model-data.txt中,有三个数据是需要我们提取的, 前1-10行为已知的A类,11-20行为已知的B类,后20行 为分类未知,需要我们进行分类的数据。
2002年两个题目(车灯光源优化设计,彩票问题) 数据很少,略过。 2003年两个题目 1.SARS传播模型 附件2:北京市疫情数据,可以按前面的方法,将数据拷 到excel后,存成文件,然后由matlab的import data,导入 到工作区间。也可以存起来。 2.露天矿生产的车辆安排 数据比较小,但是大家需要熟用matlab的绘图工具plot函 数等,达到友好、清晰的视觉效果。
2004年第1题 奥运会临时超市网点设计 提供的是access数据库,里面有三张表 如果大家直接在access里面做统计,需要需要大家会 一些简单的数据库查询语言。由于专业的限制,很多 同学可能没有学习过access数据库处理技术。 (只演示一下,同学们根据自己的实际情况学习) 在此介绍一种比较容易上手的“笨办法”,先用access 把数据库打开,大家会看到3张表,把这3张表分别导 入excel,然后在excel中进行统计。同样也介绍不需要 数学公式的“笨办法”。
2006年第1题 出版社的资源配置 2006年第2题艾滋病疗法的评价及疗效的预测 均为excel文档,可以导入,拷贝,等。 2007年第1题 人口预测 007年第2题 换乘系统(txt数据) 因数模主页上的数据打不开,没有办法分析,抱歉。
2008年第一题数码相机定位 涉及到图像处理/计算机视觉知识。 2008年第二题 高校教育成本 自己查找数据
总结: (1)第一步先把数据变成matlab可以访问的格式; (2)可以采取手动提取和使用程序、工具软件提取相结合; (3)如果是txt数据,而且混有字符和数字,一般处理起来 比较麻烦点,则可用fgetl一行行读出来,单独处理好后 再存成矩阵;有的时候需要手工先做一些处理; (4)以表格形式存放在word中的数据,一般都可以先拷贝 到excel中,然后拷贝出里面的纯数据,存成excel文档, 再由matlab的import data,导入; (5)以数据库格式给的数据先用sql语言查询,或者导入到 Excel表格中。
2000年第2题 钢管订购和运输(略)
2001年两个题目 第1题.血管三维重建 涉及到图像的读取 具体程序见: shumodata01.m 第2题.公交车调度 为word提供的数据 Word里面的表格数据,一般先拷贝到excel中,然后拷 贝出所需要的纯数据,存成ecxel格式,经由Matlab的 File\importdata 选项,导入到matlab的工作区间。 为保险起见,将导入的数据,存成一个.mat文件,以后 就可以重新Load进工作区间参与运算。 假设导入的数据为data1,可以做如下操作: save('d:\shumo\2001\data1.mat','data1'); 这样,在关掉了matlab之后,只要重新运行: load(„d:\shumo\2001\data1.mat‟);即可导入数据。 建议大家将一些重要的、需要重用的数据都先save。 shumodata01.m