Árboles de decisión en Python con Scikit-Learn

Un árbol de decisión es uno de los muchos algoritmos de machine learning. Un árbol de decisión es una herramienta de decisión. Es similar a un modelo de árbol en informática. (raíz en la parte superior, hojas hacia abajo).

En este artículo, implementaremos un árbol de decisiones utilizando el módulo de machine learning scikit-learn. Es uno de los muchos módulos de machine learning, TensorFlow es otro popular.

Clasificadores

Imagine escribir un programa que tenga que predecir si una imagen contiene un hombre o una mujer. Tendrías que escribir toneladas de reglas de programación. Si te diera otro grupo de dos imágenes, tendrías que crear nuevas reglas de programación de nuevo. El machine learning es una mejor manera de resolver estos problemas.

En lugar de definir programáticamente cada regla, usamos un algoritmo que crea las reglas por nosotros. Este tipo de algoritmo se denomina clasificador. Toma datos como entrada y muestra una etiqueta como salida.

Un ejemplo práctico de esto sería, dada la imagen de una persona, el clasificador predeciría si es mujer o hombre.

El clasificador tiene estos pasos:

  • recolectar datos
  • clasificador de trenes
  • hacer prediccionesEntrenamos al clasificador dándole al algoritmo datos y etiquetas. Este tipo de machine learning se denomina aprendizaje supervisado.

En este ejemplo, usaremos matrices simples como datos. En la práctica, a menudo querrá tener grandes conjuntos de datos para hacer buenas predicciones.

Ejemplo visual de árbol de decisión

En cada nodo del árbol, podemos girar a la izquierda o a la derecha. A base de números recorremos las ramas. Al final de las ramas están los resultados. Una vez entrenado el clasificador en base a estos datos. Luego podemos usar el clasificador para hacer predicciones.

Un ejemplo gráfico de un árbol de decisión:

Con base en la entrada numérica, una computadora puede decidir la salida. Si su entrada fuera [False, True]predeciría ‘Usted’.

Instalar árbol de decision sklearn

árbol de decision sklearn

Si no ha instalado sklearn, instálelo con:

pip install -U scikit-learn

Podrás revisar la instalación asi:

python -m pip show scikit-learn  # to see which version and where scikit-learn is installed
python -m pip freeze  # to see all packages installed in the active virtualenv
python -c "import sklearn; sklearn.show_versions()"

Si aún no has instalado NumPy o SciPy, también puedes instalarlos usando conda o pip. Si utiliza pip, asegúrese de que se utiliza la rueda binaria y que NumPy y SciPy no se recompilan desde el código fuente. Esto puede ocurrir cuando se utilizan determinadas configuraciones de sistema operativo y hardware (por ejemplo, Linux en una Raspberry Pi).

Las funciones de trazado de Scikit-learn (es decir, las funciones que comienzan con «plot_» y las clases que terminan con «Display») requieren Matplotlib. Los ejemplos requieren Matplotlib y algunos requieren scikit-image, pandas o seaborn. Las dependencias de la versión mínima de Scikit-learn se enumeran a continuación, junto con su propósito.

Árbol de decisión

Importamos el árbol de decision sklearn y creamos el modelo.

from sklearn import tree
clf = tree.DecisionTreeClassifier()

Luego creamos los datos de entrenamiento para el clasificador/árbol de decisión:

X = [ [180, 15,0],                                                              
      [167, 42,1],                                                              
      [136, 35,1],                                                              
      [174, 15,0],                                                              
      [141, 28,1]]                                                              

Y = ['man', 'woman', 'woman', 'man', 'woman']

Poniendolo todo junto:

from sklearn import tree                                                        
clf = tree.DecisionTreeClassifier()                                             


X = [ [180, 15,0],                                                              
      [167, 42,1],                                                              
      [136, 35,1],                                                              
      [174, 15,0],                                                              
      [141, 28,1]]                                                              

Y = ['man', 'woman', 'woman', 'man', 'woman']                                   

clf = clf.fit(X, Y)                                                             
prediction = clf.predict([[133, 37,1]])                                         
print(prediction)

Te recomiendo mas entradas sobre Machine Learning:

Trabajar con Big Data es muy costoso, además de que muchas empresas aún no cuentan con la infraestructura adecuada para ...
Netflix sabe cuántas horas pasas usando la plataforma, qué día de la semana la usas más y el tipo de ...
Después de entender qué es el aprendizaje automático, conviene conocer los tres tipos de algoritmos de aprendizaje automático existentes: supervisado, ...
La ONU advierte de la llegada de las armas autónomas, el reconocimiento facial produce errores que van más allá de ...
Uno de los más apreciados es Gradient Boosting Machine. El algoritmo de aumento de gradiente o GBM se puede explicar ...
Si queremos usar texto en algoritmos de Machine Learning, tendremos que convertirlo a una representación numérica. No debería sorprender que ...

¿ Te fue de valor esta entrada Árboles de decisión en Python con Scikit-Learn?
⬇️ Si compartes esta entrada otras personas podrán aprender.⬇️

5 comentarios en «Árboles de decisión en Python con Scikit-Learn»

  1. ¿Y si exploramos cómo los árboles de decisión pueden predecir el futuro? 🌳🔮

  2. ¿Por qué no utilizar otros métodos de clasificación en lugar de árboles de decisión?

  3. ¿Y si probamos implementar un árbol de decisión en otro lenguaje? 🌳🤔

    • ¡Buena idea! Podríamos probar Python, es muy popular para árboles de decisión. ¡Quizás obtengamos resultados aún mejores! ¡Atrévete a probarlo! 🐍🌳

  4. ¡El artículo sobre árboles de decisión en Python fue súper útil! ¿Alguien más lo probó?

Los comentarios están cerrados.