- Data Science, Data Mining, Business Intelligence, Machine Learning, Modeling y Predicting, son términos comúnmente referenciados cuando se abordan bases de datos con la intención de analizar y concluir.
- Todos éstos, son términos asociados al objeto de este Diplomado de Inteligencia Analítica de Datos.
- En este curso, se abordarán las principales técnicas de modelación (estadísticas y de aprendizaje automático), aplicadas a la solución de problemas prácticos.
En el Análisis de datos, se requieren profesionales con capacidad de los siguientes tres aspectos principarles.
Conocer y aplicar metodologías, técnicas y herramientas de análisis estadístico, de minería de datos y aprendizaje automático, para la resolución de problemas cotidianos y necesidades de negocio.
Al finalizar el curso, el/a estudiante estará en capacidad de:
- Fundamentos de Programación en R
- Modelación Estadística
- Técnicas de Aprendizaje Automático
- Inteligencia Analítica y Modelación en R
- Es un entorno y lenguaje de programación
- Proporciona una amplia variedad de técnicas estadísticas (modelado lineal y no lineal, pruebas estadísticas clásicas, análisis de series temporales, clasificación, clustering, etc.)
- Tiene librerias con mchas funciones para la generación de gráficos.
- Está disponible como Software Libre bajo los términos GNU de la Free Software Foundation en forma de código fuente. Se compila y se ejecuta en plataformas UNIX (Linux y Mac OS) y Windows.
- Es un entorno de desarrollo integrado (IDE) para R.
- Incluye una consola, edición y ejecución directa de código, así como herramientas para gráficos, historial, depuración y gestión del espacio de trabajo.
Los instaladores los puede descargar siguiendo los siguientes enlaces:
R: https://cran.r-project.org/
RStudio: https://www.rstudio.com/products/rstudio/download/#download
# Ejemplos
3 + 10 # adicion
3 - 10 # sustraccion
5 * 4 # multiplicacion
12 / 5 # division
3^2 # potenciacion (3**2)
5%%2 # x mod y
5%/%2 # div. entera de x / y
# Ejemplos
3 < 10 # menor que
3 <= 10 # menor o igual que
5 == 4 # exactamente igual a
12 != 5 # diferente a
!3 # diferente de
5 | 2 # x OR y
5 & 2 # x AND y
isTRUE(3) # test si x es verdadeo
a <- 10 # asignar valor a una variable
El nombre de una variable no puede contener espacios ni caracteres especiales.
mi variable <- 6 # Error
mi_variable <- 6 # forma correcta
La siguiente gráfica, nos muestra las diferentes estructuras de datos que hay en R.
# ejemplo
v <- c(1.1, 10, 3.14) # asignar un valor a una variable
v # imprimir la variable
c(v, 535) # concatenar vectores
Observación 1: Cuando tenenemos un vector, con números y caracteres, R asume que todas las entradas son caracteres. Veamos el ejemplo:
# ejemplo
a <- c(1.1, 5, "x", 3.14) # asignar valores y caracteres a una variable
a # imprimir la variable
Observación 2: para acceder a los elementos de un vector, debemos usar corchetes. Veamos:
# ejemplo
a <- c(1.1, 5, "x", 3.14) # asignar valores y caracteres a una variable
a[2] # devuelve el elemento en la segunda entrada del vector
Algunas operaciones con vectores
# ejemplo
v <- c(1.1, 5, 3.14) # asignar un valor a una variable
is.vector(v) # Determina si el objeto o la variable "v" es un vector
a <- v * 2 + 100 # opercione con el vector
a # imprimir la variable
# ejemplo
v/2 #divide cada entrada del vector por dos
v^3 # eleva cada entrada del vector al cubo
v*v # multiplica cada entrada ubicada en el mismo indice (igual a v^2)
1:20 # secuencia de 1 hasta 10 de 1 en 1
pi:10 # secuencia desde pi = 3.14 sumando 1
15:1 # secuencia inversa de 15 hasta 1
seq(1, 6) # secuencia de 1 hasta 20
seq(0, 10, by=0.5) # secuencia de 0 hasta 10, aumentando 0.5
mi_sec <- seq(5, 10, length=20) # secuencia desde 5 hasta 10, con 20 elementos
mi_sec
# ejemplo
coord <- list(X=10, Y=15)
point <- list(id=123, coord=coord, spatial.ref="WGS_84")
point$id # Los elementos de la lista se acceden por nombre
point$coord # Los elementos de la lista se acceden por nombre
point$coord$X # Se puede acceder a los elementos anidados
point[1] # Tabien se puede acceder por índice. Usar corchetes individuales, devuelve una lista
# ejemplo
class(point) # verificando el tipo de estructura
class(point[1]) # verificando el tipo de estructura
class(point[[1]]) # verificando el tipo de dato
# point[1]+point[1] # Esto no funcionará
point[[1]]+point[[1]] # Esto funcionará
Ambos representan tipos de datos “rectangulares”, por lo tanto, se almacenan datos tabulares, con filas y columnas.
Las matrices solo pueden contener una única clase de datos (al igual que los vectores)
Una matriz es una estructura bidimensional. Las filas son horizontales y las columnas son verticales.
Una matriz de 4 por 3 (4 x 3), por ejemplo, tiene 4 filas y 3 columnas.
#ejemplo
mi_matriz1 <- matrix(1:20, 4, 5) # matriz de 4 filas y 5 columnas
mi_matriz1
mi_matriz2 <- matrix(1:20, 5, 4)
mi_matriz2
identical(mi_matriz, mi_matriz2) # verifica si son iguales las matrices
Observación 1: podemos pegar filas o columnas a una matriz ya creada usando rbind y cbind: Observación 2: las filas y columnas pegadas pueden estar delante o al final; arriba o abajo. Veamos:
#ejemplo
mi_matriz1 <- matrix(1:20, 4, 5) # matriz de 4 filas y 5 columnas
rbind(100:104 , mi_matriz1) # pegamos la fila con los elementos 100:104
cbind(mi_matriz1, 100:103) # pegamos la fila con los elementos 100:103
Observación 3: podemos nombrar las filas y columnas de una matriz.
# Poner nombres de filas y columnas a la matriz
rownames(mi_matriz1) <- c("a","b","c","d")
colnames(mi_matriz1) <- c("v", "w", "x","y","z")
mi_matriz1
Observación 1: podemos crear un data.frame a partir de una matriz.
# ejemplo
matriz1 <- matrix(1:20, 4, 5) #creando una matriz
df <- data.frame(matriz1) # creamos un data.frame de la matriz1
df # vemos la matriz
Observación 2: iguamente, podemos cambiar los nombres de las filas y columnas del data.frame.
rownames(df) <- c("a","b","c","d") #nombrando filas
colnames(df) <- c("v", "w", "x","y","z") #nombrando columnas
df
df1 <- data.frame(X = 1:3, Y = c("a","b","c"))
View(df1) # ver el data.frame
df1[1, ] # ver la primera fila (tambien df1[, "X"])
df1[, 2] # ver la segunda columna (tambien df1[, "Y"])
df1$X # ver la primera variable
df1$Y # ver la segunda variable
nrow(df1) # numero de filas del data.frame
ncol(df1) # numero de columnas del data.frame
class(df1) # verificando la clase
Trabajemos con datasets:
data() # para ver todos los datasets que estan en R
Datos iris - Edgar Anderson
Este dataset contiene medidas de longitud y ancho de pétalos y sépalos de flores de tres especies de Iris recogidas por el botánico Edgar Anderson. Es uno de los datasets más clásicos en el mundo del Machine Learning y en general de la ciencia de datos.
str(iris) # la funcion str, nos muestra los atributos del data.frame
iris[ , "Species"] # todas las observaciones de la columna "Species" (tambien: iris$Species)
Podemos extrar algunos elementos del data.frame iris, dandole la condición necesaria. Así:
iris[iris$Species=="setosa", ] # Extraer todas las filas del data.frame iris, donde Species == "setosa".
Observación: podemos hacerlo de la siguiente forma: iris[iris[,"Species"]=="setosa", ]
Podemos extraer las observaciones donde el ancho del sépalo sea menor a 3 y la especie sea “setosa”.
iris[iris[,"Sepal.Width"]<=3 & iris[,"Species"]=="setosa", ]
La función subset nos facilita el recuperar datos cuando queremos que se cumplan ciertas condiciones. Como el ejemplo anterior, queremos extraer las observaciones donde el ancho del sépalo sea menor a 3 y la especie sea “setosa”. Lo hacemos así:
subset(iris, Sepal.Width <= 3 & Species == "setosa")
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
2 4.9 3.0 1.4 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
14 4.3 3.0 1.1 0.1 setosa
26 5.0 3.0 1.6 0.2 setosa
39 4.4 3.0 1.3 0.2 setosa
42 4.5 2.3 1.3 0.3 setosa
46 4.8 3.0 1.4 0.3 setosa
Introduciremos funciones para importar/exportar datos de los siguientes formatos:
readr
lee datos tabulares con las siguientes funciones:read_delim()
read_csv()
read_tsv()
read_fwf()
read_table()
Comenzaremos con el formato CSV que es el más utilizado. Para esto, debemos cargar la libreria (paquete) readr
. La debemos instalar si no la tenemos en nuestro R local.
Observación: para installar una libreria, debemos hacer lo siguiente: install.packages("nombre_paquete")
; en este caso,
install.package(readr)
Ahora podemos ir a nuestros archivos locales para cargar los datos. Así:
library(readr) # cargamos la libreria
mi_iris <- read_csv(file = "C:/Users/Roberto Trespalacio/Documents/mi_iris.csv") # leemos los datos locales
View(mi_iris) # visualizamos los datos
mi_iris.csv
que hemos exportado anteriormente utilizando la función genérica read_delim(), solo hay que decirle que el separador es una coma. Se lo decimos con la opción delim = “,” . Veámoslo:
mi_iris <- read_delim(file = "C:/Users/Roberto Trespalacio/Documents/iris.csv", delim = ",")
write_delim()
. Así:Para exportarlos:
write_delim(iris, path = "C:/Users/Roberto Trespalacio/Documents/mi_iris1.csv", delim = ";") #exportar datos iris
Y si quisiéramos importarlos, tendríamos que hacer:
read_delim(file = "C:/Users/Roberto Trespalacio/Documents/mi_iris1.csv", delim = ";")
Ejercicio: Usar la funciones View()
, str()
, head()
y summary()
para explorar los datos mi_iris
y mi_iris1
.
Para corregir este problema, usaremos este argumento: locale=locale(decimal_mark = ",")
. En este caso estamos diciendo que el delimitador es la coma (“,”). Ejemplo:
Guardemos los datos con delimitador el punto (.).
write_delim(iris, path = "C:/Users/Roberto Trespalacio/Documents/mi_iris2.csv", delim = ".") # exportar datos iris
read_delim(file = "C:/Users/Roberto Trespalacio/Documents/mi_iris2.csv", delim = ";",
locale=locale(decimal_mark = ","))
El package readr
tiene una función específica para bases de datos SAS. Las funciones para importar y exportar “datos SAS” se llaman read_sas()
y write_sas()
.
Su funcionamiento es igual que read_delim()
y write_delim
.
Vamos a usar los package readxl
y writexl
para exportar e imoprtar ficheros excel, respectivamante.
Instalemos el paquete writexl
y veámoslo:
install.packages("writexl") # instalamos writexl
library(writexl) # cargamos la libreria
write_xlsx(iris, "C:/Users/Roberto Trespalacio/Documents/mi_iris_excel1.xlsx") # escribimos los datos mi_iris.xlsx localmente
write_xlsx(iris, "C:/Users/Roberto Trespalacio/Documents/mi_iris_excel2.xlsx"), use_zip64 = T)
obsevación 1: La función write_xlsx()
permite crear Excel enormes de manera eficiente mediante la especificación use_zip64 = T:
write_xlsx(iris, "C:/Users/Roberto Trespalacio/Documents/mi_iris.xlsx"), use_zip64 = T)
obsevación 2: La función write_xlsx()
permite añadir datos en varias pestañas a la vez. Para ello:
list_iris = list(Iris1 = mi_iris_excel1, Iris2 = mi_iris_excel2) # lista de las hojas o pestanas
# escribimos los datos iris con las hojas (mi_iris_excel1 e mi_iris_excel2)
write_xlsx(list_iris, "C:/Users/Roberto Trespalacio/Documents/iris.xlsx")
En internet hay una gran variedad de datasets que podemos usar desde R/RStudio.
# cargamos los datos del fichero "bio260-heights.csv"
url <- "https://raw.githubusercontent.com/datasciencelabs/data/master/bio260-heights.csv" #url de la pagina de los datos
bio260_heights <- read_csv(url) # cargando los datos bio260-heights
La siguiente página puede ser de utilidad para ver más tipos de formas de carga de datos.
Cargar Datos: https://www.uv.es/pjperez/curso_R/tt_3_cargar_datos_v4.html
Los siguientes, son algunos ejercicios para repasar y practicar lo visto hasta el momento.
mtcars
, guardelo como archivo local (en su computador, en Documentos), en los siguientes formatos:
View()
, str()
, head()
y summary()
, para describir el contenido de mtcars.read_delim
para descargar los datos a su computador. (nota: el separador de este archivo es el espacio en blanco, es deicr: “ ”)