pcodigo2web/workspace/avaliador/RLsimples.R

91 lines
2.3 KiB
R
Executable File

# Este codigo realiza a predicao de notas por avaliação sintatica
# Autora: Márcia Gonçalves de Oliveira
# Ano 2013
# Entrada dos dados de treino e de teste
# Treino é a base referencia de predicao
# Teste são as amostras que serão pontuadas a partir da referencia de treino aprendida.
# Recebe argumento de entrada: diretorio onde estao matrizes de treino e teste e o identificador de cluster
args <- commandArgs(TRUE)
diretorio=args[1]
cluster= args[2]
# Carrega matrizes de treino e teste
enderecotreino=paste(diretorio,"/treinopontuado-", cluster,".csv",sep="");
enderecoteste=paste(diretorio,"/testenaopontuado-",cluster,".csv",sep="");
matriztreino <- read.table(enderecotreino, header=T, sep=";")
matrizteste <- read.table(enderecoteste, header=T, sep=";")
library(MASS)
library("lsa")
# Obter dimensoes da matriz
dimtr = dim(matriztreino)
dimte = dim(matrizteste)
# Numero de linhas de treino e de teste
ntr=dimtr[1]
nte=dimte[1]
# Numero de colunas de treino e de teste
ctr=dimtr[2]
cte=dimtr[2]
# Obter matrizes sem a nota
treino= matriztreino[,2:ctr]
teste= matrizteste[,2:cte]
# Converter para matriz ==> Se não fizer isso, a função cosine não funciona
F=data.matrix(treino)
G=data.matrix(teste)
# Para guardar notas de teste resultantes
notasteste = matrix(,nte)
# Para cada amostra de teste
for(i in 1:nte)
{
residuo=1
soma = 0
# Para cada amostra de treino, obter vetor sem a nota e a nota
for(j in 1:ntr)
{
# Calcule similaridade entre o treino e o teste e calcule residuo
notatreino= matriztreino[j,1]
similaridade = cosine(F[j,], G[i,])
simi = paste("Treino: ",j," Teste: ", i, " - Similaridade: ", similaridade, " \n")
cat(simi)
soma = soma + notatreino*similaridade*residuo
residuo = (1 - similaridade)
}
notasteste[i,1] = soma
}
# Resultados gerados
resultadospreditos=paste(diretorio,"/notasteste-", cluster, ".csv",sep="")
write.csv(notasteste, file = resultadospreditos)