1
import theano.tensor as T
import numpy as np
from nolearn.lasagne import NeuralNet

def multilabel_objective(predictions, targets):
    epsilon = np.float32(1.0e-6)
    one = np.float32(1.0)
    pred = T.clip(predictions, epsilon, one - epsilon)
    return -T.sum(targets * T.log(pred) + (one - targets) * T.log(one - pred), axis=1)

net = NeuralNet(
    # your other parameters here (layers, update, max_epochs...)
    # here are the one you're interested in:
    objective_loss_function=multilabel_objective,
    custom_score=("validation score", lambda x, y: np.mean(np.abs(x - y)))
)

このコードをオンラインで見つけて、テストしたいと思いました。結果には、トレーニングの損失、テストの損失、検証スコア、および時間などが含まれます。

しかし、どうすれば F1-micro スコアを取得できますか? また、次のコードを追加した後、scikit-learn をインポートして F1 を計算しようとした場合:

data = data.astype(np.float32) 
classes = classes.astype(np.float32)

net.fit(data, classes)

score = cross_validation.cross_val_score(net, data, classes, scoring='f1', cv=10)

print score

このエラーが発生しました:

ValueError: マルチラベル インジケーターと連続マルチ出力の混在を処理できません

上記のコードに基づいて F1-micro 計算を実装するにはどうすればよいですか?

4

1 に答える 1