数学建模 matlab 数据建模基础

一、数据的获取

1.从Excel中读取数据

(1)xlsread函数 :从EXCEL读入数据到MATLAB中。
例如:
在这里插入图片描述
a = xlsread(‘D:\adc.xlsx’,1,‘A1:D2’)
其中,‘D:\abc.xlsx’表示读入的EXCEL数据所在的路径以及EXCEL的文件名称;1表示位于sheet1;'A1:D2’表示需要读入的数据范围。
在这里插入图片描述
(2)xlswrite函数:从MATLAB中往EXCEL写入数据。
xlswrite(‘D:\adc.xlsx’,a,1,‘A1:D2’)
其中,‘D:\abc.xlsx’表示写入EXCEL工作簿所在的位置,如果指定位置不存在指定的EXCEL文件,则MATLAB会自动创建工作簿;a表示待写入的数据;1表示sheet1;'A1:D2’表示写入EXCEL中的具体位置。
在这里插入图片描述
注意,不要在MATLAB正在读写操作的时候打开EXCEL工作簿,这样有可能使程序终止运行。

2.从TXT中读取数据

(1)load函数:从TXT中读取数据。
load(‘***.txt’)
实操:
在这里插入图片描述
在这里插入图片描述
(2)textread函数: 如果TXT文件中存储了不同类型的字符或者数据,分类读取数据就需要使用textread函数了。textread读取信息的好处是,可以做到控制输出更精准,以及不需要使用fopen命令打开文件就可以直接读取TXT里的内容。
[A,B,C,…]=textread(‘filename’,‘format’,N,‘headerlines’,M)
其中,filename表示需要读取的TXT文件名称;format表示所读取变量的字段格式;N表示读取的次数,每一次读取一行;headerlines表示从第M+1行开始读入。
实操:
在这里插入图片描述

3.读取图片

imread函数: MATLAB中读取图片的常用函数。
A = imread(filename)
A = imread(filename,fmt)
A = imread(___,idx)
A = imread(___,Name,Value)
[A,map] = imread(___)
[A,map,transparency] = imread(___)

其中,A为返回的数组,用于存放图像中的像素矩阵。
实操:
在这里插入图片描述
在这里插入图片描述

4.读取视频

VideoFileReader :在MATLAB中使用计算机视觉工具箱中的VideoFileReader来读取视频数据,包括mp4、avi等格式的视频文件。
实操:
![在这里插入图片描述]](https://img-blog.csdnimg.cn/20200530202023784.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MDU5NDU3,size_16,color_FFFFFF,t_70)
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

5.总结

(1)用xlsread(),xlswrite()函数从Excel读取数据
(2)用textread()函数读取txt文档
(3)用imread()函数读取图片
(4)工具箱中VideoFileReader来读取视频数据

二、数据的预处理

为什么需要数据预处理?
原因:
收集数据的设备可能出故障;
输入错误数据;
当用户不希望提交个人信息时,可能故意向强制输入字段输入不正确的值;
错误也可能在数据传输中出现,这些可能是由于技术的限制。
由命名约定或所用的数据代码不一致,或输入字段的格式不一致而导致的。
影响数据质量的另外两个因素是可信性和可解释性。可信性反映有多少数据是用户信赖的,而可解释性反映数据是否容易理解。
我们并不需要过多关注数据质量差的原因,只需关注如何让数据质量更好,也就是说,如何对数据进行预处理,以提高数据质量,满足数据挖掘的需要。

1.缺失值处理

(1)均值插补。如果缺失值是定距型的,就以该属性存在值的平均值来插补缺失的值;如果缺失值是非定距型的,就根据统计学中的众数原理,用该属性的众数来补齐缺失的值;如果数据符合较规范的分布规律,则还可以用中值插补。
( 2)回归插补。利用线性或非线性回归技术得到的数据来对某个变量的缺失数据进行插补。

在这里插入图片描述
( 3)极大似然估计。在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计。

2.噪声过滤

1、回归法:用一个函数拟合数据来光滑数据。
在这里插入图片描述

2、均值平滑法:对于具有序列特征的变量用邻近的若干数据的均值来替换原始数据的方法。
在这里插入图片描述
3、离群点分析:通过聚类等方法来检测离群点,并将其删除,从而实现去噪的方法。
4、小波过滤法(又称小波去噪):在数学上,小波去噪问题的本质是一个函数逼近问题,即如何在由小波母函数伸缩和平移所展成的函数空间中,根据提出的衡量准则,寻找对原信号的最佳逼近,以完成原信号和噪声信号的区分。
在这里插入图片描述

3.数据集成

数据集成就是将若干个分散的数据源中的数据,逻辑地或物理地集成到一个统一的数据集合中
实现数据集成的系统称作数据集成系统,它为用户提供统一的数据源访问接口,执行用户对数据源的访问请求。
在这里插入图片描述

4.数据归约

数据归约的目的:得到能够与原始数据集近似等效甚至更好但数据量却较少的数据集。
在这里插入图片描述

5.数据变换

数据变换是指将数据从一种表示形式变为另一种表现形式的过程。
在这里插入图片描述

三、数据的统计

1.基本描述性统计

在这里插入图片描述

2.分布描述统计

在这里插入图片描述

3.总结

(1)表示位置的统计量:算术平均值和中位数
(2)表示数据散点的统计量:标准差、方差和极差
(3)表示分布形状的统计量:偏度和峰度

四、数据可视化

1.基本可视化

基本可视化是最常用的方法。在对数据进行可视化探索时,通常先用plot这样最基本的绘图命令来绘制各变量的分布趋势,以了解数据的基本特征。
实操:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上图是用plot绘制的数据最原始的分布形态,通过该图能了解数据大致的分布中心、边界、数据集中程度等信息。

2.数据分布形状可视化

在数据建模中,数据的分布特征对我们了解数据是非常有利的。
在这里插入图片描述

3.数据关联可视化

数据关联可视化对分析哪些变量更有效具有更直观的效果,所以在进行变量筛选前,可以先利用关联可视化了解各变量间的关联关系。
实操:
在这里插入图片描述

变量间相关性关联图
在这里插入图片描述
绘制变量间相关性强度图
在这里插入图片描述

4.数据分组可视化

数据分组可视化是指按照不同的分位数将数据进行分组,典型的图形是箱体图。箱体图的含义如下图所示。
在这里插入图片描述
绘制箱体图的MATLAB命令是boxplot。
实操:
在这里插入图片描述
画所有变量的箱体图
在这里插入图片描述
绘画dv1和eva两个变量的箱体图
在这里插入图片描述

5.总结

(1)基本可视化看总体
(2)分布可视化辨别各个变量是否对数据建模有意义
(3)数据关联可视化在进行变量筛选前使用
(4)数据分组可视化可以看出分布特征和异常值得数量,典型图形是箱体图,绘制箱体图的MATLAB命令是boxplot。

五、数据降维

1.主成分分析(PCA)基本原理及算法步骤

主成分分析是采取一种数学降维的方法,其所要做的就是设法将原来众多具有一定相关性的变量,重新组合为一组新的相互无关的综合变量来代替原来变量。
算法步骤
(1)对原始数据进行标准化处理
(2)计算样本相关系数矩阵
(3)计算相关系数矩阵的特征值和相应的特征向量
(4)选择重要的主成分,并写出主成分表达式
(5)计算主成分得分
(6)依据主成分得分的数据,进一步对问题进行后续的分析和建模。

2.案例

为了系统分析某IT类企业的经济效益,选择了8个不同的利润指标,对15家企业进行了调研,并得到下表所示的数据。请根据这些数据对这15家企业进行综合实力排序。
在这里插入图片描述
代码:
%% 导入数据
clc, clear, close all
A = xlsread(‘D:\数学建模\第3章 数据建模基础\5.数据降维\Coporation_evaluation.xlsx’,‘Sheet1’,‘B2:I16’);

%%数据标准化处理
a=size(A,1);
b=size(A,2);
for i=1:b
SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i))
end

%%特征值、特征向量
CM=corrcoef(SA)
[V,D]=eig(CM)
for j=1:b
DS(j,1)=D(b+1-j,b+1-j)
end
for i=1:b
DS(i,2)=DS(i,1)/sum(DS(:,1));
DS(i,3)=sum(DS(1:i,1))/sum(DS(:,1))
end
T=0.9;
for K=1:b
if DS(K,3)>=T
Com_num=K;
break;
end
end

%%提取主成分对应的特征向量
for j=1:Com_num
PV(:,j)=V(:,b+1-j);
end

new_score=SA*PV;
for i=1:a
total_score(i,2)=sum(new_score(i,:))
total_score(i,1)=i;
end
new_score_s=sortrows(total_score,-2)

%%显示结果
disp(‘特征值及贡献率:’)
DS
disp(‘阀值T对应的主成分数与特征向量:’)
Com_num
PV
disp(‘主要分分数:’)
new_score
disp(‘主成分分数排序:’)
new_score_s

运行结果:
主成分分数排序:

new_score_s =

9.0000 4.2350
1.0000 3.9717
8.0000 2.3677
6.0000 1.9710
5.0000 1.7984
13.0000 1.1033
15.0000 0.7527
14.0000 0.1682
2.0000 -0.2923
10.0000 -1.0075
7.0000 -1.5238
4.0000 -2.0545
11.0000 -2.5137
3.0000 -3.6435
12.0000 -5.3327

3.相关系数降维

相关系数用r表示,r在-1到+1之间取值。相关系数r 的绝对值大小(即| r |),表示两个变量之间的直线相关强度;相关系数r的正负号,表示相关的方向,分别是正相关和负相关。
| r | =0:零相关;
| r | =1:完全相关。
0.7<|r |<1:高度相关;
0.4<|r |<0.7:中度相关;
0.2<|r |<0.4:低度相关;
|r |<0.2:极低相关或接近零相关。

4.总结

(1)数据的读取有表格的读取,txt文档的读取,照片和视频的读取等等。
(2)数据的预处理帮助我们优化数据,满足建模需要。
(3)数据统计我们可以从算数平均值、中位数、标准差、方差、极差、偏度、峰度、概率分布函数、概率密度函数入手。
(4)数据的可视化让我们更好掌握数据的总体情况和各个变量的重要性。
(4)数据降维有两种方法:主成分分析法和相关系数法。

猜你喜欢

转载自blog.csdn.net/qq_45059457/article/details/106438378
今日推荐