40

いくつかの機械学習操作を実行するために、Python プログラムで scikit-learn を使用しています。問題は、私のデータセットに重大な不均衡の問題があることです。

scikit-learn または python の一般的な不均衡の解決策に精通している人はいますか? Java には SMOTE メカニズムがあります。pythonに類似したものはありますか?

4

5 に答える 5

94

ここに新しいのがあります

https://github.com/scikit-learn-contrib/imbalanced-learn

SMOTE を含む、次のカテゴリの多くのアルゴリズムが含まれています。

  • 多数派クラスのアンダーサンプリング。
  • 少数派クラスのオーバーサンプリング。
  • オーバーサンプリングとアンダーサンプリングの組み合わせ。
  • アンサンブル バランス セットを作成します。
于 2016-08-05T02:35:35.793 に答える
33

Scikit Learn には、使用している学習アルゴリズムによって異なる不均衡修正手法がいくつかあります。

Svmロジスティック回帰など、それらのいくつかにはclass_weightパラメーターがあります。SVCこのパラメータを on に設定してをインスタンス化すると'balanced'、各クラスの例はその頻度の逆数に比例して重み付けされます。

残念ながら、この目的のためのプリプロセッサ ツールはありません。

于 2013-09-19T17:39:12.580 に答える
14

ここで、アンダーサンプリングと、複数の実装を含む複数のオーバーサンプリング手法を実装する別のライブラリと、次SMOTEを使用する別のライブラリを見つけましたSVM

機械学習における不均衡なデータセットの呪いに取り組む Python パッケージ

于 2014-11-17T19:10:47.480 に答える
8

SMOTE は scikit-learn に組み込まれていませんが、それでもオンラインで利用できる実装があります。

編集: 私が最初にリンクした GMane の SMOTE 実装に関する議論は、もはや利用できないようです。コードはここに保存されています。

以下の@nosによる新しい回答も非常に優れています。

于 2013-02-25T21:26:44.290 に答える