DIPLOMA DO
EN INTELIGENCIA ARTIFICIAL
MODULO IV
APRENDIZAJE AUTOMATICO CON PYTHON Y ASISTENTES INTELIGENTES
Ortega Irusta Mireya Elena
Interacción con chat GPT
https://chat.openai.com/share/6f739342-a2e6-46c9-978c-396b6078dd8b
DIAGNÓSTICO DE CARIES DENTAL
El sistema Black es un método de clasificación que se utiliza para describir lesiones cariosas en los dientes. Los cuatro principales tipos de lesiones cariosas según el sistema Black son:
- Lesiones incipientes: Caries que afectan solo el esmalte dental.
- Lesiones moderadas: Caries que afectan tanto el esmalte como la dentina.
- Lesiones extensas: Caries que afectan el esmalte, la dentina y la pulpa dental.
- Lesiones de cavidad pulpar: Caries que afectan la pulpa dental.
Ahora, un árbol de decisiones para clasificar caries dentales según el sistema Black podría seguir un proceso similar al siguiente:
Pregunta inicial: ¿La caries afecta solo el esmalte?
- Sí: Lesiones incipientes (Tipo 1)
- No: Ir a la siguiente pregunta.
Pregunta adicional: ¿La caries afecta tanto el esmalte como la dentina?
- Sí: Lesiones moderadas (Tipo 2)
- No: Ir a la siguiente pregunta.
Pregunta adicional: ¿La caries afecta el esmalte, la dentina y la pulpa dental?
- Sí: Lesiones extensas (Tipo 3)
- No: Lesiones de cavidad pulpar (Tipo 4)
Ejecutado este código tenemos los
siguientes resultados.
Python
from sklearn import tree
import matplotlib.pyplot as plt
# Datos de ejemplo (atributos y etiquetas)
# Aquí deberías tener tus propios datos
atributos = [
[0, 1], # Ejemplo 1: Afecta solo el esmalte
[1, 0], # Ejemplo 2: Afecta esmalte y dentina
[1, 1], # Ejemplo 3: Afecta esmalte, dentina y pulpa
[0, 0] # Ejemplo 4: No afecta esmalte ni dentina
]
etiquetas = [1, 2, 3, 4] # Etiquetas según sistema Black
# Crear y entrenar el modelo de árbol de decisiones
modelo_arbol = tree.DecisionTreeClassifier()
modelo_arbol = modelo_arbol.fit(atributos, etiquetas)
# Visualizar el árbol de decisiones
plt.figure(figsize=(8, 6))
tree.plot_tree(modelo_arbol,
feature_names=['Esmalte', 'Dentina'],
class_names=['Incipientes', 'Moderadas', 'Extensas', 'Cavidad pulpar'],
filled=True)
plt.show()
Arbol de decisiones.
Para crear un ejemplo ficticio de diagnóstico de caries dental en niños de 5 años usando un árbol de decisiones en Python, podemos seguir estos pasos:
Paso 1: Generación de datos ficticios
Generaremos
un conjunto de datos ficticios que representen características como la
presencia de placa dental, consumo de azúcar, higiene bucal, etc. Vamos a
suponer dos características simples para este ejemplo: 'Placa Dental' y
'Consumo de Azúcar'.
Ejecutado este código tenemos los
siguientes resultados.
Python
import pandas as pd
import numpy as np
# Creamos datos ficticios
np.random.seed(42) # Fijamos la semilla para reproducibilidad
# Características
placa_dental = np.random.choice(['Sí', 'No'], size=100)
consumo_azucar = np.random.choice(['Alto', 'Moderado', 'Bajo'], size=100)
# Etiquetas (diagnóstico de caries)
caries = np.random.choice(['Sí', 'No'], size=100)
# Crear DataFrame
data = pd.DataFrame({'Placa Dental': placa_dental, 'Consumo de Azúcar': consumo_azucar,
'Caries': caries})
Paso 2: Preprocesamiento de datos
Convertiremos las variables categóricas en variables numéricas para poder trabajar con el algoritmo del árbol de decisiones.
# Convertir variables categóricas a numéricas usando One-Hot Encoding
data_encoded = pd.get_dummies(data[['Placa Dental', 'Consumo de Azúcar']])
# Combinar los datos codificados con la columna de diagnóstico de caries
data_processed = pd.concat([data_encoded, data['Caries']], axis=1)
Paso 3: División de datos en entrenamiento y prueba
Dividimos nuestros datos en conjuntos de entrenamiento y prueba.
from sklearn.model_selection import train_test_split
# Separar las características de la variable objetivo
X = data_processed.drop('Caries', axis=1)
y = data_processed['Caries']
# Dividir los datos en conjuntos de entrenamiento y prueba (80% entrenamiento, 20% prueba)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Paso 4: Entrenamiento del modelo de árbol de decisiones
Usaremos el algoritmo de árbol de decisiones para construir el modelo de clasificación.
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
# Inicializar el clasificador de árbol de decisiones
clf = DecisionTreeClassifier(random_state=42)
# Entrenar el modelo con los datos de entrenamiento
clf.fit(X_train, y_train)
# Predicciones en el conjunto de prueba
y_pred = clf.predict(X_test)
Paso 5: Evaluación del modelo
Evaluar el rendimiento del modelo utilizando métricas y visualizaciones.
# Métricas de evaluación
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)
# Visualización del árbol de decisiones
plt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=X.columns, class_names=['No Caries', 'Caries'])
plt.show()
# Mostrar métricas y reporte de clasificación
print(f"Accuracy: {accuracy:.2f}\n")
print("Confusion Matrix:")
print(conf_matrix)
print("\nClassification Report:")
print(report)

# Datos de prueba
test_data = pd.DataFrame({
'Placa Dental': ['Sí', 'No', 'No', 'Sí'],
'Consumo de Azúcar': ['Alto', 'Bajo', 'Moderado', 'Alto']
})
# Convertir datos de prueba a formato numérico usando One-Hot Encoding
test_data_encoded = pd.get_dummies(test_data)
# Hacer predicciones con el modelo entrenado
predictions = clf.predict(test_data_encoded)
# Mostrar las predicciones
for i, prediction in enumerate(predictions):
print(f"Predicción para datos {i+1}: {prediction}")
regresion lineal
from sklearn.linear_model import LogisticRegression
# Inicializar el clasificador de regresión logística
log_reg = LogisticRegression(random_state=42)
# Entrenar el modelo con los datos de entrenamiento
log_reg.fit(X_train, y_train)
# Predicciones en el conjunto de prueba
y_pred_log_reg = log_reg.predict(X_test)
# Métricas de evaluación
accuracy_log_reg = accuracy_score(y_test, y_pred_log_reg)
conf_matrix_log_reg = confusion_matrix(y_test, y_pred_log_reg)
report_log_reg = classification_report(y_test, y_pred_log_reg)
# Mostrar métricas y reporte de clasificación para regresión logística
print(f"Accuracy (Regresión Logística): {accuracy_log_reg:.2f}\n")
print("Confusion Matrix (Regresión Logística):")
print(conf_matrix_log_reg)
print("\nClassification Report (Regresión Logística):")
print(report_log_reg)
Accuracy (Regresión Logística): 0.45
Confusion Matrix (Regresión Logística):
[[7 2]
[9 2]]
Classification Report (Regresión Logística):
precision recall f1-score support
No 0.44 0.78 0.56 9
Sí 0.50 0.18 0.27 11
accuracy 0.45 20
macro avg 0.47 0.48 0.41 20
weighted avg 0.47 0.45 0.40 20
# Importar librerías necesarias
import seaborn as sns
# Visualización de la matriz de confusión para regresión logística
plt.figure(figsize=(6, 4))
sns.heatmap(conf_matrix_log_reg, annot=True, fmt='d', cmap='Blues', cbar=False)
plt.xlabel('Predicción')
plt.ylabel('Valor Real')
plt.title('Matriz de Confusión (Regresión Logística)')
plt.show()
Este ejemplo básico de cómo aplicar un árbol de decisiones para el
diagnóstico de caries dental en niños de 5 años. Los datos y el modelo son ficticios, pero este es el proceso que podrías seguir con
datos reales. Recuerda que la interpretación de resultados es crucial para
comprender la efectividad del modelo y cómo se pueden mejorar los diagnósticos
en el futuro.
Conclusiones y reflexiones: Es de gran importancia poder conocer estas herramientas de árbol de
decisiones en diagnóstico de
caries dental, para mejorar
nuestra práctica docente empleando estas nuevas herramientas. El árbol de decisiones proporciona
una representación visual intuitiva de cómo se toman las decisiones basadas en
las características. Es esencial evaluar y comparar varios modelos para
comprender cómo se comportan en un problema específico. En este caso, la
comparación entre el árbol de decisiones y la regresión logística ofrece
información valiosa sobre sus respectivas fortalezas y debilidades.
Comentarios
Publicar un comentario