アンダーサンプリング
データを二値判別するときなど学習データに偏りがある場合。
例えば以下の表のようなデータから「神」と「モンスター」を判別したい場合。
正例(神)と不例(モンスター)の不均衡を均すためにアンダーサンプリングを行うことがある。
Type | Name | Level | ATK | DEF |
---|---|---|---|---|
モンスター | 岩石の巨兵 | 4 | 1300 | 2000 |
モンスター | クリボー | 1 | 300 | 200 |
神 | ラーの翼神竜 | 10 | 0 | 0 |
モンスター | 炎の剣士 | 5 | 1800 | 1600 |
モンスター | マンモスの墓場 | 3 | 1200 | 800 |
モンスター | 時の魔術師 | 2 | 500 | 400 |
神 | オベリスクの巨神兵 | 10 | 4000 | 4000 |
モンスター | 逆転の女神 | 6 | 1800 | 2000 |
本当はラーの攻守は「?」
関数を作った
これ↓
1 | import pandas as pd |
さっきの表のデータフレームを準備。
1 | df = pd.DataFrame( |
使う。
1 | df = under_sampling(df, "Type", "神", 1) |
こうなる。
完成。
こんなものを作らずとも「imbalanced-learn」ってのがあるらしい。
また車輪を作ってしまった。