数据集含有缺测值
作者Lou Xiao创建时间2020-09-18 14:59:00更新时间2020-09-18 14:59:00
深度学习(deep learning)中,常常遇到数据集含有缺测值的问题,本文简要地给出解决的思路。
下面列出一些常用的思路:
1. 抛弃含有缺测值的样本
当样本数量非常多,而含有缺测值的样本所占的比例很低时,可以删掉含有缺测值的样本。
2. 插补缺测值
当含有缺测值的样本所占的比例很高时,就不能把这些含有缺测值的样本删掉,必须考虑插补缺测值。插补的方法很多:
- 用全局平均值替换
- 线性插值
- 使用机器学习的方法拟合后进行插值
3. 设置为特殊值
机器学习算法可以从样本中learning那些缺测值,但是会显著增加(要求)机器学习模型的复杂度(能力),如果模型的能力低于“所需最小值”,模型可能不收敛。
目前没有通用的方法,下面给出一个方向,在具体问题中测试效果:
- 把样本 Min-Max规范化,把特征取值范围缩放到[0,1],把缺测值设置为0
- 把样本 标准正态化,把缺测值设置为0
3.1 Min-Max规范化:
1.双击鼠标左键复制此行;2.单击复制所有代码。
1
import numpy as np
2
def min_max_regularize(arr, new_min, new_max):
3
grid_min = np.min(arr)
4
grid_max = np.max(arr)
5
arr = (arr - grid_min) / (grid_max - grid_min) * (new_max - new_min) + new_min
6
return arr
3.2 标准正态化:
1.双击鼠标左键复制此行;2.单击复制所有代码。
1
import numpy as np
2
def normalize(arr):
3
std = np.std(arr.reshape(-1))
4
avg = np.average(arr.reshape(-1))
5
arr = (arr - avg) / std
6
return arr, avg, std
文章目录