利用标准差剔除异常数据

利用标准差剔除异常数据

参考文章:

(1)利用标准差剔除异常数据

(2)https://www.cnblogs.com/mojietuyoudianleng/p/9722982.html

(3)https://www.codeprj.com/blog/945c661.html


备忘一下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于机器学习等领域对于异常数据的处理十分重要,因此格拉布斯准则是一种常用的方法。下面是用C语言实现的格拉布斯准则剔除异常数据的代码: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #define N 10 // 数据个数 #define MAX_ITER 100 // 最大迭代次数 #define EPSILON 0.00001 // 收敛精度 #define THRESHOLD 1.5 // 异常值判定门限 int main() { double data[N] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 100}; // 待处理数据 double mean, std, delta; int iter = 0; int flag = 1; // 是否收敛的标志 while (flag && iter < MAX_ITER) { mean = 0; for (int i = 0; i < N; i++) { mean += data[i]; } mean /= N; std = 0; for (int i = 0; i < N; i++) { std += (data[i] - mean) * (data[i] - mean); } std = sqrt(std / (N - 1)); flag = 0; for (int i = 0; i < N; i++) { delta = fabs(data[i] - mean); if (delta > THRESHOLD * std) { data[i] = mean; flag = 1; } } iter++; } printf("Result:\n"); for (int i = 0; i < N; i++) { printf("%.2f ", data[i]); } printf("\n"); return 0; } ``` 该代码利用格拉布斯准则来迭代剔除异常值,直到所有异常值都被剔除或达到最大迭代次数为止。其中,`mean`表示数据的平均值,`std`表示数据标准,`delta`表示数据离平均值的偏。如果某个数据的偏超过了门限`THRESHOLD * std`,则将其替换为平均值`mean`,并将标志`flag`设置为1,表示还需要继续迭代。最终输出剔除后的数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值