top of page

その他 others

公開·1名のメンバー

無限大または桁大きすぎのエラーが出た時の対処法

Input X contains infinity or a value too large for dtype('float64')


僕の中では結構ゾッとする類のエラーです。内容は書いてあるとおり、「無限大の値または浮動小数として桁が大きすぎの値が含まれて処理できません」と言っています。このエラーは何がいやらしいかというと、どの数字がエラーを起こしているのかさっぱり分からないところにあります。木形式のランダムフォレストやLightgbmを使うときは標準化しないので別にいいのですが、深層学習モデルもやってみようするとやはり標準化したほうが精度が高くなることが多いので、やはり標準化したい。


roundを使って四捨五入すればよさそうなものですが、以前やってみてroundではだめだった記憶があります。


そこで、何とか動くようにする方法ですが、

np.clip()

を使います。


np.clip(対象となるデータ、最小値、最大値)

の形で使います。


例えば、

df['a÷b'] = df['a'] / df['b']

が怪しいとすると、これを 

df['a÷b'] = np.clip(df['a'] / df['b'], 0.000001, 1000000)

とします。すると

0.000001より小さいもの、1000000より大きいものは、自動的にそれぞれ0.000001と1000000に丸められてしまいます。


僕の場合、割り算をしているところのすべてに、これを使うことで何とか動いています。


nishikaの問題をやっていて出てきたのですが、不動産の価格でそこまで細かい数字は必要ないのでざっくりとやってしまいました。


細かい数字を必要としない場合でこの腹の立つエラーが出た時で、どうしてもコードを動かさなければいけない時は試してみてください。

(大小の桁数はご自分で調整してください)

閲覧数:38
PON
PON
2023年1月22日

ちょうど動かないエラーがあったので試してみます😊

新規投稿をお知らせします。

登録ありがとうございます。

© 2023 by Healthy Together. Proudly created with Wix.com

bottom of page