1. ホーム
  2. パイソン

ValueErrorです。入力に NaN、無限大、または dtype('float32'64) に対して大きすぎる値が含まれています。一般的な処理

2022-01-23 05:40:43
 53 raise ValueError("Input contains NaN, infinity"

---> 54 "または %r." に対して大きすぎる値 % X.dtype)

上記の問題が発生する原因は、一般的にデータセットにnan値が存在することと、データについて以下のような仮定を持つことである。 numpy.ndarrayストレージ (タイプ(正)=) <class 'numpy.ndarray'> ).
まず、if np.isan(x)はxがナンであるかを判断するために用いられ、ナンであれば真を返すことが分かっています。 print(np.isnan(positive).any(), np.isnan(negative).any(), np.isnan(y).any()) この文は、positive, negative, y に nan 値があるかどうかを判定するために使用されます。戻り値が true, true, true の場合、次のように修正できます。positive[np.isan(positive)] = np.mean(positive[~np.isan(positive)])
ネガティブ[np.isan(negative)] = np.mean(ネガティブ[~np.isan(negative)]) つまり、正、負の中のナン値を、ナン値でない値の平均値に置き換える、もちろん中央値medianに置き換える

等の代わりに さらに、正、負が有限の値であるかどうかを判断するためにprint(np.isfinite(positive).all()) print(np.isfinite(negative).all()) 文を使用すると、偽を返すと、データの数が無限であることを意味し、この問題は一般的に限り修正ナノ値がエラーを報告しないようにします。

numpy.ndarrayの部分Nanの処理、例えば、numpy.ndarray type array=[[2,4,nan,6,nan],[4,45,3,nan,nan]] は、以下のコードで処理することが可能です。

 for i in range(len( 配列 )):
                    sample= 配列 [i]
                    for j in range(len(sample)):
                        もしnp.isan(sample[j])なら。
                            サンプル[j]=0 
すると、配列のナンがすべて0に置き換えられます。

(--- Python初心者のための小さな体験 ---)