197 lines
4.2 KiB
PHP
Executable File
197 lines
4.2 KiB
PHP
Executable File
<?php
|
|
|
|
// Este script recebe como entrada notastreino.csv e os rotulos de ltreino.csv. Gera notastreino-cl.csv, onde cl é o número de um cluster
|
|
|
|
// Esta função remove um diretorio recursivamente
|
|
//-------------------------------------------------------------------------------------------------
|
|
function ExcluiDir($Dir){
|
|
|
|
if ($dd = opendir($Dir)) {
|
|
while (false !== ($Arq = readdir($dd))) {
|
|
if($Arq != "." && $Arq != ".."){
|
|
$Path = "$Dir/$Arq";
|
|
if(is_dir($Path)){
|
|
ExcluiDir($Path);
|
|
}elseif(is_file($Path)){
|
|
unlink($Path);
|
|
}
|
|
}
|
|
}
|
|
closedir($dd);
|
|
}
|
|
rmdir($Dir);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
// Diretorio de entrada
|
|
$diretoriopredicao = "arquivospredicao/";
|
|
$diretorioind = "indexados/";
|
|
|
|
|
|
// Recebe argumentos de entrada - nome da base
|
|
|
|
//$p=var_dump($argv);
|
|
|
|
$questao = $argv[1];
|
|
|
|
|
|
// Carregar notastreino.csv e ltreino.csv
|
|
|
|
$notastreino=$diretoriopredicao.$questao."/treinomodelo.csv";
|
|
|
|
if (file_exists($notastreino))
|
|
{
|
|
|
|
$nt = file($notastreino);
|
|
|
|
// Cria o diretorio clusters em arquivospredicao/nomedabase
|
|
$dirclusters= $diretoriopredicao.$questao."/clusters/";
|
|
|
|
if ((file_exists($dirclusters)))
|
|
{
|
|
ExcluiDir($dirclusters);
|
|
|
|
}
|
|
mkdir($dirclusters);
|
|
|
|
// Separa em vetores notastreino, ltreino e lteste
|
|
|
|
$n=count($nt);
|
|
$vr=array();
|
|
$vn=array();
|
|
for($i=0;$i<$n;$i++)
|
|
{
|
|
$l = explode(";",$nt[$i]);
|
|
$vr[$i]=$l[0];
|
|
$vn[$i]=trim($l[1]);
|
|
unset($l);
|
|
}
|
|
|
|
// Carregar ltreino.csv - com rótulos e clusters. Separar rotulos e clusters
|
|
$ltreino = $diretorioind.$questao."/ltreino.csv";
|
|
|
|
$ltr=file($ltreino);
|
|
$nlc=count($ltr);
|
|
$vlc=array();
|
|
for($i=0;$i<$nlc;$i++)
|
|
{
|
|
$l = explode(";",$ltr[$i]);
|
|
$vlr[$i]=$l[0];
|
|
$vlc[$i]=trim($l[1]);
|
|
unset($l);
|
|
}
|
|
|
|
// Obter numero de clusters diferentes gerados para a questao
|
|
|
|
$result = array_unique($vlc);
|
|
|
|
// Para cada cluster diferente, criar um arquivo notastreino-cl.csv
|
|
|
|
$arqclusters= array();
|
|
$fclusters=array();
|
|
$j=0;
|
|
foreach($result as $cluster)
|
|
{
|
|
$numcluster= trim($cluster);
|
|
$arqclusters[$numcluster]= $diretoriopredicao.$questao."/clusters/notastreino-".$numcluster.".csv";
|
|
|
|
$j=$j+1;
|
|
}
|
|
unset($result);
|
|
|
|
// Em indexados/nomebase, para cada amostra em ltreino.csv, verificar cluster e a nota em notastreino.csv. Elimina a amostra da matriz que carrega notastreino.csv
|
|
|
|
for($i=0;$i<$nlc;$i++)
|
|
{
|
|
// Procurar o rotulo em notastreino para obter nota
|
|
|
|
$indice = array_search($vlr[$i], $vr);
|
|
|
|
if ($indice>=0)
|
|
{
|
|
|
|
$nota = $vn[$indice];
|
|
$icluster= $vlc[$i];
|
|
$f= fopen($arqclusters[$icluster],'a');
|
|
fwrite($f, $vlr[$i].";".$nota."\n");
|
|
fclose($f);
|
|
// Apaga de notastreino
|
|
|
|
unset($vr[$indice]);
|
|
$vr=array_values($vr);
|
|
unset($vn[$indice]);
|
|
$vn=array_values($vn);
|
|
}
|
|
}
|
|
|
|
// O que sobrou de notastreino, verifique qual é o cluster em lteste.csv e grave no cluster correspondente
|
|
|
|
$cont = count($vr);
|
|
|
|
if ($cont>0)
|
|
{
|
|
$alteste = $diretorioind.$questao."/lteste.csv";
|
|
$lteste= file($alteste);
|
|
$contteste = count($lteste);
|
|
|
|
for($p=0;$p<$contteste;$p++)
|
|
{
|
|
$l=explode(";",$lteste[$p]);
|
|
$vrot[$p]=$l[0];
|
|
$vclust[$p]=trim($l[1]);
|
|
unset($l);
|
|
}
|
|
|
|
for($q=0;$q<$cont;$q++)
|
|
{
|
|
// Procurar o rotulo de notastreino em lteste
|
|
|
|
$indice = array_search($vr[$q], $vrot);
|
|
if ($indice>=0)
|
|
{
|
|
|
|
$nota= $vn[$q];
|
|
$rotulo=$vr[$q];
|
|
$clt = $vclust[$indice];
|
|
$f= fopen($arqclusters[$clt],'a');
|
|
fwrite($fclusters[$clt],$rotulo.";".$nota);
|
|
fclose($f);
|
|
}
|
|
|
|
}
|
|
|
|
unset($lteste);
|
|
}
|
|
|
|
|
|
// Fechar todos os arquivos abertos
|
|
$ncfc= count($fclusters);
|
|
|
|
for($m=0;$m<$ncfc; $m++)
|
|
{
|
|
//fclose($fclusters[$m]);
|
|
}
|
|
// Liberar memórias
|
|
unset($vr);
|
|
unset($vn);
|
|
unset($vlr);
|
|
unset($vlc);
|
|
unset($arqclusters);
|
|
unset($nt);
|
|
|
|
$mensagem="\n Notas por cluster geradas com sucesso! \n";
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
$mensagem= "\n Professor não pontuou amostras sugeridas. Não houve predicoes! \n";
|
|
|
|
}
|
|
$arquivoaviso = $diretoriopredicao.$questao."/aviso.txt";
|
|
$fa = fopen($arquivoaviso,'w');
|
|
fwrite($fa, $mensagem);
|
|
fclose($fa);
|
|
?>
|