1. 程式人生 > >python將nan, inf轉為特定的數字

python將nan, inf轉為特定的數字

   在有些機器學習和神經網路模型訓練過程中,可能會遇到原始資料集經過預處理後,資料中包含Nan、Inf等佔位符,導致模型訓練損失函式計算出現偏差,最終導致模型準確率低的問題。所以需要在預處理階段,將該部分資料進行處理操作,常見操作為資料標準化處理後用0代替, 另一種方法是利用插值方法進行資料填充。本部分只講解0填充方法。

程式碼:

import numpy as np
a = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.inf, 3, 4], [1, 1, 1, 1], [2, 2, 2, 2]])
print a
where_are_nan = np.isnan(a)
where_are_inf = np.isinf(a)
a[where_are_nan] = 0
a[where_are_inf] = 0
print a
print np.mean(a)

結果:

[[ nan  nan   1.   2.]
 [ inf  inf   3.   4.]
 [  1.   1.   1.   1.]
 [  2.   2.   2.   2.]]
[[ 0.  0.  1.  2.]
 [ 0.  0.  3.  4.]
 [ 1.  1.  1.  1.]
 [ 2.  2.  2.  2.]]
1.375