Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $arqs_acuracia = array(
- "acuracia.saida",
- );
- $arqs_acuracia_sem_selecao = array(
- "acuracia_sem_selecao.saida",
- );
- $arqs_num_atributos = array(
- "atributos_selecionados.saida",
- );
- $dados = array();
- for($i=0;$i<count($arqs_acuracia);++$i){
- $texto_acc = file( current($arqs_acuracia) );
- $texto_acc_sem_sel = file( current($arqs_acuracia_sem_selecao) );
- $texto_num_atr = file( current($arqs_num_atributos) );
- $base_atual = "";
- $metodo_atual = "";
- $pasta_atual = "";
- foreach($texto_acc as $linha_acc){
- //var_dump($linha_acc);
- switch(true){
- //recupera nome da base atual
- case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_acc, $matchs):
- $base_atual = trim( $matchs[1] );
- $dados[ $base_atual ] = array();
- break;
- //recupera o metodo utilizado
- case preg_match("#\s*Metodo de Selecao:\s*(.*)#", $linha_acc, $matchs):
- $metodo_atual = trim( $matchs[1] );
- $dados[ $base_atual ][ $metodo_atual ] = array("SVM"=>array(),"SMO"=>array(),"KN1"=>array(),"NB"=>array());
- break;
- //recupera a pasta atual
- case preg_match("#\s*Pasta: (\d+)#", $linha_acc, $matchs):
- $pasta_atual = (int) $matchs[1];
- break;
- //recupera a acuracia obtida em determinado classificador
- case preg_match("#\s*Acuracia\s+(SVM|SMO|NB|KN1):\s+([0-9.]+)#", $linha_acc, $matchs):
- $classificador = $matchs[1];
- $acc = (float)$matchs[2];
- $dados[ $base_atual ][ $metodo_atual ][ $classificador ][ $pasta_atual ] = $acc;
- break;
- }
- }
- foreach($texto_acc_sem_sel as $linha_acc_sem_sel){
- switch(true){
- //recupera nome da base atual
- case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_acc_sem_sel, $matchs):
- $base_atual = trim( $matchs[1] );
- $dados[ $base_atual ][ "SEM_SEL" ] = array("SVM"=>array(),"SMO"=>array(),"KN1"=>array(),"NB"=>array());
- break;
- //recupera o classificador utilizado
- case preg_match("#\s*Classificador:(SVM|SMO|NB|KN1)#", $linha_acc_sem_sel, $matchs):
- $classificador_atual = trim( $matchs[1] );
- break;
- //recupera a pasta atual e a acc
- case preg_match("#\s*Pasta\s+(\d+)\s*([0-9.]+)#", $linha_acc_sem_sel, $matchs):
- $pasta_atual = (int) $matchs[1];
- $acc = (float)$matchs[2];
- $dados[ $base_atual ][ "SEM_SEL" ][ $classificador_atual ][ $pasta_atual ] = $acc;
- break;
- }
- }
- foreach($texto_num_atr as $linha_num_atr){
- switch(true){
- //recupera nome da base atual
- case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_num_atr, $matchs):
- $base_atual = trim( $matchs[1] );
- break;
- //recupera o metodo utilizado
- case preg_match("#\s*Metodo de Selecao:\s*(.*)#", $linha_num_atr, $matchs):
- $metodo_atual = trim( $matchs[1] );
- $dados[ $base_atual ][ $metodo_atual ][ "NRO_ATRIBUTOS" ] = array();
- break;
- //recupera a pasta atual
- case preg_match("#\s*Pasta: (\d+)#", $linha_num_atr, $matchs):
- $pasta_atual = (int) $matchs[1];
- break;
- //recupera o numero de atributos selecionados
- case preg_match("#\s*Numero Atributos Selecionados: (\d+)#", $linha_num_atr, $matchs):
- $nro_atr = (int)$matchs[1];
- $dados[ $base_atual ][ $metodo_atual ][ "NRO_ATRIBUTOS" ][ $pasta_atual ] = $nro_atr;
- break;
- }
- }
- next($arqs_acuracia);
- next($arqs_acuracia_sem_selecao);
- next($arqs_num_atributos);
- }
- foreach($dados as $nomeBase => $info){
- echo "\n\nBase --- $nomeBase ---\n";
- echo "Method;NroAtributos;A(%)SVM;A(%)SMO;A(%)-KN1;A(%)-NB;\n";
- foreach($info as $nomeMetodo => $moreInfo){
- echo "$nomeMetodo;";
- if($nomeMetodo != "SEM_SEL") {
- echo media($moreInfo["NRO_ATRIBUTOS"]) . " (".desvio($moreInfo["NRO_ATRIBUTOS"]).")";
- }
- echo ";";
- foreach($moreInfo as $classif => $pastasInfo){
- if($classif == "NRO_ATRIBUTOS") { continue; }
- echo media($pastasInfo) . " (". desvio($pastasInfo).");";
- }
- echo "\n";
- }
- }
- function media($arr){
- return round(array_sum($arr)/count($arr),2);
- }
- function desvio($arr){
- $med = media($arr);
- $variance = array();
- foreach ($arr as $value) {
- $variance[] = pow($value-$med, 2);
- }
- $deviation = sqrt(media($variance));
- return round($deviation,2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement