pcodigo2web/workspace/avaliador/gerartrptenp.php

143 lines
4.8 KiB
PHP
Executable File

<?php
// Este script gera conjunto de treino pontuado e teste não pontuado para cada cluster
// Receber nome da questao
$questao = trim($argv[1]);
// Diretórios de entrada
$diretorioclusters= "indexados/".$questao."/clusters/";
$diretorionotas = "arquivospredicao/".$questao."/clusters/";
$diretoriosaida = $diretorionotas;
// Para cada cluster
$ponteiro2 = opendir($diretorioclusters);
// Para cada subdiretorio do diretorio clusters
while (($nomecluster = readdir($ponteiro2)))
{
if (($nomecluster<>".") && ($nomecluster<>"..") && ($nomecluster<>"rd"))
{
// Carregar arquivos de treino e teste de cada cluster
$cl = trim($nomecluster);
$altreino= $diretorioclusters.$cl."/ltreino.csv";
$alteste= $diretorioclusters.$cl."/lteste.csv";
$atreino=$diretorioclusters.$cl."/treino.csv";
$ateste = $diretorioclusters.$cl."/teste.csv";
$ltreino= file($altreino);
$lteste= file($alteste);
$treino= file($atreino);
$teste= file($ateste);
$tamtreino=count($ltreino);
for($i=0;$i<$tamtreino;$i++)
{
$ltreino[$i]=trim($ltreino[$i]);
}
$tamteste=count($lteste);
for($i=0;$i<$tamteste;$i++)
{
$lteste[$i]=trim($lteste[$i]);
}
// Carregar arquivo com notas
$arqnotas = $diretorionotas."notastreino-".$cl.".csv";
$notas = file($arqnotas);
// Abrir arquivo de treino pontuado, de teste não pontuado e do modelo
$nomeatp= $diretoriosaida."treinopontuado-".$cl.".csv";
$nomeatnp= $diretoriosaida."testenaopontuado-".$cl.".csv";
$arqmodelo= $diretoriosaida."modelorlm-".$cl.".txt";
// Gravar primeira linha no treino, teste e no modelo de regressao
$primeiralinha= "nota;".$treino[0];
//$somavariaveis= str_replace(";", "+", $treino[0]);
//$modelorl = "nota ~ ".$somavariaveis;
unset($treino[0]);
$treino=array_values($treino);
unset($teste[0]);
$teste=array_values($teste);
$fatp = fopen($nomeatp,'w');
$fatnp = fopen($nomeatnp,'w');
$fm = fopen($arqmodelo,'w');
fwrite($fatp, $primeiralinha);
fwrite($fatnp,$primeiralinha);
fwrite($fm, $primeiralinha);
// Gravar treino pontuado
$tamnt=count($notas);
for($i=0;$i<$tamnt;$i++)
{
$linha = explode(";",$notas[$i]);
$vr = $linha[0];
$vn = trim($linha[1]);
unset($linha);
$indice = array_search($vr,$ltreino);
if ($indice>=0)
{
$linhamodificada= str_replace(" ", ";", $treino[$indice]);
fwrite($fatp, $vn.";".$linhamodificada);
}
else
{
$indice = array_search($vr,$lteste);
if ($indice>=0)
{
$testemodificado= str_replace(" ",";", $teste[$indice]);
fwrite($fatp, $vn.";".$testemodificado);
unset($teste[$indice]);
$teste=array_values($teste);
unset($lteste[$indice]);
$lteste=array_values($lteste);
}
}
}
// Grava teste não pontuado
$tamte=count($teste);
for($i=0;$i<$tamte;$i++)
{
$testemodificado= str_replace(" ",";", $teste[$i]);
fwrite($fatnp,"0.0;".$testemodificado);
}
fclose($fatp);
fclose($fatnp);
fclose($fm);
unset($ltreino);
unset($treino);
unset($lteste);
unset($teste);
unset($notas);
}
}
?>