Preprocesamiento de datos en R: Ultimate Tutorial [2022]
Publicado: 2021-03-01En nuestro siguiente tutorial de preprocesamiento de datos en R, aprenderá los fundamentos de cómo realizar el preprocesamiento de datos. Este tutorial requiere que esté familiarizado con los conceptos básicos de R y la programación:
Tabla de contenido
Paso 1: encontrar y solucionar problemas
Comenzaremos nuestro preprocesamiento de datos en el tutorial de R importando primero el conjunto de datos. Después de todo, no puede preprocesar los datos si no tiene los datos en primer lugar.
En nuestro caso, los datos se almacenan en el archivo data.csv en el directorio de trabajo. Puede usar el comando setwd ("ubicación deseada") y establecer el directorio de trabajo.
Así es como comenzará el proceso:
conjunto de datos <- read.csv(“Data.csv”)
Aquí está nuestro conjunto de datos:
## | País | Años | Salario | comprado | |
## | 1 | Francia | 44 | 72000 | No |
## | 2 | España | 27 | 48000 | sí |
## | 3 | Alemania | 30 | 54000 | No |
## | 4 | España | 38 | 61000 | No |
## | 5 | Alemania | 40 | N / A | sí |
## | 6 | Francia | 35 | 58000 | sí |
## | 7 | España | N / A | 52000 | No |
## | 8 | Francia | 48 | 79000 | sí |
## | 9 | Alemania | 50 | 83000 | No |
## | 10 | Francia | 37 | 67000 | sí |
Como puede ver, faltan valores en las columnas Salario y Edad de nuestro conjunto de datos. Hemos identificado el problema presente en nuestro conjunto de datos, por lo que ahora podemos comenzar a solucionarlo.
No parece haber otros problemas en nuestro conjunto de datos, por lo que solo tenemos que manejar los valores que faltan. Podemos solucionar este problema reemplazando los valores de NA con los valores promedio de las columnas respectivas. Así es cómo:
dataset$Edad <- ifelse(is.na(dataset$Edad),
ave(conjunto de datos$Edad, DIVERSIÓN = función(x)
media(x, na.rm = VERDADERO)),
conjunto de datos $ Edad)
conjunto de datos$Salario <- ifelse(is.na(conjunto de datos$Salario),
ave(conjunto de datos$Salario, DIVERSIÓN = función(x)
media(x, na.rm = VERDADERO)),
conjunto de datos$Salario)
Observe cómo usamos la función ave() aquí. Toma el promedio de la columna específica que ingresó donde FUN es una función de x que calcula la media excluyendo los valores NA (na.rm=TRUE).
demás,
tomar lo que esté presente en el conjunto de datos $ Edad
Usaremos la función mean() ahora:
#definiendo x = 1 2 3
x <- 1:3
#introduciendo el valor faltante
x[1] <- NA
# media = NA
media(x)
## [1] NA
# media = media excluyendo el valor NA
media(x, na.rm = T)
## [1] 2.5
Después de identificar y solucionar el problema, nuestro conjunto de datos se ve así:
## | País | Años | Salario | comprado | |
## | 1 | Francia | 44 | 72000.00 | No |
## | 2 | España | 27 | 48000.00 | sí |
## | 3 | Alemania | 30 | 54000.00 | No |
## | 4 | España | 38 | 61000.00 | No |
## | 5 | Alemania | 40 | 63777.78 | sí |
## | 6 | Francia | 35 | 58000.00 | sí |
## | 7 | España | 38 | 52000.00 | No |
## | 8 | Francia | 48 | 79000.00 | sí |
## | 9 | Alemania | 50 | 83000.00 | No |
## | 10 | Francia | 37 | 67000.00 | sí |
Lea también: Oportunidades profesionales en el lenguaje de programación R
2. Paso: Datos categóricos
Los datos categóricos son datos no numéricos que pertenecen a categorías particulares. La columna País en nuestro conjunto de datos son datos categóricos. La función read.csv() en R convertiría todas las variables de cadena en variables categóricas. Sin embargo, no podemos usarlo en todos los casos.
Así es como puede crear variables específicas como variables de factor:
conjunto de datos$País = factor(conjunto de datos$País,
niveles = c('Francia', 'España', 'Alemania'),
etiquetas = c(1, 2, 3))
conjunto de datos$Comprado = factor(conjunto de datos$Comprado,
niveles = c('No', 'Si'),
etiquetas = c(0, 1))
Paso 3: División de datos
Ahora, tenemos que dividir nuestro conjunto de datos en dos conjuntos de datos separados. Uno para entrenar nuestro modelo de aprendizaje automático y el otro para probar el mismo.
Para hacerlo, primero instalaremos el paquete caTools (si no está disponible) y lo agregaremos a nuestra biblioteca. Luego, usaremos la función set.seed() para asegurarnos de que la división se realice de forma aleatoria. Usa el siguiente código:
biblioteca (herramientas ca)
conjunto.semilla(123)
split = muestra.split(conjunto de datos$Comprado,SplitRatio = 0.8)
training_set = subconjunto (conjunto de datos, división == VERDADERO)
test_set = subconjunto (conjunto de datos, división == FALSO)
Debe haber notado que hemos mantenido la relación de división en 80:20. Esto se debe a que es la relación de división más convencional para conjuntos de entrenamiento y conjuntos de prueba. Nuestro método sample.split() tomó la columna y creó una matriz numérica con valores verdaderos y falsos aleatorios de acuerdo con la proporción de división.
Paso 4: Escalado o sobreajuste de características
El escalado de características es necesario cuando diferentes características en su conjunto de datos tienen diferentes rangos. En nuestro caso, las columnas Edad y Salario tienen rangos diferentes, lo que puede causar problemas en el entrenamiento de nuestro modelo ML.
Cuando tiene una característica con un rango significativamente más alto que la otra característica, la distancia euclidiana aumenta considerablemente, lo que hace que el modelo arroje resultados erróneos.
Tenga en cuenta que la mayoría de las bibliotecas en R solucionan este problema automáticamente, pero es importante saber cómo solucionarlo. Haz lo siguiente:
conjunto_entrenamiento[,2:3] = escala(conjunto_entrenamiento[,2:3])
conjunto_prueba[,2:3] = escala(conjunto_prueba[,2:3])
Solucionaría el problema y las características de su conjunto de entrenamiento tendrían los mismos rangos, minimizando las posibilidades de errores durante las implementaciones de aprendizaje automático.
Obtenga la certificación de ciencia de datos de las mejores universidades del mundo. Aprenda los programas Executive PG, los programas de certificación avanzada o los programas de maestría para acelerar su carrera.
Conclusión
Esperamos que nuestro tutorial de preprocesamiento de datos en R le haya resultado útil. Sería mejor comprender el tutorial antes de intentar probarlo usted mismo. Comprender los conceptos es mucho más importante que usarlos.
¿Qué piensas sobre nuestro preprocesamiento de datos en el tutorial R? Compártelas en los comentarios a continuación.
Si tiene curiosidad por aprender sobre R, ciencia de datos, consulte nuestro PG ejecutivo en ciencia de datos, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos prácticos, tutoría con expertos de la industria, 1-on- 1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.
En Python, el polimorfismo se refiere a un nombre de función genérico que se puede usar para una variedad de propósitos. Esta idea se usa comúnmente en el concepto de programación Python que está orientado a objetos. La tipificación de pato es una noción de polimorfismo. La frase tipeo de pato proviene de un proverbio que establece que cualquier cosa que camina, grazna y nada como un pato se denomina pato, independientemente de lo que sea. En términos simples, indica que si algo hace coincidir su comportamiento con otra cosa, se considerará miembro de esa categoría. Cuando se usa un método con el mismo nombre y argumentos tanto en una clase derivada como en una base o superclase, se dice que el método de la clase derivada anula el método proporcionado en la clase base. Cuando se llama al método invalidado, siempre se invoca al método de la clase derivada. El método que se utilizó en la clase base ahora está oculto.¿Cuántos tipos de polimorfismo hay en Python?
El polimorfismo se implementa en Python para varios propósitos, como Duck Typing, sobrecarga de operadores, sobrecarga de métodos y anulación de métodos, al igual que en otros lenguajes de programación como Java y C++. La sobrecarga y la anulación son los dos métodos principales para lograr el polimorfismo.
Una clase con muchos métodos con el mismo nombre pero distintos argumentos se conoce como sobrecarga de métodos. Aunque la sobrecarga de métodos no se admite de forma predeterminada en Python, existen numerosas técnicas para hacerlo. ¿Qué está escribiendo Duck?
¿Qué es sobrecargar y anular?
Python, por otro lado, no proporciona sobrecarga de métodos en función del tipo, la cantidad o el orden de los parámetros del método. La sobrecarga de métodos es un enfoque de Python para definir un método de modo que se pueda llamar de varias maneras. A diferencia de otros lenguajes de programación, este es único.