热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1、支持向量回归(SVR)原理
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 &#61; (residuals <&#61; threshold).flatten()
clean_data &#61; data.loc[mask]# 输出结果
print(clean_data)

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

X &#61; df[&#39;X&#39;].values.reshape(-1, 1)
y &#61; np.array(df[&#39;y&#39;])

测试结果&#xff1a;
在这里插入图片描述


推荐阅读
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 运用Isotonic回归算法解决鸢尾花数据集中的回归挑战
    本文探讨了利用Isotonic回归算法解决鸢尾花数据集中的回归问题。首先介绍了Isotonic回归的基本原理及其在保持单调性方面的优势,并通过具体示例说明其应用方法。随后详细描述了鸢尾花数据集的特征和获取途径,最后展示了如何将Isotonic回归应用于该数据集,以实现更准确的预测结果。 ... [详细]
  • 吴裕雄数据挖掘实战案例(13):GBDT模型的深入应用与解析
    #导入第三方包importpandasaspdimportmatplotlib.pyplotasplt#读入数据defaultpd.read_excel(r&amp;# ... [详细]
  • 在Python中,是否可以通过使用Tkinter或ttk库创建一个具有自动换行功能的多行标签,并使其宽度能够随着父容器的变化而动态调整?例如,在调整NotePad窗口宽度时,实现类似记事本的自动换行效果。这种功能在设计需要显示长文本的对话框时非常有用,确保文本内容能够完整且美观地展示。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 本文详细介绍了在 Python 中使用 OpenCV 进行图像处理的各种方法和技巧,重点讲解了腐蚀(erode)和膨胀(dilate)操作,以及开运算和闭运算的应用。腐蚀操作可以去除前景物体的边缘部分,而膨胀操作则可以扩展前景物体的边界。开运算和闭运算则是结合这两种基本操作,用于消除图像中的噪声和填充空洞,提高图像处理的效果。通过具体的代码示例和实际应用案例,读者可以深入理解这些技术在图像处理中的重要作用。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 我有一个问题,把CSV文件导入数据库。。。Im在Python中使用SQLAlchemy,希望打开一个CSV文件,而不是在QTableWid ... [详细]
  • HTML文档是互联网上的主要文档类型,但还存在如TXT、WORD、Excel、PDF、csv等多种类型的文档。网络爬虫不仅需要能够抓取HTML中的敏感信息,也需要有抓取其他类型文档的能 ... [详细]
author-avatar
wyzf88_987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有