【MATLAB第32期】【更新中】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现

2023-11-16

【MATLAB第32期】【更新中】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新)

本文敏感性分析主要分析分类问题(fisher、rf、arf、nca等)。

版本更新:

2023/8/2 增加基于拥挤距离和Pearson相关系数的IPCC方法(用SVM进行交叉验证分类预测评估)

clear all
warning('off','all');
tic;
load classdata  %导入数据
ContributeRate=0.9;
item=randperm(size(classdata,1));%数据打乱
classdata=classdata(item,:);% 数据打乱重组
xtrain=classdata(:,1:end-1);% 输入变量
ytrain=classdata(:,end);%输出标签
Nf=10;   %  选择特征数量 
[m,n]=size(xtrain); % m代表行  n代表列 

%拥挤前保存原始xdata
Xdatasave=xtrain;

%%0和1之间的归一化
xtrain= (xtrain-min(xtrain)) ./ (max(xtrain)-min(xtrain));

%%--------拥挤阶段
%计算特征的拥挤/相关距离
crowdingDistance = IPCC(Xdatasave, ytrain);
%%--------对特征值进行排名
[res,ind]=sort(crowdingDistance,'descend');
%%--------选择最重要的特征
indfeat=ind(1:Nf);
%%-----------评估准确性
kfold=5;           %  交叉验证K值
Acc = Eval(xtrain(:,indfeat),ytrain,kfold);   %分类器评估

在这里插入图片描述

在这里插入图片描述

正确率=100%
总特征变量数量 = 21
筛选的特征变量数量= 1
筛选的特征变量编号为: 16  19  18   2  17   4   7  20  10   5  14   6   1

一、降维方法(分类)

常见的降维方法:
常见的敏感性分析法:

*(一).全局敏感性分析(sobol、蒙特卡洛方法)


(二).非全局敏感性分析
1.变量筛选(Fisher算法、临近成分分析NCA、RF随机森林、ARF自适应随机森林)

二、案例数据

案例数据classdata 3998×22 ,前21列为变量,第22列为标签,案例采用2分类,即[1,2],多分类也满足。
在这里插入图片描述

三、实际应用

(1)Fisher算法

%% 1.Fisher
addpath('D:特征排序\Fisher')
load classdata
ContributeRate=0.9;
id=randperm(size(classdata,1));%数据打乱
classdata=classdata(id,:);% 数据打乱重组
xtrain=classdata(:,1:end-1);% 输入变量
ytrain=classdata(:,end);%输出标签
[W] = Fisher_Score(xtrain,ytrain) ;
plot2

在这里插入图片描述
在这里插入图片描述

(2)近邻成分分析NCA(用于分类)

%% (2)近邻成分分析NCA(用于分类)
addpath('D:\特征排序\NCA')
load classdata
ContributeRate=0.9;
[xx,mdl]=myfscnca(xtrain,ytrain,0.9);
xnca=classdata(:,xx);

在这里插入图片描述
在这里插入图片描述

(3)临近成分分析NCA

%% (3)近邻成分分析NCA
addpath('D:\特征排序\NCA')
ContributeRate=0.9;
xtrain =data(:,1:end-1);
ytrain =data(:,end);
[xx,mdl]=myfsrnca(xtrain,ytrain,0.9);
xnca=data(:,xx);

(4)随机森林RF

%% (3)随机森林RF
addpath('D:\特征排序\RF')
load classdata
ContributeRate=0.9;
[XT,RFModel,w]= mycrf(classdata,ContributeRate);
xrf=classdata(:,XT);

在这里插入图片描述在这里插入图片描述

(5)自适应随机森林ARF

%% (4)自适应随机森林ARF
addpath('D:\小论文文件包最终版\基坑与算法文献\副业\特征排序\ARF')
load classdata
ContributeRate=0.9;
params.RFLeaf=[5,10,20,50,100,200,500]; %RFLeaf定义初始的叶子节点个数,这里设置了从5到500。
params.Maxepoch=500; % 选择叶子节点个数对应的最大训练步数
[XT,RFModel,w,params]= mycarf(classdata,ContributeRate,params);
xarf=classdata(:,XT);

在这里插入图片描述

nTree = 20;nLeaf = 5;
在这里插入图片描述
在这里插入图片描述

四、代码获取

私信回复‘32’即可获取下载链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MATLAB第32期】【更新中】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现 的相关文章

  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 在 Matlab 中将绘图从高斯混合变换为均匀分布

    考虑以下抽签2x1Matlab 中的向量 其概率分布是两个高斯分量的混合 P 10 3 number draws v 1 First component mu a 0 0 5 sigma a v 0 0 v Second component
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • 使用 GPU 进行 Matlab 卷积

    我用gpuArray尝试了matlab的卷积函数conv2 convn 例如 convn gpuArray rand 100 100 10 single gpuArray rand 5 single 并将其与 cpu 版本 convn ra
  • 在 MATLAB 中检索 spfun、cellfun、arrayfun 等中的元素索引

    有什么办法可以找回index调用函数的元素的cellfun arrayfun or spfun行为 即检索函数范围内元素的索引 为了简单起见 假设我有以下玩具示例 S spdiags 1 4 0 4 4 f spfun x 2 x S 它构
  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • 如何使用matlab生成不同频率的正弦波?

    对于我的项目 我需要使用 matlab 生成一个正弦波 它有 100 000 个样本 并且频率在每 10 000 个样本后随机变化 采样率和频率可以根据方便而定 matlab中有没有函数可以生成这个 好的另一个例子 生成 5 个随机频率 r
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在

随机推荐

  • matlab确定灰度阈值T,基于阈值的灰度图像提取法

    对于简单的灰度图像 如果目标与背景的灰度存在一定的差异 那么可以用阈值来提取目标 关键是确定阈值 常用方法有 模态法 P参数法 可变阈值法 大津法和迭代逼近法等 模态法 取直方图的波谷作为阈值 适用于目标与背景灰度差异较大 目标与背景的直方
  • 2021-05-27

    点三信息Java后端实习面经 长沙 1 你做这个rpc项目的动机是什么 我 为了学习 后来面试官又说我动机不明 醉了 2 讲一下BIO NIO AIO 不用AIO的话 发送过来一个包的流程是怎样的 3 零拷贝 什么情况下适用零拷贝 什么情况
  • 史上最全 55道 MySQL面试题及答案,看完碾压面试官

    前言 MySQL面试题以及答案整理 最新版 MySQL高级面试题大全 发现网上很多MySQL面试题都没有答案 所以花了很长时间搜集 本套MySQL面试题大全 汇总了大量经典的MySQL程序员面试题以及答案 包含MySQL语言常见面试题 My
  • 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT

    作者 机器之心编辑部 来源 机器之心 来自复旦大学 萨里大学和华为诺亚方舟实验室的研究者首次提出一种无 softmax Transformer 视觉 Transformer ViT 借助 patch wise 图像标记化和自注意力机制已经在
  • 一个docker内不同参数执行个npm run

    dockerfile www wwwroot cat Dockerfile FROM node 12 18 0 alpine3 11 ARG NPM RUN ARG build ARG NPM RUN ARG TWO build story
  • qt序列帧读取

    描述 有时候ui给我们的动画是一序列的图片 播放动画需要一张一张图片读取 显得有点麻烦 存储的资源目录也显得比较凌乱 为解决这个问题 又不想使用gif 可以使用如下自定义序列帧播放组件 一次读取 通过计算当前帧的位置从内存读取当前帧 可以控
  • 027:vue中两列表数据联动,购物车添加、删除和状态更改

    第027个 查看专栏目录 VUE element UI 专栏目标 在vue和element UI联合技术栈的操控下 本专栏提供行之有效的源代码示例和信息点介绍 做到灵活运用 1 提供vue2的一些基本操作 安装 引用 模板使用 comput
  • 手机键盘字母组合

    题目 给定一个仅包含数字 2 9 的字符串 返回所有它能表示的字母组合 给出数字到字母的映射如下 与电话按键相同 注意 1 不对应任何字母 示例 输入 23 输出 ad ae af bd be bf cd ce cf 思路 根据输入的数字
  • 安卓逆向-IDA

    Java层代码是对系统层 so层 的封装 所以假如说APP开发者直接调用系统的接口而不是Java层 有些地方我们hook不出来 所以需要深入去了解so层的接口 IDA的使用 按F5可将汇编代码转C JNI OnLoad so层的hook接口
  • maria数据库随机查询_如何安装Maria DB,创建数据库和执行查询

    maria数据库随机查询 你好朋友 在本教程中 我们将看到 1 如何安装Maria DB 2 如何连接到Maria DB 创建数据库和执行查询 1 如何安装Maria DB 1 1 转到以下链接 然后单击 立即下载10 4 12稳定 按钮
  • JNPF低代码开发平台 新版3.4.6 框架源码分享

    每一个传统行业都有机会变成技术驱动的现代行业 这次疫情正在把很多原来的应急技术变成日常技术 数字化进程中最大的受益者不是互联网企业 而是用互联网改造自己的企业 独木不成林 或许JNPF快速开发平台正是意识到了这一点 才忙着织出一张密集的网
  • Python---多线程编程、基于Socket完成服务端程序开发、基于Socket完成客户端程序开发

    1 进程 程序在操作系统内运行 即成为一个运行进程 线程 进程内部可以有多个线程 程序的运行本质上就是由进程内部的线程在实际工作的 并行执行 多个进程同时在运行 即不同的程序同时运行 称之为 多任务并行执行 一个进程内的多个线程同时在运行
  • redis Hyperloglog 过滤重复

    Redis 中对 HyperLogLog 的应用 首先 在 Redis 中 HyperLogLog 是它的一种高级数据结构 提供有包含但不限于下面两条命令 pfadd key value 将 key 对应的一个 value 存入 pfcou
  • 【Linux】详解套接字编程

    文章目录 网络套接字 1 端口号 1 1认识端口号 1 2端口号VS PID 2 TCP与UDP协议 3 网络字节序 4 socket编程 4 1常用接口 4 2sockaddr结构 4 3 socket接口的底层工作 4 4字符串IP V
  • 计算机视觉、模式识别、机器学习常用牛人主页链接

    牛人主页 主页有很多论文代码 Serge Belongie at UC San Diego Antonio Torralba at MIT Alexei Ffros at CMU Ce Liu at Microsoft Research N
  • Python课堂笔记之输出数组中的数字

    将数组中的数字顺序输出
  • PLSQL中如何进行界面的基本使用和编辑。

    打开plsql后点击左上角的钥匙后可以看到最近登录的用户名和实例名称 System ORCL 其中system代表用户名 ORCL代表实例号 服务名 如何调整关键字的颜色 字体呢 选择Tools gt Preference gt 查看左侧栏
  • PAT乙级1023 组个最小数 (20 分)

    1023 组个最小数 20 分 一 问题描述 给定数字 0 9 各若干个 你可以以任意顺序排列这些数字 但必须全部使用 目标是使得最后得到的数尽可能小 注意 0 不能做首位 例如 给定两个 0 两个 1 三个 5 一个 8 我们得到的最小的
  • map 如何使用结构体作为自定义键值

    在使用map时 有时候我们需要自定义键值 才能符合程序的需要 比如我们需要使用自定义的结构体来作为map的键值 struct Test int x int y 这样直接使用的话 在编译时会出问题 1 gt Build started Pro
  • 【MATLAB第32期】【更新中】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现

    MATLAB第32期 更新中 基于MATLAB的降维 全局敏感性分析 特征排序 数据处理分类问题MATLAB代码实现 持续更新 本文敏感性分析主要分析分类问题 fisher rf arf nca等 版本更新 2023 8 2 增加基于拥挤距