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)
aae$SETOR.x = as.factor(aae$SETOR.x)
plot(aae$SETOR.x, aae$media, col = "green", xlab = "Setor", ylab = "Receita",las=2)
hist(as.numeric(aae$media), col = "green", xlab = "Receita", ylab = "Parquímetros", main = "Frequencia de parquímetros por Faixa de Receita")
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
)
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
)
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
))
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)
# 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)
}
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
#Verificamos o objeto
#head(parqs, 1)
#dim(parqs)
library(raster)
projection(parqs)
## [1] NA
#Verificamos os dados espaciais no mapa
library(mapview)
mapviewPalette(name = "Viridis")
mapview(parqs)
#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")
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")
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
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))
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))
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))
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))
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))
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))
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))
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))
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)