Vous êtes sur la page 1sur 6

R Notebook Code

Hide

dados <- read.csv("carros.csv", sep = ",")


dadosCasa <- read.csv("casas.csv", sep = ",")

Matrizes
Para acessar os dados de uma matriz deve-se usar a notação nomeVariavel[l,c]. Onde l representa o número
da linha que você deseja acessar e c representa o número da columa coluna. Por exemplo para acessa o
primeiro elemento da matriz dados temos:

Hide

dados[1,1]

Caso deseje pegar todos os valores de uma linha ou coluna pode-se deixar em branco. No exemplo
queremos todos os valores da primeira linha:

Hide

dados[1,]

Para pegar um conjunto de linhas específicas você pode passar uma lista com os valores que deseja. Por
exemplo pegamos linhas 3, 5 e 10 dos dados:

Hide

dados[c(3,5,10),]

Também é possível pegar as colunas pelo nome:

Hide

dados[,'Velocidade']

Você também consegue pegar todos os valores menos o que você passou como parâmtros utilizando o sinal
de menos. Por exemplo se quisermos todas as linhas menos a 3, 5 e 10 temos:

Hide

dados[-c(3,5,10),]

Prática:
Pegue todos os valores da coluna “Preço” dos dados que estão na variável dadosCasa:

Hide

#resposta na linha abaixo

Pegue as linhas 6,8,20 dos dados que estão na variável dados:

Hide

#resposta na linha abaixo


Pegue as linhas dos dados que estão na variável dados com execeção das linhas 6,8,20 :

Hide

#resposta na linha abaixo

Uma função que pode ser útil para entender os dados de uma matriz é a função summary. Você passa a sua
matriz como parâmetro e tem como resposta um resumo de cada coluna da matriz.

Hide

summary(dados)

Caso deseje ver partes dos dados existem duas funções que facilitam isso. A primeira função chama head
que exibi as primeiras linhas da matriz e recebe como parâmetros a matriz e o número de linhas que deseja
ver.

Hide

head(dados, 10)

A outra função funciona de forma semelhante à head porem mostra os ultimos valores. Essa função chama
tail e recebe os mesmos parâmetros da head.

Hide

tail(dados, 10)

Outras funções úteis que podem ser aplicadas a matrizes podem ser encontradas exemplificadas nesse link
(https://rpubs.com/adelmofilho/AlgebraMatricial).

Prática
Mostre as 16 últimas linhas da matriz dadosCasa:

Hide

#resposta na linha abaixo

Podemos também criar uma matrix a partir de uma lista.

Para criarmos uma lista com uma sequência de números devemos usar uma função do R que facilita isso.
Essa função tem o formato “i:f” onde i é o valor inicial da sequência desejada e f é o valor final. No exemplo
abaixo estaremos criando uma lista com os valores de 1 a 9 e atribuiremos a variável valoresMatriz.

Mostre os valores salvos em valoresMatriz:

Com isso temos uma lista, mas queremos uma matriz 3 por 3. Para isso iremos usar a função chamada matrix
com os parâmetos data=valoresMatriz, nrow = 3, ncol = 3 e atribuiremos o resultado a variável matriz.

Mostre os valores salvos em matriz:

Altere o valor da variável matriz para que todos os seus valores passem a ser o dobro do que eram antes.

Hide

#resposta na linha abaixo

Eleve todos os valores da matriz ao quadrado:


Hide

#resposta na linha abaixo

Factors
As variáveis categóricas contêm um número finito de categorias ou grupos distintos. Quando as variáveis são
categóricas o R tem um típo especial de dado para garantir que as mesmas serão tratadas de forma correta.
Esse tipo de dados são chamados de Factores. Nos dados relacionados ao preço da casa temos uma variável
que é categórica vamos altera-la para que ela seja considerada pelo R como factor. O simbolo $ é utilizado
para acessar uma coluna específica de uma matriz. Nesse caso estamos alterando a coluna marmore. Para
realizar essa alteração é utilizada a função “as.factor()” passando como parâmetro a coluna que desejamos
alterar.

Hide

#rode essa parte para mudar a variável marmore


dadosCasa$Marmore = as.factor(dadosCasa$Marmore)

Uma vez criado o factor podemos ver seus valores utilizando a função levels:

Hide

levels(dadosCasa$Marmore)

Mostre os 5 primeiro valores de dadosCasa:

Hide

#resposta na linha abaixo

Como podemos ver os valores são “0” e “1”. Podemos mudar esses valores de modo que fique mais fácil a
leitura. Para isso atribuiremos os valores “Não” e “Sim” respectivamente aos valores “0” e “1”.

Hide

levels(dadosCasa$Marmore) <- c("Não", "Sim")

Pratica: Mostre os novos valores do leveis:

Hide

#resposta na linha abaixo

Mostre os 5 primeiro valores de dadosCasa:

Hide

#resposta na linha abaixo

Desafio
Cálcule a matrix de correlação para os dados salvos na variável “dados”:

Hide

#resposta na linha abaixo


Regularização
O R tem uma função que modifica os valores de uma coluna de modo que suas unidades de medida não
influenciem na criação do modelo. Como exemplo abaixo estamos alterando o valor da coluna velocidade nos
dados para valores regularizados pela função scale. Não precisamos regularizar a coluna que estamos prever
e também não devemos regualarizar variáveis categoricas. A regularização acontece de forma que uma
funçao é aplicada aos dados de modo que o desvio padrão dos dados resultantes é 1 e a sua média é zero.

Hide

dados['Velocidade'] <- scale(dados['Velocidade'])

Mostre o desvio padrão dos dados salvos na coluna velocidade na variável dados:

Hide

#resposta na linha abaixo

Mostre a media dos dados salvos na coluna velocidade na variável dados:

Hide

#resposta na linha abaixo

Regularize a coluna Área da variável dadosCasa:

Hide

#resposta na linha abaixo

Mostre o desvio padrão dos dados salvos na coluna Área na variável dadosCasa:

Hide

#resposta na linha abaixo

Mostre a media dos dados salvos na coluna Área na variável dadosCasa:

Hide

#resposta na linha abaixo

Separação dos dados em dois grupos


Quando estamos trabalhando com mineração é comum precisarmos separar os dados em dois conjuntos.
Para isso iremos usar uma função chamada sample. Essa função recebe uma lista com os indices das linhas
da matrix e o tamanho da separação.

Como queremos uma lista de um ao número de linhas podemos usar a função que conta o número de linhas
de uma matriz que é chamada de nrows.

Hide

listaMatriz <- 1:nrow(dados)

Para criar os indices a serem utilizados usamos uma função que chama sample e que recebe como
parâmetros: uma lista com os indices a serem divididos e o tamanho da divisão. Os índices foram criados e
salvos na variavel listaMatriz. Para calcular o tamanho da amostra devemos multiplicar o número de linha de
dados pela proporção que desejamos usar.
Hide

indices_teste = sample(listaMatriz, 0.3*nrow(dados))

O sample gera uma lista de indices que serão usados para a criação do grupo com a porcentagem desejada.
Assim sendo podemos usar o que aprendemos em seleção de linhas em matrizes para criar os nossos dois
grupos.

Hide

grupo_30_porcento <- dados[indices_teste, ]


grupo_70_porcento <- dados[-indices_teste,]

Prática:
Divida os dadosCasa em dois grupos um com 20% e outro com 80%:

Hide

#resposta abaixo

Métricas de avaliação
Matriz de confusão
Para criar uma matriz de confusão utilizaremos uma biblioteca externa ao R. Bibliotecas são conjuntos de
funções que foram criadas por usuário que são muito utilizadas. Para a criação da matrix de confusão iremos
utilizar a biblioteca chamada “caret”. Para instalar uma biblioteca no seu computador utilize o comando
abaixo:

Hide

install.packages("caret")

Para usar a biblioteca temos que importa-la no programa:

A matrix de confusão é criada para comparar o resultado de uma classificação com o valor real. Para efeito de
aprendizado utilizaremos duas listas geradas manualmente:

A matrix de confusão pode ser feita usando o método confusionMatrix() passando os valores preditos junto
com o valor real. O valor de classe positiva é utilizada para os calculos das estatísticas.

Hide

confusionMatrix(classificacao, real, positive = "Sim")

As estatisticas são calculadas baseada na seguinte tabela

Reference

Predicted Sim Não

Sim A(VP) B(FP)

Não C(FN) D(VN)

VP = Verdadeiro positivo FP = Falso positivo FN = Falso negativo VN = Verdadeiro negativo

Accuracy = (A + D) / (Número de positivos + Número de negativos) (Acurácia)


95% CI = Intervalo de confiança com 95%

No Information Rate : A porcentagem da classe que tem mais valores em relação ao total.

P-Value [Acc > NIR] = P valor da comparação entre o resultado do classificador e a classe de maior número
de valores.

Kappa: Uma forma de comparação como acurácia que leva em consideração a chance de classificar ao acaso
os valores que menos aparecem.

Mcnemar’s Test P-Value = O p-valor do Teste de McNemar (https://pt.wikipedia.org/wiki/Teste_de_McNemar)

Sensitivity = A/(A+C) (Sensibilidade)

Specificity = D/(B+D) (Especificidade)

Prevalence = (A+C)/(A+B+C+D) (Prevalência)

PPV = (sensitivity * prevalence)/((sensitivity * prevalence) + ((1-specificity) * (1-prevalence))) (Valores positivos


preditos)

NPV = (specificity * (1-prevalence))/(((1-sensitivity) * prevalence) + ((specificity) * (1-prevalence))) (Valores


negativos preditos)

Detection Rate = A/(A+B+C+D) (Taxa de detecção)

Detection Prevalence = (A+B)/(A+B+C+D) (Prevalência de Detecção)

Balanced Accuracy = (sensitivity+specificity)/2 (Acurácia balanceada)

Precision = A/(A+B) (Precisão)

Recall = A/(A+C) (Revocação)

F1 = (1+beta^2) * precision * recall/((beta^2 * precision)+recall), beta = 1 (F-measure)

Vous aimerez peut-être aussi