クラスが不均衡なデータセットがあります。クラスは0
,1
または2
です。Sklearn:DecisionTreeClassifierを使用した分類のバランスを取る方法は?
prediction error
をクラスごとに計算するには、weights
をSklearn
に再調整します。
クラスが不均衡なデータセットがあります。クラスは0
,1
または2
です。Sklearn:DecisionTreeClassifierを使用した分類のバランスを取る方法は?
prediction error
をクラスごとに計算するには、weights
をSklearn
に再調整します。
あなたは完全にバランス(同様に重要として、各クラスを扱う)それはdocsに記載されているようあなたは、単に、class_weight='balanced'
を渡すことができますしたい場合:
「バランス」モードが自動的にyの値を使用していますクラスAの頻度は10%であり、クラスBの頻度が90%であれば、クラスBが支配的となるであろう
n_samples/(n_classes * np.bincount(y))
ように、入力データ のクラスの周波数に反比例 重みを調整しますクラスとこの場合
支配されているクラスに偏ってなり、あなたの意思決定ツリーは、あなたが
clf = tree.DecisionTreeClassifier(class_weight={A:9,B:1})
class_weight='balanced'
のように、各クラスの重みを指定するには、モデルにDIC {A:9,B:1}
を渡すことができますまた、各クラスの頻度の割合に応じてそれだけで自動的に重みを調整し、作業
私はclass_weight='balanced'
を使用した後、各クラスのレコード番号は同じになりました(約88923)
class_weightが 'balanced'であるという値リストが混乱しています。これは、分類器が各クラスの重さを均等に測定することを意味しますか?もしそうなら、それは決定木を通してどのように広がっていますか?ツリー内の各ノードの値リストはどのように変化しますか?私は私のクラシファイアを実行するとき私が見る自分の出力に混乱しているので私は尋ねています。 – OfLettersAndNumbers
これは、 'fit'ではなく、クラシファイア(コンストラクタ)のパラメータであることに注意してください。 –