Pré-processamento de dados no R: Ultimate Tutorial [2022]
Publicados: 2021-03-01Em nosso tutorial de pré-processamento de dados em R a seguir, você aprenderá os fundamentos de como realizar o pré-processamento de dados. Este tutorial requer que você esteja familiarizado com os conceitos básicos de R e programação:
Índice
1. Etapa: encontrar e corrigir problemas
Iniciaremos nosso tutorial de pré-processamento de dados em R importando o conjunto de dados primeiro. Afinal, você não pode pré-processar os dados se não tiver os dados em primeiro lugar.
No nosso caso, os dados são armazenados no arquivo data.csv no diretório de trabalho. Você pode usar o comando setwd(“local desejado”) e definir o diretório de trabalho.
Veja como você iniciará o processo:
conjunto de dados <- read.csv(“Dados.csv”)
Aqui está nosso conjunto de dados:
## | País | Idade | Salário | Comprado | |
## | 1 | França | 44 | 72.000 | Não |
## | 2 | Espanha | 27 | 48.000 | sim |
## | 3 | Alemanha | 30 | 54.000 | Não |
## | 4 | Espanha | 38 | 61.000 | Não |
## | 5 | Alemanha | 40 | N / D | sim |
## | 6 | França | 35 | 58.000 | sim |
## | 7 | Espanha | N / D | 52.000 | Não |
## | 8 | França | 48 | 79.000 | sim |
## | 9 | Alemanha | 50 | 83.000 | Não |
## | 10 | França | 37 | 67.000 | sim |
Como você pode ver, há valores ausentes nas colunas Salário e Idade do nosso conjunto de dados. Identificamos o problema presente em nosso conjunto de dados para que agora possamos começar a corrigi-lo.
Nenhum outro problema parece estar presente em nosso conjunto de dados, portanto, precisamos apenas lidar com os valores ausentes. Podemos corrigir esse problema substituindo os valores NA pelos valores médios das respectivas colunas. Veja como:
dataset$Idade <- ifelse(is.na(dataset$Idade),
ave(conjunto de dados$Idade, FUN = function(x)
média(x, na.rm = VERDADEIRO)),
conjunto de dados $ Idade)
dataset$Salário <- ifelse(is.na(dataset$Salário),
ave(dataset$Salary, FUN = function(x)
média(x, na.rm = VERDADEIRO)),
conjunto de dados$Salário)
Observe como usamos a função ave() aqui. Leva a média da coluna específica que você inseriu onde FUN é uma função de x que calcula a média excluindo os valores NA (na.rm=TRUE).
outro,
pegue o que estiver presente em dataset$Age
Usaremos a função mean() agora:
#definindo x = 1 2 3
x <- 1:3
#introducing valor faltante
x[1] <- NA
# média = NA
média(x)
## [1] NA
# média = média excluindo o valor NA
média(x, na.rm = T)
## [1] 2,5
Depois de identificar e corrigir o problema, nosso conjunto de dados fica assim:
## | País | Idade | Salário | Comprado | |
## | 1 | França | 44 | 72.000,00 | Não |
## | 2 | Espanha | 27 | 48.000,00 | sim |
## | 3 | Alemanha | 30 | 54.000,00 | Não |
## | 4 | Espanha | 38 | 61.000,00 | Não |
## | 5 | Alemanha | 40 | 63777,78 | sim |
## | 6 | França | 35 | 58.000,00 | sim |
## | 7 | Espanha | 38 | 52.000,00 | Não |
## | 8 | França | 48 | 79.000,00 | sim |
## | 9 | Alemanha | 50 | 83.000,00 | Não |
## | 10 | França | 37 | 67.000,00 | sim |
Leia também: Oportunidades de carreira na linguagem de programação R
2. Etapa: dados categóricos
Dados categóricos são dados não numéricos que pertencem a categorias específicas. A coluna País em nosso conjunto de dados são dados categóricos. A função read.csv() em R faria todas as variáveis de string como variáveis categóricas. No entanto, não podemos usá-lo em todos os casos.
Veja como você pode criar variáveis específicas como variáveis de fator:
conjunto de dados$País = fator(conjunto de dados$País,
níveis = c('França', 'Espanha', 'Alemanha'),
rótulos = c(1, 2, 3))
conjunto de dados$Comprado = fator(conjunto de dados$Comprado,
níveis = c('Não', 'Sim'),
rótulos = c(0, 1))
3. Etapa: Divisão de dados
Agora, temos que dividir nosso conjunto de dados em dois conjuntos de dados separados. Um para treinar nosso modelo de aprendizado de máquina enquanto o outro para testar o mesmo.
Para isso, vamos primeiro instalar o pacote caTools (se não estiver disponível) e adicioná-lo à nossa biblioteca. Depois, usaremos a função set.seed() para garantir que a divisão seja feita aleatoriamente. Utilize o seguinte código:
biblioteca(caTools)
set.semente(123)
split = sample.split(dataset$Purchased,SplitRatio = 0,8)
training_set = subset(dataset,split == TRUE)
test_set = subset(dataset, split == FALSE)
Você deve ter notado que mantivemos a proporção de divisão em 80:20. Isso ocorre porque é a proporção de divisão mais convencional para conjuntos de treinamento e conjuntos de teste. Nosso método sample.split() pegou a coluna e criou uma matriz numérica com valores aleatórios de verdadeiro e falso de acordo com a proporção de divisão.
4. Etapa: Dimensionamento ou sobreajuste de recursos
O dimensionamento de recursos é necessário quando diferentes recursos em seu conjunto de dados têm intervalos diferentes. No nosso caso, as colunas Idade e Salário têm intervalos diferentes, o que pode causar problemas no treinamento do nosso modelo de ML.
Quando você tem uma feição com um alcance significativamente maior do que a outra feição, a distância euclidiana aumenta consideravelmente, fazendo com que o modelo dê resultados errados.
Observe que a maioria das bibliotecas em R corrige esse problema automaticamente, mas é importante saber como corrigir isso. Faça o seguinte:
training_set[,2:3] = scale(training_set[,2:3])
test_set[,2:3] = scale(test_set[,2:3])
Isso corrigiria o problema e os recursos do seu conjunto de treinamento teriam os mesmos intervalos, minimizando as chances de erros durante as implementações de aprendizado de máquina.
Obtenha a certificação em ciência de dados das melhores universidades do mundo. Aprenda Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Conclusão
Esperamos que você tenha achado útil nosso tutorial de pré-processamento de dados em R. Seria melhor entender o tutorial antes de tentar testá-lo você mesmo. Compreender os conceitos é muito mais importante do que usá-los.
O que você acha do nosso tutorial de pré-processamento de dados em R? Compartilhe-os nos comentários abaixo.
Se você está curioso para aprender sobre R, ciência de dados, confira nosso Executive PG in Data Science, criado para profissionais que trabalham e oferece mais de 10 estudos de caso e projetos, workshops práticos práticos, orientação com especialistas do setor, 1-on- 1 com mentores do setor, mais de 400 horas de aprendizado e assistência de trabalho com as principais empresas.
Em Python, polimorfismo refere-se a um nome genérico de função que pode ser usado para vários propósitos. Essa ideia é comumente usada no conceito de programação Python que é orientada a objetos. A tipagem de pato é uma noção de polimorfismo. A frase digitação de pato vem de um provérbio que afirma que qualquer coisa que ande, grasne e nade como um pato é apelidada de pato, independentemente do que seja. Em termos simples, indica que se algo corresponder ao seu comportamento a outra coisa, será considerado um membro dessa categoria. Quando um método com o mesmo nome e argumentos é usado em uma classe derivada e em uma classe base ou super, diz-se que o método da classe derivada substitui o método fornecido na classe base. Quando o método substituído é chamado, o método da classe derivada é sempre invocado. O método que foi utilizado na classe base agora está oculto.Quantos tipos de polimorfismo existem em python?
O polimorfismo é implementado em Python para vários propósitos, como Duck Typing, sobrecarga de operador, sobrecarga de método e substituição de método, assim como em outras linguagens de programação, como Java e C++. Sobrecarga e substituição são os dois principais métodos para alcançar o polimorfismo.
Uma classe com muitos métodos com o mesmo nome, mas argumentos distintos, é conhecida como sobrecarga de métodos. Embora a sobrecarga de métodos não seja suportada por padrão no Python, existem várias técnicas para fazer isso. O que é a digitação do Pato?
O que é sobrecarga e substituição?
O Python, por outro lado, não fornece sobrecarga de método com base no tipo, quantidade ou ordem dos parâmetros do método. A sobrecarga de métodos é uma abordagem do Python para definir um método de forma que possa ser chamado de várias maneiras. Ao contrário de outras linguagens de programação, esta é única.