pcodigo2web/workspace/avaliador/gerartreinopontuadotestenao...

147 lines
3.1 KiB
PHP
Executable File

<?php
// Este script gera o treino pontuado e teste não pontuado a partir das notas de treino fornecidas pelo professor
// Diretorio de entrada
$diretorioentrada = "arquivospredicao/";
// Recebe argumentos de entrada
$p=var_dump($argv);
$arqnotastreino = $diretorioentrada.$argv[1]."/notastreino.csv";
if (file_exists($arqnotastreino))
{
// Carregar notas de treino (amostras pontuadas pelo professor)
$notastreino = file($arqnotastreino);
// Criar vetores com rotulos e notas de treino
$vr=array();
$vn=array();
$n = count($notastreino);
for($i=0;$i<$n;$i++)
{
$x= explode(";",$notastreino[$i]);
$vr[$i]=$x[0];
$vn[$i]=trim($x[1]);
}
$diretorioind = "indexados/".$argv[1]."/";
$diretorioclusters = $diretorioind."clusters/";
// Para cada cluster no diretorioind
$ponteiro1 = opendir($diretorioclusters);
while (($nomecluster = readdir($ponteiro1)))
{
if (($nomecluster<>".") && ($nomecluster<>"..") && ($nomecluster<>"rd"))
{
// Carregar arquivos necessarios para gerar treino pontuado e teste não pontuado
$diretorio = $diretorioclusters.$nomecluster."/";
$treino = file($diretorio."treino.csv");
$teste = file($diretorio."teste.csv");
$lteste= file($diretorio."lteste.csv");
$ltreino= file($diretorio."ltreino.csv");
$arqtreinopontuado = $diretorio."treinopontuado.csv";
$arqtestenaopontuado = $diretorio."testenaopontuado.csv";
// Abrir arquivos de saída
$f1= fopen($arqtreinopontuado,'w');
$f2= fopen($arqtestenaopontuado,'w');
// Gravar primeiras linhas de treino pontuado e teste não pontuado
fwrite($f1, "nota;".$treino[0]);
fwrite($f2, "nota;".$teste[0]);
unset($treino[0]);
$treino=array_values($treino);
unset($teste[0]);
$teste=array_values($teste);
// Gravar treino pontuado
$ntr= count($treino);
for($i=0;$i<$ntr;$i++)
{
$indice = array_search($ltreino[$i], $vr);
if ($indice>=0)
{
fwrite($f1, $vn[$indice].";".$treino[$i]);
unset($vr[$indice]);
$vr=array_values($vr);
unset($vn[$indice]);
$vn=array_values($vn);
}
}
// Gravar teste pontuado em treinopontuado e teste não pontuado em testenaopontuado
$nte= count($teste);
$nnotastreino= count($vr);
$i=0;
// Grava teste não pontuado
for($i=0;$i<$nte; $i++)
{
$indice = array_search($lteste[$i], $vr);
if ($indice>=0)
{
// Se o professor pontuou amostras a mais
fwrite($f1, $vn[$indice].";".$teste[$i]);
unset($vr[$indice]);
$vr=array_values($vr);
unset($vn[$indice]);
$vn=array_values($vn);
}
else
{
fwrite($f2, "0.0".";".$teste[$i]);
}
}
fclose($f1);
fclose($f2);
unset($treino);
unset($teste);
unset($ltreino);
unset($lteste);
}
}
unset($vr);
unset($vn);
}
?>