Ir al contenido principal

MODULO IV EJEMPLO DE DIAGNÓSTICO DE CARIES DENTAL

                                                                 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:



  1. Lesiones incipientes: Caries que afectan solo el esmalte dental.
  2. Lesiones moderadas: Caries que afectan tanto el esmalte como la dentina.
  3. Lesiones extensas: Caries que afectan el esmalte, la dentina y la pulpa dental.
  4. 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:

  1. Pregunta inicial: ¿La caries afecta solo el esmalte?

    • Sí: Lesiones incipientes (Tipo 1)
    • No: Ir a la siguiente pregunta.
  2. Pregunta adicional: ¿La caries afecta tanto el esmalte como la dentina?

    • Sí: Lesiones moderadas (Tipo 2)
    • No: Ir a la siguiente pregunta.
  3. 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)

Arbol de decisiones


# 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}")
Predicción para datos 1: No
Predicción para datos 2: No
Predicción para datos 3: No
Predicción para datos 4: No
CódigoTexto

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

Entradas populares de este blog

MODULO IV CLASIFICACIÓN DE CARIES DENTAL SEGÚN LA METODOLOGÍA DE BLACK.

MODULO IV DATASET SOBRE EL RENDIMIENTO DE ESTUDIANTES EN UN EXAMEN

MODULO IV APLICACIÓN PRÁCTICA: REGRESIÓN LOGÍSTICA (APRENDIZAJE SUPERVISADO) EJEMPLO DE REGRESIÓN LOGÍSTICA PARA PREDECIR EL ESTADO DE SALUD BASADO EN EL ÍNDICE DE MASA CORPORAL (IMC).