数学建模:数据的预处理

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛

文章目录

  • 数据预处理
    • 数据变换
    • 数据清洗
      • 缺失值处理
      • 异常值处理

数据预处理

在这里插入图片描述

数据变换

常见的数据变换的方式:通过某些简单的函数进行数据变换。

x ′ = x 2 x ′ = x x ′ = log ⁡ ( x ) ∇ f ( x k ) = f ( x k + 1 ) − f ( x k ) \begin{aligned}&x^{\prime}=x^2 \\&\begin{aligned}x^{\prime}=\sqrt{x}\end{aligned} \\&x'=\log(x) \\\nabla f\left(x_{k})\right.&=f(x_{k+1})-f(x_k) \end{aligned} f(xk)x=x2x=x x=log(x)=f(xk+1)f(xk)

  • 数据指标的一致化处理:
    • 极小型
    • 极大型
    • 中间型
    • 区间型
  • 数据指标的无量纲化处理:
    • 零 - 均值规范化:也叫做标准差规范化,经过处理后的数据平均值为 0,标准差为1。 x ‾ \overline x x 为原数据的均值, σ \sigma σ 为标准差。

      x ∗ = x − x ‾ σ x^*=\frac{x-\overline{x}}\sigma x=σxx

    • 极值差法:又叫最小 - 最大规范化,离差标准化,将数据映射到 [ 0 , 1 ] [0,1] [0,1] 之间。

      x ∗ = x − m i n m a x − m i n x^*=\frac{x-min}{max-min} x=maxminxmin

    • 功效系数法:就是上一步极值差法然后加了一个偏移量 c c c ,使得最后结果落于 [ c , c + n ] [c,c+n] [c,c+n]

数据变换的应用方式:数据的标准化,目的是为了消除指标之间的量纲和大小不一的影响,需要进行数据标准化处理。

因此可以将数据按照比例进行缩放,使之落入一个据标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,从而进行综合分析。如将工资收入属性值映射到[-1,1]或者[0,1]之间。

function data1=mfunc_calculate(data,zhibiao_label)% 指标的正向化处理 1 2 极大型;3 4 5 极小型;6 单点最优;7 区间最优if isa(data,'double')for i=1:length(zhibiao_label)if (zhibiao_label(i)==1)data1(:,i)=zheng1(data(:,i));elseif (zhibiao_label(i)==2)data1(:,i)=zheng2(data(:,i));elseif (zhibiao_label(i)==3)data1(:,i)=fu3(data(:,i));elseif (zhibiao_label(i)==4)data1(:,i)=fu4(data(:,i));elseif (zhibiao_label(i)==5)data1(:,i)=fu5(data(:,i));elseif (zhibiao_label(i)==6)prompt = '这是单点最优,请输入单点最优值 ';a = input(prompt);data1(:,i)=qu6(data(:,i),a);elseif (zhibiao_label(i)==7)prompt = '这是区间最优,请输入单点最区间如[5,10] ';aa=input(prompt);data1(:,i)=qu7(data(:,i),aa(1),aa(2));endendelseif isa(data,'cell')%     data2=data;for j=1:length(data)data2=data{j};if size(zhibiao_label,1)==1zhibiao_label1=repmat(zhibiao_label,3,1);elsezhibiao_label1=zhibiao_label;endfor i=1:length(zhibiao_label1(j,:))if (zhibiao_label(i)==1)data1{j}(:,i)=zheng1(data2(:,i));elseif (zhibiao_label(i)==2)data1{j}(:,i)=zheng2(data2(:,i));elseif (zhibiao_label(i)==3)data1{j}(:,i)=fu3(data2(:,i));elseif (zhibiao_label(i)==4)data1{j}(:,i)=fu4(data2(:,i));elseif (zhibiao_label(i)==5)data1{j}(:,i)=fu5(data2(:,i));elseif (zhibiao_label(i)==6)prompt = '这是单点最优,请输入单点最优值 ';a = input(prompt);data1{j}(:,i)=qu6(data2(:,i),a);elseif (zhibiao_label(i)==7)prompt = '这是区间最优,请输入单点最区间如[5,10] ';aa=input(prompt);data1{j}(:,i)=qu7(data2(:,i),aa(1),aa(2));endendendendendfunction data=zheng1(data1)%正向指标1% 填1的时候选择data=(data1-min(data1))./(max(data1)-min(data1));endfunction data=zheng2(data1)%正向指标2% 填2的时候选择data=data1;endfunction data=fu3(data1)%负向指标1% 填3的时候选择data=(max(data1)-data1)./(max(data1)-min(data1));endfunction data=fu4(data1)%负向指标2% 填4的时候选择data=(max(data1)-data1);endfunction data=fu5(data1)%负向指标3% 填5的时候选择data=1./(max(abs(data1))+data1);endfunction data=qu6(data1,a)%某点最优% 填6的时候选择data=1./(abs(data1-a)/max(abs(data1-a)));endfunction data=qu7(data1,a,b)%区间指标1% 填7的时候选择for i=1:length(data1)if(data1(i)>a)&&(data1(i)<b)data(i)=1;elseif (data1(i)<a)data(i)=data1(i)/a;elseif (data1(i)>b)data(i)=b/data1(i);endend
end

数据清洗

缺失值处理

对于缺失值的三种处理方法:不处理,删除数据,数据插补

数据插补的方法:

  • 均值/中位数/众数插补
  • 使用固定值插补
  • 最近邻插补:即在记录中找到与缺失样本最接近的样本的该属性插补,可以通过计算对象间的欧式距离衡量。
  • 回归方法插补:根据已有数据和与其有关的其他变量的数据建立拟合模型来预测缺失值
  • 插值法插补(推荐):常用的插值法有很多,主要有拉格朗日插值法、牛顿插值法

对于缺失值处理,我们需要分情况讨论。

如果某个变量或某个样本缺失了 70%以上的数据,那么此时对数据进行填补的话,会引入更多的噪声,反而会降低模型的性能,故此时一般直接将该变量或样本删除;

如果缺失的不多,我们可以考虑对缺失值进行填补


matlab API:

  • ismissing 或者 isnan :返回一个与输入矩阵同形状的01矩阵,1表示此位置是缺失值
  • rmmissing:直接删除缺失值所在的行列,第二个参数 1 表示行,2表示列。
  • fillmissing:填补缺失值。
    • 常数填充:constant

      • 插值法,常见的插值方法如下:

    • 移动窗口填充法:该方法的思想是在缺失值前后开一个“窗口”,用“窗口”内 的数据的均值中位数进行填充。

代码实现:

clc;clear;
% 数据的预处理
load("带缺少数据.mat");data = data_nan;
%% 缺失值处理
% 判断矩阵中是否存在nan值,返回一个同形状的0-1矩阵,1表示此位置是nan
nan_mat = isnan(data);
%% 直接删除空值所在的行:1
data1 = rmmissing(data); %默认为1行
%% 直接删除空值所在的列:2
data2 = rmmissing(data,2);%% 填充缺失值,插值 
%  1. 常量填充缺失值
data3 = fillmissing(data,"constant",999);
%% 2. 上一个或者下一个非空值 
data4 = fillmissing(data,'previous'); % next 表示以下一个非空值填充
%% 3. 最邻近的非空值
data5 = fillmissing(data,'nearest');
%% 4. 三次样条插值 
data6 = fillmissing(data,'spline'); % phcip 保持三次样条插值
%% 5. 窗口填补法 
data7 = fillmissing(data,'movmean',8,1); % movean 窗口长度为 window 的移动均值;  movmedian:移动中位数

异常值处理

  • 正态分布3σ原则:总体符合正态分布,例如人口数据、测量误差、生产加工质量、考试成绩等。
    • 计算均值 μ 和标准差 σ 。
    • 判断每个数据值是否在(μ-3σ,μ+3σ) 内,不在则为异常值.
    • 异常值可以转换为 nan 值,然后再进行上一步的缺失值处理
  • 画箱线图:下四分位数Q1是排第25%的数值,上四分位数Q3是排第75%的数值。四分位距IQR= Q3-Q1,也就是排名第75%的减去第25%的数值正态分布类似,设置个合理区间,在区间外的就是异常值。一般设[Q1−1.5IQR, Q3+1.5IQR]内为正常值。

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

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

相关文章

Redis 持久化和发布订阅

一、持久化 Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能&#xff01; 1.1、RDB&#xff08;Redis DataBase&#xff09; 1.1.1 …

第一方支付、第二方支付、第三方支付、第三方支付是什么?

我相信关于支付行业大家多多少少都有一些自己的理解&#xff0c;但是具体的一些名词如标题中的这些&#xff0c;第一方、第二方、第三方支付&#xff0c;到底指的是什么&#xff1f; 第一方支付 也就是现金支付&#xff0c;其本质的意义就是指货币支付&#xff0c;从最早出现货…

猜拳游戏小程序源码 大转盘积分游戏小程序源码 积分游戏小程序源码

简介&#xff1a; 猜拳游戏大转盘积分游戏小程序前端模板源码&#xff0c;一共五个静态页面&#xff0c;首页、任务列表、大转盘和猜拳等五个页面 图片&#xff1a;

Spring与Mybatis集成且Aop整合

目录 一、集成 1.1 集成的概述 1.2 集成的优点 1.3 代码示例 二、整合 2.1 整合概述 2.2 整合进行分页 一、集成 1.1 集成的概述 集成是指将不同的组件、部分或系统组合在一起&#xff0c;以形成一个整体功能完整的解决方案。它是通过连接、交互和协调组件之间的关系来实…

MybatisPlus-插件篇

文章目录 一、前言二、插件1、分页插件2.1.1、引入依赖2.1.1、配置分页插件2.1.3、使用分页方法 2、乐观锁插件2.1、引入依赖2.2、添加版本字段2.3、配置乐观锁插件2.4、执行更新操作 三、总结 一、前言 本文将详细介绍mybatisplus中常用插件的使用。 二、插件 1、分页插件 …

Texlive2023与Texstudio2023卸载与安装(详细全程)

早在两年前安装了texlive2020&#xff0c;最近重新使用总是报错&#xff0c;好像是因为版本过低。我就找了个时间更新一下texlive版本&#xff0c;全程如下。 1、卸载texlive老版本 1&#xff09;找到texlive目录&#xff0c;比如我的是D:\texlive\2022\tlpkg\installer&…

链路聚合原理

文章目录 一、定义二、功能三、负载分担四、分类五、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 在网络中&#xff0c;端口聚合是一种将连接到同一台交换机的多个物理端口捆绑在一起&#xff0c;形成一个逻辑端口的技术。通过端口聚合&…

Llama模型结构解析(源码阅读)

目录 1. LlamaModel整体结构流程图2. LlamaRMSNorm3. LlamaMLP4. LlamaRotaryEmbedding 参考资料&#xff1a; https://zhuanlan.zhihu.com/p/636784644 https://spaces.ac.cn/archives/8265 ——《Transformer升级之路&#xff1a;2、博采众长的旋转式位置编码》 前言&#x…

Uniapp笔记(五)uniapp语法4

本章目标 授权登录【难点、重点】 条件编译【理解】 小程序分包【理解】 一、授权登录 我的模块其实是两个组件&#xff0c;一个是登录组件&#xff0c;一个是用户信息组件&#xff0c;根据用户的登录状态判断是否要显示那个组件 1、登录的基本布局 <template><…

【java】【已解决】IDEA启动报错:Lombok Requires Annotation Processing

解决办法&#xff1a; 1、根据异常提示操作&#xff1a; 直接点击错误提示后面的蓝色标识【Enable】&#xff08;小编点完了所以变灰色&#xff09;&#xff0c;此操作等价于下面的步骤&#xff1a; 【File】-->【Settings】-->【Build】-->【Compiler】-->【Ann…

【数学建模】-- 模糊综合评价

模糊综合评价&#xff08;Fuzzy Comprehensive Evaluation&#xff09;是一种用于处理不确定性和模糊性信息的决策分析方法。它通常用于解决复杂的多指标决策问题&#xff0c;其中各指标之间可能存在交叉影响和模糊性的情况。模糊综合评价通过将不确定性和模糊性量化&#xff0…

MongoDB实验——MongoDB配置用户的访问控制

MongoDB 配置用户的访问控制 一、 实验原理 理解admin数据库&#xff1a;安装MongoDB时&#xff0c;会自动创建admin数据库&#xff0c;这是一个特殊数据库&#xff0c;提供了普通数据库没有的功能&#xff0c;例如&#xff0c;有些账户角色赋予用户操作多个数据库的权限&…

地下管线三维自动建模软件MagicPipe3D V3.0发布

2023年9月1日经纬管网建模系统MagicPipe3D V3.0正式发布&#xff0c;该版本经过众多用户应用和反馈&#xff0c;在三维地下管网建模效果、效率、适配性方面均有显著提升&#xff01;MagicPipe3D本地离线参数化构建地下管网模型&#xff08;包括管道、接头、附属设施等&#xff…

0基础学习VR全景平台篇 第94篇:智慧景区浏览界面介绍

一、景区详细信息介绍 点击左上角的图标就可以看到景区详细信息例如景区简介&#xff0c;地址&#xff0c;开放信息&#xff0c;联系电话等 二、问题反馈中心 点击左下角的【问题反馈】按钮向作者进行问题反馈 三、开场地图 1、直接点击开场地图页面上的图标浏览该场景 2、通…

idea新建Java-maven项目时,出现Dependency ‘ xxx(jar包名)‘ not found的解决方案

项目场景&#xff1a; 项目场景&#xff1a;使用idea创建maven项目时&#xff0c;导入简单依赖时&#xff08;本文以mysql-connector-java为例&#xff09;。 问题描述 问题&#xff1a; 首先&#xff0c;在创建新的maven项目中&#xff0c;出现下列两种情况&#xff1a; &am…

hp惠普光影精灵5笔记本HP Pavilion Gaming-15-dk0135tx原装出厂Win10系统

原厂系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 适用型号&#xff1a; 15-dk0011tx,15-dk0018tx,15-dk0019tx,15-dk0020tx,15-dk0021tx,15-dk0038tx 15-dk0039tx,15-dk0040tx,15-dk0041tx,15-dk0125tx,15-dk0126tx,15-dk0127tx 15-dk012…

1.2 BEV感知算法数据形式

本文来自自动驾驶之心知识星球的国内首个BEV感知全栈系列学习教程 Birds-eye-view (BEV) Perception: A Survey and Collection 什么是图像 1. 图像是由相机生成的&#xff0c;是将三维世界 中的坐标点&#xff08;单位为米&#xff09;映射到二维 图像平面&#xff08;单位像…

图像翻拍检测——反射分量分离的特征融合

随着计算机技术的迅速发展&#xff0c;需要建立人与信息一一对应的安保认证技术&#xff0c;通过建立完整的映射网络体系&#xff0c;从而确保每个人的人身、财产、隐私等的安全.与指纹、基因等人体生物特征识别系统相比&#xff0c;人脸识别系统更加友好&#xff0c;不需要人的…

2023有哪些更好用的网页制作工具

过去&#xff0c;专业人员使用HTMLL、CSS、Javascript等代码手动编写和构建网站。现在有越来越多的智能网页制作工具来帮助任何人实现零代码基础&#xff0c;随意建立和设计网站。在本文中&#xff0c;我们将向您介绍2023年流行的网页制作工具。我相信一旦选择了正确的网页制作…

【Terraform学习】使用 Terraform创建 S3 存储桶事件(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…