Está en la página 1de 27

PYTHON Y LOS DATOS

AUTOR: GABRIEL M. BARRERA


CONTENIDO
INTRODUCCIÓN.................................................................................................................. 3

1. LOS DATOS....................................................................................................................... 4
1.1. Numpy ...........................................................................................................................5
1.2. Pandas............................................................................................................................9
1.2.1. Series.................................................................................................................... 10
1.2.2. DataFrame.......................................................................................................... 11
2. ESTADÍSTICA DESCRIPTIVA .....................................................................................13
3. PREDICCIONES............................................................................................................15
3.1. Regresión lineal......................................................................................................... 15
3.2. Árboles de decisión................................................................................................... 19
3.3. Random Forest........................................................................................................... 21
4. CLUSTERING O AGRUPAMIENTO............................................................................23
4.1. KMeans........................................................................................................................ 23
4.2. Meanshift.................................................................................................................... 25

BIBLIOGRAFÍA...................................................................................................................26

2
INTRODUCCIÓN

La inteligencia artificial necesita de una gran can-


tidad de datos; por ello, uno de los primeros pasos
que se deben realizar, es conocer esos datos y al
mismo tiempo manipularlos. Esta necesidad vie-
ne del hecho que los necesita para poder apren-
der y entrenar sus algoritmos acordes a la proble-
mática abordada.

Muchas veces el éxito o fracaso de una imple-


mentación está estrechamente relacionado con
la preparación previa de los datos para el armado
del modelo de IA. Por ello es importante dedicar-
le el tiempo necesario para prepararlos, en donde
los mismos se normalizan, limpian y ocasional-
mente se seleccionan o preprocesan.

Aludiendo a la importancia de los datos, antes de


considerar contratar científicos de datos, rentar
servidores e instalar bibliotecas de aprendizaje
automático de código abierto, se deben tener da-
tos. La calidad y la profundidad de los datos deter-
minarán el nivel de aplicaciones de IA que puede
lograr o incluso realizar. Si bien es posible que la
organización no esté en la etapa en la que se está
listo para comenzar a crear aplicaciones de inteli-
gencia artificial, como mínimo se debe planificar
un futuro en el que los datos se utilizarán para im-
pulsar soluciones inteligentes. Tratar cada nueva
iniciativa o proyecto como una oportunidad para
construir una base para futuros modelos de datos.

En las próximas secciones se verá cómo se pue-


den manipular los datos en Python utilizando he-
rramientas del lenguaje y paquetes tradicionales
para tal fin. Luego de comprender cómo adminis-
trar los datos, y haciendo uso de ello se abordarán
técnicas de modelado estadístico para la obten-
ción de soluciones de inteligencia artificial para
predecir valores, clasificar o bien realizar agrupa-
mientos de los datos.

3
01
LOS DATOS
El primer paso para construir un sistema de IA es considerar el problema que se tie-
ne que resolver. La disponibilidad de datos tendrá un gran impacto en cómo se en-
sambla el sistema y qué técnicas de inteligencia artificial se utilizarán. La cantidad y
calidad de los datos disponibles tendrá un impacto en la calidad del producto final.
En este sentido, se puede argumentar que la disponibilidad de datos y la accesibi-
lidad son el principal impulsor del desarrollo de productos que utilizan tecnologías
de IA.

Como primera clasificación de los datos se pueden observar dos grandes grupos:
aquellos que son estructurados y los desestructurados.

Los datos estructurados son datos que se incorporan a un modelo de datos para
estandarizar las relaciones entre los elementos de datos. En términos más simples,
los datos estructurados son aquellos que encajan en una estructura predefinida y
diseñada expresamente. Por lo general, estos modelos se han diseñado con un ob-
jetivo particular en mente. Típicamente son representaciones en formato tabular
o de tablas (matrices).

Los datos desestructurados son datos que no están organizados de acuerdo con
ningún modelo de datos preexistente. En términos generales, lo que se considera
“big data” son datos no estructurados, al menos en su forma sin procesar. Los datos
no estructurados no se procesan y, a menudo, son generados por sistemas dirigi-
dos por máquinas donde el propósito de los datos no es responder una pregunta
específica; esto incluye, por ejemplo, publicaciones en redes sociales, imágenes de
cámaras de vigilancia o imágenes de satélite.

Por lo general los datos provenientes de sistemas empresariales, son datos estruc-
turados, para lo cual existen herramientas para su manipulación. Una de ellas en
Python es el paquete Pandas y Numpy.

4
1.1. NUMPY
NumPy es el paquete en Python para la computación científica. En este paquete se
proporciona un objeto de matriz multidimensional, varios objetos derivados (como
matrices y matrices enmascaradas) y una variedad de rutinas para operaciones rá-
pidas de matrices, que incluyen manipulación matemática, lógica, de dimensiones,
clasificación, selección, entrada y salida, álgebra lineal básica, operaciones estadís-
ticas básicas, simulación aleatoria.

El principal objetivo dentro de la IA de Numpy es el uso eficiente de los vectores o


matrices de gran tamaño, a diferencia de las listas definidas en Python, este tipo de
dato creado en Numpy (ndarray) es uno de los más usados para generar modelos
de IA.

Una vez que se está creado y activado el entorno virtual con el que se trabaja, se
debe instalar el paquete de Numpy mediante el comando: pip install numpy

Para corroborar que Numpy se ha instalado correctamente se puede hacer un sim-


ple ejemplo desde el intérprete de Python como se muestra en la captura de pan-
talla 1.

Figura 1:[( Validar instalación


Numpy.), 2021]

Para ingresar al intérprete de Python, desde una terminal ingresar Python o


python3 (dependiendo del sistema operativo), cabe recordar que todo lo siguien-
te siempre es en la versión 3 de Python. Una vez dentro del intérprete ingresa la
sentencia import numpy as np. Esta sentencia, carga en memoria el paquete de
Numpy, y es habitual renombrarlo dentro del programa como np.

NumPy es el paquete en Python para la computación científica.


https://numpy.org/

5
En Python una de las colecciones tradicionales son las listas (List), las mismas se
definen utilizando con corchetes y sus elementos en el interior separados por el
carácter coma (,). Numpy permite generar un ndarray a partir de una lista, como se
muestra en la captura de pantalla 2.

Figura 2: [(Creación de un
ndarray.), 2021]

Una de las operaciones más tediosas de realizar a mano con matrices es la multi-
plicación entre dos matrices y el cálculo del determinante. Ambas operaciones son
simples de calcular usando las funcionalidades que brinda Numpy. En el ejemplo de
la captura de pantalla 3 se definen dos matrices (líneas 14 y 15), las cuales son crea-
das con las listas definidas en Python (líneas 3 a 12). La multiplicación entre ambas
matrices se realiza usando la función matmul(m1, m2), la cual recibe las matrices
con las restricciones correspondiente a álgebra matricial (línea 17). Dado que el re-
sultado de la multiplicación es una matriz cuadrada (2x2 en este ejemplo), se puede
calcular el determinante utilizando la función linalg.det(p) (línea 18).

Figura 3: [(Multiplicación de
matrices.), 2021]

6
Cabe destacar que en el ejemplo de la captura 3, las matrices son de dos dimen-
siones. En ese caso las dimensiones de las matrices son fácilmente de visualizar,
aunque no sea el caso, existe una propiedad en las matrices que devuelve la forma
que tiene la matriz: shape. Por ejemplo, si se desea conocer las dimensiones de la
matriz m1: print(m1.shape), lo que mostrará por la terminal: (2, 3). Esto quiere de-
cir que tiene 2 filas y 3 columnas. Además, tienen una propiedad size que devuelve
la cantidad de elementos.

Otros dos métodos de los ndarray son: la transpuesta y la inversa.

Figura 4: [(Matriz transpuesta.),


2021]

Figura 5:[( Matriz inversa.), 2021]

Creación de ndarray

• np.empty(dimensiones): Crea y devuelve una referencia a un array vacío con las


dimensiones especificadas en la tupla dimensiones. Por ejemplo: np.empty((3,2)),
crea una matriz de 3 filas y 2 columnas. Por vacía hay que tener presente que no
necesariamente haya ceros en las celdas.

7
• np.zeros(dimensiones): Crea y devuelve una referencia a un array con las dimen-
siones especificadas en la tupla dimensiones cuyos elementos son todos ceros.
Por ejemplo: np.zeros((3, 2))

Figura 6:[( np.zeros.), 2021]

• np.ones(dimensiones): Crea y devuelve una referencia a un array con las dimen-


siones especificadas en la tupla dimensiones cuyos elementos son todos unos.

• np.full(dimensiones, valor): Crea y devuelve una referencia a un array con las


dimensiones especificadas en la tupla dimensiones cuyos elementos son todos
valor.

• np.identity(n): Crea y devuelve una referencia a la matriz identidad de dimensión


n.

• np.arange(inicio, fin, salto): Crea y devuelve una referencia a un array de una di-
mensión cuyos elementos son la secuencia desde inicio hasta fin tomando valo-
res cada salto. Por ejemplo: np.arange(10, 50, 5). Hay que tener presente que del
“fin” no se incluye en el vector resultante.

Figura 7: np.arange..), 2021]

• np.linspace(inicio, fin, n): Crea y devuelve una referencia a un array de una di-
mensión cuyos elementos son la secuencia de n valores equidistantes desde ini-
cio hasta fin.

Figura 8: [(np.linspace..), 2021]

8
1.2. PANDAS

Pandas simplifica la realización de muchas de las tareas repetitivas y que consumen


mucho tiempo asociadas con el trabajo con datos, como pueden ser:

• Limpieza de datos;
• Llenado de datos;
• Normalización de datos;
• Fusiona y une;
• Visualización de datos;
• Análisis estadístico;
• Inspección de datos;
• Cargar y guardar datos.

De hecho, con Pandas, se puede hacer todo lo que hacen los científicos de datos
para el análisis y manipulación de datos.

Algunas de las características distintivas son:

• Define nuevas estructuras de datos basadas en el ndarray de la librería NumPy


con nuevas funcionalidades.
• Permite leer y escribir fácilmente archivos en formato CSV, Excel y bases de da-
tos.
• Permite acceder a los datos mediante índices o nombres para filas y columnas.
• Ofrece métodos para reordenar, dividir y combinar conjuntos de datos.
• Permite trabajar con series temporales.

Pandas dispone de dos estructuras de datos diferentes para mani-


pular los datos de una forma eficiente:

• Series: Estructura de una dimensión.


• DataFrame: Estructura de dos dimensiones (habitualmente lla-
madas tablas).

Estas estructuras se construyen a partir de ndarray de la librería Num-


Figura 9: Programador.
Py, añadiendo nuevas funcionalidades. (Shutterstock, 2021).

Pandas es una herramienta de manipulación y análisis de datos de


código abierto; rápida, potente, flexible y fácil de usar, ampliamente
utilizado en análisis y ciencia de datos y tareas de aprendizaje
automático. Pandas está construido sobre otro paquete, Numpy.
https://pandas.pydata.org/
9
1.2.1. Series
Son estructuras similares a los vectores de una dimensión. Son homogéneas, es de-
cir, sus elementos tienen que ser del mismo tipo, y su tamaño es inmutable, es decir,
no se puede cambiar, aunque sí su contenido. Dispone de un índice que se asocia un
nombre a cada elemento de la serie, a través de la cual se accede al elemento.

Las series se pueden crear de diversas formas, por ejemplo desde una lista o diccio-
nario de Python. En el caso de partir desde una lista, los índices no tienen un nom-
bre, solo queda el número asociado. Por otro lado, partiendo desde un diccionario
los nombres pasan a ser los mismos para los índices.

Figura 10: [(Creación de una Serie a


partir de un diccionario Python.), 2021]

Existen varias propiedades o métodos para ver las características de una serie.

• s.size: Devuelve el número de elementos de la serie s. Según el ejemplo, devuelve:


5.

• s.index : Devuelve una lista con los nombres de las filas del DataFrame s. Según el
ejemplo, devuelve: Index([‘field1’, ‘field2’, ‘field3’, ‘field4’, ‘field5’], dtype=’object’).
El cual es otro tipo de dato definido en Pandas: Index, y al igual que otras
colecciones en Python, la misma puede ser iterable.

• s.dtype : Devuelve el tipo de datos de los elementos de la serie s. Según el ejemplo,


retorna: dtype(‘int64’). El cual representa el tipo de dato que se almacena en la
Serie.

10
1.2.2. DataFrame
Un objeto del tipo DataFrame define un conjunto de datos estructurado en forma
de tabla donde cada columna es un objeto de tipo Series, es decir, todos los datos
de una misma columna son del mismo tipo, y las filas son registros que pueden
contener datos de distintos tipos.

Un DataFrame contiene dos índices, uno para las filas y otro para las columnas, y se
puede acceder a sus elementos mediante los nombres de las filas y las columnas. Se
puede crear un DataFrame a partir de un diccionario cuyas claves son los nombres
de las columnas y los valores son listas con los datos de las columnas, cabe aclarar
que todas las listas deben tener la misma cantidad de elementos.

En la siguiente figura, se crea un diccionario Python (datos) donde cada entrada


del diccionario representa una columna, por ejemplo ‘País’ tiene una lista de los
distintos países.

Figura 11: [(Creación de un DataFrame


desde un diccionario.), 2021]

Cuando se muestra el DataFrame de los países, a la izquierda se ven números


que van desde el 0 hasta el 4, ese es el índice de cada ‘registro’. En determinadas
circunstancias, es útil definirles un nombre, en vez de trabajar con los números.
En la captura de pantalla 5, se agregan los nombres de índices por medio de la
propiedad ‘índex’ a la cual se le asigna una lista con los nombres. Hay que tener
especial cuidado en la cantidad de elementos, y el orden de estos, tienen que
mantener correspondencia con los registros en el DataFrame.

11
Figura 12: [(Agregar nombre a los
índices.), 2021]

Una de las grandes ventajas que ofrece Pandas para la creación de DataFrame, es
la posibilidad de importar los datos desde diversos orígenes, por ejemplo, desde un
archivo con los valores separados por coma (CSV). Siguiendo con el ejemplo de los
países, los datos se encuentran en un archivo: paises.csv, como se muestra en la
captura de pantalla 6.

Figura 13: [(Archivo paises.csv.), 2021]

Si se cuentan los campos de la primera fila (son 4: país, capital, población y superficie)
y se comparan con el resto (son 5) se tiene una diferencia de 1 columna, en este
caso Pandas va a asumir que los primeros datos de cada registro corresponden al
índice (AR, UR, CH, etc.). Para la importación del archivo a un nuevo DataFrame se
utiliza la función read_csv(nombre_archivo).

Figura 14: [(Ejemplo de importación de


un archivo CSV a un DataFrame.), 2021]

12
02
ESTADÍSTICA
DESCRIPTIVA
Las estadísticas descriptivas son coeficientes descriptivos breves que resumen un
conjunto de datos dado, que puede ser una representación de toda la población o
una muestra de una población.

Estas se dividen en medidas de tendencia central y medidas de variabilidad (dis-


persión). Las medidas de tendencia central incluyen la media, la mediana y la moda,
mientras que las medidas de variabilidad incluyen la desviación estándar, la varian-
za, las variables mínima y máxima, la curtosis y la asimetría.

En resumen, la estadística descriptiva ayuda a describir y comprender las caracte-


rísticas de un conjunto de datos específico, al brindar breves resúmenes sobre la
muestra y las medidas de los datos. Hay que tener presente que para los procesos
de inteligencia artificial se deben conocer los datos, para poder determinar qué es-
trategia es viable, de ahí la importancia de la estadística descriptiva.

Tanto el paquete Numpy, como Pandas brindan funciones y métodos para descri-
bir los datos. Siguiendo con el ejemplo del DataFrame con países, el mismo tiene
un método: describe() el cual brinda los principales indicadores: conteo, promedio,
desvío estándar, mínimo, máximo y quartiles.

Figura 15: [(Ejemplo del método describe


del DataFrame.), 2021]

13
Además del método mencionado, existen otros como los que se detallan en la tabla
siguiente:

Método Descripción
count Cantidad de valores distintas de NaN
min, max Determinar el valor mínimo y máximo
Determina el índice del valor mínimo y máximo
argmin, argmax
(En Series)
Calcula el cuantil de la muestra, parámetro
quantile
entre 0 y 1
sum Realizar la suma de los valores
mean Calcula la media de los valores
Determina la mediana aritmética de los
median
valores
Devuelve la desviación media absoluta de los
mad
valores.
prod Realiza el producto de los valores
var Calcula la varianza de los valores
std Calcula el desvío estándar de los valores

Figura 16: [(Ejemplo de ejecución de


métodos min y mean.), 2021]

14
03
PREDICCIONES
El análisis predictivo es el uso de datos, algoritmos estadísticos y técnicas
de aprendizaje automático para identificar la probabilidad de resulta-
dos futuros basados en datos históricos. El objetivo es ir más allá de
saber qué ha sucedido para proporcionar una mejor evaluación de lo
que sucederá en el futuro.

Aunque el análisis predictivo ha existido durante décadas, es una


tecnología cuyo momento ha llegado. Cada vez más organizaciones
recurren a la analítica predictiva para aumentar sus resultados finales
y su ventaja competitiva. Esto ocurre en estos momentos por la crecien-
Figura 17: Análisis.
tes capacidad de almacenamiento de datos, y el aumento de interés en
(Shutterstock, 2021). usar esos datos para producir información valiosa.

Otras condiciones que se presentan son computadoras más rápidas y económicas,


software más fácil de usar y las condiciones económicas más duras y necesidad de
diferenciación competitiva. Con el software interactivo y fácil de usar cada vez más
prevalente, el análisis predictivo ya no es solo el dominio de los matemáticos y es-
tadísticos. Los analistas comerciales y los expertos en líneas de negocio también
están utilizando estas tecnologías.

3.1. REGRESIÓN LINEAL


La regresión lineal es un tipo de análisis predictivo básico y de uso común. La idea
general de la regresión es examinar dos cuestiones:

• ¿Un conjunto de variables predictoras hace un buen trabajo al predecir una varia-
ble (que se entiende dependiente de las primeras) de resultado?
• ¿Qué variables son significativamente predictores con respecto a la variable de
resultado y de qué manera, cómo estas impactan en la variable de resultado?

15
Estas estimaciones de regresión se utilizan para explicar la relación entre una va-
riable dependiente y una o más variables independientes. La forma más simple de
la ecuación de regresión con una variable dependiente y una independiente se de-
fine mediante la fórmula y = β X + c + ε, donde:

y = puntaje estimado de la variable dependiente


c = constante
β = coeficiente de regresión
X = Datos de la variable independiente.
ε = error que no se pueden explicar con el modelo

Existen muchos nombres para la variable dependiente de una regresión, puede de-
nominarse variable de resultado, variable de criterio, variable endógena o regresi-
va. Las variables independientes pueden denominarse variables exógenas, varia-
bles predictoras o regresores.

Algunos usos posibles de regresión lineal

Podría usarse para Se puede utilizar para El análisis de regresión


identificar la fuerza del pronosticar los efectos predice tendencias
efecto que tienen las o el impacto de los y valores futuros. El
variables independientes cambios. Es decir, el análisis de regresión
sobre una variable análisis de regresión se puede utilizar para
dependiente. Las ayuda a comprender obtener estimaciones
preguntas típicas son cuánto cambia la variable puntuales. Una pregunta
cuál es la fuerza de la dependiente con un típica es, “¿cuál será el
relación entre la dosis cambio en una o más precio del petróleo en 12
y el efecto, el gasto en variables independientes. meses?”
ventas y marketing o la Una pregunta típica
edad y los ingresos. es: “¿Cuántos ingresos
de ventas adicionales
obtengo por cada $1000
adicionales gastados en
marketing?”

En el siguiente ejemplo se desea buscar un modelo de regresión lineal que repre-


sente un conjunto de datos correspondiente a la medición de diabetes. Los datos
están compuestos por los siguientes campos o atributos (features):

X = [‘age’, ‘sex’, ‘bmi’, ‘bp’, ‘s1’, ‘s2’, ‘s3’, ‘s4’, ‘s5’, ‘s6’]

16
Estos atributos corresponden a las siguientes mediciones:

1. age: edad en años


2. sex: sexo del individuo de la muestra
3. bmi: índice de masa corporal
4. bp: presión arterial media
5. s1 tc: colesterol sérico total
6. s2 ldl: lipoproteínas de baja densidad
7. s3 hdl: lipoproteínas de alta densidad
8. s4 tch: colesterol total/HDL
9. s5 ltg: posiblemente logaritmo del nivel de triglicéridos séricos
10. s6 glu: nivel de azúcar en sangre

La columna 11 (y) es una medida cuantitativa de la progresión de la enfermedad un


año después del inicio (objetivo o target), la variable dependiente de las otras 10.

Figura 18: [(Código Python generando


un modelo regresión.), 2021]

Desde la línea 1 a la línea 5 se importan al programa los componentes necesarios


para realizar la regresión lineal, en este caso una regresión lineal simple.

17
En la línea 7, se está cargando los datos desde el datasets prearmado que tiene
sklearn para prácticas.

Línea 9 a 14, es una sola instrucción, separa los datos y los objetivos en dos grupos:
train y test. El primero para entrenar el modelo, y el segundo para validar que tan
bien entrenado ha quedado el modelo.

En la línea 16, se crea una instancia de la clase LinearRegression, y luego en la línea


17 se entrena el modelo.

En la línea 19 se muestran los coeficientes β para construir la ecuación de la regre-


sión. Y en la línea 20 el valor de c. Entonces se puede construir la función corres-
pondiente a la regresión lineal.

En la línea 22 se realiza una predicción de los valores que habían sido apartados
(X_test) para la validación del modelo y se guardan en la variable y_pred. Con eso,
se pueden realizar métricas para validar el modelo, como es el ejemplo, el cálculo
del error cuadrático medio, líneas 24 y 25.

Con las líneas 27 a 32 se realiza un gráfico donde se muestra una línea diagonal a
fin de marcar una división, y los puntos donde se muestran los valores predichos
versus los que deberían haber sido.

Figura 19: Gráfico resultante del ejemplo


de regresión lineal. (Elaboración propia).

Existen otros métodos de regresión, que también pueden ser resueltos con el pa-
quete sklearn, por ejemplo la regresión logística, que es una clase de regresión en
la que la variable independiente se utiliza para predecir la variable dependiente.
Cuando la variable dependiente tiene dos categorías, entonces es una regresión lo-
gística binaria. Cuando la variable dependiente tiene más de dos categorías, enton-
ces es una regresión logística multinomial. Cuando se va a clasificar la categoría de
variable dependiente, se trata de una regresión logística ordinal.

18
3.2. ÁRBOLES DE DECISIÓN
Los árboles de decisión (DT) son un método de aprendizaje supervisado no pa-
ramétrico que se utiliza para clasificación y regresión. El objetivo es crear un mo-
delo que prediga el valor de una variable objetivo aprendiendo reglas de decisión
simples inferidas de las características de los datos.

Un árbol de decisiones es un mapa de los posibles resultados de una serie de elec-


ciones relacionadas. Permite a un individuo u organización sopesar posibles accio-
nes entre sí en función de sus costos, probabilidades y beneficios. Se pueden usar
para impulsar una discusión informal o para trazar un algoritmo que prediga la me-
jor opción matemáticamente.

Figura 20: Árbol de decisión.


(Shutterstock, 2021).

Por lo general, un árbol de decisiones comienza con un solo nodo, que se ramifica
en posibles resultados. Cada uno de esos resultados conduce a nodos adicionales,
que se ramifican en otras posibilidades. Esto le da una forma de árbol.

Hay tres tipos diferentes de nodos: nodos de azar, nodos de decisión y nodos fina-
les. Un nodo de azar, representado por un círculo, muestra las probabilidades de
ciertos resultados. Un nodo de decisión, representado por un cuadrado, muestra
una decisión a tomar y un nodo final muestra el resultado final de una ruta de deci-
sión.

Dentro de sklearn se tienen las herramientas para generar árboles de decisión


como clasificadores (DecisionTreeClassifier) o bien como modelos de regresión
(DecisionTreeRegressor). Ambas clases permiten la creación de objetos que luego
de entrar por medio de datos, generan los árboles internamente por medio de ope-
raciones probabilidades.

19
Figura 21: [(Código de ejemplo para un
Árbol de decisión clasificador.), 2021]

En el ejemplo del árbol de decisión como clasificador, se importa en la línea 1 el


módulo tree de sklearn.

La línea 4 a 8, que es una sola instrucción, se genera una lista con listas con los da-
tos que definen un objetivo (hombre/mujer). Dichos objetivos se definen en la lista
target que se crea en la línea 10 a 14. Hay que tener en consideración, que a cada
posición de la lista data le corresponde la misma posición en la lista target.

En la línea 16 se crea una instancia de DecisionTreeclasifier() la cual es entrenada


con los datos en la línea 19.

Línea 21 y 22 se crean dos muestras de ejemplo, para evaluar cómo los predice el
árbol de decisión, lo que se evalúa en la línea 23.

20
Figura 22: Árbol generado a partir del
ejemplo. (Elaboración propia, 2021).

El árbol que se genera sirve para evaluar nuevos valores, por ejemplo, en el código
ejemplo se desea evaluar el conjunto a=[178, 71, 43], los valores de a son lo que
ingresan al árbol como X, entonces dependiendo del valor de cada elemento se va
descendiendo en el árbol, hasta llegar a un nodo raíz. En el ejemplo, X[2] es 43, con
lo cual se dirige al nodo derecho de la segunda línea, donde encuentra que 5 son
hombres y 0 son mujeres.

3.3. RANDOM FOREST


Random Forest es un algoritmo de aprendizaje supervisado. Como su nombre lo
indica, consiste en una gran cantidad de árboles de decisión individuales que ope-
ran como un conjunto. Cada árbol individual en el Random Forest brinda una pre-
dicción de clase y la clase con más votos se convierte en la predicción del modelo.

Figura 23: Modelo de árbol de decisión.


(Shutterstock, 2021).

21
El concepto fundamental detrás del Random Forest es simple pero poderoso: la
sabiduría de las multitudes. En términos de ciencia de datos, la razón por la que el
modelo de Random Forest funciona tan bien es: Un gran número de modelos (ár-
boles) relativamente no correlacionados que operan como un comité superará a
cualquiera de los modelos constituyentes individuales.

Una gran ventaja del Random Forest es que se puede utilizar tanto para proble-
mas de clasificación como de regresión, que forman la mayoría de los sistemas de
aprendizaje automático actuales.

Para utilizar Random Forest desde Python se de importar la clase:

from sklearn.ensemble import RandomForestClassifier

Suponiendo que se desea armarlo para clasificar, y al igual que otras clases de
sklearn, se entrena el modelo con el método fit(data, target).

22
04
CLUSTERING O
AGRUPAMIENTO
El Clustering o agrupamiento es la tarea de dividir la población o los puntos de da-
tos en varios grupos de modo que los puntos de datos de los mismos grupos sean
más similares a otros puntos de datos del mismo grupo que los de otros grupos. En
palabras simples, el objetivo es segregar grupos con rasgos similares y asignarlos
en grupos.

Se supone que el jefe de una tienda de alquiler desea comprender las preferen-
cias de sus clientes para ampliar su negocio. ¿Es posible que observe los detalles de
cada cliente y diseñe una estrategia comercial única para cada uno de ellos? Defi-
nitivamente no. Pero lo que se puede hacer es agrupar a todos sus clientes en, por
ejemplo, 10 grupos en función de sus hábitos de compra y utilizar una estrategia
separada para los clientes en cada uno de estos 10 grupos. Y esto es lo que se llama
agrupación.

4.1. KMEANS
La agrupación en clústeres de K-means es uno de los algoritmos de aprendizaje au-
tomático no supervisados más simples y populares.

Por lo general, los algoritmos no supervisados hacen inferencias a partir de conjun-


tos de datos utilizando solo vectores de entrada sin hacer referencia a resultados
conocidos o etiquetados.

Se define un número objetivo k, que se refiere al número de centroides que se ne-


cesita en el conjunto de datos. Un centroide es la ubicación imaginaria o real que
representa el centro del grupo. Cada punto de datos se asigna a cada uno de los
grupos mediante la reducción de la suma de cuadrados dentro del grupo.

23
En otras palabras, el algoritmo de K-means identifica k número de centroides y lue-
go asigna cada punto de datos al grupo más cercano, mientras mantiene los cen-
troides lo más pequeños posible.

Figura 24: Clustering.


(Shutterstock, 2021).

Para hacer uso del algoritmo de KMeans en Python se debe importar la clase co-
rrespondiente:

from sklearn.cluster import KMeans

Al momento de instanciar la clase, se debe indicar cuántos grupos se desean crear,


k grupos:

km = KMeans(n_clusters=2)

Se le pasan los datos que se desean agrupar por medio del método fit(X) y el mo-
delo queda construido, donde a cada elemento de X le asigna un grupo, y además
el mismo se encuentra en condiciones de predecir otro valor distinto a que grupo
pertenecería:

km.predict([[1.5, 1]])

Evaluando a qué grupo pertenece el conjunto de valores [1.5, 1].

24
4.2. MEANSHIFT
Meanshift entra en la categoría de un algoritmo de agrupamiento en contraste con
el aprendizaje no supervisado que asigna los puntos de datos a los grupos de forma
iterativa al cambiar los puntos hacia el modo (el modo es la densidad más alta de
puntos de datos en la región, en el contexto del Meanshift). Como tal, también se
conoce como algoritmo de búsqueda de modo.

El algoritmo de Meanshift tiene aplicaciones en el campo del procesamiento de


imágenes y la visión por computadora. A diferencia del algoritmo de clústeres
K-Means, el Meanshift no requiere especificar el número de clústeres por adelan-
tado. El algoritmo determina el número de conglomerados con respecto a los datos.

Dentro de sklearn, se encuentra la clase para el algoritmo:

from sklearn.cluster import MeanShift

25
BIBLIOGRAFÍA
PONCE CRUZ, PEDRO. “INTELIGENCIA
ARTIFICIAL CON APLICACIONES A
LA INGENIERÍA”. (2010). Alfaomega
Grupo Editor.

PYTHON DOCUMENTACIÓN OFICIAL


“3.10.0 DOCUMENTACIÓN”. (DAKO-
TA DEL NORTE). PYTHON.ORG. Ob-
tenido el 28 de octubre de 2021 de
https://docs.python.org/3/

RUSSELL, STUART J. “INTELIGENCIA


ARTIFICIAL: UN ENFOQUE MODER-
NO”. 3RA EDICIÓN. (2009). México:
Prentice Hall Hispanoamericana.

VAN ROSSUM, GUIDO. “TUTORIAL


PYTHON: DOCUMENTATION. VER-
SION 3.6.3.”. (2020)., url: https://tu-
torial.python.org.ar/_/downloads/en/
latest/pdf/

26

También podría gustarte