def gerarSolucao(nProts): variaveisConsideradas = random.rand(shape(treinamento)[1]) [prototipos,classes] = slvq.iniciarPrototiposPorSelecao(treinamento, classesTreinamento, nProts) fonte = ajustarMinsMaxs(ajustarVariaveisConsideradas(append([variaveisConsideradas],prototipos,axis=0))) [pesos,fonte[1:],removidos] = calcularPesosPrototipos(fonte[1:], classes, fonte[0,:pa]) return [fonte, classes, pesos, removidos]
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)
def gerarSolucao(nProts): [prototipos,classes] = slvq.iniciarPrototiposPorSelecao(treinamento, classesTreinamento, nProts) return [prototipos, classes]