DIPLOMADO EN EN INTELIGENCIA ARTIFICIAL
MODULO IV
APRENDIZAJE AUTOMATICO CON PYTHON Y ASISTENTES INTELIGENTES
Ortega Irusta Elsy Nilda
Este es el enlace con Chat GPT:
https://chat.openai.com/c/f0dcb3a7-0b93-4d2b-a2db-2bbffa9eca65
APLICACIÓN DE TRATAMIENTO PREVENTIVO EN
ORTODONCIA EN NIÑOS QUE PRESENTEN HÁBITOS DE SUCCIÓN DIGITAL
Para
desarrollar una aplicación de tratamiento preventivo en ortodoncia en niños que
presenten hábitos de succión digital, podemos utilizar los principios del
pensamiento computacional. A continuación, proporcionaré los componentes clave
y un ejemplo de script en Python para ambos enfoques: programación tradicional
y aprendizaje automático.
1.
Programación Tradicional:
Componentes del Pensamiento
Computacional:
1. Entrada:
-
Datos del paciente (nombre, edad, historial dental, etc.).
- Información sobre hábitos de succión
digital.
2. Procesamiento (Reglas):
- Identificación de la gravedad del hábito
de succión digital.
- Determinación de medidas preventivas de
ortodoncia.
- Generación de un plan de tratamiento.
3. Salida:
- Recomendaciones específicas para el
tratamiento.
- Información para los padres sobre cómo
abordar el hábito.
Esta es mi interaccion con google colab
# Entrada
nombre = input("Nombre del niño: ")
edad = int(input("Edad del niño: "))
succion_digital = input("¿Presenta hábito de succión digital? (Sí/No): ")
# Procesamiento (Reglas)
if succion_digital.lower() == "si":
gravedad = input("¿Qué tan frecuente es el hábito? (Bajo/Medio/Alto): ")
if gravedad.lower() == "alto":
tratamiento = "Se recomienda consulta con ortodoncista."
else:
tratamiento = "Implementar medidas preventivas en el hogar."
# Salida
print("\nResultados:")
print(f"Nombre: {nombre}")
print(f"Edad: {edad} años")
print(f"Hábito de succión digital: {succion_digital}")
if succion_digital.lower() == "si":
print(f"Gravedad del hábito: {gravedad}")
print("Recomendaciones:")
print(tratamiento)
else:
print("No se detectaron hábitos de succión digital significativos.")
2. Aprendizaje Automático:
Componentes
del Pensamiento Computacional:
1.
Entradas:
- Datos del paciente (características
demográficas, historial dental, etc.).
- Datos relacionados con hábitos de succión
digital.
2.
Salidas:
- Modelo de aprendizaje automático que
predice la necesidad y gravedad del tratamiento.
3.
Reglas (Aprendidas por el Modelo):
- El modelo aprende patrones a partir de
datos de entrada y salida.
Ejemplo
de Script en Python (utilizando bibliotecas de aprendizaje automático como
scikit-learn):
Esta es mi interaccion con google colab
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# Entradas y Salidas (Datos ficticios)
datos_entrada = [...] # Datos del paciente
datos_salida = [...] # Resultados de tratamiento (0: bajo, 1: medio, 2: alto)
# Dividir datos en conjunto de entrenamiento y prueba
X_entrenamiento, X_prueba, y_entrenamiento, y_prueba = train_test_split(datos_entrada, datos_salida, test_size=0.2, random_state=42)
# Entrenar un modelo de clasificación
modelo = DecisionTreeClassifier()
modelo.fit(X_entrenamiento, y_entrenamiento)
# Predecir resultados en el conjunto de prueba
resultados_predichos = modelo.predict(X_prueba)
# Medir la precisión del modelo
precision = accuracy_score(y_prueba, resultados_predichos)
print(f"Precisión del modelo: {precision}")
Ejemplo
de script en Python utilizando la biblioteca scikit-learn para un problema de
clasificación. En este caso, utilizaremos el conjunto de datos Iris, que es un
conjunto de datos comúnmente utilizado para problemas de clasificación.
Esta es mi interaccion con google colab
# Importar bibliotecas
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import matplotlib.pyplot as plt
# Cargar el conjunto de datos Iris
iris = datasets.load_iris()
X = iris.data
y = iris.target
# Dividir el conjunto de datos en conjuntos de entrenamiento y prueba
X_entrenamiento, X_prueba, y_entrenamiento, y_prueba = train_test_split(X, y, test_size=0.2, random_state=42)
# Normalizar los datos
escalador = StandardScaler()
X_entrenamiento = escalador.fit_transform(X_entrenamiento)
X_prueba = escalador.transform(X_prueba)
# Entrenar un clasificador k-NN
knn_clasificador = KNeighborsClassifier(n_neighbors=3)
knn_clasificador.fit(X_entrenamiento, y_entrenamiento)
# Hacer predicciones en el conjunto de prueba
predicciones = knn_clasificador.predict(X_prueba)
# Evaluar el rendimiento del clasificador
precision = accuracy_score(y_prueba, predicciones)
matriz_confusion = confusion_matrix(y_prueba, predicciones)
informe_clasificacion = classification_report(y_prueba, predicciones)
# Imprimir resultados
print(f"Precisión del modelo: {precision}")
print("\nMatriz de Confusión:")
print(matriz_confusion)
print("\nInforme de Clasificación:")
print(informe_clasificacion)
# Visualizar la matriz de confusión
plt.imshow(matriz_confusion, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Matriz de Confusión')
plt.colorbar()
clases = ['Setosa', 'Versicolor', 'Virginica']
ticks = np.arange(len(clases))
plt.xticks(ticks, clases, rotation=45)
plt.yticks(ticks, clases)
plt.xlabel('Clase Predicha')
plt.ylabel('Clase Real')
plt.show()
Precisión del modelo: 1.0
Matriz de Confusión:
[[10 0 0]
[ 0 9 0]
[ 0 0 11]]
Informe de Clasificación:
precision recall f1-score support
0 1.00 1.00 1.00 10
1 1.00 1.00 1.00 9
2 1.00 1.00 1.00 11
accuracy 1.00 30
macro avg 1.00 1.00 1.00 30
weighted avg 1.00 1.00 1.00 30
NameError Traceback (most recent call last)
<ipython-input-3-e3f628d3ce45> in <cell line: 46>()
44 plt.colorbar()
45 clases = ['Setosa', 'Versicolor', 'Virginica']
---> 46 ticks = np.arange(len(clases))
47 plt.xticks(ticks, clases, rotation=45)
48 plt.yticks(ticks, clases)
NameError: name 'np' is not defined
.png)
Este
script utiliza un clasificador k-NN para clasificar las flores del conjunto de
datos Iris en tres clases diferentes. Se muestra la precisión del modelo, la
matriz de confusión y el informe de clasificación. Además, se visualiza la
matriz de confusión como una imagen. Este es un ejemplo básico, y dependiendo
de tu problema específico, puedes ajustar los parámetros del modelo y realizar
una optimización más detallada.
En Python, podemos utilizar la
biblioteca `matplotlib` para crear
gráficos. Aquí te proporcionaré ejemplos básicos de cómo podrías visualizar
algunos datos en ambos casos, tanto para la programación tradicional como para
el aprendizaje automático.
Esta es mi interaccion con google colab
1. Programación Tradicional:
import matplotlib.pyplot as plt
# Datos ficticios
edades = [2, 4, 6, 3, 5]
gravedades = [1, 2, 3, 1, 2]
# Gráfico de barras para la gravedad del hábito de succión digital
plt.bar(edades, gravedades, color='blue')
plt.xlabel('Edad del niño')
plt.ylabel('Gravedad del hábito')
plt.title('Gravedad del hábito de succión digital por edad')
plt.show()
2. Aprendizaje Automático:
Para visualizar datos en aprendizaje automático, es más común utilizar gráficos que representen la precisión del modelo. Aquí hay un ejemplo básico utilizando el conjunto de datos ficticio del modelo de clasificación:
Esta es mi interaccion con google colab
import matplotlib.pyplot as plt
import numpy as np
# Datos ficticios
precisiones = [0.85, 0.92, 0.78, 0.95, 0.88]
# Gráfico de barras para la precisión del modelo
nombres_modelos = ['Modelo 1', 'Modelo 2', 'Modelo 3', 'Modelo 4', 'Modelo 5']
plt.bar(nombres_modelos, precisiones, color='green')
plt.ylim(0, 1) # Establecer el rango del eje y de 0 a 1
plt.xlabel('Modelos')
plt.ylabel('Precisión del modelo')
plt.title('Precisión de modelos de clasificación')
plt.show()
Recuerda que estos son solo ejemplos básicos y que la representación gráfica puede variar según los datos y la información que estés manejando en tu aplicación específica. Puedes personalizar los gráficos según tus necesidades y preferencias.
Desarrollaremos paso a paso ambos ejmplos para un problema de optimizacion
Vamos a desarrollar ejemplos paso a paso para un problema de optimización en ambos casos: programación tradicional y aprendizaje automático. En este caso, consideraremos un problema simple de asignación de recursos para el tratamiento de ortodoncia en niños, optimizando los recursos disponibles para obtener el mejor resultado posible.
Desarrollaremos ejemplos paso a paso
para un problema de optimización en ambos casos: programación tradicional y aprendizaje automático. En este caso,
consideraremos un problema simple de asignación de recursos para el tratamiento
de ortodoncia en niños, optimizando los recursos disponibles para obtener el
mejor resultado posible.
1.
Programación Tradicional para un Problema de Optimización:
Componentes del Pensamiento
Computacional:
1. Entrada:
- Datos del paciente (nombre, edad, historial dental, etc.).
- Información sobre hábitos de succión digital.
- Recursos disponibles (por ejemplo, horas de tratamiento por día).
2. Procesamiento (Reglas):
- Identificación de la gravedad del hábito de succión digital.
- Definición de criterios de asignación de recursos.
- Asignación óptima de recursos para maximizar el impacto del
tratamiento.
3. Salida:
- Plan de asignación de recursos óptimo.
Ejemplo de Script en Python:
Esta es mi interaccion con google colab
import numpy as np
from scipy.optimize import linprog
# Datos ficticios
edades = [2, 4, 6, 3, 5]
gravedades = [1, 2, 3, 1, 2]
recursos_disponibles = 10 # Ejemplo: horas de tratamiento por día
# Definir la función objetivo y las restricciones para el problema de optimización lineal
coef_objetivo = [-gravedad for gravedad in gravedades] # Maximizar la gravedad
coef_restricciones = np.ones(len(edades))
rhs_restriccion = recursos_disponibles
# Resolver el problema de optimización lineal
resultados = linprog(coef_objetivo, A_ub=[coef_restricciones], b_ub=[rhs_restriccion])
# Salida
print("Asignación óptima de recursos:")
for i, asignacion in enumerate(resultados.x):
print(f"Niño {i + 1}: {asignacion} horas")
Asigancion optima de recursos
Niño 1: 0.0 horas
Niño 2: 0.0 horas
Niño 3: 0.0 horas
Niño 4: 0.0 horas
Niño 5: 0.0 horas
2. Aprendizaje Automático para un
Problema de Optimización:
Componentes del Pensamiento Computacional:
1. Entradas:
-
Datos del paciente (características demográficas, historial dental, etc.).
-
Datos relacionados con hábitos de succión digital.
-
Recursos disponibles.
2. Salidas:
-
Modelo de aprendizaje automático que predice la asignación óptima de recursos.
3. Reglas (Aprendidas por el Modelo):
- El
modelo aprende patrones a partir de datos de entrada y salida.
Ejemplo de Script en Python
(utilizando bibliotecas de aprendizaje automático):
Esta es mi interaccion con google colab
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
# Datos ficticios
edades = np.array([2, 4, 6, 3, 5]).reshape(-1, 1)
gravedades = [1, 2, 3, 1, 2]
recursos_disponibles = 10 # Ejemplo: horas de tratamiento por día
# Entrenar un modelo de regresión lineal
modelo = LinearRegression()
modelo.fit(edades, gravedades)
# Predecir la gravedad para cada niño
gravedades_predichas = modelo.predict(edades)
# Normalizar las predicciones para obtener la asignación óptima de recursos
asignacion_optima = recursos_disponibles * (gravedades_predichas / np.sum(gravedades_predichas))
# Salida
print("Asignación óptima de recursos:")
for i, asignacion in enumerate(asignacion_optima):
print(f"Niño {i + 1}: {asignacion:.2f} horas")
Asignacion optima de recursos:
Niño 1: 0. 89 horas
Niño 2: 2. 00 horas
Niño 3: 3. 11 horas
Niño 4: 1. 44 horas
Niño 5: 2. 56 horas
Estos son ejemplos simples para
ilustrar cómo abordar un problema de optimización con programación tradicional
y aprendizaje automático. Ten en cuenta que la elección entre estos enfoques
dependerá de la naturaleza específica del problema y de los datos disponibles.
Además, estos ejemplos son bastante básicos y pueden necesitar ajustes según la
complejidad real de tu problema.
Diferentes tipos de
gráficos para cada uno de los scripts en Python que generé. Estos gráficos se
enfocarán en visualizar diferentes aspectos de los datos o resultados obtenidos
en cada caso.
1. Programación Tradicional:
Gráfico 1: Distribución de la gravedad del hábito de succión digital
Esta es mi interaccion con google colab
import matplotlib.pyplot as plt
# Datos ficticios
gravedades = [10, 20, 30] # Cantidad de casos para cada nivel de gravedad
# Gráfico de barras
plt.bar(["Bajo", "Medio", "Alto"], gravedades)
plt.xlabel("Gravedad del hábito")
plt.ylabel("Número de casos")
plt.title("Distribución de la gravedad del hábito de succión digital")
plt.show()
Gráfico 2: Edad versus Gravedad del hábito (scatter plot)
Esta es mi interaccion con google colab
import matplotlib.pyplot as plt
import numpy as np
# Datos ficticios
edades = np.array([2, 4, 6, 3, 5])
gravedades = [1, 2, 3, 1, 2]
# Scatter plot
plt.scatter(edades, gravedades, color='red')
plt.xlabel('Edad del niño')
plt.ylabel('Gravedad del hábito')
plt.title('Edad versus Gravedad del hábito de succión digital')
plt.show()
.png)
2. Aprendizaje Automático:
Gráfico 1: Precisión del modelo en el conjunto de prueba.
Esta es mi interaccion con google colab
import matplotlib.pyplot as plt
# Datos ficticios
precision = 0.85 # Precisión del modelo
# Gráfico de barras
plt.bar(["Modelo 1"], [precision], color='green')
plt.ylim(0, 1) # Establecer el rango del eje y de 0 a 1
plt.xlabel('Modelos')
plt.ylabel('Precisión del modelo')
plt.title('Precisión del modelo de clasificación en el conjunto de prueba')
plt.show()
Gráfico 2: Predicciones del modelo (scatter plot)
Esta es mi interaccion con google colab
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import numpy as np
# Datos ficticios
datos_entrada = np.array([[2, 1], [4, 2], [6, 3], [3, 1], [5, 2]])
datos_salida = np.array([0, 1, 2, 0, 1])
# Gráfico de dispersión para visualizar las predicciones del modelo
modelo = DecisionTreeClassifier()
modelo.fit(datos_entrada, datos_salida)
# Crear una cuadrícula de puntos para visualizar la clasificación
x_min, x_max = 1, 7
y_min, y_max = 0, 4
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))
Z = modelo.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
# Scatter plot de los datos de entrada
plt.scatter(datos_entrada[:, 0], datos_entrada[:, 1], c=datos_salida, cmap=plt.cm.Paired, edgecolors='k')
plt.xlabel('Edad del niño')
plt.ylabel('Gravedad del hábito')
plt.title('Predicciones del Modelo de Clasificación')
plt.show()
Estos gráficos son ejemplos y se pueden personalizar según nuestras necesidades y preferencias. Debemos recordar que la visualización de datos es una herramienta valiosa para comprender mejor tus resultados y comunicar la información de manera efectiva.
Conclusiones y reflexiones: Los principios del pensamiento computacional nos permite desarrollar una aplicación de tratamiento preventivo en ortodoncia en niños que presenten hábitos de succión digital, esta interacción me ayudo a aclarar mis conocimientos sobre los problemas de maloclusion que presentan los niños por este hábito.
Comentarios
Publicar un comentario