matlab数学建模方法与实践 笔记2:数据的准备

简介: matlab数学建模方法与实践 笔记2:数据的准备

1.数据的读取与写入

excel、txt

P23-25

读图

cha3

ReadImages

%% 读取图片
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
clc, clear, close all
a1=imread('000.bmp');
[m,n]=size(a1);
%% 批量读取图片
dirname = 'ImageChips';
files = dir(fullfile(dirname, '*.bmp'));
a=zeros(m,n,19);
pic=[];
for ii = 1:length(files)
  filename = fullfile(dirname, files(ii).name);
  a(:,:,ii)=imread(filename);
  pic=[pic,a(:,:,ii)];
end
double(pic);
figure
imshow(pic,[])

此外参考https://blog.csdn.net/WTYuong/article/details/122626337

图像识别系列

读视频

选取某帧数图像进行图像层面的分析

cha3

readVideo

%% 读取视频数据
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
videoFReader = vision.VideoFileReader('vippedtracking.mp4');
% 播放视频文件
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
  videoFrame = step(videoFReader);
  step(videoPlayer, videoFrame);
end
release(videoPlayer);
%% 设置播放方式
% 重置播放器
reset(videoFReader)
% 增加播放器的尺寸
r = groot;
scrPos = r.ScreenSize;
%  Size/position is always a 4-element vector: [x0 y0 dx dy]
dx = scrPos(3); dy = scrPos(4);
videoPlayer = vision.VideoPlayer('Position',[dx/8, dy/8, dx*(3/4), dy*(3/4)]);
while ~isDone(videoFReader)
  videoFrame = step(videoFReader);
  step(videoPlayer, videoFrame);
end
release(videoPlayer);
reset(videoFReader)
%% 获取视频中的图像
videoFrame = step(videoFReader);
n = 0;
while n~=15
  videoFrame = step(videoFReader);
  n = n+1;
end
figure, imshow(videoFrame)
release(videoPlayer);
release(videoFReader)

2.数据预处理

P27

缺失值

删除、插补(均值、回归、极大似然估计(期望值最大化))

噪声过滤

回归、平滑、离群点分析、小波过滤

数据集成

建模比赛没有

数据归约

属性选择、样本选择

相关性分析、主成分分析

数据变换

P33

标准化、离散化、语义转换

3.数据统计

4.数据可视化

P431.m

原始分布形态,了解大致分布中心、边界、数据集中度

柱状分布图

% 数据可视化——基本绘图
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
% 绘制变量dv1的基本分布
N=size(X,1);
id=1:N;
figure
plot( id', X(:,2),'LineWidth',1)
set(gca,'linewidth',2);
xlabel('编号','fontsize',12);
ylabel('dv1', 'fontsize',12);
title('变量dv1分布图','fontsize',12);
% 同时绘制变量dv1-dv4的柱状分布图
figure
subplot(2,2,1);
hist(X(:,2));
title('dv1柱状分布图','fontsize',12)
subplot(2,2,2);
hist(X(:,3));
title('dv2柱状分布图','fontsize',12)
subplot(2,2,3);
hist(X(:,4));
title('dv3柱状分布图','fontsize',12)
subplot(2,2,4);
hist(X(:,5));
title('dv4柱状分布图','fontsize',12)

常见统计量绘制于分布图中

P432.m

% 数据可视化——数据分布形状图
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
dv1=X(:,2);
% 绘制变量dv1的柱状分布图
h = -5:0.5:5;
n = hist(dv1,h);
figure
bar(h, n)
% 计算常用的形状度量指标
mn = mean(dv1); % 均值
sdev = std(dv1); % 标准差
mdsprd = iqr(dv1); % 四分位数
mnad = mad(dv1); % 中位数
rng = range(dv1); % 极差
% 标识度量数值
x = round(quantile(dv1,[0.25,0.5,0.75]));
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','x','color','r')
x = round(mn + sdev*[-1,0,1]);
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','o','color',[0 0.5 0])
x = round(mn + mnad*[-1,0,1]);
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','*','color',[0.75 0 0.75])
x = round([min(dv1),max(dv1)]);
line(x,[1,1],'marker','.','color',[0 0.75 0.75])
legend('Data','Midspread','Std Dev','Mean Abs Dev','Range')

数据关联

P433.m

% 数据可视化——变量想相关性
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
Vars = X(:,7:12);
%  绘制变量间相关性关联图
figure
plotmatrix(Vars)
%  绘制变量间相关性强度图
covmat = corrcoef(Vars);
figure
imagesc(covmat);
grid;
colorbar;

箱型图

% 数据可视化——数据分组
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
dv1=X(:,2);
eva=X(:,12);
% Boxplot
figure
boxplot(X(:,2:12))
figure
boxplot(dv1, eva)
figure
boxplot(X(:,5))

5.数据降维

PCA

P41 原理、步骤

p43 案例

%% PCA数据降维实例
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著. 
%% 读取数据
A=xlsread('Coporation_evaluation.xlsx', 'B2:I16');
% Transfer orginal data to standard data
a=size(A,1);   % Get the row number of A
b=size(A,2);   % Get the column number of A
for i=1:b
    SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i));  % Matrix normalization
end
% Calculate correlation matrix of A.
CM=corrcoef(SA);
% Calculate eigenvectors and eigenvalues of correlation matrix.
[V, D]=eig(CM);
% Get the eigenvalue sequence according to descending and the corrosponding
% attribution rates and accumulation rates.
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
% Calculate the numvber of principal components.
T=0.9;  % set the threshold value for evaluating information preservation level.
for K=1:b
    if DS(K,3)>=T
        Com_num=K;
        break;
    end
end
% Get the eigenvectors of the Com_num principal components
for j=1:Com_num
    PV(:,j)=V(:,b+1-j);
end
% Calculate the new socres of the orginal items
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

MATLAB数学建模方法与实践 笔记2:数据的准备

在数学建模中,数据的准备是一个至关重要的阶段。数据的质量和准确性对于建模的成功至关重要。在MATLAB中,有一些强大的工具和技术可以帮助你准备和处理数据。本笔记将重点介绍如何使用MATLAB来准备数据,以便进行数学建模。

1. 数据的导入

在进行数学建模之前,首先需要将数据导入MATLAB。MATLAB支持多种数据格式的导入,包括文本文件、Excel文件、CSV文件等。你可以使用readtablexlsread等函数来导入数据。

% 从文本文件导入数据
data = readtable('data.txt');
% 从Excel文件导入数据
data = xlsread('data.xlsx');

2. 数据的清洗

导入数据后,通常需要进行数据清洗,以去除缺失值、异常值和不必要的数据列。MATLAB提供了各种函数和工具,如rmmissingisoutlierremovevars,用于数据清洗。

% 去除缺失值
data = rmmissing(data);
% 去除异常值
outliers = isoutlier(data.Var1);
data = data(~outliers, :);
% 去除不必要的数据列
data = removevars(data, {'Var2', 'Var3'});

3. 数据的转换

有时,需要对数据进行转换,以便更好地适应建模需求。这可能包括对数据进行平滑、归一化、对数变换等。

% 对数据进行对数变换
data.Var1 = log(data.Var1);
% 对数据进行归一化
data.Var1 = (data.Var1 - min(data.Var1)) / (max(data.Var1) - min(data.Var1));

4. 数据的合并

如果你有多个数据源,可能需要将它们合并成一个数据集,以便进行建模分析。MATLAB提供了joinouterjoin等函数来执行数据集合并操作。

% 合并两个数据集
merged_data = join(data1, data2, 'Keys', 'ID');

5. 数据的可视化

数据可视化是数据准备的重要一部分,可以帮助你理解数据的分布和特征。MATLAB提供了各种绘图函数,如histogramscatterboxplot,用于数据可视化。

% 绘制直方图
histogram(data.Var1);
% 绘制散点图
scatter(data.Var1, data.Var2);
% 绘制箱线图
boxplot(data.Var1);

6. 数据的保存

在准备数据之后,通常需要将处理后的数据保存到文件中,以便后续建模使用。MATLAB支持将数据保存为文本文件、Excel文件等。

% 将数据保存为文本文件
writetable(data, 'cleaned_data.txt');
% 将数据保存为Excel文件
writetable(data, 'cleaned_data.xlsx');

数据准备是数学建模过程中不可或缺的一部分。MATLAB提供了丰富的工具和函数,帮助你导入、清洗、转换、合并、可视化和保存数据。通过正确的数据准备,你可以提高建模的准确性和效率。在建模之前,务必投入足够的时间来准备和理解你的数据,这将为你的数学建模工作奠定坚实的基础。

目录
相关文章
|
3天前
|
SQL 移动开发 算法
MATLAB改进模糊C均值聚类FCM在电子商务信用评价应用:分析淘宝网店铺数据|数据分享
MATLAB改进模糊C均值聚类FCM在电子商务信用评价应用:分析淘宝网店铺数据|数据分享
|
4天前
|
机器学习/深度学习 数据可视化
Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测|数据分享
Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测|数据分享
12 0
|
4天前
|
数据挖掘 数据库
数据分享|MATLAB、R基于Copula方法和k-means聚类的股票选择研究上证A股数据
数据分享|MATLAB、R基于Copula方法和k-means聚类的股票选择研究上证A股数据
|
5天前
|
计算机视觉
MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据
MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据
12 0
|
6天前
|
数据采集 算法 数据可视化
MATLAB、R用改进Fuzzy C-means模糊C均值聚类算法的微博用户特征调研数据聚类研究
MATLAB、R用改进Fuzzy C-means模糊C均值聚类算法的微博用户特征调研数据聚类研究
14 1
|
8天前
|
算法 数据建模
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
18 6
|
10天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
25 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
15天前
|
传感器 存储 数据可视化
matlab数据可视化交通流量分析天气条件、共享单车时间序列数据
matlab数据可视化交通流量分析天气条件、共享单车时间序列数据
35 5
|
15天前
|
机器学习/深度学习 存储 资源调度
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
29 6
|
16天前
|
机器学习/深度学习 数据采集 并行计算
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
17 0

热门文章

最新文章