コードを実行すると、これらの警告が常に4つのグループで散発的に発生します。特定のステートメントの前後にデバッグメッセージを配置してソースを特定し、そのオリジンを特定しようとしました。
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
これはNumpyの警告ですか?ダブルスカラーとは何ですか?
Numpyから
min(), argmin(), mean() and random.randn()
私もMatplotlibを使用します
浮動小数点計算エラーのように見えます。 numpy.seterr 関数をチェックして、発生場所に関する詳細情報を取得します。
私の場合、ゼロ除算であることがわかりました。
データ内のNaNまたはnull値がNumpyでこのエラーを生成する場合があります。たとえば、CSVファイルなどからデータを取り込み、numpy配列を使用してデータを操作している場合、問題はデータ取り込みに起因している可能性があります。既知の値を持つ小さなデータセットをコードに入力して、同じ結果が得られるかどうかを確認できます。
_numpy.mean
_に渡されるゼロサイズの配列は、この警告を発生させます(いくつかのコメントに示されているように)。
他の候補者の場合:
median
は、サイズがゼロの配列でもこの警告を生成します。他の候補者はこの警告を発しません:
min,argmin
_両方が空の配列でValueError
を発生させますrandn
は_*arg
_を取ります。 randn(*[])
を使用すると、単一の乱数が返されますstd,var
_は空の配列でnan
を返します私は同様の問題に遭遇しました-無効な値が検出されました...このエラーの原因を解明しようとして多くの時間を費やした後、私の場合はデータフレームのNaNによるものと考えています。パンダの欠落データの処理を確認してください。
なし==なしTrue
np.nan == np.nan False
NaNがNaNと等しくない場合、除算や乗算などの算術演算によりこのエラーがスローされます。
この問題を回避するためにできることがいくつかあります。
Pd.set_optionを使用して、分析で考慮する小数の数を設定して、無限小数が同様の問題を引き起こさないようにします-( 'display.float_format'、lambda x: '%.3f'%x)。
Df.round()を使用して数値を丸め、Pandaが分析から残りの数字を削除します。最も重要な、
NaNをゼロに設定df = df.fillna(0)。 NaNをゼロで埋めてもデータセットに適用されない場合は注意してください。これにより、レコードがゼロとして扱われるため、平均、標準などのNも変更されます。
Csvインポートで作業しているときは常に、df.dropna()を使用して、このような警告またはエラーをすべて回避してください。
np.var(np.array([]))
を計算しているときにこれに遭遇します。 np.var
は、この場合ゼロである配列のサイズを分割します。