def rodarValidacaoCruzada(dados, classes, nProts, montecarlo, nFolds, np): global pa global k global n global treinamento global classesTreinamento if len(nProts) == 1: nProts = ones(max(classes)+1) * nProts[0] k = sum(nProts) erros = zeros(montecarlo*nFolds) rem = 0.0 pa = shape(dados)[1]/2 if not intervalar: pa = shape(dados)[1] consideradas = zeros(pa) nDados = size(classes) for i in range(montecarlo): indices = arange(nDados) random.shuffle(indices) dadosEmbaralhados = dados[indices,:] classesEmbaralhadas = classes[indices] folds = slvq.separarFolds(dadosEmbaralhados, classesEmbaralhadas, nFolds) for fold in range(nFolds): print i*nFolds + fold [treinamento, classesTreinamento, teste, classesTeste] = slvq.separarConjuntos(folds, dadosEmbaralhados, classesEmbaralhadas, fold) n = shape(treinamento)[0] preds = zeros((30, len(classesTeste))) from tqdm import tqdm for l in tqdm(arange(30)): inicializar(nProts, np) VABC(np, nProts) GBEST = PBEST[indiceGBEST] consideradas = consideradas + around(GBEST[0,:pa]).astype(float) #print sum(removidosPBEST[indiceGBEST]) rem = rem + float(sum(removidosPBEST[indiceGBEST])) preds[l] = testar(teste, classesTeste, GBEST, classesParticulas[indiceGBEST], pesosPBEST[indiceGBEST], removidosPBEST[indiceGBEST]) # [erros[i*nFolds + fold], d] = testar(teste, classesTeste, GBEST, classesParticulas[indiceGBEST], pesosPBEST[indiceGBEST], removidosPBEST[indiceGBEST]) # print erros[i*nFolds + fold] predictions = around(mean(preds, axis=0)) print_confusion_matrix(classesTeste, predictions) exit() print erros print mean(erros) print std(erros) print consideradas / (montecarlo * nFolds) print rem / (montecarlo * nFolds) return erros , "\n erro medio:" , mean(erros) , "\n desvio:" , std(erros) , "\n" , consideradas / (montecarlo * nFolds) , "\n" , rem / (montecarlo * nFolds)
def rodarValidacaoCruzada(dados, classes, nMedias, montecarlo, nFolds): erros = zeros(montecarlo * nFolds) n = size(classes) for i in range(montecarlo): indices = arange(n) random.shuffle(indices) dadosEmbaralhados = dados[indices, :] classesEmbaralhadas = classes[indices] folds = slvq.separarFolds(dadosEmbaralhados, classesEmbaralhadas, nFolds) for fold in range(nFolds): print i * nFolds + fold [treinamento, classesTreinamento, teste, classesTeste] = slvq.separarConjuntos(folds, dadosEmbaralhados, classesEmbaralhadas, fold) preds = zeros((30, len(classesTeste))) from tqdm import tqdm for l in tqdm(arange(30)): [prototipos, classesPrototipos ] = slvq.iniciarPrototiposPorSelecao(treinamento, classesTreinamento, nMedias) [prototipos, pesos, _] = old.fcm.treinar(treinamento, classesTreinamento, prototipos, classesPrototipos, 500) # print testar(teste, classesTeste, prototipos, classesPrototipos, pesos) [prototipos, pesos] = treinar(treinamento, classesTreinamento, prototipos, classesPrototipos, pesos, 0.3) preds[l] = testar(teste, classesTeste, prototipos, classesPrototipos, pesos) predictions = around(mean(preds, axis=0)) print_confusion_matrix(classesTeste, predictions) exit() # erros[i*nFolds + fold] = testar(teste, classesTeste, prototipos, classesPrototipos, pesos) # print erros[i*nFolds + fold] print erros print mean(erros) print std(erros)