图像数组运算相关问题(nan/inf)
新年第一更!祝愿新的一年技术长足进步哈!
最近在用sklearn的回归分析模型拟合预测遥感图像,遇到了一些问题,好在一一解决,现在总结一下。
1.首先输入sklearn的数据必须reshape(-1,1),只有转换成这种格式才能进行输入。对于多因子的数据,要concatenate((a,b),axis=1),按列进行叠加。
2. ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
这个报错意思是输入的数据里有Nan/Inf,对于nan,可以用data==data False或者data[np.isnan(data)] = 0排除;
而inf是无限大,通常由于分母为0而生成,用data[np.isinf(data)] = 0来消除。图像运算里经常会出现这种情况,注意是否有分母为0哦!
3.模型中数据进行了标准化,那么输入图像时候也要标准化。
4.最后学到一个sklearn替换nan的方法。
imp = Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)
data = imp.fit_transform(data)
2020/1/1