如何使用MATLAB神经网络工具箱进行数据预处理

news/2026/1/19 20:28:38/文章来源:https://www.cnblogs.com/chengdr/p/19503628

一、数据预处理的核心目的

神经网络对数据的分布、量纲、完整性非常敏感,预处理主要解决以下问题:

  1. 消除量纲差异(如特征A取值范围0-10,特征B取值范围0-10000);
  2. 处理缺失值、异常值,保证数据完整性;
  3. 移除无效特征(如全为常量的列),降低计算复杂度;
  4. 标准化数据分布,加速模型收敛。

MATLAB神经网络工具箱(Neural Network Toolbox)内置了一系列专用预处理函数,无需手动编写复杂逻辑,可直接调用。

二、常用预处理方法与实战代码

以下结合经典的“房价预测数据集”为例,演示核心预处理步骤,所有代码均可直接复制运行。

1. 数据加载与初步查看

首先加载数据并查看基本信息,明确数据维度、是否有缺失值/异常值:

% 加载MATLAB内置的波士顿房价数据集
[inputs, targets] = house_dataset;% 查看数据基本信息
fprintf('输入特征维度:%d行(特征数)×%d列(样本数)\n', size(inputs,1), size(inputs,2));
fprintf('输出标签维度:%d行×%d列\n', size(targets,1), size(targets,2));% 检查缺失值(NaN)
inputNaN = sum(isnan(inputs(:)));
targetNaN = sum(isnan(targets(:)));
fprintf('输入特征缺失值数量:%d\n', inputNaN);
fprintf('输出标签缺失值数量:%d\n', targetNaN);

2. 核心预处理操作

(1)移除无效特征/样本

  • removeconstantrows:移除全为常量的行(特征),这类特征无信息价值;
  • removenanrows:移除包含缺失值的行(样本);
  • removeoutliers:移除异常值样本(基于标准差/中位数法)。
% 1. 移除输入特征中全为常量的行
inputs = removeconstantrows(inputs);% 2. 处理缺失值(若有):移除含NaN的样本
inputs = removenanrows(inputs'); % 转置为样本×特征格式
inputs = inputs'; % 转回特征×样本格式(MATLAB神经网络默认行向量为特征)
targets = removenanrows(targets');
targets = targets';% 3. 移除异常值(基于3倍标准差法)
[inputs, outliersIdx] = removeoutliers(inputs', 'Method', 'zscore', 'Threshold', 3);
inputs = inputs';
% 同步移除标签中的异常值样本
targets(:, outliersIdx) = [];fprintf('预处理后输入特征维度:%d×%d\n', size(inputs,1), size(inputs,2));

(2)数据归一化/标准化(核心步骤)

这是神经网络预处理最关键的一步,MATLAB提供两种常用方法:

  • mapminmax:将数据归一化到指定区间(默认[-1,1],可自定义[0,1]),适合大部分场景;
  • mapstd:将数据标准化为均值0、标准差1,适合数据分布接近正态的场景。
% 方法1:归一化到[0,1]区间(推荐用于回归/分类任务)
% 设置归一化参数
minVal = 0;
maxVal = 1;
% 对输入特征归一化
[inputsNorm, inputSettings] = mapminmax(inputs, minVal, maxVal);
% 对输出标签归一化(需单独保存设置,用于后续反归一化)
[targetsNorm, targetSettings] = mapminmax(targets, minVal, maxVal);% 方法2:标准化(均值0,标准差1)
% [inputsStd, inputStdSettings] = mapstd(inputs);% 查看归一化后的数据范围
fprintf('输入特征归一化后最小值:%.4f,最大值:%.4f\n', min(inputsNorm(:)), max(inputsNorm(:)));

(3)数据集划分

将预处理后的数据划分为训练集、验证集、测试集,避免过拟合:

% 按70%训练、15%验证、15%测试的比例划分
trainRatio = 0.7;
valRatio = 0.15;
testRatio = 0.15;[inputTrain, inputVal, inputTest, targetTrain, targetVal, targetTest] = dividerand(...inputsNorm, targetsNorm, trainRatio, valRatio, testRatio);fprintf('训练集样本数:%d\n', size(inputTrain,2));
fprintf('验证集样本数:%d\n', size(inputVal,2));
fprintf('测试集样本数:%d\n', size(inputTest,2));

(4)自动绑定预处理流程到网络(懒人方法)

MATLAB可将预处理逻辑直接绑定到神经网络对象,训练时自动执行,无需手动分步处理:

% 创建BP神经网络
net = feedforwardnet(8);% 为网络输入层绑定预处理流程:移除常量行 → 归一化
net.inputs{1}.processFcns = {'removeconstantrows', 'mapminmax'};
% 为网络输出层绑定预处理流程
net.outputs{2}.processFcns = {'removeconstantrows', 'mapminmax'};% 训练时网络会自动对输入数据执行上述预处理
[net, tr] = train(net, inputTrain, targetTrain);

3. 预处理后的数据还原(反归一化/反标准化)

模型预测的结果是归一化后的值,需还原为原始尺度才能解读,核心用mapminmax('reverse')

% 用测试集预测
yTestNorm = net(inputTest);% 反归一化:还原为原始房价尺度
yTest = mapminmax('reverse', yTestNorm, targetSettings);
targetTest = mapminmax('reverse', targetTest, targetSettings);% 输出真实值与预测值对比
fprintf('前5个样本真实房价:');
disp(targetTest(:,1:5));
fprintf('前5个样本预测房价:');
disp(yTest(:,1:5));

三、关键注意事项

  1. 归一化参数复用:必须用训练集的mapminmax设置(inputSettings/targetSettings)处理验证集/测试集,避免数据泄露;
  2. 维度匹配:MATLAB神经网络默认输入为“特征×样本”的行向量格式,预处理时需注意维度转换;
  3. 异常值处理:移除异常值时需同步处理输入和输出标签,保证样本一一对应;
  4. 方法选择:回归任务优先用mapminmax,分类任务可根据数据分布选择mapminmaxmapstd

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

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

相关文章

[Windows] 硬件监测工具组合套装 Z-Info v1.0.45.56

[Windows] 硬件监测工具组合套装 Z-Info v1.0.45.56 链接:https://pan.xunlei.com/s/VOjL8CIO-WkVkMcDGub6Q-moA1?pwd2887# Z-Info 硬件检测 4 件套是一款集成了 CPU-Z、GPU-Z、PCI-Z 和 SSD-Z 四个热门硬件检测工具的组合套装,旨在为用户提供全面、便…

【性能测试】11_JMeter _JMeter逻辑控制器

文章目录一、逻辑控制器1.1 常用的逻辑控制器二、If控制器2.1 案例2.2 操作步骤三、循环控制器3.1 案例3.2 操作步骤3.3 思考3.4 仅一次控制器四、事务控制器五、ForEach控制器5.1 场景5.2 操作步骤5.3 进阶案例(与正则配合使用)六、总结一、逻辑控制器 …

提示工程架构师如何用“社群”做技术调研?2个方法帮你快速获取需求

提示工程架构师的社群调研指南:2个核心方法快速挖掘真实需求 副标题:用社群破解“需求模糊”难题,让提示工程更贴近业务场景 摘要/引言 作为提示工程架构师,你是否遇到过这样的困境? 产品经理说“要让AI更懂用户”,但说不清“懂”的具体标准; 开发的提示模板上线后,…

SSM学生信息管理系统ow05a(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表系统项目功能:学生,班级信息,教师,课程分类,课程信息,学生选课,课程成绩,通知公告,课程签到,学生请假,专业信息SSM学生信息管理系统开题报告一、课题研究背景与意义(一)研究背景在高校教育管理工作中,学生信息管理…

学长亲荐10个一键生成论文工具,专科生毕业论文轻松搞定!

学长亲荐10个一键生成论文工具,专科生毕业论文轻松搞定! AI 工具正在重塑论文写作的未来 随着人工智能技术的不断进步,越来越多的专科生开始借助 AI 工具来辅助自己的毕业论文写作。这些工具不仅能够显著降低 AIGC(人工智能生成内…

CSGHub vs HuggingFace:企业 AI 选型关键抉择,数据主权与开源创新如何两全?

在全球开源 AI 浪潮下,企业面临一个核心抉择:是拥抱 HuggingFace 的开放生态,还是坚守数据安全与自主可控的底线?作为 OpenCSG 自研的企业级 AI 资产管理平台,CSGHub 精准切入这一矛盾点,以 “兼容开源标准…

计算机毕业设计springboot疫情期间高校员工管理系统 基于Springboot框架的高校教职工疫情管理信息化系统 疫情防控期间高校人员管理系统的Springboot实现

计算机毕业设计springboot疫情期间高校员工管理系统vp5d4 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的飞速发展,高校的管理方式也在不断革新。尤…

【心率检测】基于加速度计的呼吸速率和心率检测Matlab仿真和报告

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍基于三维加速度信号(SCG …

把采集系统装进容器之后,我们到底引入了什么风险

在很多团队的认知里,容器化意味着更高的稳定性与可控性。 统一的运行环境、标准化部署、快速扩缩容,看起来都指向一个结论:采集系统会更可靠。 但在真实业务中,我们反复遇到相反的情况: 容器化完成后,请求成…

SSM学生选课系统xvbna(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

系统程序文件列表 系统项目功能:学生,教师,课程信息,选课申请,选课记录,公告信息,取消课程 SSM学生选课系统开题报告 一、课题研究背景与意义 (一)研究背景 在高校教学管理工作中,学生选课是连接教学资源与学生需求的关键环节。…

【结构优化】基于平衡进化人工蜂群BE-ABC算法求解蛋白质结构优化附matlab代码

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍蛋白质结构预测是计算分子生物学领域…

Java实现多Cron定时任务调度

public class MultiCronMain {public static void main(String[] args) throws SchedulerException {// 2. 调度多个 cron 表达式Scheduler scheduler StdSchedulerFactory.getDefaultScheduler();scheduler.start();// 创建 JobDetail(只创建一次)JobD…

1.19。

今日收获:1.单词1002.算法1题——回溯今天学的少打算明天过完jvm调优和双亲委派

工业级边缘计算网关的热设计与可靠性保障:以ARM架构为例

摘要: 在工业物联网(IIoT)场景中,储能柜等封闭空间对网关的耐温性提出了严苛要求。本文将剥离商业营销,从纯技术维度探讨基于ARM架构的工业级边缘计算网关的热设计挑战。重点分析无风扇散热结构、宽温级晶振/电容的选型…

Notation 英文单词学习

1️、基本信息单词:notation词性:名词发音: 🇺🇸 /noʊˈteɪ.ʃən/🇬🇧 /nəʊˈteɪ.ʃən/词源: 来自拉丁语 notatio(标记、符号) → notation 符号 / 标…

CPU 中的算术逻辑单元(ALU)的 状态标志

CPU 中的算术逻辑单元(ALU)的 状态标志 理解ALU状态标志不仅是理解CPU如何工作的核心,也是掌握汇编语言编程和计算机底层逻辑的关键。 本文将从概念、每个标志的解析、到实际应用和架构差异,层层递进。核心概念回顾 状态标志是CPU…

POF|西工大廖晖、刘溢浪等:数据驱动的湍流建模:基于符号回归与数据同化的双向耦合框架

Data-Driven Turbulence Modeling: A Mutually Coupled Framework for Symbolic Regression and Data Assimilation 数据驱动的湍流建模:基于符号回归与数据同化的双向耦合框架 廖晖,孙旭翔, 刘溢浪*, 张伟伟 西北工业大学 航空学院, 西安…

流量困局下的破局之道:“推三返一”模式开启私域增长新引擎

在当下流量成本不断攀升、用户增长愈发艰难的商业大环境中,企业面临着巨大的经营压力,如何在低成本的前提下实现高转化,成为了众多企业亟待解决的关键问题。“推三返一”模式凭借其独特的“消费即投资、分享即收益”裂变逻辑,正逐…

外文文献检索网站使用指南与资源获取方法

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

C++(C++17/20)最佳工厂写法和SLAM应用综合示例

现代 C&#xff08;C17/20&#xff09;下的最佳工厂写法一、现代 C 工厂设计的基本原则 在 C17/20 下&#xff0c;好的工厂写法通常满足&#xff1a;RAII 明确所有权 返回 std::unique_ptr<T> 为默认无 switch / 无 RTTI支持扩展而不修改&#xff08;OCP&#xff09;构造…