ValueError: Input contains NaN, infinity or a value too large for dtype('float32')

问题

在我使用RandomForestClassifier()的时候报了错

ValueError: Input contains NaN, infinity or a value too large for dtype('float32').

检查了一下和前两个NaN, infinity无关

通过loc定位最大的值,发现最大值为119999957,超出了float32范围(sklearn的RandomForestClassifier会默认将array转换为float32)

arr = train
arr.loc[:,"Flow Duration"].max()

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字

方法

train = np.nan_to_num(train.astype(np.float32))
posted @ 2021-09-16 15:47  Pikachuuuuu  阅读(2392)  评论(0)    收藏  举报