2017-06-23 25 views

答えて

1

適用する正しい重み付けやコード内で行う方法について質問していますか?

class_weights = {} 
    for i in range(2): 
     class_weights[i] = your_weight 

、その後、あなたはmodel.fitに引数を渡すclass_weight=class_weights:コードは単純です。

使用する正しい重み付けはある種の逆周波数です。少しでも試行錯誤を繰り返すことができます。

+0

おかげに対処するために、このメソッドを使用して、それは私が – Javi

2

fit()関数のclass_weightパラメータは、クラスを重み値にマッピングするディクショナリです。 class_weight = {0:3,1:1}でフィードするよりも、クラス0のサンプルが500サンプル、クラス1のサンプルが1500個あるとします。クラス0はクラス1の3倍の重みを与えます。

train_generator.classesは、重みの適切なクラス名を提供します。あなたはこれを計算したい場合は

プログラムであなたはscikit-learn's sklearn.utils.compute_class_weight()を使用することができます。https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/class_weight.py

機能は、ラベルの分布を見て、同じように下または過罰するための重みを生成トレーニングセットのクラスを表しています。

は、ここでは、この便利なスレッドも参照してください:https://github.com/fchollet/keras/issues/1875

このスレッドにも助けになるかもしれません:それは自動的にKerasにflow_from_directoryからclass_weightを推測することは可能ですか?

+0

最後に明確な例を探していたものです!それ以外のところでは、重み付けが上下にスケールされるかどうかはわかりません –

1

sklearnキットのclass_weightを使用しています。

Imはまた、不均衡データ

from sklearn.utils import class_weight 
class_weight = class_weight.compute_class_weight('balanced' 
               ,np.unique(Y_train) 
               ,Y_train) 

その後、model.fit

Classifier.fit(train_X,train_Y,batch_size = 100, epochs = 10 
      ,validation_data= (test_X,test_Y),class_weight = class_weight)