支持向量回归删除异常值Python

news2024/9/27 15:26:38

1、支持向量回归(SVR)原理

支持向量回归(Support Vector Regression,SVR)不仅可以用于预测,还可以用于异常值检测。其基本思路是训练一个回归模型,通过对每个数据点进行预测,并计算其预测残差,来判断该数据点是否为异常值。

在SVR中,我们通过最大化预测出错的容忍度(margin)来寻找最优解。具体地,我们希望找到一个超平面,使得所有数据点到该超平面的距离都大于等于一定的阈值(margin)。对于线性回归模型,该超平面为:

w^T * x + b = 0

其中,w是超平面法向量,b是偏置项,x是输入数据。对于一个输入数据x_i,其距离超平面的距离为:

y_pred_i - y_i = (w^T * x_i + b) - y_i

其中,y_pred_i是该数据点的预测值,y_i是该数据点的真实值。我们定义预测残差为绝对值:

r_i = abs(y_pred_i - y_i)

那么,如果某个数据点的预测残差(r_i)大于某个阈值,则被视为异常值,否则视为正常值。

在实际操作中,我们需要指定SVR的一些超参数,例如核函数类型、核函数参数、惩罚系数等。这些超参数对于SVR的性能有很大的影响,需要根据具体问题进行调整。

2、关键函数svr.fit函数参数

sklearn.svm.SVRfit函数常用参数如下:

  • X: 训练数据X,必选参数,形状为(n_samples, n_features)。
  • y: 目标值y,必选参数,形状为(n_samples,)。
  • sample_weight: 样本权重,可选参数,形状为(n_samples,),默认每个样本的权重相等。
  • C: 惩罚系数,可选参数,默认为1.0,一般取值为(0, +∞)之间的数。C越小,模型越简单;C越大,模型越复杂。调整C的值可以防止过拟合或欠拟合的问题。
  • kernel: 核函数,可选参数,默认为’rbf’,表示高斯核函数。常用的核函数还有’linear’线性核函数、'poly’多项式核函数、‘sigmoid’ Sigmoid核函数。核函数的选择决定了模型的复杂度和拟合能力。
  • degree: 多项式核函数的次数,可选参数,默认为3。
  • gamma: 核函数系数,可选参数,默认为’scale’,表示使用1 / (n_features * X.var())作为gamma值。也可以设置为’auto’或一个数值。
  • coef0: 核函数的截距,可选参数,默认为0。
  • epsilon: SVR中的ε,可选参数,默认为0.1。控制了对误差的容忍度。如果预测值与真实值的差小于ε,该点就被视为预测正确。
  • shrinking: 是否使用启发式(Hearst)方法来加速计算,可选参数,默认为True。建议保持默认值。
  • tol: 迭代终止条件,可选参数,默认为1e-3。如果模型收敛后两次迭代的损失函数之差小于该值,则终止训练。
  • max_iter: 最大迭代次数,可选参数,默认为-1,表示没有限制。如果收敛前达到该值,则提前终止训练。
  • cache_size: 核函数缓存大小,可选参数,默认为200MB。

需要根据具体的情况,调整SVR的超参数以获得更好的性能和效果。

3、完整代码

import pandas as pd
from sklearn.svm import SVR

# 加载数据
data = pd.read_csv('data.csv')

# 训练SVR模型
X = data.index.values.reshape(-1, 1)
y = data['value'].values.reshape(-1, 1)
svr = SVR(kernel='rbf', gamma='scale', C=1.0, epsilon=0.1)
svr.fit(X, y)

# 计算每个数据点的预测偏差
y_pred = svr.predict(X)
residuals = abs(y - y_pred)

# 计算偏差的标准差
std_dev = residuals.std()

# 计算阈值
threshold = 3 * std_dev

# 找到异常值
mask = (residuals <= threshold).flatten()
clean_data = data.loc[mask]

# 输出结果
print(clean_data)

测试报错:
Reshape your data either using array.reshape(-1, 1) 。
dataframe数据需要转换为array。
经测试:

X = df['X'].values.reshape(-1, 1)
y = np.array(df['y'])

测试结果:
在这里插入图片描述

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

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

相关文章

基于Transformer的目标检测算法学习记录

前言 本文主要通过阅读相关论文了解当前Transformer在目标检测领域的应用与发展。 谷歌在 ICLR2020 上提出的 ViT&#xff08;Vision Transformer&#xff09;是将 Transformer 应用在视觉领域的先驱。从此&#xff0c;打开了Transformer进入CV领域的桥梁&#xff0c;NLP与CV几…

软件测试11

一 Linux命令的基本格式 格式组成&#xff1a;命令主体 -命令选项 命令参数 常见命令形式&#xff1a; &#xff08;1&#xff09;命令主体 &#xff08;2&#xff09;命令主体 -命令选项 &#xff08;3&#xff09;命令主体 参数 &#xff08;4&#xff09;命令主体 -命令选项…

深入分析@Bean源码

文章目录一、源码时序图二、源码解析1. 运行案例程序启动类2. 解析AnnotationConfigApplicationContext类的AnnotationConfigApplicationContext(Class<?>... componentClasses)构造方法3. 解析AbstractApplicationContext类的refresh()方法4. 解析AbstractApplicationC…

MOV压敏电阻的几种电路元件功能及不同优势讲解

压敏电阻&#xff0c;通常是电路为防护浪涌冲击电压而使用的一种电子元器件&#xff0c;相比其他的浪涌保护器来说&#xff0c;也有那么几个不一样的优势&#xff0c;那么&#xff0c;具体有哪些&#xff1f;以及关于它的作用&#xff0c;你都知道吗&#xff1f;以下优恩小编为…

【python游戏制作】快来跟愤怒的小鸟一起攻击肥猪们的堡垒吧

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 为了防止/报复偷走鸟蛋的肥猪们&#xff0c;鸟儿以自己的身体为武器&#xff0c; 仿佛炮弹一样去攻击肥猪们的堡垒&#xff0c;保卫自己的鸟蛋 这个游戏大家没玩过的想必也听说过~ 今天就给大家分享一下用python写的愤怒的…

2023年3月份的野兔在线工具系统版本更新

这个是野兔在线工具系统中文版更新&#xff0c;这次更新的功能&#xff0c;和修改的问题还是比较多的&#xff0c;也修复系统部分功能&#xff0c;应该也是目前市面上在线工具比较多的一个系统了。系统名称&#xff1a;野兔在线工具系统系统语言&#xff1a;中文版系统源码&…

做自动化测试选择Python还是Java?

今天&#xff0c;我们来聊一聊测试人员想要进阶&#xff0c;想要做自动化测试&#xff0c;甚至测试开发&#xff0c;如何选择编程语言 前言 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发展的趋势。特别是…

【C语言】每日刷题 —— 牛客(2)

前言 大家好&#xff0c;继续更新专栏c_牛客&#xff0c;不出意外的话每天更新十道题&#xff0c;难度也是从易到难&#xff0c;自己复习的同时也希望能帮助到大家&#xff0c;题目答案会根据我所学到的知识提供最优解。 &#x1f3e1;个人主页&#xff1a;悲伤的猪大肠9的博客…

Hibernate学习(一)

Hibernate学习&#xff08;一&#xff09; Hibernate框架的概述&#xff1a; 一&#xff1a;什么是框架&#xff1a;指软件的半成品&#xff0c;已经完成了部分功能。 二&#xff1a;EE的三层架构&#xff1a; 1.EE的三层经典架构&#xff1a; 我在这里主要学的是ssh框架。 三…

Rcpp cannot convert ‘SEXP‘ {aka ‘SEXPREC*‘} to ‘###‘ in return

Rcpp cannot convert SEXP {aka SEXPREC*} to *** in return引言代码说明报错代码两种修改方法代码1代码2引言 Rcpp在使用的过程中可以访问R本地的一些函数&#xff0c;可以帮助我们更高效的进行计算. Rcpp::Environment global Rcpp::Environment::global_env(); 可以在Rcpp…

【CSS】CSS 背景设置 ① ( 背景颜色 | 背景图片 | 背景平铺 )

文章目录一、背景颜色1、语法说明2、代码示例二、背景图片1、语法说明2、代码示例三、背景平铺一、背景颜色 1、语法说明 CSS 的背景颜色样式语法 : 默认的背景颜色是 transparent 透明 ; background-color:颜色值;background-color 属性 可以 定义 文本颜色 , 其颜色值有三种…

MySQL DDL表操作【入门到精通】

目录 一、查询创建 1、查询当前数据库所有表 2、查看指定表结构 3、查询指定表的建表语句 4、创建表结构 二、数据类型 1、数值类型 2、字符串类型 3、日期时间类型 三、表操作-案例 设计一张员工信息表&#xff0c;要求如下&#xff1a; 对应的建表语句如下&#…

解忧杂货铺(二):UML时序图

目录 1、概述 2、UML时序图 2.1、什么是时序图 2.2、时序图的元素 2.2.1 角色(Actor) 2.2.2 对象(Object) 2.2.3 生命线(LifeLine) 2.2.4 控制焦点(Activation) 2.2.5 消息(Message) 2.2.6 自关联消息 2.2.7 组合片段 1、概述 在看AUTOSAR规范的时候发现时序图里面的…

enscape和twinmotion哪个好用?

Twinmotion 和 Enscape这2款渲染软件最近受到了一些初学者的关注。这 2 个软件适用于那些需要 3D 渲染但质量不是他们项目的首要任务的人。在本文中&#xff0c;我们将对Twinmotion 和 Enscape 进行面对面的比较&#xff0c;并帮助您确定哪一个更适合您。什么是 Twinmotion&…

关于算法的一些简单了解

文章目录ALGORITHMBASIC INFORMATIONBasic algorithm design technology穷举法分治法减治法动态规划法贪心法Algorithm design technology based on search回溯法分支限界法PRACTICECONCEPTCALATION*CODEprim&dijkstra&kruskal分治法Q&AT(n)T(n)T(n) 是渐进时间复杂…

Go Signal信号

目录信号信号的种类分类信号种类Go Signalhandlershandler信号的存储信号持有状态的获取信号持有状态的清空NotifyStopIgnore & ResetNotifyContext如何优雅的关闭web app优雅地重启信号 信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式…

hibernate学习(二)

hibernate学习&#xff08;二&#xff09; 一、hibernate常见配置&#xff1a; 1.XML提示问题配置&#xff1a; 二、hibernate映射的配置&#xff1a; &#xff08;1&#xff09;class标签的配置&#xff1a; 标签用来建立类与表之间的映射关系属性&#xff1a; 1.name&…

Clickhouse中bitmap介绍以及计算留存Demo

前言 参考了腾迅的大数据分析-计算留存,能够根据用户自定义属性,以及玩家行为进行留存的计算。最初计算留存的方法使用的是clickhosue自带的rentention函数,使用这个函数不用关注太多细节,只需要把留存条件放入函数即可。但是这个如果需要关联用户属性,就比较麻烦了。因此…

如何应对危害机房安全的这几个常见要素?

随着现代化进程的推进&#xff0c;各行业对计算机的依赖性日益增高&#xff0c;计算机系统已经成为业务系统的重要组成部分。 在这种情况下&#xff0c;一旦机房设备出现故障&#xff0c;就会影响机房的正常运行&#xff0c;造成严重后果。尤其是银行、证券、海关等需要实时数据…

前端学习第三阶段-第1、2章 JavaScript 基础语法

01第一章 JavaScript网页编程课前导学 1-1 JavaScript网页编程课前导学 02第二章 JavaScript 基础语法 2-1 计算机基础和Javascript介绍 01-计算机基础导读 02-编程语言 03-计算机基础 04-JavaScript初识导读 05-初始JavaScript 06-浏览器执行JS过程 07-JS三部分组成 08-JS三种…