[[analises:tax:ldasvm]]

Testando Classificação

Este exemplo mostra como fazer validação cruzada (leave-one-out) de uma classificação qualquer utilizando três alternativas:

Argumentos da função testa.classificacao():

  • dad - data.frame com variáveis numéricas (e.g. morfológicas, NIR, shape, etc) e apenas 1 coluna categórica com a classificação a ser testada
  • colgrp - o nome da coluna categórica em dad

Retornar uma lista com três objetos:

  • BRUTOS - data.frame com a validação de cada amostra individualmente (três linhas por amostra, uma para cada método)
  • RESUMOS - lista com três matrizes de confusão, uma para cada método de classificação (SVM,BAYES,LDA)
  • ANALISES.RES - uma tabela resumindo o resultado global de cada método de classificação (SVM,BAYES,LDA)



funcoesnecessarias.r - arquivo com várias funções usadas neste e demais scripts

dad #contém meus dados conforme indicado acima
colgrp #nome da coluna que tem a classificacao a ser testada
 
#chama as funcoes
source("funcoesNecessarias.R")
 
#testa a classificação
testa.classificacao(dad,colgrp=colgrp, analises=c("svm","bayes","lda"),method=c("loo","perc"),perc=30)
#pode modificar os argumentos analises, method. O padrão acima irá fazer as tres analises e usar loo e perc é ignorado.
 
#Porcentagem de Acertos por espécie e total para cada analise
oteste$ANALISES.RES
#salva isso num arquivo
#write.table(final$ANALISES.RES,file='resumo_das_analises.csv',sep='\t',row.names = T)
 
#Plota as Matrizes de Confusão de Cada Análise
tbs = oteste$RESUMOS
l=1
pdf(file='GruposApriori_confusao.pdf',width=7,height=10)
par(mar=c(1,12,12,1),mfrow=c(3,1))
for(l in 1:length(tbs)) {
  tb = tbs[[l]]
  nn = sort(colnames(tb))
  tb = tb[nn,nn]
  qual = names(tbs)[l]
#define cores do backgroun e texto
bg.cols= tb
txt.cols = tb
#se for 0 é branco
bg.cols[tb==0] = gray(level=1)
txt.cols[tb==0] = gray(level=1)
#se for 1 é cinza claro
bg.cols[tb==1] = gray(level=0.8)
txt.cols[tb==1] = gray(level=0)
#se for entre 1 e 5 é um pouco mais escuro
bg.cols[tb>1 & tb<=5] = gray(level=0.6)
txt.cols[tb>1 & tb<=5] = gray(level=0)
bg.cols[tb>5 & tb<=10] = gray(level=0.4)
txt.cols[tb>5 & tb<=10] = gray(level=1)
#se for > 10 o fundo é preto e o texto branco
bg.cols[tb>10] = gray(level=0)
txt.cols[tb>10] = gray(level=1)
#one for 0 coloca NA, isso não é plotado
tb[tb==0] = NA
plotamatriz(tb,bg.cols=bg.cols,txt.cols=txt.cols,valcex=0.8, cexaxis = 0.8)
mtext(side=3,text = qual,adj=0,cex=0.8,line=7)
}
dev.off()
  • analises/tax/ldasvm.txt
  • Última modificação: 01/31/2017 13:31
  • por labotam_admin