問題タブ [smote]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
128 参照

python - imblearn の問題: SMOTENC "TypeError: 'int' と 'str" のインスタンス間で '<' はサポートされていません''

SMOTENC を使用して、不均衡な分類の問題を解決しています。

行で次のエラーが発生しました。

TypeError: 'int' と 'str' のインスタンス間で '<' はサポートされていません

変数の型の問題であることは理解できますが、このエラーを解決する方法がわかりません。私はすでにしようとしました:

  1. 欠損値をすべて置き換える
  2. 考えられるすべての変数の型の指定ミスを修正

その他の有用な情報: データセットの最初の 6 つの変数は文字列で、その他は倍精度または整数です。

さらに情報が必要かどうか尋ねてください。

前もって感謝します。

0 投票する
0 に答える
155 参照

numpy - RAM を使い果たすことなく SMOTE をテンソルフロー データセットに適用する方法

私はほぼ 17k の画像を含む不均衡なデータ セットに取り組んでおり、不均衡学習ライブラリを使用して SMOTE などのオーバーサンプリング手法を実装しようとしています。画像とラベルはテンソルとして読み込まれますが、不均衡学習ライブラリで利用可能なメソッドには numpy 配列が必要です。テンソルフロー データセットから画像を抽出しようとしましたが、約 1 万枚の画像の後、RAM が不足しているため、Google colab でのセッションがクラッシュします。また、別のアプローチを探してみましたが、他に何も見つかりませんでした。そのため、この問題を克服するのに実際に役立つ可能性のある提案があるかどうかを知りたい.

次の手順に従います。

tf.keras.preprocessing.image_dataset_from_directory を使用してデータをインポートします。

次に、このコード行を実行して tf データセットから画像を numpy 配列として取得しますが、この時点で既に述べたように、セッションがクラッシュします。

ご支援いただきありがとうございます。

0 投票する
0 に答える
314 参照

python - ValueError: 不均衡な学習から SMOTENC を使用している間、入力配列を形状 (3,96) から形状 (184,96) にブロードキャストできませんでした

不均衡学習ライブラリの SMOTENC を使用して、カテゴリ変数と数値変数の両方を含むデータフレームをオーバーサンプリングしようとしています。全部で 55 列あり、そのうち 3 つは数値です。データセット内のクラスごとのサンプル数 (値のカウント) は次のとおりです。

このデータセットを次のコードでオーバーサンプリングしようとしています:

cat_features にはカテゴリ列のインデックスが含まれ、y には各サンプルのクラス メンバーシップが含まれ、x には残りの特徴が含まれます。ただし、このデータセットをオーバーサンプリングすることはできず、代わりにエラーが発生します ValueError: could not broadcast input array from the shape (3,96) into shape (184,96)。私が理解できる限り、エラーは ID 7 のクラスに関連しています。SMOTENC がこのクラスをオーバーサンプリングできないのはなぜですか? データセットをオーバーサンプリングするために提供する必要があるサンプルの最小数などの制限はありますか? また、私は 96 列を持っていません。それはどこから来たのですか?

エラーに関するより詳細な情報は次のとおりです。私のカテゴリ機能はすべてバイナリであり、すでにワンホット エンコードされていることに注意してください。したがって、SMOTENC による追加のエンコードは必要ありません。つまり、列の数を増やすことは想定されていません。エラーが発生する正確な行は

この関数 (_generate_samples) のコメントには、「std の中央値がゼロに等しい場合、OHE のエンコードに基づいて null 以外のエントリを作成する必要がある」と書かれています。base.py でエラーが発生する完全な部分は次のとおりです。

ただし、データセット内のサンプルが互いに同一ではないことがわかっているため、標準偏差がゼロになる方法がわかりません。したがって、std は 0 とは異なる必要があります。数値列 (多数のゼロ値があります)。SMOTE のソース コードで、スパース列を処理する関数があることを確認しましたが、正常に動作しないようで、エラーが発生しています。この問題を解決する方法がわかりません。これに関するヘルプやアドバイスをいただければ幸いです。