Máquinas de Suporte Vetorial tem tido um grande apelo nas aplicações práticas. Nesse post, seguiremos a mesma ideia do post anterior mas agora, utilizaremos uma biblioteca já existente escrita em Java para a execução do SVM.
A biblioteca a ser utilizada é denominada LIBSVM. O primeiro passo é obter o código fonte e armazená-lo em alguma pasta na sua máquina. Os arquivos estão na pasta denominada Java.
O primeiro passo é fazer a leitura dos dados de interesse no R. Utilizaremos aqui os dados já apresentados no post acerca do Risco de Crédito.
Algumas etapas são necessárias para se preparar o arquivo para o LIBSVM:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #Limpa o Workspace rm (list= ls ()) #Importa os dados German.csv setwd ( "C:\\Blog\\java" ) library (RCurl) x <- getURL (URL) dados <- read.csv ( textConnection (x)) #Separa o vetor de resposta RESPONSE<-dados$RESPONSE #Troca zero por -1 RESPONSE[RESPONSE==0]<- -1 #Remove a coluna RESPONSE dados<-dados[,-32] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #Função para formato libSVM libsvm<- function (x){ tt<- cbind ( t (x),1: length (x)) tt<-tt[tt[,1]>0,] str<- paste ( c ( rbind (tt[,2], ":" ,tt[,1], " " )),collapse = "" ) return (str) } #Cria as strings str<- "" for (i in 1: nrow (dados)){ x<-dados[i,] str<- rbind (str, libsvm (x)) } str<-str[-1,] #Adiciona a resposta txt<- cbind (RESPONSE,str) txt<- apply (txt,1, function (x) paste (x[1],x[2])) write.table (txt, "C:/Blog/german" ,quote=F,row.names=F,col.names=F) |
1 2 3 | #Em seguida executamos a função java parms<- c ( "-s 0 " , " -t 3 " , " -d 3 " , " -g 1 " , " german " , " saida" ) system ( paste ( "java svm_train" , paste (parms,collapse = "" ))) |