python - 如何以及何时处理数据集中的异常值(一般策略)
问题描述
我偶然发现了以下问题:
我正在从事数据科学的初学者项目。我得到了测试和训练数据拆分,现在我正在分析每个特征,然后将其添加到离散连续变量的数据框或连续变量的数据框。这样做我遇到了一个带有大异常值的特征。如果我要删除它们,我已经添加到子数据框中的其他功能将具有比此更多的列条目。
我应该找到一种策略来用“更好”的值覆盖异常值,还是应该重新考虑我的策略,在一开始就为两种类型的变量拆分训练数据?我不认为摆脱真实 train_data 中的异常行会有用......
解决方案
处理异常值的方法有很多。在我的数据科学课程中,我们使用了“数据插补”:
但在您开始替换或删除数据之前,重要的是分析异常值产生的差异以及异常值是否有效。
如果异常值无效,您可以删除异常值并使用数据插补,如下所述。
如果您的异常值有效,请检查有无异常值的结果差异。如果差异非常小,则没有问题。如果差异很大,您可以使用标准化和标准化。
您可以将异常值替换为:
- 随机值(不推荐)
- 基于启发式逻辑的值
- 基于其邻居的值
- 中位数、均值或方式。
- 基于插值的值(使用某个 ml 模型进行预测)
我建议使用具有最佳结果的策略。
Statquest 以非常简单易懂的方式解释了数据科学和机器学习的概念,所以如果您遇到更多理论问题,请参考他:https: //www.youtube.com/user/joshstarmer
推荐阅读
- python - 生成一个随机浮点数组,总和为 1,同时在 python 中修复一些元素(上限、下限和/或固定),
- python - bs4等python库不工作时如何抓取动态网页?
- python - (Pandas) 使用 apply 一次为多列设置值
- audio - 如果视频轨道在流中静音,则不会播放音频
- javascript - 带有 Flask 的 Firebase 身份验证 JS
- frida - Frida - android11 挂钩提供程序失败
- java - Mule 4 java类调用
- javascript - 将查询作为参数传递以表示
- sql - SQL 中的计算列
- php - 从 PHP 循环中创建 JSON 数组