【重新定义matlab强大系列五】函数filloutliers检测并替换数据中的离群值

news2024/11/17 17:29:16

🔗 运行环境:matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 03 日,左手の明天的第 281 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


目录

函数语法

B = filloutliers(A,fillmethod ) 

B = filloutliers(A,fillmethod ,fillmethod ) 

B = filloutliers(A,fillmethod ,"percentiles",threshold ) 

B = filloutliers(A,fillmethod ,movmethod,window) 

B = filloutliers(___,dim) 

B = filloutliers(___,Name,Value) 

示例

在向量中对离群值进行插值

使用均值检测和最邻近值填充方法

使用移窗检测法

填充矩阵行中的离群值

指定离群值位置

返回离群值阈值


函数语法

B = filloutliers(A,fillmethod ) 

查找 A 中的离群值并根据 fillmethod 替换它们。例如,filloutliers(A,"previous") 将离群值替换为上一个非离群值元素。

  • 如果 A 是矩阵,则 filloutliers 分别对 A 的每列进行运算。

  • 如果 A 是多维数组,则 filloutliers 沿 A 的大小不等于 1 的第一个维度进行运算。

  • 如果 A 是表或时间表,则 filloutliers 分别对 A 的每个变量进行运算。

默认情况下,离群值是指与中位数相差超过三倍经过换算的 中位数绝对偏差(MAD)的值。

B = filloutliers(A,fillmethod ,fillmethod ) 

指定检测离群值的方法。例如,filloutliers(A,"previous","mean") 将 A 中与均值相差超过三倍标准差的元素定义为离群值。

B = filloutliers(A,fillmethod ,"percentiles",threshold ) 

将离群值定义为 threshold 所指定的百分位数以外的点。threshold 参数是包含上下百分位数阈值的二元素行向量,例如 [10 90]

B = filloutliers(A,fillmethod ,movmethod,window) 

使用窗长度为 window 的移动窗均值或中位数来检测局部离群值。例如,filloutliers(A,"previous","movmean",5) 将包含五个元素的窗口中与局部均值相差超过三倍局部标准差的元素标识为离群值。

B = filloutliers(___,dim) 

指定 A 的运算维度。例如,filloutliers(A,"linear",2) 沿矩阵 A 的每一行运算。

B = filloutliers(___,Name,Value) 

使用一个或多个名称-值参数指定用来检测和替换离群值的其他参数。例如,filloutliers(A,"previous","SamplePoints",t) 相对于时间向量 t 中的对应元素检测 A 中的离群值。

示例

在向量中对离群值进行插值

使用 "linear" 方法填充数据向量中的离群值,并可视化填充的数据。

创建一个包含两个离群值的数据向量。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];

使用线性插值替换离群值。

B = filloutliers(A,"linear");

绘制原始数据和填充了离群值的数据。

plot(A)
hold on
plot(B,"o-")
legend("Original Data","Filled Data")

使用均值检测和最邻近值填充方法

识别数据表中的潜在离群值,使用 "nearest" 填充方法填充任何离群值,并可视化清洗后的数据。

创建一个数据时间表,并可视化数据以检测潜在的离群值。

T = hours(1:15);
V = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
A = timetable(T',V');
plot(A.Time,A.Var1)

填充数据中的离群值,其中离群值定义为偏离均值超过三倍标准差的值。将离群值替换为最接近的非离群值元素。

B = filloutliers(A,"nearest","mean")
B=15×1 timetable
    Time     Var1
    _____    ____

    1 hr      57 
    2 hr      59 
    3 hr      60 
    4 hr     100 
    5 hr      59 
    6 hr      58 
    7 hr      57 
    8 hr      58 
    9 hr      61 
    10 hr     61 
    11 hr     62 
    12 hr     60 
    13 hr     62 
    14 hr     58 
    15 hr     57 

在同一个图中,绘制原始数据和填充了离群值的数据。

hold on
plot(B.Time,B.Var1,"o-")
legend("Original Data","Filled Data")

使用移窗检测法

使用移动中位数,检测并填充与时间向量对应的正弦波内的局部离群值。

创建包含一个局部离群值的数据向量。

x = -2*pi:0.1:2*pi;
A = sin(x);
A(47) = 0;

创建与 A 中的数据对应的时间向量。

t = datetime(2017,1,1,0,0,0) + hours(0:length(x)-1);

将离群值定义为滑动窗内与局部中位数相差超过三倍局部换算 MAD 的点。在 A 中查找与 t 中的点对应的离群值的位置,窗口大小为 5 小时。使用 "clip" 方法,用计算的阈值填充离群值。

[B,TF,L,U,C] = filloutliers(A,"clip","movmedian",hours(5),"SamplePoints",t);

绘制原始数据和填充了离群值的数据。

plot(t,A)
hold on
plot(t,B,"o-")
legend("Original Data","Filled Data")

填充矩阵行中的离群值

创建一个数据矩阵,其对角线上包含离群值。

A = randn(5,5) + diag(1000*ones(1,5))
A = 5×5
103 ×

    1.0005   -0.0013   -0.0013   -0.0002    0.0007
    0.0018    0.9996    0.0030   -0.0001   -0.0012
   -0.0023    0.0003    1.0007    0.0015    0.0007
    0.0009    0.0036   -0.0001    1.0014    0.0016
    0.0003    0.0028    0.0007    0.0014    1.0005

基于每一行中的数据用零填充替换离群值,然后显示新值。

[B,TF] = filloutliers(A,0,2);
B
B = 5×5

         0   -1.3077   -1.3499   -0.2050    0.6715
    1.8339         0    3.0349   -0.1241   -1.2075
   -2.2588    0.3426         0    1.4897    0.7172
    0.8622    3.5784   -0.0631         0    1.6302
    0.3188    2.7694    0.7147    1.4172         0

可以使用 TF 作为索引向量,访问检测到的离群值及其填充的值。

[A(TF) B(TF)]
ans = 5×2
103 ×

    1.0005         0
    0.9996         0
    1.0007         0
    1.0014         0
    1.0005         0

指定离群值位置

创建一个包含两个离群值的向量,并检测这些离群值的位置。

A = [57 59 60 100 59 58 57 58 300 61 62 60 62 58 57];
detect = isoutlier(A)
detect = 1x15 logical array

   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0

使用 "nearest" 方法填充离群值。不使用检测方法,而是提供由 isoutlier 检测到的离群值位置。

B = filloutliers(A,"nearest","OutlierLocations",detect)
B = 1×15

    57    59    60    59    59    58    57    58    61    61    62    60    62    58    57

返回离群值阈值

使用 "clip" 填充方法替换数据向量中的离群值。

创建一个包含一个离群值的数据向量。

A = [60 59 49 49 58 100 61 57 48 58];

使用默认方法 "median" 检测离群值,使用 "clip" 填充方法用上阈值替换该离群值。

[B,TF,L,U,C] = filloutliers(A,"clip");

绘制原始数据、填充了离群值的数据以及由离群值检测方法确定的阈值和中心值。中心值是数据的中位数,上阈值和下阈值分别高于和低于中位数三倍换算 MAD。

plot(A)
hold on
plot(B,"o-")
yline([L U C],":",["Lower Threshold","Upper Threshold","Center Value"])
legend("Original Data","Filled Data")

 


#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 03 日,左手の明天的第 281 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####

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

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

相关文章

PyCharm下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前,请确保自己的计算机里面安装了Python解释器环境,若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意:本文软件的配置方式仅供个人学习使用,如有侵…

有研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具(下)

导语:研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具。 Apple EFI IM4P分配器 介绍 解析苹果多个EFI固件.im4p文件,并将所有检测到的EFI固件分割为单独的SPI/BIOS映像。 使用 你可以拖放或手动输入包含Apple EFI IM4P固件的文件夹的完整路径。…

【VM服务管家】VM4.2平台SDK_6.3 控件嵌入类

目录 2.3.1 渲染控件:渲染控件上自定义图形的方法2.3.2 参数控件:参数配置控件绑定模块的方法2.3.3 控件颜色:控件颜色修改方法2.3.4 独立控件:二次开发单独显示Group的方法2.3.5 取流控件:实时取流控件的使用方法2.3.…

【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码 相关链接 (1)建模方案 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一…

python为什么长期霸占榜首

Python霸占榜首 只因它真的很强 Python,年龄可能比很多读者都要大,但是它在更新快速的编程界却一直表现出色,甚至有人把它比作是编程界的《葵花宝典》,只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁&#x…

【Hello Network】UDP协议

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:简单介绍传输层和UDP协议 UDP协议 传输层端口号端口号范围划分知名端口号端口号与进程netstat与iostatpidof UDP协议UDP协议格式udp的数据封装udp的数…

2.2磁盘分区

2.2 磁盘分区 一个磁盘可以被划分为多个分区,有一个磁盘并且将他们划分为C;D;E盘,那个C,D,E就是分区(partition)。 2.2.1 磁盘连接的方式与设备文件名的关系 个人计算机常见的磁盘接口有两种,分别是SATA与SAS接口&…

精品:Stimulsoft Forms 2023.2.2

Stimulsoft Forms 是一种用于创建、编辑、填写、发布、分发交互式表单和收集结果的工具。我们的产品可嵌入到应用程序中,并允许您创建各种自定义填充模板。丰富的功能使模板具有真正的交互性。用户会收到 PDF 格式的可填写表格,他们可以在任何支持此格式…

ZooKeeper安装与配置集群

简介: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布…

ChatGPT初尝试——合并Excel表格【AI版】

ChatGPT真的能提升生产力吗?【AI版】 无意间的刷到的视频一、提需求二、ChatGPT用Python编写代码三、意外的解释四、ChatGPT改用Java编写代码五、GPT第二次生成Java代码尾巴 无意间的刷到的视频 晚上在家刷视频,突然看到一个在讲关于AI编程的视频&#…

网络安全:网络信息安全的概述.

网络安全:网络信息安全的概述 网络信息安全是一门涉及计算机科学,网络技术,通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。 它主要是指网络系统的硬件、软件及其系统中的数据受到保护,不受…

深度学习 -- Pytorch学习 数据集API Dataset与DataLoader 重载鸢尾花数据集

前言 在模型训练的步骤中,数据的部分非常重要,它的过程主要分为数据收集、数据划分、数据读取、数据预处理。 数据收集的有原始样本和标签(Img,label) 数据集的划分需要分为训练集、验证集、测试集。 训练集负责训练模型,验证集…

C++基础知识快速入门

目录 一, 命名空间 1.1命名空间使用命名空间中成员该如何使用呢? 1.2 命名空间其他2种使用方式: 1. using 将其中一个成员引入 2. using namespace 二,C输入&输出 (简单运用) 2. 1 头文件 2. 2 cout 与 …

2023年软件测试常见面试题100%问必背全套教程

随着数字化时代的到来,软件测试越来越受到重视。在未来的几年里,软件测试将继续成为信息技术领域中的热门职业之一。如果你是一名正在寻找或准备进入软件测试行业的人,那么这套常见面试题全套教程对你来说会非常有用。 这套教程旨在帮助你了…

MySQL主从同步配置

Mysql 主从同步原理 就是基于数据库里面的那个 binlog 文件进行数据同步 具体步骤: step1:master将数据改变记录到二进制日志(binary log)中。step2: 当slave上执行 start slave 命令之后,slave会创建一个…

Unity 后处理(Post-Processing) -- (2)创建后处理配置文件

通过前面一小节,我们初步认识了后处理是什么,在Unity中简单的试了试后处理的效果。本节我们来创建一个我们自己的后处理配置文件(post-processing profile)。 一个后处理配置文件包含了一系列为了达到特定视觉效果的后处理效果的配…

C51 - DS18B20

Thermometer 1> 实验概述2> 硬件设计3> DS18B204> 单总线(1-Wire)通讯协议4.1> 复位时序4.2> 写-DS18B20时序4.3> 读-DS18B20时序4.4> 命令 5> 程序设计5.1> 编程思路5.2> 代码实现 6> 联调测试 1> 实验概述 实现…

Redis集合底层实现原理

目录 本章重点简单动态字符串SDS集合底层实现原理zipListlistPackskipListquickListKey 与Value中元素的数量 本章重点 掌握Redis简单动态字符串了解Redis集合底层实现原理 简单动态字符串SDS SDS简介 我们Redis中无论是key还是value其数据类型都是字符串.我们Redis中的字符…

从入门到精通:30天速成黑客教程到底有多狠?

首先我谈下对黑客&网络安全的认知,其实最重要的是兴趣热爱,不同于网络安全工程师,他们大都是培训机构培训出来的,具备的基本都是防御和白帽子技能,他们绝大多数的人看的是工资,他们是为了就业而学习&am…

ShardingSphere学习笔记

目录 1. 概述 1.1 分库分表是什么 1.2 分库分表方式 1.2.1 垂直分表 1.2.2 垂直分库 1.2.3 水平分库 1.2.4 水平分表 1.3 小结 1.3 分库分表带来的问题 1.3.1 事务一致性问题 1.3.2 跨节点关联查询 1.3.3 跨节点分页、排序函数 1.3.4 主键避重 1.3.5 公共表 2. …