Comment calculer Récepteur (ROC) et de l'ASC dans keras?
J'ai un multi-sortie(200) classification binaire modèle que j'ai écrit dans keras.
Dans ce modèle, je veux ajouter des paramètres supplémentaires tels que ROC et de l'ASC, mais à ma connaissance keras doesnt ont intégré ROC et de l'ASC métrique fonctions.
J'ai essayé d'importer ROC, ASC fonctions de scikit-learn
from sklearn.metrics import roc_curve, auc
from keras.models import Sequential
from keras.layers import Dense
.
.
.
model.add(Dense(200, activation='relu'))
model.add(Dense(300, activation='relu'))
model.add(Dense(400, activation='relu'))
model.add(Dense(300, activation='relu'))
model.add(Dense(200,init='normal', activation='softmax')) #outputlayer
model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy','roc_curve','auc'])
mais elle donne cette erreur:
Exception: Invalid métrique: roc_curve
Comment dois-je ajouter de ROC, de l'ASC à keras?
Écrire votre propre fonction de l'ASC et de faire le modèle.prévoir - Voir ici
OriginalL'auteur Eka | 2016-12-08
Vous devez vous connecter pour publier un commentaire.
En raison que vous ne pouvez pas calculer ROC&de l'ASC de mini-lots, vous ne pouvez la calculer sur la fin d'une époque. Il existe une solution de jamartinh, je patch les codes ci-dessous pour plus de commodité:
Plus piratable chemin à l'aide
tf.contrib.metrics.streaming_auc
:J'ai mis à jour cette réponse. Maintenant, Il contarins une solution à l'aide de
tf.contrib.metrics.streaming_auc
. Vous pouvez utiliservalidation_split
etshuffle
, et il s'exécute plus rapidement.OriginalL'auteur Tom
J'ai résolu mon problème de cette façon,
considérer que vous avez jeu de données de test x_test pour les caractéristiques et les y_test pour ses cibles correspondantes.
nous avons d'abord prévoir des objectifs de fonctionnalité à l'aide de notre modèle appris
puis, à partir de sklearn nous importons roc_auc_score fonction et alors simple passer les objectifs initiaux et les cibles prévues pour la fonction.
OriginalL'auteur Eka
Vous pouvez envelopper tf.métriques (par exemple
tf.metrics.auc
) dans keras.métriques.De ma réponse à Comment utiliser TensorFlow métriques dans Keras:
D'utilisation de base:
Compiler le keras modèle:
OriginalL'auteur Christian Skjødt
'roc_curve','asc' ne sont pas les paramètres standard, vous ne pouvez pas passer comme ça à métrique variable, ce n'est pas autorisé.
Vous pouvez passer à quelque chose comme "fmeasure", qui est une mesure standard.
En revue les données disponibles ici: https://keras.io/metrics/
Vous pouvez également avoir un coup d'oeil à vous de faire vos propres mesures personnalisées: https://keras.io/metrics/#custom-metrics
Également jeter un oeil à generate_results méthode mentionnée dans ce blog pour le rdc, AUC...
https://vkolachalama.blogspot.in/2016/05/keras-implementation-of-mlp-neural.html
OriginalL'auteur sunil manikani
La solution suivante a fonctionné pour moi:
OriginalL'auteur B. Kanani
Comme vous, je préfère utiliser scikit-learn construit dans les méthodes pour évaluer l'AUROC. Je trouve que la plus simple et la meilleure façon de le faire dans keras est de créer un personnalisé métrique. Si tensorflow est votre arrière-plan, la mise en œuvre de ce qui peut être fait en très peu de lignes de code:
La création d'une fonction de Rappel personnalisée comme mentionné dans d'autres réponses ne fonctionnera pas pour votre cas puisque votre modèle a plusieurs ouputs, mais cela fonctionne. En outre, cette méthode permet à la métrique et à apprécier à la fois la formation et la validation des données alors qu'un keras de rappel n'ont pas accès à des données de formation et peut uniquement être utilisé pour évaluer les performances sur les données d'apprentissage.
OriginalL'auteur Kimball Hill