library(xlsx)
library(dplyr)
library(mapview)
library(leaflet)
library(leaflet.extras)
library(DT)
dadosaae = read.xlsx(file = "Faturamento PAs.xls", sheetIndex = 1, encoding="UTF-8")
dadosaae = dadosaae[!is.na(dadosaae$LATITUDE), ]
totalmaio = 747501.4
fator = 1/(0.4888)
dadosaae$VALOR.ARRECADADO =  dadosaae$VALOR.ARRECADADO * fator
maio = dadosaae
dadosaae = read.xlsx(file = "Faturamento PAs.xls", sheetIndex = 2, encoding="UTF-8")
dadosaae = dadosaae[!is.na(dadosaae$LATITUDE), ]
totaldez = 871111.05
fator = 1/(0.4776)
dadosaae$VALOR.ARRECADADO =  dadosaae$VALOR.ARRECADADO * fator
dez = dadosaae
dadosaae = read.xlsx(file = "Faturamento PAs.xls", sheetIndex = 3, encoding="UTF-8")
dadosaae = dadosaae[!is.na(dadosaae$LATITUDE), ]
totalset = 864974.3
fator = 1/(0.4605)
dadosaae$VALOR.ARRECADADO =  dadosaae$VALOR.ARRECADADO * fator
set = dadosaae
aae = left_join(maio, dez, by=c("ID..PARQUIMETRO" = "ID..PARQUIMETRO"))
aae[, c(9:15, 17)] = NULL
aae = aae[!is.na(aae$VALOR.ARRECADADO.y), ]

aae$LATITUDE.x  = sub( '(?<=.{3})', '.', aae$LATITUDE.x, perl=TRUE )
aae$LONGITUDE.x = sub( '(?<=.{3})', '.', aae$LONGITUDE.x, perl=TRUE )
aae$lat = as.numeric(aae$LATITUDE.x)
aae$lon = as.numeric(aae$LONGITUDE.x)

aae = left_join(aae, set, by=c("ID..PARQUIMETRO" = "ID..PARQUIMETRO"))
aae[, c(13:17, 19)] = NULL

aae$media = round(rowMeans(aae[, 8:9, 13]), 2) 

Varição da Receita por Setor

aae$SETOR.x  =  as.factor(aae$SETOR.x)
plot(aae$SETOR.x, aae$media, col = "green", xlab = "Setor", ylab = "Receita",las=2)

Faixas de Receita dos Equipamentos

hist(as.numeric(aae$media), col = "green", xlab = "Receita", ylab = "Parquímetros", main = "Frequencia de parquímetros por Faixa de Receita")

Mapa da AAE

Receita por Decis

aae = aae[order(aae$media),]
aae$decis <- ntile(aae$media, 10) *10

pal <- colorBin(
  palette = "BuPu"
  , domain = aae$decis
  , bins = 10
  , reverse = FALSE
)

leaflet(aae) %>%
  addTiles(group="Mapa") %>% 
  addCircles(group="aae", lat = ~lat, lng=~lon, weight = 0.1, radius=50, 
             color=~pal(decis), popup=~paste("Id: ",  ID..PARQUIMETRO, "<br>Local: ", ENDEREÇO.x, "<br>Setor: ", SETOR.x, "<br>Receita Média: ", media, "<br>Decil: ", decis, sep = " "),
             stroke = TRUE, fillOpacity = 0.8)%>%
  addLegend("bottomright", pal = pal, values = ~decis,
    title = "Decis de Receita",
    labFormat = labelFormat(prefix = "[" ,suffix = "]"),
    opacity = 1
  )

Receita Média

pal <- colorBin(
  palette = "BuPu"
  , domain = aae$media
  , bins = 10
  , reverse = FALSE
)

leaflet(aae) %>%
  addTiles(group="Mapa") %>% 
  addCircles(group="aae", lat = ~lat, lng=~lon, weight = 0.1, radius=50, 
             color=~pal(media), popup=~paste("Id: ",  ID..PARQUIMETRO, "<br>Local: ", ENDEREÇO.x, "<br>Setor: ", SETOR.x, "<br>Receita Média: ", media, "<br>Decil: ", decis, sep = " "),
             stroke = TRUE, fillOpacity = 0.95)%>%
  addLegend("bottomright", pal = pal, values = ~media,
    title = "Receita Média",
    labFormat = labelFormat(prefix = "R$"),
    opacity = 1
  )

Dados

aae$LATITUDE.x = NULL
aae$LONGITUDE.x = NULL
#aae$lat = NULL
#aae$lon = NULL
aae$VALOR.ARRECADADO.x = NULL
aae$VALOR.ARRECADADO.y = NULL
aae$APELIDO.x = NULL
aae$ATIVO.x = NULL
aae$APELIDO = NULL
aae$VALOR.ARRECADADO = NULL
names(aae) = c("Id", "Local", "Setor", "V2", "V1","Receita Média", "Decil")


DT::datatable(aae, filter = 'top', options = list(
  language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Portuguese.json'),
  pageLength = 20, autoWidth = TRUE
))

Clusters

library(apcluster)
load(file = "../../TCC/apres2-25000.rda")
load(file = "../../TCC/x2-25000.rda")
#head(x2)
#dim(x2)
summary(apres)
##   Length    Class     Mode 
##      136 APResult       S4
predict.apcluster <- function(s, exemplars, newdata)
{
  simMat <- s(rbind(exemplars, newdata), sel=(1:nrow(newdata)) + nrow(exemplars))[1:nrow(exemplars), ]
  unname(apply(simMat, 2, which.max))
}

resultado = predict.apcluster(negDistMat(r=2), x2[apres@exemplars, ],  aae[1:length(aae$Id), 4:5])
aae$cluster[1:length(aae$Id)] = resultado
plot(apres, x2)

Dados

# aae$cluster = as.numeric(aae$cluster)
# pal <- colorBin(
#   palette = "BuPu"
#   , domain = aae$cluster
#   , bins = 20
#   , reverse = FALSE
# )
# colnames(aae)[6] = "Receita"
# 
# leaflet(aae) %>%
#   addTiles(group="Mapa") %>% 
#   addCircles(group="aae", lat = ~V2, lng=~V1, weight = 0.1, radius=50, 
#              color=~pal(cluster), popup=~paste("Id: ",  Id, "<br>Local: ", Local, "<br>Setor: ", Setor, "<br>Receita Média: ", Receita, "<br>Cluster: ", cluster, sep = " "),
#              stroke = TRUE, fillOpacity = 0.95)%>%
#   addLegend("bottomright", pal = pal, values = ~cluster,
#     title = "Receita Média",
#     opacity = 1
#   )
# 
# colnames(aae)[1] = "Parq"
# colnames(aae)[4] = "Lat"
# colnames(aae)[5] = "Lon"
# colnames(aae)[8] = "box_id"
# colnames(aae)[3] = "id"
# aae$id = 0
# aae$id =  (aae$box_id * 11)
# aae$group = aae$box_id
clusters_encontrados = unique(aae$cluster)
clusters_encontrados = sort(clusters_encontrados)
library(contoureR)
poly = data.frame()
for (i in clusters_encontrados){
  temp = aae[aae$"cluster" == i,  ]
  ch1 = convexHullAM_Indexes(temp[,"V2"],temp[,"V1"], includeColinear=FALSE,zeroBased = FALSE)
  for (ii in ch1) {
    polying = temp[ii,]
    poly = rbind(poly, polying)
  }
  
}
poly
#dim(poly)
dados = poly
#head(dados)
names(dados) = c("log", "Local", "Setor", "lon", "lat", "ReceitaMedia", "dens", "box_id")
dados$id = (dados$box_id * 11)
dados$group = dados$id
#head(dados)
#realizamos a criação dos objetos necessários
library(sp)
coordinates(dados)=c("lat","lon")
df = dados
#head(df)
library(sp)
data <- data.frame(box_id=unique(df$box_id),row.names=unique(df$id))
#head(data)
points2polygons <- function(df,data) {
  get.grpPoly <- function(group,ID,df) {
    Polygon(coordinates(df[df$id==ID & df$group==group,]))
  }
  get.spPoly  <- function(ID,df) {
    Polygons(lapply(unique(df[df$id==ID,]$group),get.grpPoly,ID,df),ID)
  }
  spPolygons  <- SpatialPolygons(lapply(unique(df$id),get.spPoly,df))
  SpatialPolygonsDataFrame(spPolygons,match.ID=T,data=data)
}

Polígonos

spDF <- points2polygons(df,data)
spDF[1]
## class       : SpatialPolygonsDataFrame 
## features    : 26 
## extent      : -51.25593, -51.16061, -30.11496, -30.01795  (xmin, xmax, ymin, ymax)
## crs         : NA 
## variables   : 1
## names       : box_id 
## min values  :      4 
## max values  :    135
class(spDF)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
plot(spDF,col=spDF$box_id+1)

#Salvamos o SpatialPolygonsDataFrame
#library(rgdal)
#rgdal::writeOGR(obj = spDF,
#                dsn = "myParq.json",
#                layer = "myParq.json",
#                driver = "GeoJSON",
#                overwrite_layer = TRUE)
#carregamos os dados SpatialPolygonsDataFrame
#parqs <- geojsonio::geojson_read("myParq.json", what = "sp")
parqs = spDF

CRS

#Verificamos o objeto
#head(parqs, 1)
#dim(parqs)
library(raster)
projection(parqs)
## [1] NA

Polígonos de Parquímetros por Cluster

#Verificamos os dados espaciais no mapa
library(mapview)
mapviewPalette(name = "Viridis")
mapview(parqs)

Abrangência dos Polígonos de Parquímetros

#Como os parquímetros possuem uma área de abrangencia e os polígonos se limitam à posição
#dos parquímetros, assim criamos um buffer para expandir o tamanho do polígono
library(rgeos)
AAE = gBuffer(parqs, width = 0.0004)
mapview(AAE)
#fazemos a carga dos dados dosclusters
load("clusters_centroids.rda")
head(dadostemp)
dados = as.data.frame(dados)
head(dados)
names(dados) = c("log", "Local", "Setor", "Lat", "Lon","ReceitaMedia", "Dens", "cluster", "clusterx11",  "box_id")
head(dados)
#realizamos typecast
dadostemp$cluster = as.numeric(as.character(dadostemp$cluster))
dados$cluster = as.numeric(as.character(dados$cluster))
#Realizamos um bind tipo "left outer join"
dados[,"centroide_lat"]<-dadostemp[dados[ ,"cluster"], "centroide_lat"]
dados[,"centroide_lon"]<-dadostemp[dados[ ,"cluster"], "centroide_lon"]
dados[,"medoide_lat"]<-dadostemp[dados[ ,"cluster"], "medoide_lat"]
dados[,"medoide_lon"]<-dadostemp[dados[ ,"cluster"], "medoide_lon"]
dados[,"area"]<-dadostemp[dados[ ,"cluster"], "area"]
dados[,"ocorrencias"]<-dadostemp[dados[ ,"cluster"], "ocorrencias"]
dados[,"alvara_km2"]<-dadostemp[dados[ ,"cluster"], "id"]
dados[,"exemplar_lon"]<-dadostemp[dados[ ,"cluster"], "exemplars_lat"]
dados[,"exemplar_lat"]<-dadostemp[dados[ ,"cluster"], "exemplars_lon"]
#head(dados)
parquimetros_clusterizados = dados
save(parquimetros_clusterizados, file = "parquimetros_clusterizados.Rda")

Modelo

names(parquimetros_clusterizados) = c("log", "Local", "Setor", "Lat", "Lon", "ReceitaMedia", "Dens", "cluster",  "clusterx11",  "box_id", "centroide_lat", "centroide_lon", "medoide_lat",  "medoide_lon",  "area", "ocorrencias",  "alvara_km2", "exemplar_lat",  "exemplar_lon" )
head(parquimetros_clusterizados)

Calcula as distancias dos parquímetros em relaçãp à centróides, medoides e exemplares.

library(data.table)
library(geosphere)
setDT(parquimetros_clusterizados)
parquimetros_clusterizados[, distancia_medoide := distHaversine(matrix(c(parquimetros_clusterizados$Lon, parquimetros_clusterizados$Lat), ncol = 2),                                                                matrix(c(parquimetros_clusterizados$medoide_lon, parquimetros_clusterizados$medoide_lat), ncol = 2))]

parquimetros_clusterizados[, distancia_cemtroide := distHaversine(matrix(c(parquimetros_clusterizados$Lon, parquimetros_clusterizados$Lat), ncol = 2),                                                                  matrix(c(parquimetros_clusterizados$centroide_lon, parquimetros_clusterizados$centroide_lat), ncol = 2))]


parquimetros_clusterizados[, distancia_exemplars := distHaversine(matrix(c(parquimetros_clusterizados$Lon, parquimetros_clusterizados$Lat), ncol = 2),                                                                  matrix(c(parquimetros_clusterizados$exemplar_lon, parquimetros_clusterizados$exemplar_lat), ncol = 2))]

head(parquimetros_clusterizados)
load("alvaras.rda")
dim(alvaras)
## [1] 177106      6
head(alvaras)
coord = alvaras[,1:2]
names(coord) = c("longitude", "latitude" )
head(coord)
str(coord)  
## 'data.frame':    177106 obs. of  2 variables:
##  $ longitude: num  -51.2 -51.2 -51.2 -51.2 -51.2 ...
##  $ latitude : num  -30.1 -30 -30 -30 -30 ...
servico         = alvaras[alvaras$V5 == "Servico", ]
names(servico)  = c("longitude", "latitude" )
servico         = servico[,1:2]
head(servico)
dim(servico)
## [1] 108449      2
comercio        = alvaras[alvaras$V5 == "Comercio", ]
comercio        = comercio[,1:2]
names(comercio) = c("longitude", "latitude" )
head(comercio)
dim(comercio)
## [1] 68657     2
alvaras_m       = alvaras[,1:2]
names(alvaras_m) = c("longitude", "latitude" )
head(alvaras_m)

Realiza as iterações para identificar o número de alvaras de comércio e serviço num raio de 100 metros de cada parquímetro.

for(i in 1:length(parquimetros_clusterizados$log)){
  alvaras_df <- data.frame(alvaras_m, 
                           resultado = geosphere::distHaversine(
                             alvaras_m, 
                             c(parquimetros_clusterizados$Lon[i], parquimetros_clusterizados$Lat[i])
                           ) / 1000 < 0.1)    
  alv = as.data.frame(table(alvaras_df$resultado))
  parquimetros_clusterizados$alvaras[i] = alv[2,2]
}
for(i in 1:length(parquimetros_clusterizados$log)){
  comercio_df <- data.frame(comercio, 
                            resultado = geosphere::distHaversine(
                              comercio, 
                              c(parquimetros_clusterizados$Lon[i], parquimetros_clusterizados$Lat[i])
                            ) / 1000 < 0.1)    
  com = as.data.frame(table(comercio_df$resultado))
  parquimetros_clusterizados$comercio[i] = com[2,2]
}
for(i in 1:length(parquimetros_clusterizados$log)){
  servico_df <- data.frame(servico, 
                           resultado = geosphere::distHaversine(
                             servico, 
                             c(parquimetros_clusterizados$Lon[i], parquimetros_clusterizados$Lat[i])
                           ) / 1000 < 0.1)    
  ser = as.data.frame(table(servico_df$resultado))
  parquimetros_clusterizados$servico[i] = ser[2,2]
}
head(parquimetros_clusterizados)
parquimetros_clusterizados[,c("log", "Setor", "clusterx11", "box_id")] = NULL
head(parquimetros_clusterizados)
levels(parquimetros_clusterizados$ReceitaMedia) <- c(1:10)
perc_oc = parquimetros_clusterizados$ReceitaMedia
parquimetros_clusterizados = cbind(perc_oc, parquimetros_clusterizados)
head(parquimetros_clusterizados)
parquimetros_clusterizados$servico = parquimetros_clusterizados$servico/parquimetros_clusterizados$alvaras
parquimetros_clusterizados$comercio = parquimetros_clusterizados$comercio/parquimetros_clusterizados$alvaras
head(parquimetros_clusterizados)
threshold = quantile(parquimetros_clusterizados$perc_oc, probs = c(0.35))
parquimetros_clusterizados$perc_oc = if_else(parquimetros_clusterizados$perc_oc > threshold, 0, 1)
table(parquimetros_clusterizados$perc_oc)
## 
##  0  1 
## 84 45
parquimetros_clusterizados$ReceitaMedia = NULL
parquimetros_clusterizados$Dens = NULL
library(caTools)
set.seed(1)
divisao = sample.split(parquimetros_clusterizados$perc_oc, SplitRatio = 0.70)
treino = subset(parquimetros_clusterizados, divisao == TRUE)
teste = subset(parquimetros_clusterizados, divisao == FALSE)
dim(treino)
## [1] 90 20
dim(teste)
## [1] 39 20
save(parquimetros_clusterizados, file = "parquimetros_clusterizados.Rda")
save(treino, file = "treino.Rda")
save(teste, file = "teste.Rda")

NAYVE BAYES

A caption

A caption

load("treino.Rda")
load("teste.Rda")
library(e1071)
classificador = naiveBayes(x = treino[, c(3:4,10:12, 17:20)], y = treino$perc_oc, laplace = 3)
print(classificador)
## 
## Naive Bayes Classifier for Discrete Predictors
## 
## Call:
## naiveBayes.default(x = treino[, c(3:4, 10:12, 17:20)], y = treino$perc_oc, 
##     laplace = 3)
## 
## A-priori probabilities:
## treino$perc_oc
##         0         1 
## 0.6555556 0.3444444 
## 
## Conditional probabilities:
##               Lat
## treino$perc_oc      [,1]       [,2]
##              0 -30.04217 0.02454342
##              1 -30.03685 0.02263576
## 
##               Lon
## treino$perc_oc      [,1]       [,2]
##              0 -51.21740 0.01844361
##              1 -51.21452 0.02093226
## 
##               area
## treino$perc_oc      [,1]      [,2]
##              0 0.6229541 0.4169484
##              1 0.5841291 0.3641783
## 
##               ocorrencias
## treino$perc_oc     [,1]     [,2]
##              0 2849.814 1498.972
##              1 2778.355 1212.158
## 
##               alvara_km2
## treino$perc_oc     [,1]     [,2]
##              0 7858.572 9298.488
##              1 6732.909 6142.446
## 
##               distancia_exemplars
## treino$perc_oc     [,1]      [,2]
##              0 246.9606 109.19963
##              1 240.5310  92.01057
## 
##               alvaras
## treino$perc_oc     [,1]     [,2]
##              0 302.9322 390.7461
##              1 224.9310 195.1210
## 
##               comercio
## treino$perc_oc      [,1]      [,2]
##              0 0.2829655 0.1594480
##              1 0.3224603 0.1431056
## 
##               servico
## treino$perc_oc      [,1]      [,2]
##              0 0.7218305 0.1623035
##              1 0.6775397 0.1431056
classificador$apriori
## treino$perc_oc
##  0  1 
## 59 31
previsoes = predict(classificador, newdata = teste[, c(3:4,10:12, 17:20)])
previsoes
##  [1] 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1
## [39] 0
## Levels: 0 1
cm = table(previsoes, teste$perc_oc, dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 11  4
##       1 14 10
library(caret)
cm_nb = confusionMatrix(cm)
cm_nb
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 11  4
##       1 14 10
##                                           
##                Accuracy : 0.5385          
##                  95% CI : (0.3718, 0.6991)
##     No Information Rate : 0.641           
##     P-Value [Acc > NIR] : 0.93156         
##                                           
##                   Kappa : 0.1333          
##                                           
##  Mcnemar's Test P-Value : 0.03389         
##                                           
##             Sensitivity : 0.4400          
##             Specificity : 0.7143          
##          Pos Pred Value : 0.7333          
##          Neg Pred Value : 0.4167          
##              Prevalence : 0.6410          
##          Detection Rate : 0.2821          
##    Detection Prevalence : 0.3846          
##       Balanced Accuracy : 0.5771          
##                                           
##        'Positive' Class : 0               
## 
source('matriz_confusao.R')
matriz(cm_nb)

fourfoldplot(cm_nb$table)

cm_nb = c("Naive Bayes", cm_nb$overall[1], cm_nb$byClass[1:4])
resultados = as.data.frame(cm_nb)
resultados

REGRAS DE DECISÃO

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")


treino$comercio[is.na(treino$comercio)] <- 0

dt_treino = treino[, c(3:4,10:12, 17:20)]
dt_treino = cbind(dt_treino, treino$perc_oc)
head(dt_treino)
dt_teste = teste[, c(3:4,10:12, 17:20)]
dt_teste = cbind(dt_teste, teste$perc_oc)


treino$Local = NULL
teste$Local = NULL
dt_treino$alvaras = ifelse(is.na(dt_treino$alvaras), 0, dt_treino$alvaras)
dt_treino$comercio = ifelse(is.na(dt_treino$comercio), 0, dt_treino$comercio)
dt_treino$servico = ifelse(is.na(dt_treino$servico), 0, dt_treino$servico)

dt_teste$alvaras = ifelse(is.na(dt_teste$alvaras), 0, dt_teste$alvaras)
dt_teste$comercio = ifelse(is.na(dt_teste$comercio), 0, dt_teste$comercio)
dt_teste$servico = ifelse(is.na(dt_teste$servico), 0, dt_teste$servico)

library(RoughSets)
dt_treino = SF.asDecisionTable(dataset = dt_treino, decision.attr = 10)
dt_teste = SF.asDecisionTable(dataset = dt_teste, decision.attr = 10)
discretizados = D.discretization.RST(dt_treino, nOfIntervals = 10)
discretizados
## $cut.values
## $cut.values$Lat
## [1] -30.05918 -30.05041 -30.03981 -30.03339 -30.03206 -30.03046 -30.02840
## [8] -30.02614 -30.02220
## 
## $cut.values$Lon
## [1] -51.23403 -51.23005 -51.22833 -51.22377 -51.21483 -51.21067 -51.20767
## [8] -51.20289 -51.19702
## 
## $cut.values$area
## [1] 0.2223374 0.3435523 0.3856049 0.4528156 0.5214642 0.5706521 0.6361648
## [8] 0.6977012 1.1232046
## 
## $cut.values$ocorrencias
## [1] 1252.0 1882.6 2127.0 2359.0 2418.0 2572.0 2629.4 4380.0 4685.0
## 
## $cut.values$alvara_km2
## [1]  1566.202  2661.598  3159.718  3588.047  4551.964  5809.913  6696.939
## [8]  8595.029 23190.807
## 
## $cut.values$distancia_exemplars
## [1]  98.8107 160.4214 192.5688 220.1251 250.6854 279.5665 301.6476 330.7574
## [9] 367.9793
## 
## $cut.values$alvaras
## [1]  35.4  76.0 114.1 130.0 176.5 250.4 306.3 359.0 502.0
## 
## $cut.values$comercio
## [1] 0.08215902 0.15697170 0.19719424 0.22541583 0.25728804 0.31460658 0.34261390
## [8] 0.42415734 0.52462804
## 
## $cut.values$servico
## [1] 0.4532520 0.5337477 0.6494024 0.6756905 0.7214458 0.7640190 0.7899160
## [8] 0.8329206 0.9045374
## 
## 
## $type.method
## [1] "unsupervised.quantiles"
## 
## $type.task
## [1] "discretization"
## 
## $model
## [1] "RST"
## 
## attr(,"class")
## [1] "Discretization" "list"
dt_treino = SF.applyDecTable(dt_treino, discretizados)
dt_teste= SF.applyDecTable(dt_teste, discretizados)
head(dt_teste)
head(dt_treino)
classifier = RI.CN2Rules.RST(dt_treino, K = 15)
print(classifier)
## A set consisting of  29  rules:
## 1. IF area is [0.571,0.636) THEN V2 is 0;
##      (supportSize=11; laplace=0.9231) 
## 2. IF servico is [0.905, Inf] THEN V2 is 0;
##      (supportSize=7; laplace=0.8889) 
## 3. IF Lat is [-30.033,-30.032) and area is [0.698,1.12) THEN V2 is 1;
##      (supportSize=4; laplace=0.8333) 
## 4. IF distancia_exemplars is [160,193) THEN V2 is 0;
##      (supportSize=7; laplace=0.8889) 
## 5. IF servico is [0.453,0.534) and Lon is [-51.215,-51.211) THEN V2 is 0;
##      (supportSize=4; laplace=0.8333) 
## 6. IF Lon is [-51.203,-51.197) and Lat is [-30.022, Inf] THEN V2 is 1;
##      (supportSize=3; laplace=0.8) 
## 7. IF distancia_exemplars is [-Inf,98.8) THEN V2 is 0;
##      (supportSize=4; laplace=0.8333) 
## 8. IF distancia_exemplars is [251,280) and area is [0.453,0.521) THEN V2 is 1;
##      (supportSize=3; laplace=0.8) 
## 9. IF Lon is [-51.197, Inf] THEN V2 is 0;
##      (supportSize=3; laplace=0.8) 
## 10. IF servico is [0.676,0.721) THEN V2 is 1;
##      (supportSize=3; laplace=0.8) 
## ... and 19 other rules.
prediction = predict(classifier, newdata = dt_teste[-10])
prediction
mc = table(unlist(prediction), dt_teste$V2, dnn=c("Predito", "Atual"))
mc
##        Atual
## Predito  0  1
##       0 20  7
##       1  5  7
cm_rd = confusionMatrix(mc)
cm_rd
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 20  7
##       1  5  7
##                                           
##                Accuracy : 0.6923          
##                  95% CI : (0.5243, 0.8298)
##     No Information Rate : 0.641           
##     P-Value [Acc > NIR] : 0.3128          
##                                           
##                   Kappa : 0.3097          
##                                           
##  Mcnemar's Test P-Value : 0.7728          
##                                           
##             Sensitivity : 0.8000          
##             Specificity : 0.5000          
##          Pos Pred Value : 0.7407          
##          Neg Pred Value : 0.5833          
##              Prevalence : 0.6410          
##          Detection Rate : 0.5128          
##    Detection Prevalence : 0.6923          
##       Balanced Accuracy : 0.6500          
##                                           
##        'Positive' Class : 0               
## 
source('matriz_confusao.R')
matriz(cm_rd)

fourfoldplot(cm_rd$table)

cm_rd = c("Regras de Decisão", cm_rd$overall[1], cm_rd$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_rd))

REGRESSÃO LOGÍSTICA

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)
classificador = glm(formula = perc_oc ~., family = binomial, data = treino, control = list(maxit = 50))
probabilidades = predict(classificador, type = 'response', newdata = teste[, -1])
previsoes = ifelse(probabilidades > 0.5, 1, 0)
previsoes
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
##  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 
## 27 28 29 30 31 32 33 34 35 36 37 38 39 
##  0  0  1  0  0  0  0  1  0  0  0  0  0
cm = table(previsoes, teste$perc_oc, dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 22 13
##       1  3  1
cm_rl = confusionMatrix(cm)
cm_rl
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 22 13
##       1  3  1
##                                          
##                Accuracy : 0.5897         
##                  95% CI : (0.421, 0.7443)
##     No Information Rate : 0.641          
##     P-Value [Acc > NIR] : 0.79926        
##                                          
##                   Kappa : -0.0576        
##                                          
##  Mcnemar's Test P-Value : 0.02445        
##                                          
##             Sensitivity : 0.88000        
##             Specificity : 0.07143        
##          Pos Pred Value : 0.62857        
##          Neg Pred Value : 0.25000        
##              Prevalence : 0.64103        
##          Detection Rate : 0.56410        
##    Detection Prevalence : 0.89744        
##       Balanced Accuracy : 0.47571        
##                                          
##        'Positive' Class : 0              
## 
source('matriz_confusao.R')
matriz(cm_rl)

fourfoldplot(cm_rl$table)

cm_rl = c("Regressão Logística", cm_rl$overall[1], cm_rl$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_rl))

REGRESSÃO LINEAR

A caption

A caption

options(scipen=999)
load(file = "treino.Rda")
load(file = "teste.Rda")

treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)
linearMod <- lm(perc_oc ~ ., data=treino)  
summary(linearMod)
## 
## Call:
## lm(formula = perc_oc ~ ., data = treino)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.6918 -0.2739 -0.1788  0.4238  0.9913 
## 
## Coefficients:
##                          Estimate    Std. Error t value Pr(>|t|)   
## (Intercept)         -363.38528139  280.37790193  -1.296  0.19915   
## Lat                  -11.79016215   34.37945306  -0.343  0.73266   
## Lon                   10.34088611   34.23268913   0.302  0.76348   
## cluster               -0.00044526    0.00145424  -0.306  0.76036   
## centroide_lat        275.17991085  190.59839490   1.444  0.15320   
## centroide_lon        181.26782799  415.61966027   0.436  0.66406   
## medoide_lat          -12.23201765   36.87471033  -0.332  0.74108   
## medoide_lon          -51.04688672   47.25289894  -1.080  0.28367   
## area                  -0.23673208    0.48856461  -0.485  0.62949   
## ocorrencias            0.00016943    0.00012224   1.386  0.17007   
## alvara_km2            -0.00003449    0.00002615  -1.319  0.19140   
## exemplar_lat        -244.97325210  173.40606428  -1.413  0.16211   
## exemplar_lon        -151.31320885  411.25809699  -0.368  0.71402   
## distancia_medoide      0.00052761    0.00043657   1.209  0.23086   
## distancia_cemtroide    0.00038809    0.00170704   0.227  0.82081   
## distancia_exemplars   -0.00102708    0.00142155  -0.723  0.47235   
## alvaras               -0.00002747    0.00022409  -0.123  0.90279   
## comercio              -1.15528580    0.53825987  -2.146  0.03526 * 
## servico               -1.26747736    0.46554684  -2.723  0.00814 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4638 on 71 degrees of freedom
## Multiple R-squared:  0.2485, Adjusted R-squared:  0.05792 
## F-statistic: 1.304 on 18 and 71 DF,  p-value: 0.2121
options(digits=2)
predicoes = predict.lm(linearMod,  teste[, -1])
predicoes = ifelse(predicoes > 0.5, 1, 0)
predicoes
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
##  0  0  1  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 
## 27 28 29 30 31 32 33 34 35 36 37 38 39 
##  0  0  1  0  0  0  0  1  0  0  0  0  0
cm = table(predicoes, teste$perc_oc, dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 22 12
##       1  3  2
cm_rlin = confusionMatrix(cm)
cm_rlin
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 22 12
##       1  3  2
##                                         
##                Accuracy : 0.615         
##                  95% CI : (0.446, 0.766)
##     No Information Rate : 0.641         
##     P-Value [Acc > NIR] : 0.6956        
##                                         
##                   Kappa : 0.027         
##                                         
##  Mcnemar's Test P-Value : 0.0389        
##                                         
##             Sensitivity : 0.880         
##             Specificity : 0.143         
##          Pos Pred Value : 0.647         
##          Neg Pred Value : 0.400         
##              Prevalence : 0.641         
##          Detection Rate : 0.564         
##    Detection Prevalence : 0.872         
##       Balanced Accuracy : 0.511         
##                                         
##        'Positive' Class : 0             
## 
source('matriz_confusao.R')
matriz(cm_rlin)

fourfoldplot(cm_rlin$table)

cm_rlin = c("Regressão Linear", cm_rlin$overall[1], cm_rlin$byClass[1:4])
#resultados = as.data.frame(cbind(resultados, cm_rlin))

REGRESSÃO LINEAR

options(scipen=999)
load(file = "treino.Rda")
load(file = "teste.Rda")

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)

treino = treino[ , c(1, 18:20)]
teste  = teste[ , c(1, 18:20)]
linearMod <- lm(perc_oc ~ ., data=treino)  
summary(linearMod)
## 
## Call:
## lm(formula = perc_oc ~ ., data = treino)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -0.515 -0.337 -0.270  0.593  0.772 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  1.000000   0.331551    3.02   0.0034 **
## alvaras     -0.000138   0.000148   -0.93   0.3561   
## comercio    -0.363689   0.405452   -0.90   0.3722   
## servico     -0.743469   0.351521   -2.12   0.0373 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.47 on 86 degrees of freedom
## Multiple R-squared:  0.0696, Adjusted R-squared:  0.0372 
## F-statistic: 2.15 on 3 and 86 DF,  p-value: 0.1
options(digits=2)
predicoes = predict.lm(linearMod,  teste[, -1])
predicoes = ifelse(predicoes > 0.5, 1, 0)
predicoes
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
##  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 
## 27 28 29 30 31 32 33 34 35 36 37 38 39 
##  0  0  0  0  0  0  0  0  0  0  0  0  0
cm = table(predicoes, teste$perc_oc, dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 25 13
##       1  0  1
cm_rlin = confusionMatrix(cm)
cm_rlin
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 25 13
##       1  0  1
##                                         
##                Accuracy : 0.667         
##                  95% CI : (0.498, 0.809)
##     No Information Rate : 0.641         
##     P-Value [Acc > NIR] : 0.439968      
##                                         
##                   Kappa : 0.09          
##                                         
##  Mcnemar's Test P-Value : 0.000874      
##                                         
##             Sensitivity : 1.0000        
##             Specificity : 0.0714        
##          Pos Pred Value : 0.6579        
##          Neg Pred Value : 1.0000        
##              Prevalence : 0.6410        
##          Detection Rate : 0.6410        
##    Detection Prevalence : 0.9744        
##       Balanced Accuracy : 0.5357        
##                                         
##        'Positive' Class : 0             
## 
source('matriz_confusao.R')
matriz(cm_rlin)

fourfoldplot(cm_rlin$table)

cm_rlin = c("Regressão Linear", cm_rlin$overall[1], cm_rlin$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_rlin))

Árvores de Decisão

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)
library(rpart)
library(rpart.plot)
treino$perc_oc = as.factor(treino$perc_oc)
head(treino)
classifier2 = rpart(formula = perc_oc ~ ., data = treino)
print(classifier2)
## n= 90 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##  1) root 90 31 0 (0.656 0.344)  
##    2) servico>=0.84 17  1 0 (0.941 0.059) *
##    3) servico< 0.84 73 30 0 (0.589 0.411)  
##      6) comercio>=0.18 65 23 0 (0.646 0.354)  
##       12) distancia_medoide< 3.1e+02 30  6 0 (0.800 0.200) *
##       13) distancia_medoide>=3.1e+02 35 17 0 (0.514 0.486)  
##         26) area>=0.51 24  9 0 (0.625 0.375)  
##           52) cluster< 84 16  4 0 (0.750 0.250) *
##           53) cluster>=84 8  3 1 (0.375 0.625) *
##         27) area< 0.51 11  3 1 (0.273 0.727) *
##      7) comercio< 0.18 8  1 1 (0.125 0.875) *
rpart.plot(classifier2)

previsoes = predict(classifier2, newdata = teste[,-1])
previsoes
##       0     1
## 1  0.27 0.727
## 2  0.80 0.200
## 3  0.80 0.200
## 4  0.80 0.200
## 5  0.80 0.200
## 6  0.12 0.875
## 7  0.80 0.200
## 8  0.80 0.200
## 9  0.27 0.727
## 10 0.80 0.200
## 11 0.80 0.200
## 12 0.80 0.200
## 13 0.12 0.875
## 14 0.27 0.727
## 15 0.80 0.200
## 16 0.80 0.200
## 17 0.75 0.250
## 18 0.80 0.200
## 19 0.80 0.200
## 20 0.80 0.200
## 21 0.75 0.250
## 22 0.80 0.200
## 23 0.94 0.059
## 24 0.94 0.059
## 25 0.27 0.727
## 26 0.80 0.200
## 27 0.27 0.727
## 28 0.94 0.059
## 29 0.94 0.059
## 30 0.80 0.200
## 31 0.94 0.059
## 32 0.38 0.625
## 33 0.94 0.059
## 34 0.12 0.875
## 35 0.80 0.200
## 36 0.27 0.727
## 37 0.80 0.200
## 38 0.38 0.625
## 39 0.94 0.059
previsoes = predict(classifier2, newdata = teste, type = 'class')
head(previsoes)
## 1 2 3 4 5 6 
## 1 0 0 0 0 1 
## Levels: 0 1
cm_ad = confusionMatrix(mc)
cm_ad
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 20  7
##       1  5  7
##                                        
##                Accuracy : 0.692        
##                  95% CI : (0.524, 0.83)
##     No Information Rate : 0.641        
##     P-Value [Acc > NIR] : 0.313        
##                                        
##                   Kappa : 0.31         
##                                        
##  Mcnemar's Test P-Value : 0.773        
##                                        
##             Sensitivity : 0.800        
##             Specificity : 0.500        
##          Pos Pred Value : 0.741        
##          Neg Pred Value : 0.583        
##              Prevalence : 0.641        
##          Detection Rate : 0.513        
##    Detection Prevalence : 0.692        
##       Balanced Accuracy : 0.650        
##                                        
##        'Positive' Class : 0            
## 
source('matriz_confusao.R')
matriz(cm_ad)

fourfoldplot(cm_ad$table)

cm_ad = c("Arvores de Decisão", cm_ad$overall[1], cm_ad$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_ad))

Floresta Randômica

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)
teste = as.data.frame(teste)
treino = as.data.frame(treino)
teste[, 2:19] = scale(teste[, 2:19])
treino[, 2:19] = scale(treino[, 2:19])
library(randomForest)
classifier = randomForest(x = treino[, 4:12], y = treino$perc_oc, ntree = 13)
print(classifier)
## 
## Call:
##  randomForest(x = treino[, 4:12], y = treino$perc_oc, ntree = 13) 
##                Type of random forest: regression
##                      Number of trees: 13
## No. of variables tried at each split: 3
## 
##           Mean of squared residuals: 0.3
##                     % Var explained: -32
previsoes = predict(classifier, newdata = teste[, 4:12])
previsoes
##     1     2     3     4     5     6     7     8     9    10    11    12    13 
## 0.176 0.356 0.421 0.421 0.421 0.465 0.521 0.273 0.232 0.232 0.312 0.312 0.439 
##    14    15    16    17    18    19    20    21    22    23    24    25    26 
## 0.439 0.439 0.237 0.237 0.237 0.477 0.477 0.477 0.241 0.543 0.543 0.543 0.249 
##    27    28    29    30    31    32    33    34    35    36    37    38    39 
## 0.249 0.243 0.593 0.085 0.085 0.085 0.456 0.456 0.456 0.384 0.384 0.236 0.409
library(caret)
cm_fr = confusionMatrix(mc)
cm_fr
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 20  7
##       1  5  7
##                                        
##                Accuracy : 0.692        
##                  95% CI : (0.524, 0.83)
##     No Information Rate : 0.641        
##     P-Value [Acc > NIR] : 0.313        
##                                        
##                   Kappa : 0.31         
##                                        
##  Mcnemar's Test P-Value : 0.773        
##                                        
##             Sensitivity : 0.800        
##             Specificity : 0.500        
##          Pos Pred Value : 0.741        
##          Neg Pred Value : 0.583        
##              Prevalence : 0.641        
##          Detection Rate : 0.513        
##    Detection Prevalence : 0.692        
##       Balanced Accuracy : 0.650        
##                                        
##        'Positive' Class : 0            
## 
source('matriz_confusao.R')
matriz(cm_fr)

fourfoldplot(cm_fr$table)

cm_fr = c("Floresta Randômica", cm_fr$overall[1], cm_fr$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_fr))

REDE NEURAL ARTIFICIAL

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)

treino$perc_oc = as.factor(treino$perc_oc)
teste$perc_oc = as.factor(teste$perc_oc)
options(scipen=999)
library(h2o)
h2o.init(nthreads = -1)
##  Connection successful!
## 
## R is connected to the H2O cluster: 
##     H2O cluster uptime:         1 hours 58 minutes 
##     H2O cluster timezone:       America/Sao_Paulo 
##     H2O data parsing timezone:  UTC 
##     H2O cluster version:        3.32.1.3 
##     H2O cluster version age:    19 days  
##     H2O cluster name:           H2O_started_from_R_fagne_alb176 
##     H2O cluster total nodes:    1 
##     H2O cluster total memory:   3.52 GB 
##     H2O cluster total cores:    4 
##     H2O cluster allowed cores:  4 
##     H2O cluster healthy:        TRUE 
##     H2O Connection ip:          localhost 
##     H2O Connection port:        54321 
##     H2O Connection proxy:       NA 
##     H2O Internal Security:      FALSE 
##     H2O API Extensions:         Amazon S3, Algos, AutoML, Core V3, TargetEncoder, Core V4 
##     R Version:                  R version 4.1.0 (2021-05-18)
classifier = h2o.deeplearning(y= 'perc_oc', training_frame = as.h2o(treino), 
                              activation = 'Rectifier', hidden = c(3,5), epochs = 1000)
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |========                                                              |  12%
  |                                                                            
  |======================================================================| 100%
print(classifier)
## Model Details:
## ==============
## 
## H2OBinomialModel: deeplearning
## Model ID:  DeepLearning_model_R_1623170831978_13 
## Status of Neuron Layers: predicting perc_oc, 2-class classification, bernoulli distribution, CrossEntropy loss, 89 weights/biases, 6.6 KB, 90,000 training samples, mini-batch size 1
##   layer units      type dropout       l1       l2 mean_rate rate_rms momentum
## 1     1    18     Input  0.00 %       NA       NA        NA       NA       NA
## 2     2     3 Rectifier  0.00 % 0.000000 0.000000  0.001341 0.000668 0.000000
## 3     3     5 Rectifier  0.00 % 0.000000 0.000000  0.003235 0.006112 0.000000
## 4     4     2   Softmax      NA 0.000000 0.000000  0.001347 0.000736 0.000000
##   mean_weight weight_rms mean_bias bias_rms
## 1          NA         NA        NA       NA
## 2    0.085032   0.546898  0.369834 0.412359
## 3   -0.240079   0.979473  1.727211 1.166245
## 4   -0.939127   1.984702 -0.012789 0.079130
## 
## 
## H2OBinomialMetrics: deeplearning
## ** Reported on training data. **
## ** Metrics reported on full training frame **
## 
## MSE:  0.095
## RMSE:  0.31
## LogLoss:  0.29
## Mean Per-Class Error:  0.099
## AUC:  0.96
## AUCPR:  0.93
## Gini:  0.91
## 
## Confusion Matrix (vertical: actual; across: predicted) for F1-optimal threshold:
##         0  1    Error   Rate
## 0      53  6 0.101695  =6/59
## 1       3 28 0.096774  =3/31
## Totals 56 34 0.100000  =9/90
## 
## Maximum Metrics: Maximum metrics at their respective thresholds
##                         metric threshold     value idx
## 1                       max f1  0.580526  0.861538  28
## 2                       max f2  0.506134  0.889571  33
## 3                 max f0point5  0.690051  0.888889  21
## 4                 max accuracy  0.690051  0.900000  21
## 5                max precision  0.996612  1.000000   0
## 6                   max recall  0.198355  1.000000  50
## 7              max specificity  0.996612  1.000000   0
## 8             max absolute_mcc  0.580526  0.785586  28
## 9   max min_per_class_accuracy  0.580526  0.898305  28
## 10 max mean_per_class_accuracy  0.580526  0.900765  28
## 11                     max tns  0.996612 59.000000   0
## 12                     max fns  0.996612 30.000000   0
## 13                     max fps  0.000005 59.000000  76
## 14                     max tps  0.198355 31.000000  50
## 15                     max tnr  0.996612  1.000000   0
## 16                     max fnr  0.996612  0.967742   0
## 17                     max fpr  0.000005  1.000000  76
## 18                     max tpr  0.198355  1.000000  50
## 
## Gains/Lift Table: Extract with `h2o.gainsLift(<model>, <data>)` or `h2o.gainsLift(<model>, valid=<T/F>, xval=<T/F>)`
save(classifier, file = "ClassifierRna.Rda")
#load("ClassifierRnaFinal.Rda")
predicoes = h2o.predict(classifier, newdata = as.h2o(teste[, -1]))
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
predicoes
##   predict   p0       p1
## 1       0 0.47 0.530524
## 2       0 1.00 0.000011
## 3       0 0.49 0.506134
## 4       0 0.52 0.481337
## 5       1 0.36 0.639695
## 6       0 0.97 0.025698
## 
## [39 rows x 3 columns]
predicoes = as.data.frame(predicoes)
cm = table(predicoes$predict, teste$perc_oc, dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 19  7
##       1  6  7
library(caret)
plot(cm)

cm_rna = confusionMatrix(cm)
cm_rna
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 19  7
##       1  6  7
##                                         
##                Accuracy : 0.667         
##                  95% CI : (0.498, 0.809)
##     No Information Rate : 0.641         
##     P-Value [Acc > NIR] : 0.44          
##                                         
##                   Kappa : 0.264         
##                                         
##  Mcnemar's Test P-Value : 1.00          
##                                         
##             Sensitivity : 0.760         
##             Specificity : 0.500         
##          Pos Pred Value : 0.731         
##          Neg Pred Value : 0.538         
##              Prevalence : 0.641         
##          Detection Rate : 0.487         
##    Detection Prevalence : 0.667         
##       Balanced Accuracy : 0.630         
##                                         
##        'Positive' Class : 0             
## 
source('matriz_confusao.R')
matriz(cm_rna)

fourfoldplot(cm_rna$table)

cm_rna = c("Rede Neural Artificial", cm_rna$overall[1], cm_rna$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_rna))

SUPORT VETOR MACHINE

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)


library(e1071)
classifier = svm(formula = perc_oc ~., data = treino, type = 'C-classification', kernel = 'radial')
print(classifier)
## 
## Call:
## svm(formula = perc_oc ~ ., data = treino, type = "C-classification", 
##     kernel = "radial")
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1 
## 
## Number of Support Vectors:  78
predicao = predict(classifier, newdata = teste[, -1])
predicao
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
##  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 
## 27 28 29 30 31 32 33 34 35 36 37 38 39 
##  0  0  0  0  0  0  0  0  0  0  0  0  0 
## Levels: 0 1
cm = table(predicao, teste$perc_oc, dnn=c("Predito", "Atual"))
library(caret)
cm_svm = confusionMatrix(cm)
cm_svm
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 25 14
##       1  0  0
##                                         
##                Accuracy : 0.641         
##                  95% CI : (0.472, 0.788)
##     No Information Rate : 0.641         
##     P-Value [Acc > NIR] : 0.572191      
##                                         
##                   Kappa : 0             
##                                         
##  Mcnemar's Test P-Value : 0.000512      
##                                         
##             Sensitivity : 1.000         
##             Specificity : 0.000         
##          Pos Pred Value : 0.641         
##          Neg Pred Value :   NaN         
##              Prevalence : 0.641         
##          Detection Rate : 0.641         
##    Detection Prevalence : 1.000         
##       Balanced Accuracy : 0.500         
##                                         
##        'Positive' Class : 0             
## 
source('matriz_confusao.R')
matriz(cm_svm)

fourfoldplot(cm_svm$table)

cm_svm = c("Suport Vetor Machine", cm_svm$overall[1], cm_svm$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_svm))

APRENDIZADO POR INSTÂNCIAS - KNN

A caption

A caption

load(file = "treino.Rda")
load(file = "teste.Rda")
treino$Local = NULL
teste$Local = NULL

treino$alvaras = ifelse(is.na(treino$alvaras), 0, treino$alvaras)
treino$comercio = ifelse(is.na(treino$comercio), 0, treino$comercio)
treino$servico = ifelse(is.na(treino$servico), 0, treino$servico)

teste$alvaras = ifelse(is.na(teste$alvaras), 0, teste$alvaras)
teste$comercio = ifelse(is.na(teste$comercio), 0, teste$comercio)
teste$servico = ifelse(is.na(teste$servico), 0, teste$servico)
teste = teste %>% mutate_if(is.numeric,as.factor)
treino = treino %>% mutate_if(is.numeric,as.factor)

treino = cbind(treino[, 2:18], treino$perc_oc)
teste = cbind(teste[, 2:18], teste$perc_oc)
treino = as.data.frame(treino)
teste  = as.data.frame(teste)

library(class)
classifier = knn(train = treino[, -18], test = teste[, -18],
                cl =treino[, 18], k = 18)
classifier
##  [1] 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0
## [39] 0
## Levels: 0 1
cm = table(classifier, teste[, 18], dnn=c("Predito", "Atual"))
cm
##        Atual
## Predito  0  1
##       0 20 12
##       1  5  2
library(caret)
cm_knn = confusionMatrix(cm)
cm_knn
## Confusion Matrix and Statistics
## 
##        Atual
## Predito  0  1
##       0 20 12
##       1  5  2
##                                         
##                Accuracy : 0.564         
##                  95% CI : (0.396, 0.722)
##     No Information Rate : 0.641         
##     P-Value [Acc > NIR] : 0.878         
##                                         
##                   Kappa : -0.064        
##                                         
##  Mcnemar's Test P-Value : 0.146         
##                                         
##             Sensitivity : 0.800         
##             Specificity : 0.143         
##          Pos Pred Value : 0.625         
##          Neg Pred Value : 0.286         
##              Prevalence : 0.641         
##          Detection Rate : 0.513         
##    Detection Prevalence : 0.821         
##       Balanced Accuracy : 0.471         
##                                         
##        'Positive' Class : 0             
## 
source('matriz_confusao.R')
matriz(cm_knn)

fourfoldplot(cm_knn$table)

cm_knn = c("K-Nearest Neighbors", cm_knn$overall[1], cm_knn$byClass[1:4])
resultados = as.data.frame(cbind(resultados, cm_knn))
names(resultados) = as.matrix(resultados[1, ])
resultados <- resultados[-1, ]
resultados[] <- lapply(resultados, function(x) type.convert(as.character(x)))
nomes = c("N.Bayes.", "Reg .Dedisão.", "R.Log", "R.Lin", "Arv.Decisão", "Flor. Randômica", "RNA", "MSV", "KNN")
plot_df = data.frame()
plot_df = cbind(resultados[1,], resultados[2,], resultados[3,], resultados[4,], resultados[5,])
plot_df[is.na(plot_df)] = 0
plot_df = data.frame(matrix(unlist(plot_df), nrow=9, byrow=F),stringsAsFactors=FALSE)

plot_df = cbind(plot_df, nomes, c(1:9))

names(plot_df) = c("AC", "SE", "ES", "PPV", "NPV", "TESTE", "CLASSE")
plot_df
ggplot(plot_df, aes(CLASSE)) + 
  ylim(0.15, 1.0) + 
  geom_line(aes(y = AC, colour = "Acurácia")) + 
  geom_line(aes(y = SE, colour = "Sensibilidade")) +
  geom_line(aes(y = ES, colour = "Especificidade")) +
  geom_line(aes(y = PPV, colour = "Pos. Pred. Val.")) +
  geom_line(aes(y = NPV, colour = "Neg. Pred. Val.")) +
  labs(title="Avaliação dos testes de aprendizado",
       x ="Testes Aplicados", y = "Desempenho") + 
  scale_x_continuous(breaks = 1:9, labels = nomes, limits = c(1, 9)) +
  theme(axis.text.x = element_text(angle = 45))

nomes = c("N.Bayes.", "Reg .Dedisão.", "R.Log", "R.Lin", "Arv.Decisão", "Flor. Randômica", "RNA", "MSV", "KNN")
nomes
## [1] "N.Bayes."        "Reg .Dedisão."   "R.Log"           "R.Lin"          
## [5] "Arv.Decisão"     "Flor. Randômica" "RNA"             "MSV"            
## [9] "KNN"
plot_df = data.frame()
plot_df = cbind(resultados[1,], resultados[2,], resultados[3,])

plot_df = data.frame(matrix(unlist(plot_df), nrow=9, byrow=F),stringsAsFactors=FALSE)

plot_df = cbind(plot_df, nomes, c(1:9))

names(plot_df) = c("AC", "SE", "ES", "TESTE", "CLASSE")
plot_df
ggplot(plot_df, aes(CLASSE)) + 
  ylim(0.15, 1.0) + 
  geom_line(aes(y = AC, colour = "Acurácia")) + 
  geom_line(aes(y = SE, colour = "Sensibilidade")) +
  geom_line(aes(y = ES, colour = "Especificidade")) +
  labs(title="Avaliação dos testes de aprendizado",
       x ="Testes Aplicados", y = "Desempenho", color = "Medidas de Desempenho\n") + 
  scale_x_continuous(breaks = 1:9, labels = nomes, limits = c(1, 9)) +
  theme(axis.text.x = element_text(angle = 45))

resultados$`Naive Bayes` = resultados$`Naive Bayes`*100
resultados$`Regras de Decisão` = resultados$`Regras de Decisão`*100
resultados$`Regressão Logística` = resultados$`Regressão Logística`*100
resultados$`Regressão Linear` = resultados$`Regressão Linear`*100
resultados$`Arvores de Decisão` = resultados$`Arvores de Decisão`*100
resultados$`Floresta Randômica` = resultados$`Floresta Randômica`*100
resultados$`Rede Neural Artificial`= resultados$`Rede Neural Artificial`*100
resultados$`Suport Vetor Machine` = resultados$`Suport Vetor Machine`*100
resultados$`K-Nearest Neighbors` = resultados$`K-Nearest Neighbors`*100
resultados
library(fmsb)
data=rbind(rep(100,5) , rep(0,5) , resultados)

radarchart(data)

colors_border=c( rgb(0.2,0.5,0.5,0.9), rgb(0.8,0.2,0.5,0.9) , rgb(0.7,0.5,0.1,0.9) , rgb(0.5,0.2,0.1,0.9) , rgb(0.7,0.9,0.9,0.9) )
colors_in=c( rgb(0.2,0.5,0.5,0.1), rgb(0.8,0.2,0.5,0.1) , rgb(0.7,0.5,0.1,0.1) , rgb(0.5,0.2,0.1,0.1) , rgb(0.7,0.9,0.9,0.1) )
radarchart( data  , axistype=1 ,
            #custom polygon
            pcol=colors_border, pfcol=colors_in, plwd=2 , plty=1,
            #custom the grid
            cglcol="grey", cglty=1, axislabcol="red", caxislabels=seq(0,100,25), cglwd=0.8,
            #custom labels
            vlcex=0.99
)
legend(x=1.35, y=1.4, legend = rownames(data[-c(1,2),]), bty = "n", pch=20 , col=colors_border ,
       text.col = "Black", cex=1.2, pt.cex=3)