Keras拟合忽略纳米值

时间:2016-06-10 12:06:31

标签: python numpy neural-network keras

我正在训练神经网络做回归,(1输入和1输出)。我们xy分别是通常的输入和输出数据集。

我的问题是y数据集(不是x)的某些值设置为nan,因此拟合为nan。我想知道是否有一个选项可以忽略拟合中的nan值,类似于numpy函数np.nanmean来计算平均忽略nans等等。

如果该选项不存在,我想我必须找到nan值并手动擦除它们,同时擦除对应于nan位置的x中的值在y

x       y
2       4
3       2
4      np.nan
5       7
6      np.nan
7      np.nan

在这个简单的例子中,应删除y列中的nan值,同时删除x列中的相应值(4,6,7)。

谢谢。

编辑:好的,我在过滤nans时遇到了问题,我这样做:

for index, x in np.ndenumerate(a):
    if x == np.nan:
        print index, x

并且它没有打印任何东西,我确信有纳米值...

编辑(自我答复):好的,我找到了一种本地化nans的方法:

for index, x in np.ndenumerate(a):
      if x != x:
           print index, x

1 个答案:

答案 0 :(得分:2)

如评论中所述,只需删除nan作为预处理步骤:

import numpy as np

x = range(2,8)
y = [4,2,np.nan,7,np.nan,np.nan]

for a,b in zip(x,y):
    if str(b) == 'nan':
        x.remove(a)
        y.remove(b)

print x,y

生成[2, 3, 5] [4, 2, 7]

如果您正在使用某种工具预处理提供np.nan的数据,请检查API是否允许您禁用此行为,并花一点时间考虑这是否真正< / strong>你想要的行为(或者如果你想将它映射到常量,因为你发现你的输入很有价值,即使它们没有标签)。