def run(dominios, targets, folds, atributos, participantesInput, incluirParticipante): featureVector = parser.parseFeatureVector(dominios, targets) inputs = {} frequencias = {} participantes = {} for fold in folds: frequencias[fold] = countAttributeFrequency(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold, participantesInput, dominios) inputs[fold] = parser.parseSVMInput(folds[fold], featureVector, participantes[fold], frequencias[fold], incluirParticipante) resultadoTotal = [] dice = [] masi = [] acuracia = 0.0 # print 10 * "*" # if incluirParticipante == True: # print "SVM com o id do participante" # else: # print "SVM sem o id do participante" # print 10 * "*" for fold in ["1","2","3","4","5","6","7","8","9","10"]: # print "FOLD: " + fold resultados = tree.run(inputs, fold) resultadoTotal.append(resultados) acertos = resultados[0] total = resultados[1] expressoes = resultados[2] tp = resultados[3] tn = resultados[4] fp = resultados[5] fn = resultados[6] for expressao in expressoes: contexto = expressao["anotacao"]["caracteristicas"]["context"] descricao = defineExpressao(expressao["previsoes"], dominios[contexto], targets[contexto]) descricaoR = expressao["anotacao"]["descricao"] A = ass.parse(descricao, targets[contexto]) B = ass.parse(descricaoR) DICE = ass.dice(A, B) MASI = ass.masi(A, B) if DICE == 1.0: acuracia = acuracia + 1.0 dice.append(DICE) masi.append(MASI) # if expressao["previsoes"]["relation"] > 0: # print "Descricao Prevista : " + str(expressao["previsoes"]) # print "Descricao Prevista : " + str(descricao) # print "Descricao Real : " + str(expressao["classes"]) # print "Descricao Real : " + str(descricaoR) # print "Dice: " + str(DICE) # print 30 * "-" # for atributo in acertos.keys(): # print "Atributo: " + str(atributo) # print "Acuracia: " + str(acertos[atributo] / total[atributo]) # # print "Verdadeiros Positivos: " + str(tp[atributo]) # # print "Falsos Positivos: " + str(fp[atributo]) # # print "Verdadeiros Negativos: " + str(tn[atributo]) # # print "Falsos Negativos: " + str(fn[atributo]) # print 10 * "-" # # print 50 * "*" # print 50 * "*" # print "Expressoes: " # print "Dice Total: " + str(np.mean(dice)) # print "Masi Total: " + str(np.mean(masi)) # print "Acuracia: " + str(acuracia / len(dice)) # print 50 * "*" acertosT = {} totalT = {} for resultados in resultadoTotal: acertos = resultados[0] total = resultados[1] for atributo in acertos.keys(): if atributo not in acertosT: acertosT[atributo] = 0.0 totalT[atributo] = 0.0 acertosT[atributo] = acertosT[atributo] + acertos[atributo] totalT[atributo] = totalT[atributo] + total[atributo] # for atributo in acertosT.keys(): # print "Atributo: " + str(atributo) # print "Acuracia: " + str(acertosT[atributo] / totalT[atributo]) # print 10 * "-" return resultadoTotal, dice, masi, acuracia
def run(dominios, targets, folds, atributos, participantesInput, incluirParticipante): featureVector = parser.parseFeatureVector(dominios, targets) inputs = {} frequencias = {} participantes = {} # Cross Validation # folds = cross.crossValidation(10, annotations) # Inicializa Vetor de Caracteristicas for fold in folds: frequencias[fold] = utils.countAttributeFrequencyIndividual(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold, participantesInput, dominios) inputs[fold] = parser.parseSVMInput( folds[fold], featureVector, participantes[fold], frequencias[fold], incluirParticipante ) resultadoTotal = [] diceTotal = [] masiTotal = [] acuraciaTotal = 0.0 for testeFold in folds: teste = folds[testeFold] inputTeste = inputs[testeFold] treinamentoFolds = {} inputsTreinamento = {} for foldAux in folds: if foldAux != testeFold: treinamentoFolds[foldAux] = folds[foldAux] inputsTreinamento[foldAux] = inputs[foldAux] combinacoes = run_validation(dominios, treinamentoFolds, featureVector, participantesInput, incluirParticipante) resultados = svm.run2(inputsTreinamento, inputTeste, combinacoes) resultadoTotal.append(resultados) acertos = resultados[0] total = resultados[1] expressoes = resultados[2] dice = [] masi = [] acuracia = 0 for expressao in expressoes: contexto = expressao["anotacao"]["caracteristicas"]["context"] participante = expressao["anotacao"]["caracteristicas"]["trial"] descricao = utils.defineExpressao( expressao, frequencias[testeFold][participante], participantes[testeFold][participante]["numeroExpressoes"], dominios[contexto], targets[contexto], ) descricaoR = expressao["anotacao"]["descricao"] A = ass.parse(descricao, targets[contexto]) B = ass.parse(descricaoR) DICE = ass.dice(A, B) MASI = ass.masi(A, B) # print descricao # print descricaoR # print DICE # print "\n" if DICE == 1.0: acuracia = acuracia + 1.0 acuraciaTotal = acuraciaTotal + 1.0 dice.append(DICE) masi.append(MASI) diceTotal.append(DICE) masiTotal.append(MASI) # for atributo in acertos.keys(): # print "Attribute: " + str(atributo) # print "Accuracy: " + str(acertos[atributo] / total[atributo]) # print 10 * "-" # # print 50 * "*" # # print "\n" # print "General:" # print 50 * "*" # print "Expressions: " # print "Dice: " + str(np.mean(dice)) # print "Masi: " + str(np.mean(masi)) # print "Accuracy: " + str(acuracia / len(dice)) # print "\n" print "\n" print "General:" print 50 * "*" print "Expressions: " print "Dice: " + str(np.mean(diceTotal)) print "Masi: " + str(np.mean(masiTotal)) print "Accuracy: " + str(acuraciaTotal / len(diceTotal)) print "\n" acertosT = {} totalT = {} for resultados in resultadoTotal: acertos = resultados[0] total = resultados[1] for atributo in acertos.keys(): if atributo not in acertosT: acertosT[atributo] = 0.0 totalT[atributo] = 0.0 acertosT[atributo] = acertosT[atributo] + acertos[atributo] totalT[atributo] = totalT[atributo] + total[atributo] print "Attributes:" print 15 * "-" for atributo in acertosT.keys(): print "Attribute: " + str(atributo) print "Accuracy: " + str(acertosT[atributo] / totalT[atributo]) print 10 * "-" return resultadoTotal, diceTotal, masiTotal, acuraciaTotal