基本运算
clc;clear;close all;
%% 基本运算
a=2;
b=3;
c=a+b;
%%
d=4;
%%
c2=a+b;
c3=a*b;
c4=a/b;
c5=a^(2);
c6=b^(1/3);
%%
c7=exp(2);
c8=log2(8);
c9=log(8);
c10=log10(10);
%%
floor(2.2) %向下取整
ceil(2.2) %向上取整
c11=mod(b,a); % b/a 的余数
%%
d=floor(2.2) %向上取整
ceil(2.2) %向下取整
% 1.3矩阵生成
%%
clc;clear;
%%
ju1=[1,2,3] %行矩阵
%%
ju2=[1 2 3]%矩阵
%%
%
ju3=[1;2;3] %列矩阵
%%
%%
%%
ju4=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,5,1];
%%
rand(5) %5*5 0-1 随机矩阵
rand(1,5)
rand(2,3)
%%
randperm(10,2) %10范围 2随机整数
%%
zeros(1,3)
ones(2,3)
eye(5)
%%
ju5=randperm(10,5) %在1-10范围内随机取5个整数
%
ju6=rand(10,5) %在0-1范围内随机矩阵
%
ju7=zeros(3,6); %全为0矩阵
ju8=ones(3,6); %全为1矩阵
ju9=eye(3,6); %全对角线为1
%%
a=1:10
%%
b=1:2:12
%%
linspace(3,4,5)
%%
matrix=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3];
[m,n]=size(matrix) %%
%%
size(matrix,1) %读行
%%
size(matrix,2) %读列
%%
length(matrix) %读最大 len
%%
A=ones(2,3)
B=4*ones(2,3)
%%
[A;B]
%%
[A,B]
%%
D=ones(3,2);
%%
C*D
%%
C.*B
%%
C./B
%%
B.^(2)
%%
B.^(1/2)
%%
%%
%%
ju10=1:10;
ju11=1:2:10;
ju12=linspace(1,10,5);% 1到10 之间均匀撒5个点
% 2.1矩阵操作
matrix=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,5,1];
%
[m,~]=size(matrix); %得到矩阵的 行数和列数
m1=size(matrix,1); %得到矩阵的行数
n1=size(matrix,2); %得到矩阵的列数
n2=length(matrix);
%
mum1=matrix(1,3) %取出矩阵的第一行,第三列
%
num2=matrix(1,:); %取出矩阵的第一行
num3=matrix(:,1); %取出矩阵的第一列
% 当然也支持矩阵多行多列选取
label=[1,3];
num4=matrix(label,:);
% 2.2矩阵运算
clc;clear;
ju1=4*ones(10,5);
%
ju2=8*ones(5,2);
ju3=ones(4,4);
ju4=6*ones(10,5);
ju5=2*ones(4,4);
%
ju3+ju5
ju3-ju5
%
num1=ju1*2;
%
num2=ju1.^(1/2);
%
num3=ju3*ju5;
%
num4=ju3.*ju5;
%
num5=ju3/ju5; %ju3的逆矩阵与ju5相乘
%
num6=ju3./ju5; %矩阵行列也是要相等的
%
[ju3,ju5] %水平方向合并 ,则行数要相同
%
[ju3;ju5] %竖直平方向合并 ,则列要相同
%
[ju3,ju5,ju3*ju5,ju3.*ju5,ju3/ju5,ju3./ju5]
% 2.3 统计函数
clc;clear;
ju1=[ 0.6472 0.2289 0.1946 0.7796 0.4582
0.7360 0.3010 0.1496 0.1583 0.8554;
0.8710 0.4099 0.8552 0.7292 0.1318;
0.8671 0.1923 0.9307 0.1935 0.6139];
max(ju1) %矩阵列最大值
max(ju1') %矩阵行最大值
max(max(ju1)) %所有矩阵的最大值
[A,B]=max(ju1) %最大值和所在位置
%% 数据导入
%%
data=xlsread('附件1 近5年402家供应商的相关数据.xlsx');
%%
data1=data(2:3,:);
%%
data1=data(2:10,:);
%%
index=[2,4,6,8];
data2=data(index,:);
%%
data1=data(:,2:3);
%%
data1=data(:,2:10);
%2:4 3:6
data1=data(2:4,3:6);
%%
%%
data3=table2array(data2);
%%
data_table=xlsread('附件1 近5年402家供应商的相关数据.xlsx','企业的订货量(m³)');
data_table2=readmatrix('附件1 近5年402家供应商的相关数据.xlsx','Sheet','企业的订货量(m³)');
%
data_table2(:,[1,2])=[]; %
% readtable
data_table3=readtable('附件1 近5年402家供应商的相关数据.xlsx','Sheet','企业的订货量(m³)');
data_table4=table2array(data_table3(:,3:end));
%%
%% 异常值识别
clc;clear;close all;
% load('data_test1.mat')
load('data_test.mat')
% 手动加上的异常数据
data(1,3)=10;
data(5,5)=100000;
data(8:15,7)=nan;
%%
% 缺失值识别
nanid=isnan(data);
%%
[A(:,1),A(:,2)]=find(nanid==1);
%%
data(:,7)=[]; %删除
%%
% 异常值识别
data_test=data(:,3);
%%
m_data=mean(data_test);
s_data=std(data_test);
%%
data1{1,1}=[1,2,3];
data1{1,2}=[1,2,3;3,4,5];
%%
%%
% x=[1,2,3,4,5]
% y=[2,4,5,6,100]
% index=[1,2,3,4];
% %%
% y=interp1(x(index),y(index),x,'spline')
%%
clc;clear;close all;
% load('data_test1.mat')
% load('data_test.mat')
load('data_zuoye.mat')
%%
% 手动加上的异常数据
% data(1,3)=10;
% data(5,5)=100000;
% data(8:15,7)=nan;
data=data_zuoye;
[m,n]=size(data);
for i=1:n
data_get=data(:,i);
data_index{1,i}=find(abs(data_get-mean(data_get))>3*std(data_get));
plot(i,data_get,'bo')
hold on
if (length(data_index{1,i})>=1)
plot(i,data_get(data_index{1,i}),'r*','LineWidth',1) %如果有异常的话把异常显示出来
hold on
%异常进行插值补全
label=1:m;
label1=label;
label1(data_index{1,i})=[];
yylabel=data_get;
yylabel(data_index{1,i})=[];
yylabel1= interp1(label1,yylabel,label,'spline');%三次样条插值数据
data(:,i)=yylabel1;
end
%修正过后的data
end
xlabel('属性')
ylabel('数值')
set(gca,"FontSize",12,"LineWidth",1.5)
%%
%课后补充一个 数据处理,异常值识别的流程图
%补充 3sigma 法则 还有插值的原理 公式 4-5个 三次样条或者拉格朗日,cubic/选一种 写理论
%%
%% 标准化
data1=zscore(data);
%补充公式到论文
%%
data2=(mapminmax(data',0,1))'; %对行 %补充公式到论文
%% 降维
data_ld=tsne(data,'NumDimensions',2); %TSNE降维
figure
plot(data_ld(:,1),data_ld(:,2),'*','LineWidth',1.5)
figure
data_ld1=pca(data,2); %PCA降维
plot(data_ld1(:,1),data_ld1(:,2),'*','LineWidth',1.5)
%% 相关性分析
clc;clear;close all;
load('data_test.mat')
%%
load('color_cell1.mat')
[xiangguan,p_value]=corr(data,'Type','Pearson');%等效于xiangguan=corr(data,'Type','Pearson');
%x轴和y轴的标签,要和数据的列数对应
index_name={'Score','Economy','Family','Health','Freedom','Generosity'};
y_index = index_name;
x_index=index_name;
figure(1)
%字号12,字体宋体,可以随意改变 显示默认配色
H = heatmap(x_index,y_index, xiangguan, 'FontSize',12, 'FontName','宋体');
H.Title = '相关性分析系数检验矩阵';
colormap(color_cell1{1,1})
%%
plotmatrix(data(:,1:4))