A continuaci贸n aprender谩s c贸mo implementar el algoritmo de Bosques Aleatorios Regresi贸n utilizando la librer铆a de Python Scikit Learn, tomando en cuenta cada uno de los par谩metros que debes considerar para ajustar y mejorar tus resultados. 

Posteriormente desarrollaremos un proyecto de Machine Learning enfoc谩ndonos en el algoritmo de Bosques Aleatorios Regresi贸n . Cada una de las explicaciones dadas ac谩 ser谩 paso a paso para que puedas entender con detalle cada uno de los m茅todos explicados ac谩 y que los puedas implementar en tus propios proyectos.

machine learning seg煤n expertos

Bosques Aleatorios Regresi贸n con Scikit Learn

Si a煤n no lo sabes,聽Scikit Learn聽es una de las m谩s grandes librer铆as de Machine Learning con la que cuenta Python, pero no solamente eso,聽es de las m谩s utilizadas al momento de crear los modelos implementando los algoritmos de Machine Learning, por estas razones es muy importante que aprendas a trabajar con ella si apenas te est谩s iniciando.

Veamos c贸mo se puede utilizar聽esta librer铆a para implementar el algoritmo de Bosques Aleatorios Regresi贸n.

Este algoritmo se encuentra dentro de los聽m茅todos de ensamblado聽de Machine Learning, por lo que deberemos primeramente importar el m贸dulo sklearn.ensemble y posteriormente especificar RandomForestRegressor para poder implementar este algoritmo. Si te fijas todos los algoritmos que caen dentro de la categor铆a de m茅todos de ensamblado se encuentran dentro de este m贸dulo en Scikit Learn, por lo que cada vez que vayas a utilizar alguno de ellos deber谩s importar este m贸dulo y posteriormente definir el m茅todo a utilizar.

https://flic.kr/p/2dgaZh

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-4

Realizado esto ya podemos implementar este algoritmo en nuestro programa. Igual que los anteriores algoritmos, con esta instrucci贸n se deber谩 definir las variables 鈥渪鈥 y 鈥測鈥 para implementar la instrucci贸n fit() para entrenar el modelo y predict() para realizar una predicci贸n.

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-5

Toda la informaci贸n para implementar esta librer铆a la pueden encontrar directamente en la p谩gina web, por lo que si tenemos alguna duda en la implementaci贸n de las instrucciones solamente tenemos que leer esta informaci贸n.

estad铆sticas en machine learning

Implementaci贸n de Vectores de Soporte Regresi贸n con Scikit Learn

Enfoqu茅monos a verificar las caracter铆sticas que podemos modificar dentro del algoritmo de Bosques Aleatorios, recuerda que si quieres obtener informaci贸n adicional al respecto siempre puedes dirigirte a la聽p谩gina de la librer铆a聽en donde obtendr谩s una informaci贸n m谩s completa.

Comencemos con n_estimators, en donde indicamos el n煤mero de 谩rboles que tendr谩 el bosque. Recuerda que un mayor n煤mero de 谩rboles aumenta el rendimiento y hace que las predicciones sean m谩s estables, pero tambi茅n vuelve lento el c谩lculo. En caso de que no lo modifiquemos, este valor es de 10, por defecto.

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-7

El siguiente par谩metro es criterion, esto fue explicado en el algoritmo de聽脕rboles de Decisi贸n, y ac谩 aplica la misma explicaci贸n. Scikit Learn utiliza la media del error cuadrado o 鈥渕se鈥 por sus siglas en ingl茅s para implementar la separaci贸n de los datos para los 脕rboles de Decisi贸n a construir, si quieres profundizar m谩s sobre este tema, te recomiendo que revises la informaci贸n de los 脕rboles de Decisi贸n.

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-8

Otro par谩metro que viene tambi茅n relacionado a los 脕rboles de Decisi贸n es max_depth, que se refiere a la profundidad del 谩rbol, si no se especifica este valor el algoritmo selecciona de manera autom谩tica los nodos de manera que los expande hasta que todas las hojas est茅n puras o hasta que todas las hojas contienen menos datos.

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-9

El siguiente par谩metro que explicaremos es el de max_features, en este se define el n煤mero m谩ximo de caracter铆sticas que el Bosque Aleatorio puede probar en un 谩rbol individual. Scikit Learn ofrece varias opciones como utilizar todas las caracter铆sticas, o solamente una fracci贸n de ellas, e inclusive puedes definir utilizar la ra铆z cuadrada del n煤mero de caracter铆sticas. A nivel pr谩ctica puedes probar con varios de estos valores para ver con cual obtienes un mejor resultado.

Bosques-Aleatorios-Regresio虂n-Scikit-Learn-10

Estas son solo algunas de los par谩metros que puedes modificar en el algoritmo de Bosques Aleatorios, existen otros que puedes revisar en la p谩gina oficial, pero estos son los m谩s importantes.

por que虂 programar es tan dificil

Precisi贸n de Regresi贸n Lineal con Scikit Learn

Una vez realizada la configuraci贸n del algoritmo, haber entrenado el modelo y a su realizado una predicci贸n ahora debemos verificar la precisi贸n del mismo, para ello utilizamos la instrucci贸n 鈥score鈥, esta es la misma instrucci贸n que hemos utilizado con los otros algoritmos y devuelve la estad铆stica al cuadrado.

machine learning seg煤n expertos

Resumen de comandos Scikit Learn

En resumen, los comandos a utilizar para implementar un algoritmo de Bosques Aleatorios Regresi贸n ser铆an los siguientes:

bosques regresio虂n 1

Sabiendo c贸mo implementar el algoritmo de Bosques Aleatorios Regresi贸n con la librer铆a de Scikit Learn, ha llegado el momento de desarrollar un proyecto pr谩ctico.

inteligencia artificial con aprendeIA

Definici贸n del proyecto

En esta pr谩ctica del algoritmo de Bosques Aleatorios Regresi贸n, se desarrollar谩 un modelo para predecir el precio de las casas en Boston de acuerdo al n煤mero de habitaciones que cuenta la vivienda.

Para este an谩lisis vamos a utilizar el dataset disponible en la librer铆a scikit-learn correspondiente al Boston Housing o las casas de Boston.聽Si no lo sab铆as dentro de la聽librer铆a sckit-learn聽se dispone de varios聽conjuntos de datos, muy b谩sicos, con los que puedes practicar tus conocimientos de Machine Learning, no son muchos, pero cubre los principales tipos de algoritmos como regresi贸n聽y聽clasificaci贸n.

El algoritmo espec铆fico que se utilizar谩 ser谩 Bosques Aleatorios Regresi贸n.

usos de la inteligencia artificial en la vida cotidiana

Obtener los de datos

El primer paso que daremos ser谩 el de importar las librer铆as que vamos utilizar, en especial las necesarias para importar los datos que utilizaremos.

En este caso vamos a importar de sklearn el datasets, que es donde se guardan todos los conjuntos de datos que dispone esta librer铆a y a su vez importamos de una vez linear_model.

				
					#Se importan la librerias a utilizar
from sklearn import datasets, linear_model
				
			

Seguidamente importamos los datos, para ello utilizamos la instrucci贸n datasets.load_boston().

				
					#Importamos los datos de la misma librer铆a de scikit-learn
boston = datasets.load_boston()
				
			

Tenemos mucha informaci贸n dentro de esta variable lo que se nos hace dif铆cil entender la informaci贸n, por lo tanto, ahora procedemos a entender la data.

aprender a programar para machine Learning 1

Entender los datos

Para entender los datos que estaremos utilizando el proyecto nos vamos a valor de varias instrucciones propias de Python y as铆 verificar la informaci贸n contenida en el conjunto de datos que acabamos de importar. Para este fin utilizamos la instrucci贸n keys.

				
					#Verifico la informaci贸n contenida en el dataset
print('Informaci贸n en el dataset:')
print(boston.keys())
				
			

Regresio虂n-Lineal-simple-practica-1

Como puedes observar el conjunto de datos cuenta con la siguiente informaci贸n: primeramente, la data, seguidamente target聽que ser铆a la columna con las etiquetas o respuestas, posteriormente tenemos feature_names que ser铆an los nombres de cada una de las columnas de la data y finalmente tenemos DESCR que ser铆a la descripci贸n total del dataset.

Sabiendo ya esto podemos ahora utilizar estos nombres para entender mejor los datos, lo primero que vamos a hacer es utilizar DESCR para ver las caracter铆sticas del dataset.

				
					#Verifico las caracter铆sticas del dataset
print('Caracter铆sticas del dataset:')
print(boston.DESCR)
				
			

Como puedes leer en la descripci贸n este dataset cuenta con 506 datos y 13 atributos, la columna 14 es el target y es la media del valor de las viviendas.

Seguidamente tenemos la descripci贸n del significado de cada una de las columnas o atributos de los datos. De igual forma, nos indica un dato importante para nuestro an谩lisis y es que indica que no existe ning煤n valor perdido, en consecuencia, nuestros datos est谩n completos por lo que no es necesario realizar mucho preprocesamiento a los datos.

Ahora utilizaremos la instrucci贸n shape para determinar la cantidad de datos contamos, aunque este es un paso de m谩s ya que esta informaci贸n nos la hab铆a dado previamente la descripci贸n del dataset, pero de todas formas lo hacemos.

				
					#Verifico la cantidad de datos que hay en los dataset
print('Cantidad de datos:')
print(boston.data.shape)
				
			

https://flic.kr/p/2eBkSXY

Como ya nos lo visto anteriormente este conjunto de datos cuenta con 506 muestras y 13 columnas.

Finalmente veamos las etiquetas de cada columna para ello utilizamos feature_names.

				
					#Verifico la informaci贸n de las columnas
print('Nombres columnas:')
print(boston.feature_names)
				
			

https://flic.kr/p/2eBkTsA

Sabiendo toda esta informaci贸n entonces procedemos a preparar los datos que vamos a utilizar para crear el modelo.

inteligencia artificial con aprendeIA

Procesamiento de los datos

Lo primero que debemos hacer es separar los datos en 鈥淴鈥 y 鈥測鈥, a estas variables las vamos a llamar X_svr y y_svr, la primera ser谩 igual a la columna 6 del dataset que previamente procesamos, por su parte y_svr ser谩 igual a la columna de target.
				
					#Seleccionamos solamente la columna 6 del dataset
X_svr = boston.data[:, np.newaxis, 5]

#Definimos los datos correspondientes a las etiquetas
y_svr = boston.target
				
			
Grafiquemos estos datos para observar con m谩s detalle los datos que estaremos manejando.
				
					#Graficamos los datos correspondientes
plt.scatter(X_svr, y_svr)
plt.show()
				
			

maquina-de-vectores-de-soporte-regresio虂n-pra虂ctica-con-python

Como podemos observar estos datos tienen un comportamiento lineal, por lo que ac谩 implementaremos el algoritmo de Vectores de Soporte Regresi贸n, con un kernel l铆nea, de la misma forma que lo explicamos en la teor铆a.

Procedemos ahora a separar los datos en entrenamiento y prueba, para ello utilizamos la instrucci贸n train_test_split.

				
					from sklearn.model_selection import train_test_split

#Separo los datos de "train" en entrenamiento y prueba para probar los algoritmos
X_train, X_test, y_train, y_test = train_test_split(X_svr, y_svr, test_size=0.2)

				
			

Con esto ya tenemos nuestros datos divididos en datos de entrenamiento y prueba.

Qu茅 son las Redes Neuronales Artificiales

Desarrollo del algoritmo

Con los datos separados en entrenamiento y prueba ha llegado el momento de construir el modelo de Machine Learning, por lo que el siguiente paso que debemos hacer es importar el m贸dulo de Scikit Learn para trabajar con el algoritmo de Bosques Aleatorios Regresi贸n.

				
					from sklearn.ensemble import RandomForestRegressor
				
			

Con esta simple l铆nea de c贸digo ya podemos empezar a utilizar este algoritmo por lo que lo definimos en nuestro programa bar ser谩 igual a RadomForestRegressor, y ac谩 empezamos a definir los par谩metros respectivos de este algoritmo.

				
					#Definimos el algoritmo a utilizar
bar = RandomForestRegressor(n_estimators = 300, max_depth = 8)
				
			

El primero de ellos es n_estimators que ser谩 el estimado de 谩rboles, en este caso vamos a colocar 300, este n煤mero lo podr谩s variar por tu cuenta para que puedas verificar el comportamiento del algoritmo, si mejora o no los resultados obtenidos.

El siguiente par谩metro que vamos a definir es el de max_depth, que ser谩 igual a 8, de igual forma te recomiendo que modifique este valor para que puedas observar el comportamiento de los resultados.

El resto de par谩metros los dejaremos con sus valores por defecto, en caso de que quieras definirlos por tu cuenta lo puedes hacer sin ning煤n problema.

Cada uno de estos par谩metros fueron explicados en el anterior video porque lo que si tienes alguna duda te recomiendo que lo revises para que puedas entender mejor esto.

Realizado todo esto ya podemos entrenar el modelo utilizando el algoritmo con los par谩metros definidos y con los datos de entrenamiento definidos anteriormente.

				
					#Entrenamos el modelo
bar.fit(X_train, y_train)
				
			

Seguidamente utilizamos la instrucci贸n predict() para realizar la predicci贸n utilizando los datos de prueba, ac谩 lo que queremos hacer es probar que tan bien funciona el modelo que hemos desarrollado.

				
					#Realizamos una predicci贸n
Y_pred = bar.predict(X_test)
				
			

Para ello comparemos los datos de 鈥測鈥 reales y los que predijo nuestro modelo.

Bosques-Aleatorios-Regresio虂n-Pra虂ctica-2-1

inteligencia artificial con aprendeia

An谩lisis de los resultados

Como puedes observar en el recuadro anterior existe una peque帽a diferencia unos con otros, pero a煤n as铆 no es tanto como hemos podido observar con otros algoritmos.

Grafiquemos estos datos, para ello utilizaremos el mismo truco que hicimos en el video de la pr谩ctica de 脕rboles de Decisi贸n en donde adecuamos los datos para que se vean mucho mejor en nuestra grafica, para entender mejor esto te recomiendo que vayas a ese video.

Ac谩 las l铆neas de c贸digo son exactamente igual a las de all谩 por lo que grafiquemos los datos.

				
					#Graficamos los datos de prueba junto con la predicci贸n
X_grid = np.arange(min(X_test), max(X_test), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X_test, y_test)
plt.plot(X_grid, bar.predict(X_grid), color='red', linewidth=3)
plt.show()
				
			

Bosques-Aleatorios-Regresio虂n-Pra虂ctica-3

Como podemos observar el comportamiento de la l铆nea roja es muy parecida a las de los 脕rboles de Decisi贸n, ac谩 se tiene altos y bajos y no es una l铆nea recta como la hemos visto en otros algoritmos.

Evaluemos entonces la precisi贸n del algoritmo utilizando la instrucci贸n 鈥渟core鈥, el resultado obtenido es de 0,793, el cual es bastante aceptable.

por que虂 programar es tan dificil

Programa completo

A continuaci贸n se encuentra el c贸digo completo:

				
					"""
Bosques Aleatorios Regresi贸n

@author: ligdigonzalez
"""

########## LIBRER脥AS A UTILIZAR ##########

#Se importan la librerias a utilizar
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

########## PREPARAR LA DATA ##########

#Importamos los datos de la misma librer铆a de scikit-learn
boston = datasets.load_boston()
print(boston)
print()

########## ENTENDIMIENTO DE LA DATA ##########

#Verifico la informaci贸n contenida en el dataset
print('Informaci贸n en el dataset:')
print(boston.keys())
print()

#Verifico las caracter铆sticas del dataset
print('Caracter铆sticas del dataset:')
print(boston.DESCR)

#Verifico la cantidad de datos que hay en los dataset
print('Cantidad de datos:')
print(boston.data.shape)
print()

#Verifico la informaci贸n de las columnas
print('Nombres columnas:')
print(boston.feature_names)

########## PREPARAR LA DATA BOSQUES ALEATORIOS REGRESI脫N ##########

#Seleccionamos solamente la columna 6 del dataset
X_bar = boston.data[:, np.newaxis, 5]

#Defino los datos correspondientes a las etiquetas
y_bar = boston.target

#Graficamos los datos correspondientes
plt.scatter(X_bar, y_bar)
plt.show()

########## IMPLEMENTACI脫N DE BOSQUES ALEATORIOS REGRESI脫N ##########

from sklearn.model_selection import train_test_split

#Separo los datos de "train" en entrenamiento y prueba para probar los algoritmos
X_train, X_test, y_train, y_test = train_test_split(X_bar, y_bar, test_size=0.2)

from sklearn.ensemble import RandomForestRegressor

#Defino el algoritmo a utilizar
bar = RandomForestRegressor(n_estimators = 300, max_depth = 8)

#Entreno el modelo
bar.fit(X_train, y_train)

#Realizo una predicci贸n
Y_pred = bar.predict(X_test)

#Graficamos los datos de prueba junto con la predicci贸n
X_grid = np.arange(min(X_test), max(X_test), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X_test, y_test)
plt.plot(X_grid, bar.predict(X_grid), color='red', linewidth=3)
plt.show()
#
print('DATOS DEL MODELO BOSQUES ALEATORIOS REGRESION')
print()

print('Precisi贸n del modelo:')
print(bar.score(X_train, y_train))
				
			

Si te llamo la atenci贸n todo este contenido y te animaste a empezar a estudiar Inteligencia Artificial, he desarrollado un curso que te ayudar谩, de igual forma a iniciar tu camino dentro de est谩 tecnolog铆a. Este curso te sentar谩 las bases y te dar谩 m谩s claridad para poder seleccionar el enfoque o 谩rea que m谩s te interese sobre la Inteligencia Artificial, de igual forma te ayudar谩 tener m谩s claridad en muchos conceptos que seguramente en estos momentos te parece confusos. Este curso es ideal si apenas est谩s empezando. Si quieres m谩s informaci贸n puedes ingresar a este enlace.

2 comentarios en “Bosques Aleatorios Regresi贸n – Pr谩ctica con Python”

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada.