def run(trials, folds, atributos, participantes, incluirParticipante): featureVector = parser.parseFeatureVector(trials) frequencias = {} inputs = {} for fold in folds: frequencias[fold] = countAttributeFrequency(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold) 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: descricao = defineExpressao(expressao) descricaoR = expressao[expressao.keys()[0]]["anotacao"]["descricao"] A = ass.parse(descricao) B = ass.parse(descricaoR) if len(A) == 0 and len(B) == 0: DICE = 0.0 MASI = 0.0 else: DICE = ass.dice(A, B) MASI = ass.masi(A, B) if DICE == 1.0: acuracia = acuracia + 1.0 dice.append(DICE) masi.append(MASI) # print "Descricao Prevista : " + str(descricao) # 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(trials, folds, atributos, participantesInput, incluirParticipante): featureVector = parser.parseFeatureVector(trials) inputs = {} frequencias = {} participantes = {} # Inicializa Vetor de Caracteristicas for fold in folds: frequencias[fold] = utils.countAttributeFrequencyIndividual(folds, fold) participantes[fold] = parser.descriptionsMeans(folds, fold) 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(trials, treinamentoFolds, featureVector, participantesInput, incluirParticipante) resultados = svm.run2(inputsTreinamento, inputTeste, combinacoes) resultadoTotal.append(resultados) acertos = resultados[0] total = resultados[1] expressoes = resultados[2] tp = resultados[3] tn = resultados[4] fp = resultados[5] fn = resultados[6] dice = [] masi = [] acuracia = 0 for expressao in expressoes: descricao = utils.defineExpressao(expressao) descricaoR = expressao[expressao.keys()[0]]["anotacao"]["descricao"] A = ass.parse(descricao) B = ass.parse(descricaoR) if len(A) == 0 and len(B) == 0: DICE = 0.0 MASI = 0.0 else: DICE = ass.dice(A, B) MASI = ass.masi(A, B) # print descricao # print descricaoR # print DICE # print 10 * "-" 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
def run(dominios, targets, folds, atributos, participantes, incluirParticipante): featureVector = parser.parseFeatureVector(dominios, targets) inputs = {} for fold in folds: frequencias = countAttributeFrequencyIndividual(folds, fold) inputs[fold] = parser.parseSVMInput(folds[fold], targets, featureVector, participantes, frequencias, 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 = svm.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 * "-"