我有两列缺失值的神经网络训练数据。(还有许多其他列没有缺失值。)
例如
Height | Weight
180 | 70
175 | N/A
N/A | N/A
我想填充缺失值并规范化列。
数据是高度和重量,所以我认为一个好的填充值是 0 或 -1。这是基于Python 中的深度学习一书:
通常,对于神经网络,将缺失值输入为 0 是安全的,条件是 0 还不是有意义的值。
编辑我假设 0 在值为 150-200 的数据集中没有意义
还建议我通过减去平均值并除以每列的 std 来标准化数据。
这两个本身都很好 - 我理解如何以及为什么要这样做。我不明白如何将它们结合起来。我也可以...
- 填充缺失值然后归一化,但是a)我的零将不再是零(我的网络仍然会知道它们是一个特殊值吗?),并且b)零会在一定程度上影响平均值/标准差,由多少值决定缺失。我想我担心这会产生奇怪的分布
- 规范化然后填充缺失值。但是在我标准化我的数据之后,0 现在是我的列的平均值,因此不是同类填充值。我宁愿让网络知道这些值是未填充的,也不愿假设它们都取平均值
我正在使用带有Dense
层的 Keras、Numpy 和 Pandas 来解决多类分类问题。