【MATLAB第63期】基于MATLAB的改进敏感性分析方法IPCC,拥挤距离与皮尔逊系数法结合实现回归与分类预测

【MATLAB第63期】基于MATLAB的改进敏感性分析方法IPCC,拥挤距离与皮尔逊系数法结合实现回归与分类预测

思路

考虑拥挤距离指标与PCC皮尔逊相关系数法相结合,对回归或分类数据进行降维,通过SVM支持向量机交叉验证得到平均指标,来判定优化前后模型好坏 。

通过手动设置拥挤权重,如拥挤权重0.3,关联权重0.7,来得到IPCC的各变量的特征值。

一、回归预测模型

bash 复制代码
clear all
warning('off','all');
%% 皮尔逊相关系数PCC
tic
load data
addpath('PCC')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
opts.Nf =size(xtrain,2);    % 选择因素数量
[m,n]=size(xtrain); % m代表行  n代表列 
%%  数据归一化
p_train=xtrain;
t_train = ytrain;

FS     = mypcc(p_train,t_train,opts); % 皮尔逊相关系数法 函数调用
sf_idx = FS.sf;
 % 绘图  ,特征排序
extra()
 xpcc=yt(1:mm);%取前MM个数据
 %%-----------评估准确性
kfold=5;           %  交叉验证K值
Fitness1 = Eval_regress(p_train(:, xpcc),t_train,kfold);   %回归评估
 toc;
 disp('--------------PCC运行结果---------------')
disp(['平均rmse值=' num2str(Fitness1)]);
disp([ '总特征变量数量 = ' num2str(n)    ]);
disp([ '筛选的特征变量数量= ' num2str(mm)    ]);
disp(['筛选的特征变量编号为: '  num2str(xpcc)]) ;
 


 %% IPCC
tic;
%%--------拥挤阶段
%计算特征的拥挤/相关距离
c1 = IPCC(p_train,t_train);

%%--------对特征值进行排名
[res,ind]=sort(c1,'descend');
%%--------选择最重要的特征
W1=c1;
plot2

indfeat=ind(1:mm1);

%%-----------评估准确性
kfold=5;           %  交叉验证K值
Fitness2 = Eval_regress(p_train(:, indfeat),t_train,kfold);   %回归评估
xipcc=yt1(1:mm1);
 toc;
 disp('--------------IPCC运行结果---------------')
disp(['平均rmse值=' num2str(Fitness2)]);
disp([ '总特征变量数量 = ' num2str(n)    ]);
disp([ '筛选的特征变量数量= ' num2str(mm1)    ]);
disp(['筛选的特征变量编号为: '  num2str(xipcc)]) ;

历时 4.308931 秒。

--------------PCC运行结果---------------

平均rmse值=1.5093

总特征变量数量 = 30

筛选的特征变量数量= 17

筛选的特征变量编号为: 4 17 15 18 24 27 22 23 16 28 30 29 20 21 5 25 19


历时 4.006288 秒。

--------------IPCC运行结果---------------

平均rmse值=1.4565

总特征变量数量 = 30

筛选的特征变量数量= 24

筛选的特征变量编号为: 4 17 15 18 24 27 23 16 22 29 21 5 28 19 30 6 14 9 10 20 8 7 26 12


可见IPCC方法得到的特征变量的权重更加均匀, 所对应达到累计90%贡献率的变量更多 ,平均rmse结果更优。

二、分类预测模型

classdata=xlsread('数据集.xlsx');

ContributeRate=0.9;

xtrain =classdata(:,1:end-1);

ytrain =classdata(:,end);

bash 复制代码
历时 13.706817 秒。
--------------PCC运行结果---------------
平均正确率acc=72.8169%
总特征变量数量 = 12
筛选的特征变量数量= 8
筛选的特征变量编号为: 5   8   9   3   6   7  12  11


bash 复制代码
历时 1.660615 秒。
--------------IPCC运行结果---------------
平均正确率acc=74.241%
总特征变量数量 = 12
筛选的特征变量数量= 8
筛选的特征变量编号为: 5   6   8   9   3  11   7  12


通过分类案例数据可得, IPCC特征选择方式更优,准确率较高。

三、代码获取

后台私信回复"63期"其可获取下载方式。

相关推荐
小白的高手之路2 小时前
Matlab中的积分——函数int()和quadl()
matlab
机器学习之心4 小时前
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题,Matlab实现
人工智能·神经网络·matlab·物理信息神经网络·二阶常微分方程
WangYan20229 小时前
MATLAB 2023a深度学习工具箱全面解析:从CNN、RNN、GAN到YOLO与U-Net,涵盖模型解释、迁移学习、时间序列预测与图像生成的完整实战指南
深度学习·matlab·matlab 2023a
迎风打盹儿9 小时前
均匀圆形阵抗干扰MATLAB仿真实录与特点解读
matlab·信号处理·抗干扰·均匀圆阵·波束合成
数维学长9861 天前
【全网最全】《2025国赛/高教杯》C题 思路+代码python和matlab+文献 一到四问 退火算法+遗传算法 NIPT的时点选择与胎儿的异常判定
开发语言·算法·matlab
dlraba8021 天前
用遗传算法破解一元函数最大值问题:从原理到 MATLAB 实现
开发语言·matlab
996终结者2 天前
Python数据分析与处理(二):将数据写回.mat文件的不同方法【超详细】
python·matlab·数据分析
我是水怪的哥2 天前
在时间序列中增加一个阶跃对长期趋势变化的影响
matlab·lake
lingchen19062 天前
MATLAB矩阵及其运算(三)矩阵的创建
算法·matlab·矩阵
民乐团扒谱机3 天前
【微实验】妈妈,我的MATLAB开始学方言了!?(一)
数学建模·matlab·语言学·方言