Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.18 KB | None | 0 0
  1. <?php
  2.  
  3. $arqs_acuracia = array(
  4.                         "acuracia.saida",                      
  5.                         );
  6. $arqs_acuracia_sem_selecao = array(
  7.                         "acuracia_sem_selecao.saida",                      
  8.                         );
  9. $arqs_num_atributos = array(
  10.                         "atributos_selecionados.saida",
  11.                         );
  12.  
  13. $dados = array();
  14. for($i=0;$i<count($arqs_acuracia);++$i){
  15.     $texto_acc         = file( current($arqs_acuracia) );
  16.     $texto_acc_sem_sel = file( current($arqs_acuracia_sem_selecao) );
  17.     $texto_num_atr     = file( current($arqs_num_atributos) );
  18.  
  19.     $base_atual = "";
  20.     $metodo_atual = "";
  21.     $pasta_atual = "";
  22.    
  23.     foreach($texto_acc as $linha_acc){
  24.         //var_dump($linha_acc);
  25.         switch(true){
  26.        
  27.             //recupera nome da base atual
  28.             case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_acc, $matchs):
  29.                 $base_atual = trim( $matchs[1] );
  30.                 $dados[ $base_atual ] = array();
  31.                 break;
  32.  
  33.             //recupera o metodo utilizado
  34.             case preg_match("#\s*Metodo de Selecao:\s*(.*)#", $linha_acc, $matchs):
  35.                 $metodo_atual = trim( $matchs[1] );
  36.                 $dados[ $base_atual ][ $metodo_atual ] = array("SVM"=>array(),"SMO"=>array(),"KN1"=>array(),"NB"=>array());
  37.                 break;
  38.  
  39.             //recupera a pasta atual
  40.             case preg_match("#\s*Pasta: (\d+)#", $linha_acc, $matchs):
  41.                 $pasta_atual = (int) $matchs[1];
  42.                 break;
  43.    
  44.             //recupera a acuracia obtida em determinado classificador
  45.             case preg_match("#\s*Acuracia\s+(SVM|SMO|NB|KN1):\s+([0-9.]+)#", $linha_acc, $matchs):
  46.                 $classificador = $matchs[1];
  47.                 $acc = (float)$matchs[2];
  48.                 $dados[ $base_atual ][ $metodo_atual ][ $classificador ][ $pasta_atual ] = $acc;
  49.                 break;
  50.         }
  51.     }
  52.    
  53.     foreach($texto_acc_sem_sel as $linha_acc_sem_sel){
  54.         switch(true){
  55.             //recupera nome da base atual
  56.             case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_acc_sem_sel, $matchs):
  57.                 $base_atual = trim( $matchs[1] );
  58.                 $dados[ $base_atual ][ "SEM_SEL" ] = array("SVM"=>array(),"SMO"=>array(),"KN1"=>array(),"NB"=>array());
  59.                 break;
  60.        
  61.             //recupera o classificador utilizado
  62.             case preg_match("#\s*Classificador:(SVM|SMO|NB|KN1)#", $linha_acc_sem_sel, $matchs):
  63.                 $classificador_atual = trim( $matchs[1] );
  64.                 break;
  65.  
  66.             //recupera a pasta atual e a acc
  67.             case preg_match("#\s*Pasta\s+(\d+)\s*([0-9.]+)#", $linha_acc_sem_sel, $matchs):
  68.                 $pasta_atual = (int) $matchs[1];
  69.                 $acc = (float)$matchs[2];
  70.                 $dados[ $base_atual ][ "SEM_SEL" ][ $classificador_atual ][ $pasta_atual ] = $acc;
  71.                 break; 
  72.         }
  73.     }
  74.     foreach($texto_num_atr as $linha_num_atr){
  75.         switch(true){
  76.             //recupera nome da base atual
  77.             case preg_match("#\s*Nome da Base\s*:\s*(.*)#", $linha_num_atr, $matchs):
  78.                 $base_atual = trim( $matchs[1] );
  79.                 break;
  80.        
  81.             //recupera o metodo utilizado
  82.             case preg_match("#\s*Metodo de Selecao:\s*(.*)#", $linha_num_atr, $matchs):
  83.                 $metodo_atual = trim( $matchs[1] );
  84.                 $dados[ $base_atual ][ $metodo_atual ][ "NRO_ATRIBUTOS" ] = array();
  85.                 break;
  86.  
  87.             //recupera a pasta atual
  88.             case preg_match("#\s*Pasta: (\d+)#", $linha_num_atr, $matchs):
  89.                 $pasta_atual = (int) $matchs[1];
  90.                 break;
  91.    
  92.  
  93.             //recupera o numero de atributos selecionados
  94.             case preg_match("#\s*Numero Atributos Selecionados: (\d+)#", $linha_num_atr, $matchs):
  95.                 $nro_atr = (int)$matchs[1];
  96.                 $dados[ $base_atual ][ $metodo_atual ][ "NRO_ATRIBUTOS" ][ $pasta_atual ] = $nro_atr;
  97.                 break; 
  98.         }
  99.     }
  100.     next($arqs_acuracia);
  101.     next($arqs_acuracia_sem_selecao);
  102.     next($arqs_num_atributos);
  103. }
  104.  
  105. foreach($dados as $nomeBase => $info){
  106.     echo "\n\nBase --- $nomeBase ---\n";
  107.     echo "Method;NroAtributos;A(%)SVM;A(%)SMO;A(%)-KN1;A(%)-NB;\n";
  108.     foreach($info as $nomeMetodo => $moreInfo){
  109.         echo "$nomeMetodo;";
  110.         if($nomeMetodo != "SEM_SEL") {
  111.             echo media($moreInfo["NRO_ATRIBUTOS"]) . " (".desvio($moreInfo["NRO_ATRIBUTOS"]).")";
  112.         }
  113.         echo ";";
  114.         foreach($moreInfo as $classif => $pastasInfo){
  115.             if($classif == "NRO_ATRIBUTOS") { continue; }
  116.             echo media($pastasInfo) . " (". desvio($pastasInfo).");";
  117.         }
  118.         echo "\n";
  119.     }
  120. }
  121.  
  122.  
  123.  
  124. function media($arr){
  125.     return round(array_sum($arr)/count($arr),2);
  126. }
  127. function desvio($arr){
  128.     $med = media($arr);
  129.     $variance = array();
  130.     foreach ($arr as $value) {
  131.         $variance[] = pow($value-$med, 2);
  132.     }
  133.     $deviation = sqrt(media($variance));
  134.     return round($deviation,2);
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement