数学建模:数据的预处理
🔆 文章首发于我的个人博客:欢迎大佬们来逛逛
文章目录
- 数据预处理
- 数据变换
- 数据清洗
- 缺失值处理
- 异常值处理
数据预处理
数据变换
常见的数据变换的方式:通过某些简单的函数进行数据变换。
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′=xx′=log(x)=f(xk+1)−f(xk)
- 数据指标的一致化处理:
- 极小型
- 极大型
- 中间型
- 区间型
- 数据指标的无量纲化处理:
-
零 - 均值规范化:也叫做标准差规范化,经过处理后的数据平均值为 0,标准差为1。 x ‾ \overline x x 为原数据的均值, σ \sigma σ 为标准差。
x ∗ = x − x ‾ σ x^*=\frac{x-\overline{x}}\sigma x∗=σx−x
-
极值差法:又叫最小 - 最大规范化,离差标准化,将数据映射到 [ 0 , 1 ] [0,1] [0,1] 之间。
x ∗ = x − m i n m a x − m i n x^*=\frac{x-min}{max-min} x∗=max−minx−min
-
功效系数法:就是上一步极值差法然后加了一个偏移量: 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]内为正常值。
相关文章:

数学建模:数据的预处理
🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 数据预处理数据变换数据清洗缺失值处理异常值处理 数据预处理 数据变换 常见的数据变换的方式:通过某些简单的函数进行数据变换。 x ′ x 2 x ′ x x ′ log ( x ) ∇ f ( x k )…...

Linux土遁术之监测监测进程打开文件
分析问题过程中,追踪进程打开的文件可以在许多不同情况下有用,体现在以下几个方面: 故障排除和调试: 当程序出现问题、崩溃或异常行为时,追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误&…...

css让多个盒子强制自动等宽
1.width: calc( 100 / n% ) 2.display:flex; flex:1;width:100px; 3.display:grid;grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 但是其中某一个内容较长的时候 会破坏1:1:1的平衡 这个时候发现附件名字过长导致不等比例,通过查看阮一峰flex文…...

【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)
zhi.oscs1024.com 漏洞类型反序列化发现时间2023-08-29漏洞等级高危MPS编号MPS-qkdx-17bcCVE编号CVE-2023-40195漏洞影响广度广 漏洞危害 OSCS 描述Apache Airflow Spark Provider是Apache Airflow项目的一个插件,用于在Airflow中管理和调度Apache Spar…...

树模型与集成学习:LightGBM
目录 树模型与集成学习 LightGBM 的贡献 LightGBM 的贡献:单边梯度抽样算法 LightGBM 的贡献:直方图算法 LightGBM 的贡献:互斥特征捆绑算法 LightGBM 的贡献:深度限制的 Leaf-wise 算法 树模型与集成学习 树模型是非常好的…...

PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例
拼多多商品详情原数据API接口的作用是获取拼多多电商平台上某一商品的详细信息,包括商品的标题、价格、库存、图片、描述、包邮信息、销量、评价、优惠券等数据。通过该API接口可以获取到商品的原始数据,用于分析、筛选和展示商品信息。 pinduoduo.item…...

数据结构(Java实现)-二叉树(下)
获取二叉树的高度 检测值为value的元素是否存在(前序遍历) 层序遍历 判断一棵树是不是完全二叉树 获取节点的路径 二叉树的最近公共祖先...

如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?
作者:深耕行业的 SmartX 金融团队 张瑞松 运维人员在日常管理集群时,有时难免会产生这样的困惑: 新业务准备上线,在具备多套存储的情况下,应如何选择承载业务的存储环境? 业务虚拟机刚上线时运行速度很快…...

固定资产管理措施怎么写
固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施: 建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准,确保资产管理的规范性和透明度。 采用先进的资产管理…...
C语言中typedef和const的区别
昨天面试的时候面试官问了这个问题,平时也有见过这两个类型限定词,可能是因为不怎么使用的原因,当问到它们的区别时,我不知道从哪个方面开始回答。 用 typedef 定义新的类型名 类型定义的书写格式为 typedef 类型 被定义的类型名 …...
大数据系列教程之 Kafka基础
kafka概述 一、kafka概述 1.1 定义1.2 消息队列 1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种形式1.3 Kafka 基础架构二、kafka安装部署 2.1安装部署 2.1.1.jar包下载2.1.2.解压到指定的文件夹下2.1.3.创建两个文件夹以供后续使用2.1.4. 修改配置文件 (1&…...

【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化
Go语言是一种快速、简洁且高效的编程语言,它在处理日期与时间方面提供了丰富的标准库函数。本文将详细介绍Go语言中处理日期与时间的函数,涵盖常用的日期时间操作、格式化、时区转换等内容,并介绍time.Time结构体中的相关方法。 时间的表示与…...
抽象工厂模式:创建相关对象族
欢迎阅读设计模式系列的第四篇文章!在前面的文章中,我们已经学习了设计模式的基本概念以及工厂方法模式的应用。 今天,我们将继续深入,介绍第三个模式——抽象工厂模式。 抽象工厂模式简介 抽象工厂模式是一种创建型设计模式&a…...
uniapp:安卓permission权限表及setting表
安卓permission权限表 权限名称说明android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词android.permission.WRITE_SYNC_SETTINGS写入 Google 在线同步设置android.permission.WRITE_SOCIAL_STREAM读取用户的社交信息流android.permission.WRITE_SMS允…...

汽车服务门店小程序模板制作指南
在数字化时代,一个小程序的力量不可忽视。它不仅是展示品牌形象和提供用户服务的重要工具,更是扩大客户群体和提高营收的关键手段。对于汽车服务门店来说,拥有一个精美且功能齐全的小程序,更将成为你在竞争激烈的市场中的重要武器…...

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!
时隔两个月, Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进,其中大家期待已久的 CDC Schema evolution(DDL 变更同步)、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta …...

工厂方法模式的概述和使用
目录 一、工厂方法模式概述1. 定义2. 使用动机 二、工厂方法模式结构1. 模式结构2. 时序图 三、工厂方法模式的使用实例四、工厂方法模式的优缺点五、工厂方法模式在Java中应用 原文链接 一、工厂方法模式概述 1. 定义 工厂方法模式(Factory Method Pattern)又称为工厂模式&…...

HP惠普星15青春版/惠普小欧笔记本电脑15s-du1008tx原装出厂Win11系统
适用型号:15s-du1007tx、15s-du1008tx、15s-du1009tx、15s-du1010tx、15s-du1011tx、15s-du1012tx、15s-du1013tx 自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 所需要工具:32G或以上的U盘 文件格式:ISO 文件大…...

聊聊检索增强,LangChain一把梭能行吗?
背景 ChatGPT诞生之初,大家仿佛从中看到了未来:可以拿着大语言模型(LLM)这把锤子,锤遍业务上的钉子。其中最被看好的场景,莫过于搜索,不仅是微软、谷歌、百度这样的大公司将LLM用到自己的搜索业…...
【力扣】343. 整数拆分 <动态规划、数学>
【力扣】343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。返回可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出:…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...