bool ClassificadorAdaboostM1::executarClassificacao( Corpus &corpusProva, int atributo ) { vector<vector<double> > exemplos(corpusProva.pegarQtdTotalExemplos(), vector<double>(valores.size(), 0.0)); int k, indice; for (unsigned int t = 0; t < classificadores.size(); t++) { (classificadores[t])->executarClassificacao(corpusProva, atributo); k = 0; for (int i = 0; i < corpusProva.pegarQtdSentencas(); i++) { for (int j = 0; j < corpusProva.pegarQtdExemplos(i); j++) { indice = -1; for (unsigned int a = 0; a < valores.size() - 1; a++) if (valores[a] == corpusProva(i, j, atributo)) { indice = a; a = valores.size(); } if (indice == -1) indice = valores.size() - 1; exemplos[k][indice] -= log(betas[t]); k++; } } } double maxBeta; int maxAtr; k = 0; for (int i = 0; i < corpusProva.pegarQtdSentencas(); i++) { for (int j = 0; j < corpusProva.pegarQtdExemplos(i); j++) { maxBeta = exemplos[k][valores.size()-1]; maxAtr = valores.size() - 1; for (unsigned int a = 0; a < valores.size() - 1; a++) { if (maxBeta <= exemplos[k][a]) { maxBeta = exemplos[k][a]; maxAtr = a; } } corpusProva(i, j, atributo, valores[maxAtr]); k++; } } return true; }
bool ProcessadorAttDisc::processarCorpus(Corpus &objCorpus) { int totlinhas, qtdConjExemplos,c; int idCol, linha; int *indices; indices = new int[numatributos]; for(int i=0; i<numatributos; i++) { indices[i] = objCorpus.pegarPosAtributo(atributo[i]); } criarAtributos(objCorpus); idCol = objCorpus.pegarPosAtributo("New"+atributo[0]); qtdConjExemplos = objCorpus.pegarQtdConjExemplos(); for (c=0; c<qtdConjExemplos; c++){ totlinhas = objCorpus.pegarQtdExemplos(c); for (linha=0; linha < totlinhas; linha++){ for( int i=0; i<numatributos; i++) { int vatual= objCorpus.pegarValor(c,linha,indices[i]); string valor_atual = objCorpus.pegarSimbolo(vatual); int logatual=0; if(valor_atual == "VERDADEIRO" ) logatual = 1; std::stringstream out2; out2 << setprecision(0) << setiosflags(ios::fixed); out2 << logatual; objCorpus.ajustarValor(c, linha, idCol+i, objCorpus.pegarIndice(out2.str())); } } } return true; }