数据清洗!即插即用!异常值、缺失值、离群值处理、残差分析和孤立森林异常检测,确保数据清洗的全面性和准确性,MATLAB程序!

适用平台:Matlab2021版及以上

数据清洗是数据处理和分析中的一个关键步骤,特别是对于像风电场这样的大型、复杂数据集。清洗数据的目的是为了确保数据的准确性、一致性和完整性,从而提高数据分析的质量和可信度,是深度学习训练和预测前的重要步骤。

  • 在实际应用中,数据可能会因为传感器故障、通信错误或人为输入错误而产生异常值或噪声数据。这些异常值会严重影响后续的数据分析和模型训练。清洗数据可以确保数据的准确性,减少噪声对分析结果的干扰。

  • 缺失值是数据集中常见的问题。如果不处理缺失值,可能会导致分析结果不准确或模型训练失败。通过填补缺失值,可以提高数据的完整性,确保每个数据点都有意义。

手动填充空值、删除异常值的方法需要耗费大量的时间,且准确性得不到保障,本程序以风电场数据为例,进行数据清洗和处理,包括异常值处理、缺失值处理、离群值处理、以及相关性分析,并将清洗后的数据保存到新的Excel文件中。

①异常值处理:

研究现状:

异常值检测与处理是数据预处理中的重要环节。常见方法包括统计方法(如Z-score、IQR)、机器学习方法(如支持向量机)、以及深度学习方法(如自编码器)。统计方法利用数据的统计特性(如均值、方差、中位数)进行异常值检测,适用于简单数据集。

本文方法:

  • 结合统计方法(删除全相同元素行)和基于RANSAC的鲁棒拟合方法,有效处理不同类型的异常值。

  • RANSAC方法能够在噪声和异常值存在的情况下进行可靠的模型拟合,适用于存在显著异常值的数据集。

②缺失值处理

研究现状:

①缺失值处理方法多种多样,包括删除法、填补法(如均值填补、中位数填补、最近邻填补)、插值法(如线性插值、样条插值)、以及模型预测法(如多重插补、矩阵分解)。

②简单填补方法(如均值填补)易于实现,但可能引入偏差。

③插值法利用数据的连续性进行填补,适用于时间序列数据。

④模型预测法利用机器学习模型对缺失值进行预测,精度高,但计算复杂。

本文方法:

  • 使用前向填补法简单有效,适用于时间序列数据,能够保留数据的趋势和模式。

  • 前向填补法计算成本低,适合于大规模数据集的快速处理。

③离群值处理

研究现状:

①离群值检测方法包括基于统计的检测方法(如Grubbs' Test、Tukey's Fences)、基于聚类的方法(如K-means、DBSCAN)、基于机器学习的方法(如孤立森林、LOF)。

②统计方法适用于简单数据集,易于实现。

③聚类方法通过分析数据点的密度或距离来识别离群值,适用于聚类明显的数据集。

④机器学习方法能够处理复杂数据分布和高维数据,具有较高的检测准确性。

本文方法:

  • 结合移动窗口统计特性(滑动窗线性插值)和基于残差的离群值检测方法(孤立森林),处理离群值的鲁棒性强。

  • 使用中位数绝对离差(MAD)方法进行滑动窗线性插值,能够平滑数据波动,适用于时间序列数据。

  • 残差分析结合孤立森林,能够有效识别复杂数据分布中的离群值。

④ 创新点总结

  • 多方法结合,处理全面

    • 本程序结合了统计方法、拟合方法、插值方法和机器学习方法,能够全面、有效地处理异常值、缺失值和离群值。

    • 通过删除全相同元素行、前向填补缺失值、滑动窗线性插值和RANSAC拟合等多种方法,保证数据处理的全面性和鲁棒性。

  • 高效计算,适用性广

    • 采用简单有效的前向填补和滑动窗线性插值方法,计算成本低,适用于大规模数据集的快速处理。

    • RANSAC拟合和孤立森林方法适用于复杂数据分布,能够处理高维数据和噪声数据。

  • 可视化展示,直观评估

    • 通过绘制处理前后的相关性热力图和特征对比图,直观展示数据处理效果,便于评估和验证处理方法的有效性。

    • 可视化展示有助于理解数据特征和变化,增强数据处理的透明度和解释性。

程序结果

各特征变量清洗前后的数据对比:

部分程序

%% 相关性极差的也定义为异常值
% 处理:采用Ransac拟合后替代  公众号:《创新优化及预测代码》
x = res_new(:, 1);   % 提取第1列数据作为自变量
y = res_new(:, end); % 提取最后一列数据作为因变量
xyPoints = [x y];    % 组合自变量和因变量% RANSAC直线拟合
sampleSize = 30;   % 每次采样的点数
maxDistance = 400; % 内点到模型的最大距离
fitLineFcn = @(xyPoints) polyfit(xyPoints(:, 1), xyPoints(:, 2), 1);                           % 拟合函数,采用polyfit进行线性拟合
evalLineFcn = @(model, xyPoints) sum((y - polyval(model, x)).^2, 2);                           % 距离估算函数,计算点到拟合线的距离
[modelRANSAC, inlierIdx] = ransac(xyPoints, fitLineFcn, evalLineFcn, sampleSize, maxDistance); % 使用RANSAC算法拟合直线,并提取内点的索引
modelInliers = polyfit(xyPoints(inlierIdx, 1), xyPoints(inlierIdx, 2), 1);                     % 对内点进行最小二乘法线性拟合figure;
plot(xyPoints(inlierIdx, 1), xyPoints(inlierIdx, 2), 'p',MarkerSize=10);    % 绘制内点
hold on;
plot(xyPoints(~inlierIdx, 1), xyPoints(~inlierIdx, 2), 'r.',MarkerSize=10); % 绘制外点
hold on;inlierPts = xyPoints(inlierIdx, :);                        % 提取内点数据
x2 = linspace(min(inlierPts(:, 1)), max(inlierPts(:, 1))); % 生成内点自变量范围的等间距点
y2 = polyval(modelInliers, x2);                            % 计算内点拟合直线上的值
plot(x2, y2, 'g-',LineWidth=2);                            % 绘制RANSAC直线拟合结果
hold off;title('最小二乘直线拟合 与 RANSAC直线拟合 对比');                    % 设置图标题
xlabel(variableNames{1});                                            % 设置X轴标签
ylabel(variableNames{end});                                          % 设置Y轴标签
legend('内点', '噪声点', 'RANSAC直线拟合', 'Location', 'NorthWest'); % 添加图例 % 公众号:《创新优化及预测代码》%% 残差-孤立森林  公众号:《创新优化及预测代码》
% 计算Ransac理论值
T_linear = (modelRANSAC(1) * res_new(:, 1) + modelRANSAC(2));       % 计算RANSAC理论直线值
for i = 1:size(T_linear, 1)if T_linear(i, end) < 0T_linear(i, end) = 0;                                       % 将理论值小于0的部分设为0end
end
residual_power = abs(res_new(:, end) - T_linear); % 计算实际值与理论值的残差% 孤立森林判断异常值
[error_pos2] = iso_forest([res_new(:, :) residual_power]); % 使用孤立森林算法检测异常值 % 公众号:《创新优化及预测代码》%% 替代异常值
for i = 1:size(error_pos2, 2)res_new(error_pos2{i, 1}, end) = T_linear(error_pos2{i, 1}); % 将检测出的异常值替换为理论值
end
res_new(~inlierIdx, end) = T_linear(~inlierIdx);                 % 将RANSAC检测出的异常值也替换为理论值

部分内容源自网络,侵权联系删除!

欢迎感兴趣的小伙伴关注并私信获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!

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

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

相关文章

PTA基础题考点汇总

一&#xff1a;字符串&#xff08;数组&#xff09;的逆序&#xff0c;栈的方法 **字符串数组的逆序 : ** 标准容器库的知识&#xff1a;定义stack容器于字符串&#xff1a;stackv; string s&#xff1b; //这里用到了c中stl&#xff08;标准容器库的知识&#xff09;stack&…

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能&#xff0c;将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型&#xff0c;现在我们调整下&#xff0c;将其数据类型调整为实体&#xff0c;如下图所示&#xff1a; 数据类型需要选择实体&#xff0c;并在实…

STM32单片机系统

1.STM32最小系统 微型计算机&#xff08;面&#xff09; 单片机最小系统是指能够将单片机芯片运行所必需的最少的硬件电路集成在一起的系统。 它是一种基本的单片机应用系统&#xff0c;通常由主芯片&#xff0c;时钟电路&#xff0c;复位电路&#xff0c;电源电路&#xff0c…

Ubuntu/Linux SSH 端口转发

文章目录 Ubuntu/Linux SSH 端口转发概述本地端口转发场景一场景二 参考资料 Ubuntu/Linux SSH 端口转发 概述 SSH, Secure Shell 是一种在网络上用于安全远程登录到另一台机器的工具。除了远程登录以外&#xff0c;ssh 的端口转发是它的另一项强大功能。通过 ssh 端口转发功…

计算机网络知识点整理1

目录 激励的话 一、计算机发展的三个阶段 二、互联网标准化工作 三、互联网的组成 边缘部分 核心部分 电路交换的主要特点 分组交换的主要特点 四、三大交换方式的主要特点 总结 激励的话 没关系的&#xff0c;有三分钟热度&#xff0c;就有三分钟收获 一、计算机…

RabbitMQ实践——使用WebFlux响应式方式实时返回队列中消息

大纲 Pom.xml监听队列实时返回消息测试完整代码工程代码 在之前的案例中&#xff0c;我们在管理后台收发消息都是通过短连接的形式。本文我们将探索对队列中消息的实时读取&#xff0c;并通过流式数据返回给客户端。 webflux是反应式Web框架&#xff0c;客户端可以通过一个长连…

捷云等保一体机 产品服务一站式等保合规交付解决方案

等保2.0的变化 2019 年 5 月 13 日&#xff0c;网络安全等级保护制度 2.0 国家标准&#xff08;简称“等保 2.0”&#xff09;正式发布&#xff0c;将等保 2.0 基本要求、测评要求、安全设计技术要求框架统一为安全管理中心支持下的三重防护结构框架。定级对象在按照等保 2.0 …

Python爬虫-贝壳新房

前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地…

TensorFlow高阶API使用与PyTorch的安装

欢迎来到 Papicatch的博客 文章目录 &#x1f349;TensorFlow高阶API使用 &#x1f348;示例1&#xff1a;使用tf.keras构建模型 &#x1f34d;通过“序贯式”方法构建模型 &#x1f34d;通过“函数式”方法构建模型 &#x1f348;示例2&#xff1a;编译模型关键代码 &am…

ArkTS开发系列之导航 (2.6 图形)

上篇回顾&#xff1a;ArkTS开发系列之导航 (2.5.2 页面组件导航&#xff09; 本篇内容&#xff1a; 显示图片、自定义图形和画布自定义图形的学习使用 一、知识储备 1. 图片组件&#xff08;Image&#xff09; 可以展示jpg 、png 、svg 、gif等各格式的网络和本地资源文件图…

AI 开发平台(Coze)搭建小游戏《挑战花光10亿》

前言 本文讲解如何从零开始&#xff0c;使用扣子平台去搭建一个小游戏 这是成品链接&#xff1a;挑战花光10亿 - 扣子 AI Bot (coze.cn) 欢迎大家去体验一下 效果 正文 什么是coze平台&#xff1f; 扣子&#xff08;Coze&#xff09;是字节跳动推出的一站式 AI 开发平台&am…

周末设计高端企业_集团官网主题Discuz模板

风格名称: 周末设计_高端企业_集团官网 适用版本: Discuz! X3.0、X3.1、X3.2、X3.3、F1.0 风格编码: 使用语言包结构&#xff0c;适合全部编码 周末设计高端企业_集团官网主题Discuz模板

会话会话会话

目录 1.会话 1.1 为什么需要会话控制 1.2 域对象的范围 1.2.1 应用域的范围 1.2.2 请求域的范围 1.2.3 会话域的范围 1.3 Cookie技术 1.3.1 Cookie的概念 1.3.2 Cookie的作用 1.3.3 Cookie的应用场景 1.3.4 Cookie的入门案例 ① 目标 ② Cookie相关的API ③ Serv…

C++ | Leetcode C++题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; class Solution {const int L 10;unordered_map<char, int> bin {{A, 0}, {C, 1}, {G, 2}, {T, 3}}; public:vector<string> findRepeatedDnaSequences(string s) {vector<string> ans;int n s.length();if (n < L…

GPOPS-II教程(1): 语法和一个最优控制问题案例

文章目录 一、写在前面二、GPOPS-II结构2.1 setup的语法2.2 function的语法2.2.1 setup.functions.continuousfun2.2.2 setup.functions.endpoint 2.3 bounds的语法setup.guessoutput 三、例题3.1 问题描述3.2 代码部分3.2.1 main function3.2.1.1 初始参数设置3.2.1.2 边界条件…

安装VEX外部编辑器

Houdini20配置VEX外部编辑器方法_哔哩哔哩_bilibili 下载并安装Visual Studio Code软件&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 在Visual Studio Code软件内&#xff0c;安装相关插件&#xff0c;如&#xff1a; 中文汉化插件vex插件 安装Houdini Expr…

图像处理Python库--图片裁剪、缩放、灰度图、圆角等

图像处理Python库 py-img-processor1. 安装2. 使用(Usage)2.1 运行配置2.2 图像处理处理函数图像处理参数为字符串图像处理参数为JSON 命令行提取图像主色调 py-img-processor Image editor using Python and Pillow. 依赖Pillow开发的Python库&#xff0c;用于图像编辑处理。…

nest.js关键笔记

Nest.js 介绍核心功能设计模式&#xff1a;IOC 控制反转 DI 依赖注入前置知识&#xff1a;装饰器前置知识装饰器-实现一个GET请求 Nestjs脚手架Nestjs cli 常用命令 RESTful 风格设计Nestjs 控制器控制器中常见的参数装饰器 Session 实例Nestjs 提供者**工厂模式**异步模式 Nes…

【Unity服务器01】之【AssetBundle上传加载u3d模型】

首先打开一个项目导入一个简单的场景 导入怪物资源&#xff0c; AssetBundle知识点&#xff1a; 1.指定资源的AssetBundle属性标签 &#xff08;1&#xff09;找到AssetBundle属性标签 &#xff08;2&#xff09;A标签 代表&#xff1a;资源目录&#xff08;决定打包之后在哪…

如何给文档设置密码?电脑文件安全加密的详细操作步骤(10种方法)

在数字化时代&#xff0c;电脑文件的安全和隐私至关重要。通过给电脑的文件或者文件夹设置密码和加密&#xff0c;可以有效保护你的重要文件不被未经授权的人员访问&#xff0c;特别是公司的重要岗位&#xff0c;一些特殊的机密文件&#xff0c;投标文件&#xff0c;资金文件等…