2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

上記のエラーが出た。
以前も遭遇したが対処を忘れて調べ直した。
また困りそうなのでメモメモ。
#発生場面
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())

解決!!!
#まとめ
僕みたいな初心者が少しでも救われることを信じて。。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?