资源简介
在实验中,我们可以把高维的数据进行降维,得到低维的数据,然后在进行分析。完美运行,你值得拥有。
代码片段和文件信息
%程序说明:PCA= pca(X),程序中X为 n*m阶混合数据矩阵,m为信号个数即变量的个数,n为采样点数即样本个数
% T为主分量矩阵P为得分向量矩阵,Q和T2为统计量。
%function PCA= pca(X)
tic;
load(‘高维特征.mat‘)
X=features(:1:30);
[m n]=size(X);
if X == 0
error(‘You must supply the mixed data as input argument.‘);%判断是否输入数据
end
if length(size(X))>2
error(‘Input data can not have more than two dimensions. ‘);%判断输入数据维数
end
if any(any(isnan(X)))
error(‘Input data contains NaN‘‘s.‘);%判断输入数据是否含有非数值的数据
end
%——————————————标准化数据(首先去均值,然后标定到单位方差)————————————
a=0.99;
meanValue = mean(X); %求采集数据的样本均值
e=ones(size(X1)1);
s=std(X);
d=diag(s.^-10);
fprintf(‘Normalizing the input data X:\n‘);
normX = (X - e*meanValue)*d; %将采集数据去均值并标准化
[NumofSamplDim] = size(X); %最初采集数据的维数及每个变量样本的个数
oldDim = Dim; %最初变量个数,即数据的维数
fprintf(‘Number of process variables: %d\n‘Dim);
fprintf(‘Number of samples of every variable: %d\n‘NumofSampl);
fprintf(‘Calculate PCA:\n‘);
%———计算协方差矩阵的特征值大于阈值的个数numEig(实际求出特征值中非零的特征值个数)———
firstEig=1;
numEig = 0;
covarianceMatrix = (1/(NumofSampl-1))*(normX‘*normX); %计算normX的协方差矩阵
[VD] = eig(covarianceMatrix) ; %计算协方差矩阵的特征值和特征向量全部特征值构成对角阵D,特征向量为V的列向量
threshold = 1e-5;
for n=1:Dim
if D(nn)>threshold
numEig=numEig+1;
else if D(nn)<=threshold
numEig=numEig; %实际求出的特征值大于零的非零特征值的个数
end
end
end
%——————————降序排列各特征值——————————
eigenvalues = flipud(sort(diag(D))); %按从大到小顺序排列的所有的特征值
t=eigenvalues‘;
%fprintf(‘The eigenvalues are as follows: %g \n‘eigenvalues);
%fprintf(‘Number of non-zero eigenvalues: %d\n‘numEig);
%—————————去掉较小的特征值(去掉较小值的阈值是去掉最大和最小特征值的和求平均)——————————
if numEig < oldDim %特征值的个数小于最初数据的维数的情况
lowerValue=(sum(eigenvalues)-eigenvalues(1)-eigenvalues(2))/numEig;
else
lowerValue=(sum(eigenvalues)-eigenvalues(1)-eigenvalues(numEig))/numEig; %特征值个数等于最初数据维数的情况
end
columns = diag(D) >=lowerValue ;%求得去掉较小特征值后的特征值向量(逻辑向量,大于设定值的特征值为1,小于设定值的为0)
%—————————合并选择的特征值,确定所选择则的特征值——————————
selectedColumns =columns ;
newDim=sum(selectedColumns);
%—————————输出处理的结果信息—————————
fprintf(‘Selected[ %d ] dimensions.\n‘newDim);
fprintf(‘Smallest remaining (non-zero) eigenvalue: %g \n‘eigenvalues(numEig));
fprintf(‘Largest remaining (non-zero) eigenvalue : %g \n‘eigenvalues(firstEig));
%———————选择相应的特征值和特征向量———————
B=V*fliplr(diag(selectedColumns)); %根据特征值大小,选择相应的特征向量
y=find(sum(B)~=0); %计算经过换算过的矩阵的列向量是否为0
selectedEvector=B(:y); %根据所选择的特征值,确定所选择的单位特征向量组成的新矩阵
%——————————计算负荷向量构成的矩阵———————————
disp(‘Calculate the loading vectors:‘);
P=selectedEvector ; %计算负荷向量P
%——————————提取主分量T————————————
disp(‘Calculate the score vectors:‘);
T= normX*P ; %计算得分向量,即主分量矩阵
%——————————计算Q统计量,即主元模型的SPE———————————
disp(‘Calculate the model prediction values:‘);
normXpre=T*P‘; %计算归一化后的主元模型预测值矩阵
error=normX-normXpre; %计算归一化的相对于主元模型的预测的误差
squaredError=error.^2 ;%计算归一化后的平方预测误差
disp(‘Calculate the Q statistic:‘);
Q=sum(squaredError2) ; %计算Q统计量
%——————————计算T统计量———————————
selectedEigvalue=diag(eigenvalues(1:newDim)); %计算所选择的特征值矩阵
disp(‘Calculate the T2 statistic:‘);
T2=diag(T*inv(selec
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5732 2018-10-15 10:02 pca降维算法\PCA.m
文件 117313 2018-06-17 15:39 pca降维算法\高维特征.mat
目录 0 2018-11-19 10:34 pca降维算法
----------- --------- ---------- ----- ----
123045 3
- 上一篇:MMC可靠性预测计算程序
- 下一篇:时域特征的求取,例如峭度、裕度等等。
相关资源
- 时域特征的求取,例如峭度、裕度等
- 数值分析实验报告-数值分析实验报告
- ROSL低秩分解算法,用于图像分析.ra
- 影像组学工具包
- 数学建模作业论文——有两种外形相
- 随机信号分析实验
- 混沌粒子群算法
- 图像数字图像课程设计--数字水印设计
- 这里实现了四种SVM工具箱的分类与回
- 最小二乘法模型辨识算法
- 经典功率谱估计与现代功率谱估计的
- 输入电压前馈Buck变换器的研究-输入电
- 投影追踪法
- 数字信号处理实验3用FFT对信号作频谱
- 基于统计分析的红楼梦作者解析
- 人工神经网络及其应用含代码
- 卡尔曼滤波器,自适应滤波器设计
- PSOGSA代码
- 基于SLNR的预编码动态功率分配
- 遗传算法goat工具箱
- 多目标整数编码的遗传算法求解集装
- 图像融合小波变换
- BP汉字识别GU写字板功能.zip
- 光伏发电并网仿真模型
- 通过对微电网系统进行建模,利用智
- 马尔科夫聚类.zip
- 外弹道学课程设计代码.zip
- Rayleigh信道衰落的无线通信系统的设计
- rbf神经网络在变压器故障诊断中的应
- iris神经网络.zip
评论
共有 条评论