我正在训练神经网络做回归,(1输入和1输出)。我们x
和y
分别是通常的输入和输出数据集。
我的问题是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
答案 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>你想要的行为(或者如果你想将它映射到常量,因为你发现你的输入很有价值,即使它们没有标签)。