【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 2018a 安装教程:30分钟搞定安装
开发语言·matlab·matlab2018a
jllllyuz2 天前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
Dev7z3 天前
基于Matlab传统图像处理的风景图像多风格转换与优化
图像处理·matlab·风景
t198751283 天前
基于MATLAB的指纹识别系统完整实现
开发语言·matlab
gihigo19984 天前
基于MATLAB的IEEE 14节点系统牛顿-拉夫逊潮流算法实现
开发语言·算法·matlab
云纳星辰怀自在4 天前
MATLAB: m脚本-fixdt数据类型数据范围
matlab·m脚本·fixdt
一叶知秋h4 天前
matlab实现PID参数功能的简单仿真_gif
matlab·gif·pid
技术净胜4 天前
MATLAB 基因表达数据处理与可视化全流程案例
开发语言·matlab
机器学习之心4 天前
SSA-SVMD麻雀算法优化逐次变分模态分解(15种不同的适应度)MATLAB代码
matlab·ssa-svmd·麻雀算法优化逐次变分模态分解
三维空间4 天前
在MATLAB中对基因表达数据进行数据预处理
matlab