Ir para Fase 1.

Nessa atapa será realizada a clusterização dos alvarás previamente georeferenciados afim de identificar áreas comerciais similares. Para este fim serão identificadas áreas com densidades de alvarás objetivando construir clusters de acordo com a densidade alvarás/km2.

Affinity propagation é um novo método aplicado em estatística e mineração de dados para fins de clusterização de dados. Este método considera como entradas medidas de similaridade entre pontos considerando todos pontos como exemplares potenciais. O algorítimo envia mensagens de ponto a ponto até que conjuntos de exemplares sejam identificados e gradualmente formem clusters.

Esta abordagem não exige um número pré-definido de clusters, antes esse número é identificado ppor meio da similaridade e dissimilaridade natural dos exemplares, assim o arranjo de similaridade entre os dados e os grupos derivados deste arranjo definem o número de clusters.

https://www.psi.toronto.edu/index.php?q=affinity%20propagation

Iniciamos a aplicação setando o diretório de trabalho.

setwd("/Users/fagnersutel/Downloads/TCC/")

Limpamos a memória, carregamos as bibliotecas necessárias para o trabalho, setamos o diretório de trabalho e ferificamos as planilhas de interesse.

rm(list = ls(all.names = TRUE))
library(leaflet.extras)
## Loading required package: leaflet
library(apcluster)
## 
## Attaching package: 'apcluster'
## The following object is masked from 'package:stats':
## 
##     heatmap
filenamess <- list.files(path = "/Users/fagnersutel/Downloads/TCC/geo/s") 
filenamess
##  [1] "servico_1524761096.81902.csv" "servico_1524837368.42785.csv"
##  [3] "servico_1524849869.27125.csv" "servico_1524856659.15295.csv"
##  [5] "servico_1524857271.54193.csv" "servico_1525092736.75057.csv"
##  [7] "servico_1525100217.34111.csv" "servico_1525108125.05884.csv"
##  [9] "servico_1525271712.90871.csv" "servico_1525357143.86729.csv"
## [11] "servico_1525377708.98704.csv" "servico_1525431536.65195.csv"
## [13] "servico_1525438499.1497.csv"
filenamesc <- list.files(path = "/Users/fagnersutel/Downloads/TCC/geo/c") 
filenamesc
##  [1] "comercio_1524507845.62241.csv" "comercio_1524572937.51169.csv"
##  [3] "comercio_1524582351.75634.csv" "comercio_1524590349.33645.csv"
##  [5] "comercio_1524592829.08411.csv" "comercio_1524684739.93334.csv"
##  [7] "comercio_1524741390.87933.csv" "comercio_1524744606.04672.csv"
##  [9] "comercio_1524749867.03171.csv" "comercio_1524755831.16559.csv"

Setamos o diretório dos dados, realizamos um bind das tabelas, visualizamos os dados, verificamos o nome dos atributos e a dimensão do data set.

setwd("/Users/fagnersutel/Downloads/TCC/") 
data1 <- do.call("rbind", lapply(paste("geo/s/", filenamess, sep = ""), read.csv, header = TRUE, sep = ";")) 
data2 <- do.call("rbind", lapply(paste("geo/c/", filenamesc, sep = ""), read.csv, header = TRUE, sep = ";")) 
data = rbind(data1, data2)
head(data1)
names(data)
## [1] "lat"               "long"              "accuracy"         
## [4] "formatted_address" "index"             "tipo"             
## [7] "default"
dim(data)
## [1] 106079      7

Convertemos latitude e longitude para numérico e eliminamos os valores nulos.

dados <- cbind(data$long, data$lat, as.character(data$default), as.character(data$tipo))
dados <- as.data.frame(dados)
dados$V1 <- as.numeric(as.character(dados$V1))
dados$V2 <- as.numeric(as.character(dados$V2))
dados <- dados[dados$V2 < 0, ]
dados <- subset(dados, !is.na(V1))
dim(dados)
## [1] 103041      4
rm(data)
rm(filenamess)
rm(filenamesc)

Criamos um dataframe para armazenar uma mostragem de dados que servirá de base para a clusterização.

x2 <- cbind(dados$V1, dados$V2)
x2 <- x2[complete.cases(x2), ]
dim(x2)
## [1] 103041      2
head(x2)
##           [,1]      [,2]
## [1,] -51.18348 -30.01229
## [2,] -51.22538 -30.03794
## [3,] -51.25428 -30.11446
## [4,] -51.22906 -30.03049
## [5,] -51.19056 -30.01846
## [6,] -51.20546 -30.04579

Criamos uma amostra de 20000 alvarás e salvamos .

x1 <- x2
x2 <- x2[sample(nrow(x2), 20000), ]
dim(x1)
## [1] 103041      2
dim(x2)
## [1] 20000     2

Criamos a clusterização por meio do método de Affinity Proagation da biblioteca apcluster

apres <- apcluster(negDistMat(r=2), x2, q=0.55)
summary(apres)
##   Length    Class     Mode 
##      133 APResult       S4

Plotamos os clusters.

plot(apres, x2)

.
..

Ir para Fase 3.

Fim