Programación de IA con Python | audacia
Es increíble lo que la gente puede hacer. Los humanos podemos escribir novelas, construir rascacielos, cantar óperas, conducir autos de carrera, cocinar comida deliciosa y mucho más. Cada una de estas tareas requiere inteligencia de un tipo u otro.
En los últimos años, las computadoras y el software se han vuelto tan poderosos que hemos tratado de enseñarles a hacer algunas de estas cosas también. Cuando los programas de computadora pueden hacer algo que parece imitar la inteligencia humana, decimos que tienen inteligencia artificial (TENER).
En este artículo, discutiremos una tarea que requiere inteligencia: determinar si un hongo es comestible o venenoso. Presentaremos un método de IA que puede ayudarnos y repasaremos algunos códigos de Python que implementan el método de IA.
El escenario y los datos.
Cada año, miles de personas se comunican con los centros de control de envenenamiento para informar que han comido hongos venenosos. Muchas de estas personas tienen que ser hospitalizadas. Imagínese si pudiéramos crear una aplicación que pudiera usar inteligencia artificial para clasificar con precisión si se esperaba que un hongo dado fuera comestible o venenoso. Una aplicación como esa podría ayudar a las personas a mantenerse saludables, ¡y tal vez incluso a salvar vidas!
Muchas aplicaciones de inteligencia artificial se basan en datos. En este caso, usaremos un interesante conjunto de datos de dominio público para entrenar a nuestra IA para clasificar si los hongos son comestibles o venenosos. Puede descargar estos datos de forma gratuita. Si lo guarda en su computadora en un archivo llamado hongos.csv, puede leerlo en Python de la siguiente manera:
import pandas as pd
mushrooms = pd.read_csv('mushrooms.csv')
Aquí, importamos el paquete de Python llamado pandas. Este paquete proporciona muchas capacidades relacionadas con el trabajo con conjuntos de datos. En este caso, usamos uno de sus métodos llamado read.csv(). Ese método nos permitió leer los datos relacionados con los hongos en nuestra sesión de Python. Puede ver las primeras filas de estos datos de la siguiente manera:
Si ejecuta esto, verá las primeras cinco filas del conjunto de datos:
Aquí, cada fila representa un hongo en particular. La columna llamada “clase” nos dice si cada hongo es venenoso (“p”) o comestible (“e”). Otras columnas nos dicen otras cosas sobre cada hongo. Por ejemplo, los champiñones que tienen una “forma de gorra” igual a “b” tienen forma de campana y los champiñones que tienen una “forma de gorra” igual a “x” tienen una forma convexa.
Ahora que ha cargado los datos en su sesión de Python, repasemos el algoritmo de IA que usaremos para clasificar los hongos.
Método AI: trabajo con árboles de decisión.
Sería conveniente que existiera una manera fácil de saber rápidamente si algún hongo es venenoso. Por ejemplo, qué pasaría si pudiéramos usar la siguiente figura para saber si un hongo es comestible:
*Tenga en cuenta que todas las cifras de esta publicación son solo ilustrativas. Están destinados a explicar ideas detrás de la inteligencia artificial, ¡no a dar consejos médicos! Consulta a un experto si quieres saber si debes comer un hongo en particular.
Si comienza en la parte superior de esta figura, puede responder una pregunta (si un hongo es inodoro) y luego, según la respuesta, siga las flechas a continuación (ya sea SÍ o NO) para llegar a una conclusión sobre si el hongo es comestible. Esto se conoce como árbol de decisiones y es un tipo muy simple de inteligencia artificial.
En la vida real, responder preguntas difíciles (como si un hongo es venenoso) suele ser más difícil de lo que parece en la figura anterior. En el caso de los champiñones, hay más cosas que deben tenerse en cuenta además del olor. Por ejemplo, es posible que deba considerar la forma y el color de las diferentes partes del hongo, como puede ver en la siguiente figura:
Puede ver que el árbol de decisiones ha crecido: en lugar de responder solo una pregunta, respondemos varias preguntas antes de llegar a una conclusión sobre si el hongo es comestible. Los árboles de decisión pueden ser pequeños o grandes, pero independientemente de su tamaño, los usamos de la misma manera: comience en la parte superior del árbol y responda preguntas de sí o no hasta llegar a conclusiones en las «hojas» en la parte inferior del árbol. árbol.
En nuestro escenario (determinar si los hongos son comestibles o venenosos), necesitaremos un árbol más grande para obtener resultados precisos. En la siguiente sección, presentaremos algo de código de Python para generar tal árbol.
Ejemplo: predecir la comestibilidad de los hongos.
Podemos crear un árbol de decisión que clasifique los hongos como venenosos o comestibles con menos de 10 líneas de código Python. Podemos comenzar poniendo nuestros datos en el formato correcto:
X=pd.get_dummies(mushrooms.loc[:,mushrooms.columns != 'class'])
y=pd.get_dummies(mushrooms.loc[:,'class'])['e']
Aquí, creamos dos variables, X e y. Nuestra variable y nos dice si cada hongo es venenoso o comestible: es nuestro «objetivo», o en otras palabras, lo que estamos tratando de clasificar o predecir. Nuestra variable X contiene nuestras «características», es decir, cualquier otra variable en el conjunto de datos. Esta es una configuración común en los problemas de aprendizaje automático: nuestros programas de computadora aprenden cómo usar nuestras funciones (X) para predecir nuestro objetivo (y). En este caso, creamos X e y como «variables ficticias», es decir, variables que consisten completamente en 0 y 1. El uso de variables ficticias facilitará la creación de nuestro árbol de decisión.
Podemos crear nuestro árbol de decisión con el siguiente código:
from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)
Aquí, importamos el módulo de árbol del paquete sklearn (también llamado scikit-learn). Luego, creamos un clasificador de árbol de decisión y lo «ajustamos» a nuestros datos. Eso es todo lo que se necesita para crear un árbol de decisiones.
Puede crear una gráfica del árbol de decisión que creamos de la siguiente manera:
import matplotlib.pyplot as plt
plt.figure(figsize=(15,8))
tree.plot_tree(clf,filled=True,feature_names=X.columns,fontsize=7)
plt.savefig('mushroom_ai.png',format="png",dpi=400)
El resultado se muestra a continuación:
Si observa detenidamente este árbol de decisiones, es similar a los árboles que vimos anteriormente, pero más grande. Si comienza en la parte superior del árbol, puede ver que se supone que debemos verificar el valor de «odor_n», la variable que registra si un hongo es inodoro. Avanzas hacia la derecha si odor_n es 1 y hacia la izquierda si odor_n es 0. A medida que avanzas por las ramas del árbol, compruebas los valores de otras variables, uno por uno.
Eventualmente, llegas a una conclusión sobre si el hongo es venenoso o comestible. En esta figura, la conclusión está codificada por colores: el azul representa comestible y el naranja representa veneno.
¡Felicidades! Ha utilizado IA para crear un árbol de decisiones que clasifica si los hongos son comestibles o venenosos.
Obtenga más información sobre la programación de IA con Python.
La inteligencia artificial es un campo enorme, y el árbol de decisiones que creamos aquí es solo el comienzo de lo que puede hacer con él.
Consulte el programa Programación de IA con Python Nanodegree para aprender las herramientas fundamentales de programación de IA (Python, NumPy, PyTorch) y las habilidades matemáticas esenciales (álgebra lineal y cálculo) que le permitirán comenzar a crear sus propias aplicaciones de IA en solo unos pocos meses.
COMIENZA A APRENDER