上記のエラーが出た。
以前も遭遇したが対処を忘れて調べ直した。
また困りそうなのでメモメモ。
#発生場面
kaggleコンペ参加中に、submission用のtestファイルを
RandomForestClassifierでpredict時に発生した。
#エラー内容
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
訳)指定されたファイルにNaN、無限値、データタイプ(今回はfloat32)にしては大きすぎる値が含まれます。
#やったこと
とりあえず
df.info()
データにおかしな点がないかチェックした。
今回は全て必要なデータ数があることが確認できた。
ということは
NaNではなさそう?
次は無限大があればNaNに変更する処理を試した。
#マイナスの無限大もあるので、それも指定
df = df.replace([np.inf, -np.inf], nan)
#再度確認
df.info()
さっきは存在したデータが一つのコラムで減っていた。
つまり、無限大が存在してて、nanに変更されたということ。
ここまでくればもうあと少し!
nanをfillna()を使って平均値で置換した!
df = df[column].fillna(df[column.mean())
解決!!!
#まとめ
僕みたいな初心者が少しでも救われることを信じて。。。