私は、scikit-learnラッパーでKerasを使用しています。特に、ハイパーパラメータの最適化にはGridSearchCVを使用したいと考えています。ValueError:マルチラベルインジケータとバイナリの混合を扱うことができません
これはマルチクラスの問題です。つまり、ターゲット変数は、n個のクラスのセットで1つのラベルのみを選択できます。たとえば、ターゲット変数は 'Class1'、 'Class2' ... 'Classn'です。
# self._arch creates my model
nn = KerasClassifier(build_fn=self._arch, verbose=0)
clf = GridSearchCV(
nn,
param_grid={ ... },
# I use f1 score macro averaged
scoring='f1_macro',
n_jobs=-1)
# self.fX is the data matrix
# self.fy_enc is the target variable encoded with one-hot format
clf.fit(self.fX.values, self.fy_enc.values)
問題は、スコアは、クロスバリデーションの間に計算されたときに、何らかの理由で予測が(バイナリラベルに崩壊しつつターゲット変数のみを有する場合、検証サンプルに対する真のラベルが、ワンホット符号化される、ということです2つのクラス)。例えば、これは、スタックトレースの最後の部分は次のとおりです。
...........................................................................
/Users/fbrundu/.pyenv/versions/3.6.0/lib/python3.6/site-packages/sklearn/metrics/classification.py in _check_targets(y_true=array([[ 0., 1.],
[ 0., 1.],
[ 0... 0., 1.],
[ 0., 1.],
[ 0., 1.]]), y_pred=array([1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1,...0, 1, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 1]))
77 if y_type == set(["binary", "multiclass"]):
78 y_type = set(["multiclass"])
79
80 if len(y_type) > 1:
81 raise ValueError("Can't handle mix of {0} and {1}"
---> 82 "".format(type_true, type_pred))
type_true = 'multilabel-indicator'
type_pred = 'binary'
83
84 # We can't have more than one value on y_type => The set is no more needed
85 y_type = y_type.pop()
86
ValueError: Can't handle mix of multilabel-indicator and binary
私はワンホットエンコーディングの予測をお返しするKeras/sklearnを指示することができますどのように?
値をエンコードせずに直接 'fy'を使うとどうなりますか?マルチクラスでは問題ではありません。ターゲットのワンホットエンコーディングは複数ラベルの問題でのみ必要ですIMHO –