machine-learning - 用异常值在区间内规范化数据
问题描述
我有一个包含一些异常值的数据集,它们比正常值大 10 或 100 倍。我不能扔掉这些行,我想在一个区间内规范化这些数据[0, 1]
首先,这是我想做的事情:
只需对我的数据集的行进行排名,并使用排名位置作为变量进行标准化。因为我们这里有一个均匀分布,所以很容易。问题是没有测量值的差异,因此如果该数据集中没有中间值示例,差异较大的值可能具有相似的归一化值
使用
sklearn.preprocessing.RobustScaler
方法。但是我得到了 和 之间的标准化-0.4
值300
。以这种规模标准化某些东西仍然不好以线性方式在所有值之间分配归一化值 where
0
,并以类似于我上面提到的排名策略的方式在剩余值之间分配值0.8
quantile <= 0.8
0.8
1.0
制作一维
Kmeans
算法来定位所有接近值并获得具有非异常值的集群。对于这些值,我只是通过简单地在 0 和它所代表的分位数之间分配归一化值(value - mean) / (max - min)
,对于剩余的异常值,我使用排名策略在大于分位数和 1 的值之间分配范围创建一个过滤器函数,如 sigmoid,并将值乘以它。较小的值保持不变,但离群值近似为非离群值。然后,我将其标准化。但是我该如何设计这个 sigmoid 的参数呢?
首先,我想得到一些关于这些策略的反馈,你怎么看?
还有,这个问题一般是怎么解决的?有没有推荐的参考资料?
谢谢你=)
解决方案
推荐阅读
- c# - C# If Else 与 <>
- java - DynamoDB Java v2 sdk 的 QueryEnhancedRequest 中的限制方法未按预期限制
- json - 赛普拉斯访问数组元素 API 响应嵌套 json
- wget - 如果 wget erobots=off 不起作用,如何检索外部文件?
- python - 树莓派和python的问题
- indexing - Lua,如何访问使用数组的索引
- python - 如何从我的列表 python 3.2 中删除“”
- javascript - 如何从 f.stat() 获得回报?
- python - 根据出现和顺序 Pandas 计算 id
- reactjs - ScrollToBottom 函数在 React 钩子 reactjs 中不起作用