ValueError: Input contains NaN, infinity or a value too large for dtype('float32').の対処
上記のエラーが出た。
以前も遭遇したが対処を忘れて調べ直した。
また困りそうなのでメモメモ。
発生場面
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())
解決!!!
まとめ
僕みたいな初心者が少しでも救われることを信じて。。。
Author And Source
この問題について(ValueError: Input contains NaN, infinity or a value too large for dtype('float32').の対処), 我々は、より多くの情報をここで見つけました https://qiita.com/KeisukeN/items/f8b2ae0ec96cde1f5c78著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .