library(dplyr)
library(tidyr)
library(tree)
library(captchatjsp)
library(caret)
library(randomForest)

Mostrando

d <- ler(baixar()); desenhar(d)
classificar(picotar(limpar(d)), 'zteei', path)

Atualizar modelo

Base de treino

set.seed(123)
d_min <- carregar_treino('C:/Users/Athos/Downloads/treino/minusculo/')
d_min$letra <- as.factor(d_min$letra)
linhas_treino <- sample(nrow(d_min), 0.8*nrow(d_min))
d_treino_min <- d_min[linhas_treino,]
d_teste_min <- d_min[-linhas_treino,]

d_mai <- carregar_treino('C:/Users/Athos/Downloads/treino/maiusculo/')
d_mai$letra <- as.factor(d_mai$letra)
d_treino_mai <- d_mai[linhas_treino,]
d_teste_mai <- d_mai[-linhas_treino,]

Tree

modelo_tree <- tree(letra ~ ., data = select(d_treino, -arq))
cv_tree <- cv.tree(modelo_tree)
plot(cv_tree)
modelo_tree <- prune.tree(modelo_tree, best = 25)
save(d_treino, file = 'data/d_treino.rda')
save(modelo_tree, file = 'data/modelo.rda')
devtools::document(); devtools::install()

Random Forest

library(doParallel)
cl <- makePSOCKcluster(2)
registerDoParallel(cl)

set.seed(19910401)
modelo_rf_min <- train(letra ~ ., 
                       data = select(d_treino_min, -arq),
                       method = "rf",
                       tuneLength = 6)

modelo_rf_mai <- train(letra ~ ., 
                       data = select(d_treino_mai, -arq),
                       method = "rf",
                       tuneLength = 6)

modelo_min <- modelo_rf_min$finalModel
modelo_mai <- modelo_rf_mai$finalModel

d_teste_min$predicao <- predict(modelo_min, d_teste_min, type = "class")

d_teste_mai$predicao <- predict(modelo_mai, d_teste_mai, type = "class")
d_teste_mai <- d_teste_mai %>%
  mutate(letra = tolower(letra),
         predicao = tolower(predicao))

x <- modelo_min$confusion %>% diag
w <- modelo_mai$confusion %>% diag

sum(x) / sum(modelo_min$confusion[,-length(x)])
sum(w) / sum(modelo_min$confusion[,-length(w)])

y <- d_teste_mai %>%
  group_by(letra, predicao) %>%
  summarise(n = n()) %>%
  ungroup %>%
  spread(predicao, n, fill=0) %>% 
  data.frame %>%
  select(-letra) %>%
  as.matrix 
sum(diag(y)) / sum(y)

z <- d_teste_min %>%  
  group_by(letra, predicao) %>%  
  summarise(n = n()) %>%  
  ungroup %>%  
  spread(predicao, n, fill=0) %>% 
  data.frame %>%
  select(-letra) %>%
  as.matrix 
sum(diag(z)) / sum(z)

d <- ler(baixar())
teste <- carregar_teste(d)
nm <- names(select(d_treino, -arq, -letra))
teste[, nm[!nm %in% names(teste)]] <- 0

r <- paste0(predicao, collapse = "")
r
desenhar(d)

Prever!

set.seed(123)
d_min <- carregar_treino('C:/Users/Athos/Downloads/treino/minusculo/')
d_min$letra <- as.factor(d_min$letra)
linhas_treino <- sample(nrow(d_min), 0.8*nrow(d_min))
d_treino_min <- d_min[linhas_treino,]
d_teste_min <- d_min[-linhas_treino,]

modelo_min <- modelo_rf_min$finalModel
h1 <- scale_x_continuous(breaks = 0:1000*2)
h2 <- scale_y_continuous(breaks = 0:1000)

d <- ler(baixar()); desenhar(limpar(d)) + h1 + h2; prever(d, d_treino_min, modelo_min)


jtrecenti/captchatjsp documentation built on May 20, 2019, 3:16 a.m.