octave - 如何修复我的代码以正确检测和删除异常值
问题描述
我正在尝试从数据集(1372 行,4 列)中检测和删除异常值。
我写了一些关于找到它们的代码,但我不确定这是否是最好的方法。尽管我试图删除它们,但数字 32 并没有被删除,而是取代了它们。我不明白为什么。
% Find outliers
meanValue = mean(data_banknote_authentication(:,1:4));
absoluteDeviation = abs(data_banknote_authentication(:,1:4) - meanValue);
mad = median(absoluteDeviation);
sensitivityFactor = 3 % I am not sure if this is correct
thresholdValue = sensitivityFactor * mad;
outlierIndexes = abs(absoluteDeviation) > thresholdValue
outliers = data_banknote_authentication(:,1:4)(outlierIndexes);
nonOutliers = data_banknote_authentication(:,1:4)(~outlierIndexes);
% Remove outliers
for i=1:1372
for k=1:4
if (outlierIndexes(i,k) == 1)
data_banknote_authentication(i,k) = ' ';
%data_banknote_authentication(i,k) = " ";
endif
endfor
endfor
我想删除异常值,但实际结果是它们的位置现在有数字 32。如何从数据集中删除它们?
解决方案
推荐阅读
- node.js - Firebase 云功能服务器错误。getaddrinfo ENOTFOUND storage.googleapis.com
- javascript - 添加日志以存储有关用户操作 JavaScript 的信息
- javascript - 如何在图中找到元素?
- c++ - 错误 C2678:未找到采用“const_Ty”类型的左操作数的运算符(或没有可接受的转换)
- linux - 安装 .run 文件期间的浮点异常(核心转储)
- azure - ASP.Net Core 3.1 在 Azure 应用服务上加载 Azure Key Vault 时出错
- mysql - 有没有办法从 MySQL 查询中计算总数?
- node.js - 如何使用 NodeJS / Express 控制对 S3 的文档访问
- python - 以不同的速度创建 GIF
- apache - 如何获得状态码 307 而不是 200?我在 ubuntu 18.04 中使用 apache2