在特征处理中,最重要的我觉得是对异常数据的处理。之前我们已经看到了power特征的分布尤为不均匀,那么这部分有两种处理方式,一种是对极端值进行舍去,一部分是采用log的方式进行压缩,那么这里都进行介绍。 首先是对极端值进行舍去,那么可以采用箱型图来协助判断,下面封装一个函数实现:
时间: 2024-02-21 16:57:47 浏览: 40
好的,以下是一个对极端值进行舍去的函数,它会根据给定的数据和阈值,将超出阈值的值设为NaN,并返回处理后的数据:
```python
import numpy as np
def remove_outliers(data, threshold=3):
q1 = np.quantile(data, 0.25)
q3 = np.quantile(data, 0.75)
iqr = q3 - q1
upper_bound = q3 + threshold * iqr
lower_bound = q1 - threshold * iqr
data[data > upper_bound] = np.nan
data[data < lower_bound] = np.nan
return data
```
该函数首先计算了数据的四分位数 q1 和 q3,然后根据箱型图的规则,将超过上下界的值设为 NaN。其中,上下界的计算方式为:上界 = q3 + 1.5 * IQR,下界 = q1 - 1.5 * IQR,其中 IQR 是四分位数间距。
使用该函数只需要传入你想要处理的数据和阈值即可,例如:
```python
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100])
processed_data = remove_outliers(data, threshold=2)
print(processed_data)
```
输出结果为:
```
[1. 2. 3. 4. 5. 6. 7. 8. 9. 10. nan]
```
可以看到,超过阈值的值已经被设为了 NaN。
阅读全文