Matlab异常值处理-程序员宅基地

技术标签: matlab  数学建模笔记  MATLAB学习笔记  机器学习  异常值处理  

Matlab异常值处理

在对数据进行预处理中,我们经常会遇到异常值和缺失值的情况,下面我们对这两种情况的常用技术进行介绍,希望能帮到大家。

在数据既有异常值又有缺失值时,先处理哪个并没有严格的顺序。我习惯先处理异常值,再处理缺失值

异常值的识别方法

异常值,指的是样本中的一些数值明显偏离其余数值的样本点,所以也称为离群点。常见的异常值判断方法可以分为以下两种情况:

数据给定范围

数据没有给定范围

3sigma原则

  • 前提是要正态分布,才可以用3sigma原则确定异常值。
    • 历史经验:身高
    • 统计:正态性检验
  • 如果要缩小一点区间,多去除一些异常值
    • 可以用2sigma
x = [48 51 57 57 49 86 48 53 59 50 48 47 53 56 60];   % 假设x是取自正态分布的样本
u = mean(x,'omitnan');  % 忽略数据中的缺失值计算均值
sigma = std(x,'omitnan');   % 计算标准差  std(x,0,'omitnan')是总体标准差
lb = u - 3*sigma    % 区间下界,low bound的缩写
ub = u + 3*sigma   % 区间上界,upper bound的缩写
tmp = (x < lb) | (x > ub);
ind = find(tmp)

返回6,意味着第6个位置是异常值

  • 通常不知道总体是否是正态分布的时候,我们用箱线图来去除异常值
  • 通常来说箱线图比3sigma去除的异常值要多
  • 通常k取1.5,当然也可以取其他的

箱线图识别异常值

x = [48 51 57 57 49 86 48 53 59 50 48 47 53 56 60];
% 计算分位数的函数需要MATLAB安装了统计机器学习工具箱
Q1 = prctile(x,25); % 下四分位数
Q3 = prctile(x,75); % 上四分位数
IQR = Q3-Q1; % 四分位距
lb = Q1 - 1.5*IQR % 下界
ub = Q3 + 1.5*IQR % 上界
tmp = (x < lb) | (x > ub);
ind = find(tmp)

去除异常值后咋办

识别出异常值后,我们通常可以将异常值视为缺失值,然后交给缺失值处理方法来处理。

代码:x(ind) = nan (注意:如果有多列数据都需要处理,可以写一个循环。)

x(ind) = nan % 这里的nan表示非数字Not-a-Number,例如0/0就会返回nan,我们这里可以用nan代表数字中的缺失值
  • 如果数据给定范围,那么很容易找到异常值
  • 如果数据没给定范围,那么一般偷懒不做
    • 除非数据很离谱,或者影响了模型的训练效果

内容来源:数学建模清风第四次直播:
利用matlab快速实现机器学习
配套的讲义和后续视频
欢迎大家学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_57345774/article/details/126965835

智能推荐

socket之getaddrinfo()函数_socket.getaddrinfo-程序员宅基地

文章浏览阅读1.5k次。socket编程之addrinfo结构体与getaddrinfo函数1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个addrinfo的结构(列表)指针而不是一个地址清单。这些a_socket.getaddrinfo

UIL神器-程序员宅基地

文章浏览阅读50次。Android开源代码精选之ImageLoaderAndroid开发中最常用到的组件,非ImageLoader莫属。源码地址:https://github.com/nostra13/Android-Universal-Image-Loader[上代码]:1. 添加jar包2. 修改Android Manifest,添加网络请求和写文件权限?代码片段[email protected]

动态内存管理_C_不申请内存,堆空间在减少-程序员宅基地

文章浏览阅读324次。一、函数介绍 以下四个函数都包含在头文件&lt; stdlib.h &gt;1.malloc 函数原型:void *malloc(size_t size); 作用:从堆空间申请内存 函数参数:需要申请的空间大小(字节数) 返回值:申请成功则返回一个指向申请到的内存的指针,失败则返回NULL2.calloc 函数原型:void *calloc(size_t num,siz..._不申请内存,堆空间在减少

ORACLE之rman备份:ORA-19809和ORA-19804的解决方法_cannot reclaim 67108864 bytes disk space from 1073-程序员宅基地

文章浏览阅读1.8k次。操作环境:redhat 6.4 oracle 12crman备份出错。之前出现过,好象重新backup database就可以了,今天又出现,纪录下RMAN-03009: failure of Contrl file and SPFILE Autobackup command on ORA_DISK_1 channel at 06/06/2018 13:43:50ORA-19809: limit..._cannot reclaim 67108864 bytes disk space from 10737418240 bytes limit

2022年雷达领域学术会议时间节点_iet radar conference 2023-程序员宅基地

文章浏览阅读5k次,点赞5次,收藏9次。IET Radar 2022radar2022October 2022 | Scotland, UKFull paper submission deadline 18 April 2022Author notification 27 June 2022Final revised paper deadline 4 July 2022Author registration deadline 18 July 2022Theme C - Remote Sensing from Airborne_iet radar conference 2023

Clion变量无法跳转到声明处_clion 找不到要转到的声明-程序员宅基地

文章浏览阅读8.1k次。问题:使用Clion查看代码时,对某变量ctrl+鼠标左键能跳转到该变量声明处,但有时会失败。解决方法:重启Clion,再次打开该工程,会自动重新加载符号,然后就能跳转成功。..._clion 找不到要转到的声明

随便推点

kubeflow二次开发--独立module开发_kubeflow前端二次开发-程序员宅基地

文章浏览阅读692次。一、介绍二、开始coding1、Dockerfile内容2、yaml文件3、build docker image4、创建pod和service5、访问一、介绍系统:Centos7Kubeflow版本:0.7.0Pipeline版本:0.1.31Go版本:1.13前后端不分离的一个应用,目录结构如下public存放静态资源src是api代码主要功能是查询数据库数据,然后在网页显示用到了gin框架,起http服务Gorm作为orm框架代码已上传我的githubhttps://gith._kubeflow前端二次开发

floor() 函数_floor()函数-程序员宅基地

文章浏览阅读4.9k次,点赞6次,收藏13次。查看更多https://www.yuque.com/docs/share/2a8366d1-bdc5-4faf-95ed-655beea8d8f9_floor()函数

74cms CSRF漏洞可以诱骗添加管理员-程序员宅基地

文章浏览阅读2.3k次。74cms CSRF漏洞可以诱骗添加管理员

少年郎,我这里有一份nginx配置,你拿走吧-程序员宅基地

文章浏览阅读5.7k次。首先,直接上干货:user root;worker_processes 4;error_log /var/log/nginx/error.log;#pid logs/nginx.pid;events { use epoll; worker_connections 65536; accept_mutex on; multi_acc..._large_client_header_buffers 4 128k; underscores_in_headers on; client_header

「小程序」信息无障碍初体验_微信小程序无障碍版本-程序员宅基地

文章浏览阅读1k次。是的,千呼万唤,微信小程序始出来。微信小程序正式发布后,中国信息无障碍产品联盟(CAPA)的信息无障碍工程师们在第一时间对其无障碍情况进行了体验。共选取了滴滴出行DiDi、饿了么外卖服务、今日头条lite三款小程序,在Android及iOS平台上分别通过读屏软件进行操作使用,并记录下其对应的表现。 体验所使用的机型及相关环境如下: 华为 P9 + Android 7.0 + EMui 5..._微信小程序无障碍版本

FPGA的基本组成结构_fpga组成-程序员宅基地

文章浏览阅读1.8w次,点赞11次,收藏146次。目前主流的FPGA芯片仍是基于查找表。FPGA芯片主要由以下6部分组成:(1)可编程输入输出单元(IOB)(2)基本可编程逻辑单元(CLB)(3)完整的时钟管理模块(4)丰富的布线资源(5)嵌入式块RAM(6)内嵌的底层功能单元和嵌入式专用硬核通过配置以上6个不同的部分,基本可以让FPGA实现任何你想要实现的功能。一、FPGA的结构解析对于一款芯片,我们肉眼看到..._fpga组成