C 使用拉依达准则(3σ准则)剔除异常数据( Net剔除一组数据中的奇异值)

本文介绍了一种基于3σ准则的电池数据异常检测方法,详细解释了3σ准则的原理及其在电池电压数据中的具体实现过程。通过剔除不符合正态分布的异常数据,提高了数据分析的准确性。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1、问题的提出:

电池生产中,遇到一批电池的测量结果数据:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
电压值电池个数
电压值电池个数
电压值电池个数
电压值电池个数
0.0561 4.091 4.14617 4.17413434
0.3211 4.0941 4.14717 4.17513973
0.7671 4.0992 4.14819 4.17613339
0.9721 4.1121 4.14923 4.17712275
3.0981 4.1193 4.1526 4.17810309
3.1871 4.121 4.15140 4.1798376
3.3191 4.1211 4.15250 4.186324
3.5261 4.1223 4.15375 4.1814667
3.531 4.1253 4.15484 4.1823340
3.5321 4.1262 4.155100 4.1832358
3.541 4.1271 4.156118 4.1841719
3.5411 4.1282 4.157153 4.1851199
3.5441 4.1293 4.158173 4.186839
3.5452 4.132 4.159248 4.187622
3.8321 4.1322 4.16335 4.188417
3.9281 4.1332 4.161419 4.189304
3.931 4.1344 4.162540 4.19170
3.9511 4.1351 4.163731 4.191124
3.9631 4.1365 4.164962 4.19277
3.9721 4.1374 4.1651359 4.19343
3.9732 4.1386 4.1661846 4.19444
4.0451 4.1399 4.1672621 4.19525
4.0461 4.142 4.1683728 4.19620
4.0791 4.1416 4.1695086 4.1978
4.0851 4.1424 4.176822 4.1989
4.0871 4.1436 4.1718649 4.1995
4.0881 4.14413 4.17210210 4.23
4.0891 4.14514 4.17312072   

其中,有一部分电池的电压出现过低和过高的情况,并不符合正态分布。

现在需要剔除这些异常的电池数据。

2、方法原理:

3σ准则又称为拉依达准则,它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。
在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴
3σ原则:
数值分布在(μ-σ,μ+σ)中的概率为0.6827
数值分布在(μ-2σ,μ+2σ)中的概率为0.9544
数值分布在(μ-3σ,μ+3σ)中的概率为0.9974
可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%。


3、C#的具体实现:

//定义电压-数量关系的类
    public class VoltageCount
    {
        public Double Voltage { get; set; }
        public int CountV { get; set; }
        public VoltageCount()
        {
        }

        public VoltageCount(Double voltage, int countV)
        {
            this.Voltage = voltage;
            this.CountV = countV;
        }
    }


//关键类使用拉依达准则(3σ准则)剔除数据异常

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Photo.QQAA.Net.Helper
{
    /// <summary>
    /// 使用拉依达准则(3σ准则)剔除数据异常
    /// </summary>
    public class ExceptionVoltageHelper
    {
        List<VoltageCount> listVoltageCount;
        double average = 0.0;
        int _badDataCount = -1;//奇异值个数

        /// <summary>
        /// 获取奇异值个数
        /// </summary>
        public int BadDataCount
        {
            get { return _badDataCount; }
        }

        public ExceptionVoltageHelper(List<VoltageCount> list)
        {
            this.listVoltageCount = list;
            SetAverage();
        }

        /// <summary>
        /// 取得平均电压值
        /// </summary>
        /// <returns></returns>
        protected double GetAvgVoltage()
        {
            double avg = 0;
            double total = 0;
            int allCount = 0;
            foreach (VoltageCount vc in listVoltageCount)
            {
                double v = vc.Voltage;
                int c = vc.CountV;
                total += v * c;
                allCount += c;
            }
            avg = total / (allCount * 1.0);

            return Math.Round(avg, 3, MidpointRounding.AwayFromZero);
        }

        /// <summary>
        /// 平均值
        /// </summary>
        /// <returns></returns>
        void SetAverage()
        {
            this.average = GetAvgVoltage();
        }

        /// <summary>
        /// 标准差
        /// </summary>
        /// <returns></returns>
        double StandardDeviation()
        {
            List<double> listDataV = new List<double>();
            foreach (VoltageCount vc in this.listVoltageCount)
            {
                double v = vc.Voltage;
                int countV = vc.CountV;
                for (int i = 0; i < countV; i++ )
                {
                    listDataV.Add((v - this.average) * (v - this.average));
                }
            }
            double sumDataV = listDataV.Sum();
            double std = Math.Sqrt(sumDataV / (listDataV.Count - 1));

            return std;
        }

        public List<VoltageCount> GetGoodList()
        {
            _badDataCount = 0;
            double sd3 = StandardDeviation() * 3;//3倍标准差
            List<VoltageCount> listVC = new List<VoltageCount>();
            foreach (VoltageCount vc in this.listVoltageCount)
            {
                if (Math.Abs(vc.Voltage - this.average) <= sd3)
                {
                    listVC.Add(vc);
                }
                else
                {
                    _badDataCount += vc.CountV;
                }
            }

            return listVC;
        }

    }
}

4、局限性及注意事项:

本3σ法则仅局限于对正态或近似正态分布的样本数据处理,且适用于有较多组数据的时候。
这种判别处理原理及方法是以测量次数充分大为前提的,当测量次数的情形用准则剔除粗大误差是不够可靠的。因此,在测量次数较少的情况下,最好不要选用准则,而用其他准则。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
内容概要:本文系统阐述了面向综合能源系统的算力-电力-热力联合优化调度策略,并提供基于Matlab的完整代码实现。研究围绕多能源耦合系统中的协同优化问题展开,深度融合计算资源调度与能源系统运行,构建包含算力任务分配、电力供需平衡与热力网络约束的联合优化模型。重点解决了高比例可再生能源接入下的不确定性挑战,采用分布鲁棒优化、粒子群优化(PSO)等先进算法提升调度方案的经济性、可靠性与灵活性。同时引入隐私保护机制与联邦学习架构,保障多主体间数据安全协同。配套资源涵盖详细的仿真代码、案例数据算法工具包(如YALMIP),支持模型快速复现与扩展研究,适用于复杂能源系统建模与智能算法验证。; 适合人群:具备电力系统、热力工程、自动化或运筹优化等相关背景,熟悉Matlab/Simulink仿真环境,从事能源系统规划与运行研究的研究生、博士生及科研人员;特别适合开展综合能源系统优化、智能调度算法开发、SCI论文复现与科研创新的研究者。; 使用场景及目标:①构建算力-电力-热力多能流协同调度模型并进行仿真分析;②研究含风电等不确定性源的鲁棒优化调度方法;③应用PSO、分布鲁棒优化等智能算法解决实际能源调度问题;④作为高水平期刊论文复现、算法对比与科研成果转化的技术支撑; 阅读建议:建议结合公众号“荔枝科研社”发布的网盘资源,按模块顺序学习模型构建与算法实现细节,重点关注目标函数设计、约束条件建模及求解器调用逻辑,通过调试代码与修改参数深化理解,并开展二次开发以拓展应用场景。
内容概要:本文提出了一种低通信开销的孤岛微电网二次精准调控与功率均分分布式控制方法,并基于Simulink平台进行了系统建模与仿真实现。该方法聚焦于解决孤岛微电网中电压频率恢复不精确、有功与无功功率分配不均的问题,采用分布式控制架构替代传统集中式控制,有效规避单点故障风险,提升系统的可靠性与可扩展性。通过优化通信机制与控制器设计,显著降低了节点间通信频率与数据负载,在保证控制精度的同时实现了高效的协同调控。仿真结果验证了该方法在动态响应速度、抗干扰能力及功率均分精度方面的优越性能,尤其适用于高比例分布式能源接入的复杂微电网环境。; 适合人群:电力系统、自动化、新能源等相关专业的研究生、科研人员及从事微电网控制、分布式能源管理与智能配电网开发的工程技术人员。; 使用场景及目标:①用于孤岛微电网能量管理系统的设计与优化,提升系统稳定性与电能质量;②支撑高渗透率可再生能源接入下微电网的自主协调控制研究;③为分布式控制算法在实际微电网工程中的应用提供有效的仿真验证手段与技术参考。; 阅读建议:此资源以Simulink仿真为核心工具,建议读者结合自动控制原理、电力电子与微电网技术背景进行深入学习,重点关注控制策略的实现逻辑、通信拓扑设计及参数整定方法,宜结合所提供的模型开展复现实验,并可进一步拓展至多微网互联与主从微网协同控制的研究方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值