C'est un record de défi de 100 langues de traitement knock 2015. L'environnement est Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64 bits). Cliquez ici pour une liste des coups passés (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
Dans ce chapitre, la tâche de classer les phrases en positives (positives) ou négatives (négatives) à l'aide du jeu de données de polarité des phrases v1.0 de Movie Review Data publié par Bo Pang et Lillian Lee (analyse de polarité). Travailler sur.
Créez un programme qui reçoit la sortie> 76 et calcule le taux de réponse correct de la prédiction, le taux de réponse correct pour l'exemple correct, le taux de rappel et le score F1.
main.py
# coding: utf-8
fname_result = 'result.txt'
def score(fname):
'''Calcul du score à partir du fichier de résultats
Lisez le fichier de résultats et renvoyez le taux de réponse, le taux de précision, le taux de rappel et le score F1 corrects.
Valeur de retour:
Taux de réponse correct,Taux de conformité,Rappel,Score F1
'''
#Lire les résultats et agréger
TP = 0 # True-Attentes positives+1, bonne réponse+1
FP = 0 # False-Attentes positives+1, la bonne réponse est-1
FN = 0 # False-Attentes négatives-1, la bonne réponse est+1
TN = 0 # True-Attentes négatives-1, bonne réponse-1
with open(fname) as data_file:
for line in data_file:
cols = line.split('\t')
if len(cols) < 3:
continue
if cols[0] == '+1': #Bonne réponse
if cols[1] == '+1': #Attendu
TP += 1
else:
FN += 1
else:
if cols[1] == '+1':
FP += 1
else:
TN += 1
#Calcul
accuracy = (TP + TN) / (TP + FP + FN + TN) #Taux de réponse correct
precision = TP / (TP + FP) #Taux de conformité
recall = TP / (TP + FN) #Rappel
f1 = (2 * recall * precision) / (recall + precision) #Score F1
return accuracy, precision, recall, f1
#Calcul du score
accuracy, precision, recall, f1 = score(fname_result)
print('Taux de réponse correct\t{}\n Taux de conformité\t{}\n rappel\t{}\score nF1\t{}'.format(
accuracy, precision, recall, f1
))
Résultat d'exécution
Taux de réponse correct 0.8660664040517726
Taux de conformité 0.8675833490299492
Taux de rappel 0.8640030013130745
Score F1 0.8657894736842107
Le taux d'exactitude est le pourcentage de tous les avis qui peuvent être prédits correctement.
Le taux de conformité pour les cas positifs est le pourcentage d'examens qui devraient être positifs et qui sont réellement positifs.
Par exemple, lors du choix d'un champignon qui peut être mangé en allant à la chasse aux champignons (c'est un exemple positif), il est difficile de sélectionner par erreur un champignon vénéneux (exemple négatif). Cependant, si vous pensez qu'un champignon comestible est un champignon vénéneux et que vous le manquez, cela ne fera que réduire la quantité de champignons comestibles et ne causera pas beaucoup de mal. De cette façon, il est normal de ne pas tenir compte de certains exemples positifs, c'est donc un indice important lorsque vous ne voulez sélectionner que des exemples positifs. C'est un indicateur lorsque vous êtes strict sur le choix de la mauvaise chose et que vous tolérez de rater la bonne chose.
À titre d'exemple extrême, une logique de prédiction violente qui dit que tout ce qui est suspect ou incertain s'il est positif ou non est négatif peut augmenter le taux d'exactitude.
Le taux de rappel des cas positifs correspond au pourcentage d'avis positifs réels dont on peut prédire qu'ils sont positifs.
Par exemple, lorsqu'un produit défectueux est détecté par un contrôle avant l'expédition du produit (c'est un exemple normal), si le produit défectueux est négligé et expédié, ce sera un gros problème. Si tel est le cas, il n'y a aucun dommage réel si le bon produit est jugé à tort comme un produit défectueux et exclu de la cible d'expédition. S'il s'avère que le produit est bon lors de la réinspection ultérieure, il peut être expédié. De cette façon, il est normal de sélectionner un exemple négatif en faisant une légère erreur, c'est donc un indice important lorsque vous voulez éviter de négliger un exemple positif. Il est tolérant de choisir le mauvais, mais c'est un indicateur difficile pour manquer le bon.
Vous pouvez augmenter le taux de rappel en prédisant que tout ce qui est suspect ou ne sait pas si c'est positif ou non est positif.
Le score F1 (également appelé score F, valeur F, échelle F, etc.) est une quantification de l'équilibre entre précision et rappel et est calculé par la formule suivante.
Le calcul du score F1 nécessite le calcul de la précision et du rappel. À ce moment-là, compter les quatre nombres True Positive, False Positive, False Negative et True Negative facilitera le calcul.
En fait 1 (positif) | En fait 0 (négatif) | |
---|---|---|
La prédiction est 1 (positive) | Vrai positif | Faux positif |
La prédiction est 0 (négative) | Faux négatif | Vrai négatif |
Même dans ce code, chaque valeur est calculée après avoir compté ces quatre nombres.
De plus, je vais visualiser la relation entre le taux de précision et le taux de rappel et le score F1 à la question 79.
Les deux étaient des valeurs autour de 0,86. Cela représente une précision de prédiction d'environ 86%. Puisque les données positives et négatives sont moitié-moitié, cela semble un peu faible étant donné que 50% est correct même si on le devine ...
C'est tout pour le 78e coup. Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.
Recommended Posts