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))