当前位置: 首页 > news >正文

机器学习笔记三-检测异常值

检测异常值是数据预处理中非常重要的一步,因为异常值可能会影响模型的训练效果,甚至导致错误的结论。以下是几种常见的检测异常值的方法:

1. 箱线图(Box Plot)

箱线图是一种简单的统计图形,可以直观地显示数据的分布情况及其离群点(异常值)。在箱线图中,异常值通常定义为超出“盒须”范围的点。

  • IQR(四分位距)方法

    • 箱线图的盒子代表数据的第一四分位数(Q1,25%)和第三四分位数(Q3,75%)。
    • 四分位距(IQR)定义为 Q3 - Q1。
    • 异常值通常定义为小于 Q1 - 1.5 * IQR 或大于 Q3 + 1.5 * IQR 的数据点。
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt# 示例数据
    data = np.random.randn(100)  # 生成100个正态分布的数据点
    data = np.append(data, [10, -10])  # 添加几个异常值# 绘制箱线图
    plt.boxplot(data)
    plt.show()# 使用IQR方法检测异常值
    Q1 = np.percentile(data, 25)
    Q3 = np.percentile(data, 75)
    IQR = Q3 - Q1lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQRoutliers = data[(data < lower_bound) | (data > upper_bound)]
    print("Detected Outliers:", outliers)
    

2. 标准差方法

标准差法适用于数据呈正态分布的情况。异常值通常定义为超出平均值 μ \mu μ的3倍标准差 σ \sigma σ 的数据点。

  • 公式

    • 异常值定义为小于 μ − 3 σ \mu - 3\sigma μ3σ 或大于 μ + 3 σ \mu + 3\sigma μ+3σ 的数据点。
    mean = np.mean(data)
    std_dev = np.std(data)lower_bound = mean - 3 * std_dev
    upper_bound = mean + 3 * std_devoutliers = data[(data < lower_bound) | (data > upper_bound)]
    print("Detected Outliers using Standard Deviation:", outliers)
    

3. Z-score 方法

Z-score 表示数据点与均值的偏离程度,用于判断该数据点是否为异常值。Z-score 方法适用于数据呈正态分布的情况。

  • 公式

    • Z-score = x − μ σ \frac{x - \mu}{\sigma} σxμ
    • 当 Z-score 的绝对值大于某个阈值(通常为 3)时,该数据点被认为是异常值。
    from scipy import statsz_scores = stats.zscore(data)
    outliers = data[np.abs(z_scores) > 3]
    print("Detected Outliers using Z-score:", outliers)
    

4. 使用 Mahalanobis 距离

Mahalanobis 距离考虑了数据的协方差结构,适合检测多变量数据中的异常值。

  • 公式

    • Mahalanobis 距离 D 2 = ( x − μ ) T Σ − 1 ( x − μ ) D^2 = (x - \mu)^T \Sigma^{-1} (x - \mu) D2=(xμ)TΣ1(xμ)
    • 异常值通常定义为 Mahalanobis 距离超过某个阈值的数据点。
    from scipy.spatial import distance# 示例多维数据
    data = np.random.randn(100, 2)
    mean = np.mean(data, axis=0)
    cov_matrix = np.cov(data, rowvar=False)mahalanobis_distances = [distance.mahalanobis(x, mean, np.linalg.inv(cov_matrix)) for x in data]threshold = np.percentile(mahalanobis_distances, 97.5)  # 选择一个合适的阈值
    outliers = data[np.array(mahalanobis_distances) > threshold]
    print("Detected Outliers using Mahalanobis Distance:", outliers)
    

5. 视觉化异常值检测

通过绘制散点图、直方图等图表,可以直观地观察数据分布并识别可能的异常值。

6. 处理异常值的方法

  • 删除: 直接删除异常值,适用于异常值数量很少的情况。
  • 替换: 使用均值、中位数或插值方法替换异常值。
  • 模型化: 在一些情况下,异常值可能是数据的有效部分,可以通过重新建模来处理这些异常值。

总结:

不同的方法适用于不同类型的数据和异常值检测场景。在实际应用中,通常结合多种方法进行异常值检测,并根据业务需求和数据特点采取适当的处理策略。

相关文章:

机器学习笔记三-检测异常值

检测异常值是数据预处理中非常重要的一步&#xff0c;因为异常值可能会影响模型的训练效果&#xff0c;甚至导致错误的结论。以下是几种常见的检测异常值的方法&#xff1a; 1. 箱线图&#xff08;Box Plot&#xff09;&#xff1a; 箱线图是一种简单的统计图形&#xff0c;可…...

如何评估Redis的性能

导语 Redis是一款高性能的内存数据库&#xff0c;被广泛用于缓存、持久化、消息队列等各种场景。为了确保Redis的高性能运行&#xff0c;评估Redis的性能是非常重要的。本文将介绍如何评估Redis的性能&#xff0c;并从问题解决的角度探讨如何优化Redis的性能。 1. 性能评估指…...

RabbitMQ发布订阅模式Publish/Subscribe详解

订阅模式Publish/Subscribe 基于API的方式1.使用AmqpAdmin定制消息发送组件2.消息发送者发送消息3.消息消费者接收消息 基于配置类的方式基于注解的方式总结 SpringBoot整合RabbitMQ中间件实现消息服务&#xff0c;主要围绕3个部分的工作进行展开&#xff1a;定制中间件、消息发…...

Android8.1源码下对APK进行系统签名

在Android8.1上面对APK进行Android系统源码环境下的签名,发现签名时出现如下错误: Exception in thread "main" java.lang.ExceptionInInitializerError at org.conscrypt.OpenSSLBIOInputStream.(OpenSSLBIOInputStream. at org.conscrypt.OpenSSLX509Certificat…...

2024年城市客运安全员考试题库及答案

一、单选题 376.根据《机动车运行安全技术条件》&#xff08;GB7258---2017&#xff09;&#xff0c;每个应急出口应在其附近设有"应急出口"字样&#xff0c;字体高度应大于或等于&#xff08;&#xff09;mm。 A.20 B.30 C.40 D.50 答案&#xff1a;C 377.根…...

全网最全面的Nginx内容(理论与实践相结合)

一、Web服​​务 1.1 web服务访问流程 1.2 Web服务 1.2.1 Web服务器分类 Web服务分为Apache和Nginx 1.2.2 Apache经典的Web服务器 1.2.2.1 Apache介绍 Apache HTTP Server&#xff08;简称Apache&#xff09;是Apache软件基金会的一个开放源码的网页服务器&#xff0c;可以…...

(七)Flink Watermark

Flink 的 Watermark 是用来标识数据流中的一个时间点。Watermark 的设计是为了解决乱序数据处理的问题,尤其是涉及到多个分区的 Kafka 消费者时。在 Watermark 的作用下,即使某些数据出现了延迟到达的情况,也不会导致整个处理流程的中断。此外,Watermark 还能防止过期的数据…...

springboot 上传文件失败:The temporary upload location

Caused by: java.io.IOException: The temporary upload location [/tmp/tomcat.379776875189163783.8081/work/Tomcat/localhost/jcys-core] is not valid 原因&#xff1a; Linux下会自动清除tmp目录下10天没有使用过的文件&#xff0c;SpringBoot启动的时候会在/tmp目录下生…...

UNiapp之微信小程序导出Excel

效果如下 参考小程序&#xff1a;日常记一记 ---账单页面 主要功能是根据筛选条件导出账单明细列表&#xff0c;实现该功能主要借助一个工具(excel.js)&#xff0c;可在文章顶部下载或者一下网盘下载 https://pan.baidu.com/s/1RLisuG4_7FGD0Cnwewyabg?pwdpd2a 提取码: pd2a…...

fsadsadsad

adsadsafsada...

高效录制新选择:2024年Windows录屏软件

录屏能帮助我们捕捉屏幕上的精彩瞬间&#xff0c;作为老师可以用来录制课程&#xff0c;作为会议记录员可以用来录制远程会议。那么有什么软件是适合windows录屏的呢&#xff1f;这次我们一起来探讨一下吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 这款软…...

Java技术面试(一面)

1、相面对象 1、面相对象语言/Java三大特性是什么? 引出 封装、‌继承和多态。 2、多态有哪些形式?多态使用过吗? 重载、重写,接口和抽象类的多个实现。考察工作经验、代码重构经验、习惯。 3、Java接口和抽象类有什么区别?你是如何选择使用的? 考察OOP的理解和工作…...

docker修改数据目录

新建docker数据目录 mkdir /data/docker-data停止docker服务 systemctl stop docker把docker数据迁移到新目录 cp -r /var/lib/docker/* /data/docker-data/修改docker配置 vi /etc/docker/daemon.json #添加data-root参数 {"data-root":"/data/docker-dat...

Appium学习

一、基础配置 import unittest from appium import webdriver from appium.options.android import UiAutomator2Options from appium.webdriver.common.appiumby import AppiumBy from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support …...

回顾 | 瑞云科技亮相ICIC2024,虚拟仿真实训云平台引关注

2024年8月7日&#xff0c;天津市虚拟仿真学会主办的第二十届智能计算国际会议&#xff08;ICIC2024&#xff09;——虚拟仿真技术交流平行会议暨天津市虚拟仿真学会2024年暑期技术交流会在天津盛大召开。本次大会汇聚来自全国的顶尖专家、学者和行业领袖&#xff0c;共同探讨虚…...

libLZMA库iOS18平台编译

1.下载xz源码: 使用autogen.sh生成configure文件 2.生成makefile rm -rf ./build/iOS && mkdir -p ./build/iOS && cd ./build/iOS && ../../configure --host=arm-apple-darwin64 --prefix=`pwd`/Frameworks/lzma CC="xcrun -sdk iphoneos cl…...

《AI办公类工具PPT系列之二——iSlide AI》

一.简介 官网:iSlide- 让PPT设计简单起来 | PPT模板下载平台 iSlide AI是一款基于人工智能技术的PPT制作工具,它可以帮助用户快速高效地创建演示文稿 二.功能介绍 1. AI一键生成PPT 文档导入与解析:用户可以直接上传本地文档(如Word、Markdown、思维导图等),iSlide A…...

C语言基础(六)

一维数组&#xff1a; C语言中的数组是一种基本的数据结构&#xff0c;用于在计算机内存中连续存储相同类型的数据。 数组中的每个元素可以通过索引&#xff08;或下标&#xff09;来访问&#xff0c;索引通常是从0开始的。 数组的大小在声明时确定&#xff0c;并且之后不能改…...

什么是词向量?如何得到词向量?Embedding 快速解读

我第一次接触 Embedding 是在 Word2Vec 时期&#xff0c;那时候还没有 Transformer 和 BERT 。Embedding 给我的印象是&#xff0c;可以将词映射成一个数值向量&#xff0c;而且语义相近的词&#xff0c;在向量空间上具有相似的位置。 有了 Embedding &#xff0c;就可以对词进…...

AI视频创作应用

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

Arm Neoverse CMN-700性能监控与优化实践

1. Arm Neoverse CMN-700性能监控体系解析在现代多核处理器架构中&#xff0c;性能监控单元(PMU)如同系统的"听诊器"&#xff0c;能够实时捕捉微架构层面的各种行为指标。Arm Neoverse CMN-700作为面向基础设施级应用的互联架构&#xff0c;其PMU设计尤其强调对Mesh网…...

低配置电脑适配 OpenClaw 搭配 Ollama 流畅使用技巧

前置准备 获取小龙虾open claw一键安装包&#xff08;www.totom.top&#xff09;并安装电脑已成功安装运行 OpenClaw 客户端&#xff0c;顶部 Gateway 状态保持在线网络正常&#xff0c;可顺利访问 Ollama 官方网站电脑空余磁盘空间充足&#xff0c;本地 AI 模型占用体积较大提…...

LoRA模型合并实战指南:多技能融合与vLLM部署

1. 项目概述&#xff1a;LoRA模型合并的“瑞士军刀”最近在折腾大语言模型微调的朋友&#xff0c;估计对LoRA&#xff08;Low-Rank Adaptation&#xff09;这个词都不陌生。它就像给预训练好的大模型“打补丁”&#xff0c;用极小的参数量&#xff08;通常只有原模型的0.1%到1%…...

GPT-4 API交互式实验场:开发者如何自建安全可控的Playground

1. 项目概述&#xff1a;一个面向开发者的GPT-4交互式实验场如果你是一名开发者&#xff0c;或者对大型语言模型&#xff08;LLM&#xff09;的应用开发感兴趣&#xff0c;那么你很可能已经不止一次地思考过&#xff1a;如何能更高效、更直观地测试GPT-4的API能力&#xff1f;如…...

PaperDebugger:用代码调试思维提升学术论文可复现性的工具实践

1. 项目概述&#xff1a;一个为学术论文“排雷”的智能调试器如果你和我一样&#xff0c;常年混迹在学术圈或者技术研发一线&#xff0c;肯定对下面这个场景深恶痛绝&#xff1a;好不容易读完一篇几十页的论文&#xff0c;满心欢喜地准备复现其中的算法或实验&#xff0c;结果发…...

3分钟快速上手:m4s-converter让B站缓存视频秒变MP4格式

3分钟快速上手&#xff1a;m4s-converter让B站缓存视频秒变MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在当今数字内容时代&#xff…...

矩阵Zig-Zag遍历:对角线路径的优雅实现

矩阵Zig-Zag遍历&#xff1a;对角线路径的优雅实现 最近刷题遇到一个很有意思的矩阵遍历问题&#xff1a;如何以Zig-Zag&#xff08;之字形&#xff09;的方式打印一个二维矩阵&#xff1f; 什么是Zig-Zag遍历&#xff1f; 简单来说&#xff0c;就是从矩阵的左上角开始&#…...

用GeoDa给北京二手房做个体检:手把手教你计算莫兰指数,看看你家房价被谁‘传染’了

北京二手房价格的空间密码&#xff1a;用GeoDa解锁房价背后的聚集效应 北京的二手房市场总是充满话题性——为什么相邻的两个小区价格能差出两万&#xff1f;为什么某些区域的房价会集体"跳涨"&#xff1f;这些现象背后&#xff0c;往往隐藏着空间自相关的秘密。今天…...

555时基电路:从内部原理到三大经典应用模式全解析

1. 从“黑盒子”到“瑞士军刀”&#xff1a;初识555时基电路如果你刚开始接触电子设计&#xff0c;或者玩过一些简单的单片机项目&#xff0c;可能会觉得产生一个精确的延时、一个稳定的方波信号&#xff0c;或者把一个不规则的波形“修整”得漂漂亮亮&#xff0c;是一件需要写…...

Midjourney概念艺术风格≠调参!20年CG总监拆解:风格生成本质是跨模态语义压缩,3个关键损失函数阈值决定成败

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney概念艺术风格≠调参&#xff01;20年CG总监的范式颠覆 风格不是参数堆砌&#xff0c;而是语义锚点重构 传统AI绘画工作流常将“风格”等同于反复调整 --s、--style raw 或后缀词如 trending…...