光谱指标-预测含水量-多种特征提取方式

目录

  • 1 介绍
    • 1.1 变量投影重要性(VIP)分析
    • 1.2. 灰色关联度(GRA)分析
    • 1.3. 皮尔逊相关性分析
    • 1.4 总结
  • 2 GRA灰色关联度
  • 3 皮尔逊(Person)相关性
  • 4 变量投影重要性(Variable importance in projection,VIP)分析
  • 5 机器学习

1 介绍

使用三种特征提取方式,变量投影重要性(VIP)分析、灰色关联度(GRA)分析和皮尔逊相关性分析的简要介绍。对多个光谱指标进行特征提取,然后使用机器学习模型进行训练和预测,包含matlab代码

1.1 变量投影重要性(VIP)分析

定义
变量投影重要性(Variable Importance in Projection, VIP)分析是一种用于评估数据集中每个变量对目标变量解释的重要性的方法。VIP分析常用于主成分分析(PCA)或偏最小二乘回归(PLS)中。

主要特点

  • 计算方法:VIP值通过计算每个变量在主成分或因子分析中的投影贡献来得出。具体而言,VIP值是基于每个变量对解释方差的贡献进行加权计算的。
  • 应用:VIP分析可用于特征选择,帮助识别对模型预测能力贡献最大的变量,从而去除冗余或不重要的特征,提升模型的可解释性和性能。
  • 阈值:一般来说,VIP值大于1的变量被认为对模型有较大影响,值小于1的变量对模型的贡献较小。

1.2. 灰色关联度(GRA)分析

定义
灰色关联度(Gray Relational Analysis, GRA)是一种基于灰色系统理论的方法,用于分析不同因素之间的关联程度。GRA能够处理小样本、少信息、不确定性的问题,广泛应用于工程、经济、管理等领域。

主要特点

  • 计算方法:GRA通过计算不同变量之间的关联度来评估其影响。具体步骤包括:标准化数据、计算灰色关联系数、计算综合关联度。
  • 分辨系数:GRA引入分辨系数(通常取0.5),用于调整关联度的计算,以提高分析的准确性。
  • 应用:GRA适用于多因素决策分析、系统优化等场景,能够有效识别影响目标变量的主要因素。

1.3. 皮尔逊相关性分析

定义
皮尔逊相关性分析(Pearson Correlation Analysis)是一种用于评估两个变量之间线性关系的统计方法。其核心是计算皮尔逊相关系数(Pearson Correlation Coefficient),该系数的取值范围在-1到1之间。

主要特点

  • 解释:系数值接近1表示正相关,接近-1表示负相关,而接近0则表示无相关性。
  • 应用:皮尔逊相关性分析广泛用于探究变量之间的关系、特征选择及数据探索等场景,但需注意其只能捕捉线性关系,对非线性关系的解释能力有限。

1.4 总结

  • VIP分析:用于评估每个变量对目标变量的贡献,常用于特征选择和模型优化。
  • GRA分析:用于评估多个因素之间的关联度,适合处理不确定性的问题。
  • 皮尔逊相关性分析:用于评估两个变量之间的线性关系,广泛应用于数据分析。

这三种分析方法各有其特点和适用场景,结合使用可以更全面地理解数据及其关系。

2 GRA灰色关联度

(Gray relational analysis,GRA)

% 加载数据 (请确保 data.mat 中包含变量 x 和 y)
load('data.mat');  % x 为特征矩阵,y 为目标变量% 设定分辨系数 zeta
zeta = 0.5;% 计算灰色关联度
GCD = gray_relational_analysis(x, y, zeta);% 绘制柱状图展示每个特征的灰色关联度
figure;
bar(GCD);
xlabel('特征编号');
ylabel('灰色关联度系数');
title('每个特征的灰色关联度系数');
grid on;
c
% 设置阈值 (根据实际需求设置一个合理的阈值,比如0.6)
threshold = 0.6;% 筛选与目标变量灰色关联度高的特征
important_features = find(GCD > threshold);% 显示结果
disp('灰色关联度系数:');
disp(GCD);
disp('重要特征 (关联度 > 0.6):');
disp(important_features);% 如果需要,可以将筛选后的特征用于后续分析
x_selected = x(:, important_features);

在这里插入图片描述

3 皮尔逊(Person)相关性

clc;
clear;% 加载数据
load('data.mat'); % 假设 data.mat 中包含特征矩阵 x 和目标变量 y% 计算每个特征与目标变量 y 的皮尔森相关系数
corr_with_y = corr(x, y); % 计算每个特征与 y 的相关系数% 设置相关系数阈值,选择与 y 相关性绝对值大于阈值的特征
threshold = 0.1; % 可以根据需要调整这个阈值
selected_features = find(abs(corr_with_y) > threshold); % 选择重要特征的索引% 打印选择的特征
fprintf('选择了 %d 个与 y 相关性较高的特征:\n', length(selected_features));
disp(selected_features);% 从原始特征矩阵中提取选择的特征
x_selected = x(:, selected_features);% 计算这些选择的特征之间的皮尔森相关系数矩阵
corr_matrix = corr(x_selected);% 绘制选择的特征之间的相关系数矩阵热图
figure;
heatmap(corr_matrix, 'Colormap', parula, 'ColorbarVisible', 'on');
title('选择特征之间的皮尔森相关系数矩阵');

在这里插入图片描述

4 变量投影重要性(Variable importance in projection,VIP)分析

% 使用 VIP 进行特征筛选
load data.mat
% 使用 plsregress 进行 PLS 回归
ncomp = 11;
[XL,yl,XS,YS,beta,PCTVAR,MSE,stats] = plsregress(x,y,ncomp);
W0 = stats.W ./ sqrt(sum(stats.W.^2,1));
p = size(XL,1);
sumSq = sum(XS.^2,1).*sum(yl.^2,1);
vipScore = sqrt(p* sum(sumSq.*(W0.^2),2) ./ sum(sumSq,2));
indVIP = find(vipScore >= 1);
scatter(1:length(vipScore),vipScore,'x')
hold on
scatter(indVIP,vipScore(indVIP),'rx')
plot([1 length(vipScore)],[1 1],'--k')
hold off
axis tight
xlabel('Predictor Variables')
ylabel('VIP Scores')

在这里插入图片描述

5 机器学习

% 使用 SVR 进行训练
mdl = fitrsvm(x_train, y_train);% 在测试集上进行预测
y_pred = predict(mdl, x_test);% 计算评估指标
R2 = 1 - sum((y_test - y_pred).^2) / sum((y_test - mean(y_test)).^2);
RMSE = sqrt(mean((y_test - y_pred).^2));
RRMSE = RMSE / mean(y_test);% 输出指标
fprintf('R²: %.4f\n', R2);
fprintf('RMSE: %.4f\n', RMSE);
fprintf('RRMSE: %.4f\n', RRMSE);% 绘制真实值和预测值的对比图
figure;
plot(y_test, '-o');
hold on;
plot(y_pred, '-x');
legend('真实值', '预测值');
xlabel('样本编号');
ylabel('值');
title('真实值与预测值对比');
hold off;
% 如果使用,请联系 596520206

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456217.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack 老项目升级记录:从 node-sass 限制的的 node v8 提升至支持 ^node v22

老项目简介 技术框架 vue 2.5.17webpack 4.16.5"webpack-cli": "3.1.0""node-sass": "^4.7.2" 几个阶段 第一步:vue2 升级到最新 第一步:升级 vue2 至最新版本,截止到目前(2024-10-…

戴维南,叠加,稳态笔记

一点点学习笔记,仅做个人复习使用 节点电压分清电流电压源,电流源才能写在右边,容易混淆 叠加定理仅适用于线性电路,且不能用于计算功率,主要是方向,要看源的方向判断等效之后的,受控源不参与除源&#x…

DMVPN协议

DMVPN(Dynamic Multipoint VPN)动态多点VPN 对于分公司和分总公司内网实现通信环境下,分公司是很多的。我们不可能每个分公司和总公司都挨个建立ipsec隧道 ,而且如果是分公司和分公司建立隧道,就会很麻烦。此时我们需…

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出

效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标,进入到点击左边“文件共享”,在右边随便选择一个App(随意...)写入U盘:拖动电脑的文件&am…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。,后端接受后,根据提供的整数,产生 100 以内的 随机数,返回给浏览器? 前端:提供 随机数范围 ,病发送请求后端:处理随机数的产生&…

信息安全工程师(66)入侵阻断技术与应用

#1024程序员节|征文# 前言 入侵阻断技术是网络安全主动防御的重要技术方法,其基本原理是通过对目标对象的网络攻击行为进行阻断,从而达到保护目标对象的目的。 一、入侵阻断技术的核心原理 入侵阻断技术的核心在于对网络攻击行为的实时检测和…

震撼叶珂“假胸”引发热议黄晓明无辜躺枪

【一场关于美的争议】在这个信息爆炸的时代,每一个细微的风吹草动都可能成为公众关注的焦点。近日,一则关于叶珂“假胸”的传闻在网络上掀起了轩然大波。有网友爆料称,叶珂的胸部整形过度,甚至“隆得比肚子还大,都垂到…

Node + HTML搭建自己的ChatGPT [基础版]

文章目录 明明外面的ChatGPT产品那么多了,为什么要在本地搭建自己的ChatGPT呢?整体架构流程1. 获取APIKey1.1 常见的AI模型1.2 为什么选DeepSeek1.3 怎么获取DeepSeek的APIKey1.3.1 注册并登录DeepSeek开放平台1.3.2 选择API keys1.3.3 创建API key1.3.4…

VSCode编译器改为中文

1. 通过快捷键设置中文 打开命令面板:按住键盘上的CtrlShiftP组合键,打开命令面板。 输入并设置语言:在命令面板中输入Configure Display Language。 点击Configure Display Language选项。 在弹出的语言选择列表中,选择zh-cn…

node.js下载安装以及环境配置超详细教程【Windows版本】

node安装以及环境变量配置 Step1:选择版本进行安装Step2:安装Node.jsStep3:环境配置Step4:检查node.js是否成功安装Step5:npm修改下载镜像 Step1:选择版本进行安装 Node.js 安装包及源码下载地址为 Node.…

基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

QT-使用QSS美化UI界面

一、QSS简介: Qt Style Sheet:Qt样式表,用来自定义控件外观的一种机制,可以把他类比成CSS(CSS主要功能与最终目的都是能使界面的表现与界面的元素分离)。QSS机制使应用程序也能像web界面那样随意地改变外观…

vue3移动端可同时上传照片和视频的组件

uni-app中的uni-file-picker可单独上传照片或视频,但不支持同时上传照片和视频。本篇博客使用image标签和video标签实现移动端(H5app小程序)中照片和视频的同时上传。 本篇博客采用的是照片和视频的单独上传,但可同时展示&#xf…

Qt 学习第 天:线程与多线程

1024程序员快乐,如果这博客让你学习到了知识,请给我一个免费的赞❤️ 一、创建界面文件 LCDnumber 二、创建mythread类,继承QObject 三、在MyThread.h文件做修改,并且加上函数声明 引入头文件,改变继承 #ifndef MY…

Nginx+Tomcat 动静分离

1. NginxTomcat 环境 Nginx 处理静态资源的优势同样可以应用在 Tomcat 环境中 。从实现方法上来说,NginxTomcat 环境的搭建思路与前面完成的 NginxApache 环境是完全相同的,只需要将 Nginx 与 Tomcat 的站点文档目录配置到同一目录下,利用 N…

C# 委托简述

1.委托 1.1什么是委托 委托委托 官网解释: 委托是安全封装方法的类型,类似于 C 和 C 中的函数指针。 与 C 函数指针不同的是,委托是面向对象的、类型安全的和可靠的。 委托的类型由委托的名称确定。 个人理解:委托就是一个方法的模板。它可以接收…

ASP.NET MVC-font awesome-localhost可用IIS不可用

环境: win10, .NET 6.0,IIS 问题描述 本地IIS正常显示,但放到远程服务器上,每个icon都显示?。同时浏览器的控制台报错: fontawesome-webfont.woff2:1 Failed to load resource: the server responded with a statu…

uni-app 开发微信小程序,实现图片预览和保存

1.使用 uni.previewImage() 预览图片 1.1 图片列表 1.2 预览 1.2.1 样式无法调整 1.2.2 微信小程序不支持预览本地文件路径图片(图片上传到小程序的临时文件存储或云服务存储) 1.3 无法绑定 longpress"saveImage(item)" 长按保存图片事件 …

NewStarCTF 2023 公开赛道 Web week1-week2

目录 week1 泄漏的秘密 Begin of Upload Begin of HTTP ErrorFlask ​Begin of PHP R!C!E! EasyLogin ​week2 游戏高手 include 0。0 ez_sql ​Unserialize? Upload again! R!!C!!E!! week1 泄漏的秘密 使用ctf-scan.py(https://gith…

写在RAGFlow开源2万星标之际

RAGFlow自2024年4月1日正式开源,时至今日,不到7个月时间已经站在了Github 2万星标的台阶之上。在6月底Github 1万星标的时候,我们曾经写了一篇文章,提出RAG 2.0的口号【参考文献1】,论述了RAG作为一种以搜索为中心的系…