189 lines
3.9 KiB
PHP
Executable File
189 lines
3.9 KiB
PHP
Executable File
<?php
|
|
|
|
// Este script gera o arquivo treinopontuado.csv e o testenaopontuado.csv. O arquivo treinopontuado contém as amostras que o professor corrigiu. O testenaopontuado.csv contem as amostras não pontuadas pelo professor.
|
|
|
|
// Diretorios de entradas
|
|
|
|
$diretorioentrada = "arquivospredicao/";
|
|
$diretorioind = "indexados/";
|
|
|
|
// Para cada questao
|
|
|
|
|
|
|
|
$ponteiro1 = opendir($diretorioentrada);
|
|
|
|
|
|
// Para cada subdiretorio de submissoes (isto é, as tarefas), verifique se diretorio da questao já foi normalizado. Se não, envia
|
|
// endereço do diretorio para ser normalizado
|
|
|
|
while (($nomequestao = readdir($ponteiro1)))
|
|
{
|
|
|
|
if (($nomequestao<>".") && ($nomequestao<>".."))
|
|
{
|
|
|
|
$diretorio = $diretorioentrada.$nomequestao."/";
|
|
|
|
|
|
// Endereço do arquivo com notas de treino
|
|
|
|
$enderecontreino=$diretorio."notastreino.csv";
|
|
|
|
// Endereço do arquivo com notas de teste
|
|
|
|
$endereconteste=$diretorio."notasteste.csv";
|
|
|
|
// O arquivo results conterá o resultado se arquivos com notas de treino foi gerado 0=não foi; 1=foi.
|
|
|
|
$arq0 = $diretorio."results.csv";
|
|
$f0= fopen($arq0,'w');
|
|
|
|
// Se existe o arquivo com notas de treino
|
|
// Carregar o arquivo notastreino.csv . Esse arquivo está no formato "nomeamostra;nota".
|
|
|
|
if (file_exists($enderecontreino))
|
|
{
|
|
|
|
// Carregar arquivos de entrada: rotulos do treino e teste, arquivos treino.csv e teste.csv
|
|
|
|
$tr = file($diretorioind.$nomequestao."/treino.csv");
|
|
$te = file($diretorioind.$nomequestao."/teste.csv");
|
|
$ltr= file($diretorioind.$nomequestao."/ltreino.csv");
|
|
$lte= file($diretorioind.$nomequestao."/lteste.csv");
|
|
|
|
|
|
$ntr = file($enderecontreino);
|
|
$nte= file($endereconteste);
|
|
// Abrir os arquivos de saida
|
|
|
|
$arq1=$diretorio."treinopontuado.csv";
|
|
$arq2=$diretorio."testepontuado.csv";
|
|
$arq3=$diretorio."ltestesnaopontuados.csv";
|
|
|
|
|
|
$f1= fopen($arq1,'w');
|
|
$f2= fopen($arq2,'w');
|
|
$f3= fopen($arq3,'w');
|
|
|
|
|
|
// Número de amostras pontuadas
|
|
|
|
$nap = count($ntr);
|
|
|
|
// Até o tamanho k de ltreino.csv, mescla a coluna de notas com as colunas de treino.csv
|
|
|
|
$k = count($ltr);
|
|
|
|
$i=0;
|
|
|
|
// Grava a primeira linha de treinopontuado.csv
|
|
|
|
$primeiralinha="nota;".$tr[0];
|
|
|
|
fwrite($f1, $primeiralinha);
|
|
|
|
// Para cada linha, grava nota da amostra e o seu vetor de características
|
|
|
|
for($i=0;$i<$k;$i++)
|
|
{
|
|
$vn= explode(";",$ntr[$i]);
|
|
$valornota=trim($vn[1]);
|
|
$linha= $tr[$i + 1];
|
|
fwrite($f1, $valornota.";".$linha);
|
|
unset($vn);
|
|
|
|
}
|
|
|
|
// Numero de amostras de testes
|
|
|
|
$nteste= count($lte);
|
|
|
|
// Após o tamanho k, verifica a posição j do rótulo no arquivo lteste.csv. Copia a posição p+1 de teste.csv e mescla
|
|
// com a nota corrente do notastreino.csv
|
|
|
|
for($j=$i;$j<$nap;$j++)
|
|
{
|
|
$vn = explode(";",$ntr[$j]);
|
|
$rotulo = $vn[0]."\n";
|
|
$valornota=trim($vn[1]);
|
|
|
|
$p= array_search($rotulo,$lte);
|
|
|
|
if ($p>=0 && $p<$nteste)
|
|
{
|
|
// Grava a nota e o vetor no arquivo de treinopontuado
|
|
|
|
$linha= $te[$p + 1];
|
|
|
|
fwrite($f1, $valornota.";".$te[$p + 1]);
|
|
|
|
|
|
// Apaga a linha P da matriz de lteste.csv e a linha P+1 da matriz de teste.csv
|
|
|
|
unset($lte[$p]);
|
|
unset($te[$p+1]);
|
|
|
|
// Reordena indices
|
|
|
|
$lte=array_values($lte);
|
|
$te = array_values($te);
|
|
|
|
|
|
}
|
|
|
|
unset($vn);
|
|
}
|
|
|
|
// Para cada item da matriz de teste.csv, grave nota (0.0) e a linha correspondente dessa matriz, gerando testenaopontuado.csv
|
|
|
|
// Grava a primeira linha de testenaopontuado.csv
|
|
|
|
$primeiralinha="nota;".$te[0];
|
|
|
|
fwrite($f2,$primeiralinha);
|
|
|
|
$tte=count($te);
|
|
|
|
for($i=0;$i<$nteste;$i++)
|
|
{
|
|
$vn= explode(";",$nte[$i]);
|
|
$notareal=trim($vn[1]);
|
|
$linha= $notareal.";".$te[$i + 1];
|
|
fwrite($f2, $linha);
|
|
fwrite($f3, $lte[$i]);
|
|
}
|
|
|
|
|
|
// Fechar arquivos
|
|
|
|
fclose($f1);
|
|
fclose($f2);
|
|
fclose($f3);
|
|
|
|
|
|
// Esvaziar memórias
|
|
|
|
unset($tr);
|
|
unset($te);
|
|
unset($ltr);
|
|
unset($lte);
|
|
unset($ntr);
|
|
unset($nte);
|
|
fwrite($f0,"1");
|
|
|
|
} // Do if para verificar se já existem as notas de treino
|
|
else
|
|
{
|
|
fwrite($f0,"0");
|
|
}
|
|
|
|
// Fechar arquivo com resultado de geração de saida
|
|
|
|
fclose($f0);
|
|
|
|
} // do if
|
|
|
|
} // Do while
|
|
?>
|