sklearn インターフェースがエラーを報告する Input contains NaN, infinity or value too large for dtype('float64')
2022-01-21 07:22:39
1. エラーのシナリオ
あるパッケージが スカラーン インターフェースで、Input に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれると fit(x,y) でエラーが報告されます。
2. エラーの原因
/sklearn/utils/validation.py ファイルを見ると、次のようなコードがありました。
if is_float and (np.isfinite(_safe_accumulator_op(np.sum, X))): pass elif is_float: msg_err = "Input contains {} or a value too large for {!r}. " if (allow_nan and np.isinf(X).any() or not allow_nan and not np.isfinite(X).all()): type_err = 'infinity' if allow_nan else 'NaN, infinity' raise ValueError( msg_err.format (type_err, msg_dtype if msg_dtype is not None else X.dtype) ) # for object dtype data, we only check for NaNs (GH-13254) elif X.dtype == np.dtype('object') and not allow_nan: if _object_dtype_isnan(X).any(): raise ValueError("Input contains NaN")
を渡すと
np.isinf(X).any()=True or np.isfinite(X).all()=False to determine if the dataset contains infinite values
3. ソリューション
any() は or 演算で、任意の要素を True、出力を True にする。
all() は with 演算で、すべての要素が True になり、出力は True になります。
データセットをチェックし、もし
np.isinf(X).any()=False
np.isfinite(X).all()=Trueとする。
np.isnan(X).any()=False
であれば、データセットに欠損値や無限大の値が含まれていないことになります。
4. その他のチェック
チェック3が完了した時点で、私のデータセットには問題がないことがわかりました。しかし、まだInputが表示されます。 が含まれています。 NaN、infinity、またはdtype('float64')に対して大きすぎる値があり、考え込んでしまいます。
X.copy().fillna(-1).reset_index(drop=True)
Xは欠損値埋め操作を行ったが、yに何か問題があるのだろうか?
を実行した。
y = y.reset_index(drop=True)
というわけで、プログラムは元に戻りました・・・・。
5. まとめ
このエラーが発生した場合、以下の確認が必要です。
- 欠落している値
- 無限大の値
- データフレームまたはシリーズのreset_index
関連
-
[解決済み】Pythonが見つからない。引数なしで実行するとMicrosoft Storeからインストールされる、または設定からこのショートカットを無効にする
-
[解決済み】 AttributeError: 'str' オブジェクトには 'items' という属性がない
-
[解決済み】「'float'オブジェクトを暗黙のうちにstrに変換できない」【重複あり
-
Pygame Displayモジュールの使用方法
-
[解決済み] Pandas.read_csv "unexpected end of data" Error
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] デーモン作成時にダブルフォークを行う理由は何ですか?
-
[解決済み] ImportError: jinja2 という名前のモジュールはありません。
-
[解決済み] django.core.exceptions.ImproperlyConfigured: MySQLdb モジュールの読み込みに失敗しました。MySQLdb という名前のモジュールはありません。
-
UnicodeDecodeError: 'ascii' コーデックは、ポジションソリューションのバイト 0xe6 をデコードできません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] モジュールに属性がない
-
[解決済み] ファイルから圧縮データ(.npz)をnumpy.loadで読み込む。
-
[解決済み] 致命的なエラーです。Python.h: そのようなファイルやディレクトリはありません
-
[解決済み] stdoutの値が正しくありません。
-
[解決済み] Scipy Normaltestはどのように使用されるのですか?
-
[解決済み] シーボーンプロットでsns.setを使用する場合
-
[解決済み] int' オブジェクトには 'append' という属性がありません。
-
[解決済み] scikit-learn の TfidfVectorizer 。ValueError: np.nan は無効なドキュメントである。
-
Understanding TypeError: unsupported operand type(s) for ^: Python の 'float' と 'int' (単純)
-
エラー処理 TypeError: initial_value must be unicode or None, not str