TIPOS DE MALOCLUSION CLASE II DE ANGLE EN ODONTOLOGÍA: APLICACIÓN DEL ALGORITMO NAIVE BAYES EN APRENDIZAJE SUPERVISADO.


 DIPLOMADO EN INTELIGENCIA ARTIFICIAL

MODULO IV

          APRENDIZAJE AUTOMATICO CON PYTHON Y ASISTENTES INTELIGENTES

              Ortega Irusta Elsy Nilda

              Este es el chat GPT

               https://chat.openai.com/c/bf2c06d1-155f-4d8d-884b-696f491154ff

APLICACIÓN DEL ALGORITMO NAIVE BAYES EN APRENDIZAJE SUPERVISADO.

               TIPOS DE MALOCLUSION CLASE II DE ANGLE EN ODONTOLOGÍA.

Vamos a aplicar paso a paso los componentes del pensamiento computacional para desarrollar un ejemplo práctico de la aplicación del algoritmo Naive Bayes en aprendizaje supervisado. También discutiremos brevemente los conceptos clave de la regresión logística.

COMPONENTES DEL PENSAMIENTO COMPUTACIONAL:

1. Descomposición del Problema:

   - Problema: Clasificación de correos electrónicos como "spam" o "no spam" utilizando Naive Bayes.

   - Sub problemas:

      - Pre procesamiento de datos.

      - Implementación del algoritmo Naive Bayes.

      - Evaluación del modelo.

 2. Reconocimiento de Patrones:

   - Identificación de patrones en los datos de entrenamiento que distinguen entre correos electrónicos "spam" y "no spam".

3. Abstracción:

   - Abstracción del Problema: El enfoque Naive Bayes asume independencia condicional entre las características dadas las clases.

4. Algoritmos:

   - Naive Bayes:

      1. Pre procesamiento de Datos:

         - Tokenización de textos.

         - Eliminación de stop words y caracteres especiales.

         - Creación de un vocabulario.

      2. Implementación del Algoritmo:

         - Calcular las probabilidades a priori de las clases (spam y no spam).

         - Calcular las probabilidades condicionales de las palabras dadas las clases.

         - Utilizar el teorema de Bayes para predecir la clase de nuevos correos electrónicos.

      3. Evaluación del Modelo:

         - División de datos en conjunto de entrenamiento y prueba.

         - Medir la precisión, sensibilidad y especificidad del modelo.

 INTRODUCCIÓN A LA REGRESIÓN LOGÍSTICA:

1. Programación Tradicional vs. Aprendizaje Automático:

   - Programación Tradicional: Utiliza reglas definidas manualmente para mapear entradas a salidas.

   - Aprendizaje Automático: Aprende automáticamente las reglas a partir de los datos de entrenamiento.

2. Regresión Logística:

   - Conceptos Clave:

      - Función Logística: Transforma la salida a un valor entre 0 y 1.

      - Entrenamiento: Ajusta los pesos para minimizar la función de pérdida.

      - Clasificación: Utiliza un umbral para asignar a una clase.

TEOREMA DE BAYES Y ENFOQUE "NAIVE":

Teorema de Bayes:

   - P (A|B): Probabilidad de A dado B.

   - P (B|A): Probabilidad de B dado A.

   - **P(A):** Probabilidad de A.

   - **P(B):** Probabilidad de B.

   - **Fórmula:**

      \[ P(A|B) = \frac{P(B|A)P(A)}{P(B)} \]

Enfoque "Naive":

   - Asume independencia condicional entre las características dadas las clases.

   - Facilita el cálculo de las probabilidades condicionales.

Suposiciones y Limitaciones del Modelo Naive Bayes:

      - Suposiciones:

      - Independencia condicional.

      - Limitaciones:

      - Sensible a datos atípicos.

      - No maneja bien la multicolinealidad. (Cuando las variables independientes en un modelo de regresión están correlacionadas, estas variables deberían ser independientes).

      - Necesidad de suficientes datos de entrenamiento.

Este es un esbozo general. Para detalles más específicos, se requeriría un conjunto de datos y código de implementación. ¿Te gustarían más detalles sobre alguna parte específica o algún paso en particular?

TIPOS DE MALOCLUSION CLASE II DE ANGLE EN ODONTOLOGÍA.

La maloclusión de Clase II de Angle es un tipo de mala alineación dental en la que los molares superiores están más hacia adelante que los molares inferiores. Esta clasificación se basa en la relación anteroposterior de los primeros molares superiores e inferiores y puede estar asociada con diversos patrones esqueléticos y dentales.

Descripción paso a paso de los tipos de maloclusión de Clase II y luego crearé una tabla y un diagrama para ilustrar estas maloclusiones.

TIPOS DE MALOCLUSIÓN DE CLASE II DE ANGLE:

1. Clase II División 1:

   - Los molares superiores están hacia adelante es decir en vestíbulo versión.

   - Hay una sobremordida aumentada (superposición vertical de los dientes anteriores).

2. Clase II División 2:

   - Los molares superiores están hacia adelante.

   - Hay una sobremordida aumentada.

   - Los incisivos centrales superiores están inclinados hacia atrás.

CREACIÓN DE UNA TABLA PARA ILUSTRAR MALOCLUSIONES:

+-------------------------+-----------------------------+--------------------------------------+
| Tipo de Maloclusión    | Descripción                 | Características Principales         |
+-------------------------+-----------------------------+--------------------------------------+
| Clase II División 1     | Molares superiores hacia    | Sobremordida aumentada              |
|                         | adelante                    |                                      |
+-------------------------+-----------------------------+--------------------------------------+
| Clase II División 2     | Molares superiores hacia    | Sobremordida aumentada,             |
|                         | adelante, Incisivos          | incisivos centrales superiores      |
|                         | centrales superiores         | inclinados hacia atrás              |
|                         | inclinados hacia atrás       |                                      |
+-------------------------+-----------------------------+--------------------------------------+

CREACIÓN DE UN DIAGRAMA PARA ILUSTRAR MALOCLUSIONES:

Puedes utilizar herramientas gráficas como diagramas de Venn o simplemente describir las características en un dibujo o esquema para ilustrar las maloclusiones.

EJEMPLO DE UNA CLASE II DE ANGLE Div 1.

 



Clase II División 1 Este diagrama determina la protrusión del maxilar superior
en relación al maxilar inferior. Se presenta cuando el surco mesio vestibular
del primer molar inferior está en posición distal con respecto a la cúspide
mesio vestibular del primer molar superior. Se caracteriza porque los dientes
antero superiores se encuentran protruidos

    ___________

     /           \
    /             \
   /               \
  /                 \
 /                   \
|                     |
|                     |
|                     |
|                     |

EJEMPLO DE UNA CLASE II DE ANGLE Div 2.

Clase II División 2 Este diagrama determina la posicion den losdos incisivos
centrales superiores están retro inclinados y los laterales en vestíbulo
versión.protrusión del maxilar superior en relación al maxilar inferior.
Se presenta cuando el surco mesio vestibula del primer molar inferior está
en posición distal con respecto a lacúspide mesio vestibular del primer
molar superior. Se caracteriza porque los dos incisivos centrales superiores
están retro inclinados y los laterales en vestíbulo versión.
|      ______________
|     /              \
|    /                \
|   /                  \
|  /                    \
| /                      \
|/______________________\

Estos son ejemplos sencillos. En la práctica, un ortodoncista utilizará radiografías, fotografías y modelos de estudio para evaluar y clasificar las maloclusiones con mayor detalle. Recuerda que esta información es educativa y no reemplaza la evaluación y el diagnóstico de un profesional de la salud dental, como un ortodoncista.

Crear un diagrama gráfico de maloclusiones en Python puede ser un poco más complejo, ya que requeriría el uso de bibliotecas de gráficos más avanzadas. En este caso, utilizaremos la biblioteca `matplotlib` para crear un diagrama de Venn simple.

Esta es mi interaccion con google colab.

# Importar bibliotecas necesarias

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn import metrics
import seaborn as sns
import matplotlib.pyplot as plt

# Cargar datos ficticios
data = {
    'correo': [
        "Estimado estudiante, felicitaciones por tu excelente desempeño académico este semestre.",
        "Lamentamos informarle que su solicitud de beca ha sido rechazada.",
        # Agregar más ejemplos según sea necesario
    ],
    'etiqueta': ['positivo', 'negativo']
}

df = pd.DataFrame(data)

# Dividir datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(df['correo'], df['etiqueta'], test_size=0.2, random_state=42)

# Preprocesamiento de texto y vectorización
vectorizer = CountVectorizer()
X_train_vect = vectorizer.fit_transform(X_train)
X_test_vect = vectorizer.transform(X_test)

# Entrenar el clasificador Naive Bayes
nb_classifier = MultinomialNB()
nb_classifier.fit(X_train_vect, y_train)

# Realizar predicciones
y_pred = nb_classifier.predict(X_test_vect)

# Evaluar el rendimiento del modelo
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
print("Confusion Matrix:")
print(metrics.confusion_matrix(y_test, y_pred))
print("Classification Report:")
print(metrics.classification_report(y_test, y_pred))

# Visualizar la matriz de confusión
cm = metrics.confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=df['etiqueta'].unique(), yticklabels=df['etiqueta'].unique())
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
Accuracy: 0.0 Confusion Matrix: [[0 1] [0 0]] Classification Report: precision recall f1-score support negativo 0.00 0.00 0.00 1.0 positivo 0.00 0.00 0.00 0.0 accuracy 0.00 1.0 macro avg 0.00 0.00 0.00 1.0 weighted avg 0.00 0.00 0.00 1.0

CÓDIGO EN PYTHON

Crear un diagrama gráfico de maloclusiones en Python puede ser un poco más complejo, ya que requeriría el uso de bibliotecas de gráficos más avanzadas. En este caso, utilizaremos la biblioteca `matplotlib` para crear un diagrama de Venn simple. Asegúrate de tener la biblioteca instalada antes de ejecutar el código:

Ahora, aquí hay un ejemplo básico de cómo puedes crear un diagrama de Venn para las maloclusiones en Python:

Esta es mi interaccion con google colab.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Etiquetas para las maloclusiones
maloclusion_labels = {'Clase II División 1', 'Clase II División 2'}

# Crear un diagrama de Venn
venn2(subsets=(1, 1, 1), set_labels=maloclusion_labels)

# Configurar el título y mostrar el gráfico
plt.title('Diagrama de Maloclusiones de Clase II')
plt.show()

Este es un ejemplo muy simple, y puedes personalizar el diagrama según tus necesidades. Ten en cuenta que los diagramas de Venn son limitados en términos de personalización y pueden no representar completamente las características específicas de las maloclusiones. Para representaciones más detalladas, podrías considerar el uso de herramientas gráficas más avanzadas. Este código crea un diagrama de Venn básico que muestra las maloclusiones de Clase II División 1 y Clase II División 2 en conjuntos separados.

Este código crea un diagrama de Venn básico que muestra las maloclusiones de Clase II División 1 y Clase II División 2 en conjuntos separados.

EJEMPLOS DE ALGORITMOS: REGRESIÓN LINEAL EN TIPOS DE MALOCLUSION CLASE II DE ANGLE EN ODONTOLOGÍA,

La regresión lineal es un algoritmo utilizado para modelar la relación entre una variable dependiente y una o más variables independientes. En el contexto de la odontología y los tipos de maloclusión de Clase II de Angle, podríamos considerar el uso de regresión lineal para analizar la relación entre ciertas características dentales y la severidad de la maloclusión.

Supongamos que tenemos un conjunto de datos con variables como "Edad", "Higiene Oral", "Antecedentes Familiares" y queremos predecir la severidad de la maloclusión (por ejemplo, en una escala numérica). Aquí tienes un ejemplo simple en Python utilizando la biblioteca scikit-learn:

Esta es mi interaccion con google colab.

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

# Crear un conjunto de datos ficticio
data = {
    'Edad': [25, 30, 35, 40, 45, 50, 55, 60],
    'Higiene_Oral': [3, 4, 2, 3, 4, 1, 2, 3],
    'Antecedentes_Familiares': [0, 1, 0, 1, 1, 0, 0, 1],
    'Severidad_Maloclusion': [2, 3, 1, 3, 4, 2, 1, 4]
}

df = pd.DataFrame(data)

# Separar características (X) y etiquetas (y)
X = df[['Edad', 'Higiene_Oral', 'Antecedentes_Familiares']]
y = df['Severidad_Maloclusion']

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo de regresión lineal
modelo_regresion = LinearRegression()

# Entrenar el modelo
modelo_regresion.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
predicciones = modelo_regresion.predict(X_test)

# Evaluar el modelo
mse = mean_squared_error(y_test, predicciones)
r2 = r2_score(y_test, predicciones)

print(f'Mean Squared Error: {mse}')
print(f'R^2 Score: {r2}')

# Visualizar las predicciones frente a los valores reales
plt.scatter(y_test, predicciones)
plt.xlabel('Valores Reales')
plt.ylabel('Predicciones')
plt.title('Regresión Lineal en Maloclusiones de Clase II')
plt.show()
Mean Squared Error: 2.032394582948598 R^2 Score: -7.1295783317943915

Este código utiliza regresión lineal para predecir la severidad de la maloclusión basada en características como la edad, la higiene oral y los antecedentes familiares. La evaluación del modelo se realiza mediante el cálculo del Error Cuadrático Medio (MSE) y el coeficiente de determinación (\(R^2\)). Este es un ejemplo simple y ficticio para ilustrar el concepto. En la práctica, se requerirían conjuntos de datos más grandes y detallados, y el análisis debería realizarse en colaboración con profesionales de la salud dental. Además, recuerda que la regresión lineal asume una relación lineal entre las variables, lo cual puede ser una simplificación en casos más complejos.

ALGORITMOS DE ÁRBOL DE DECISIONES

Los algoritmos de árbol de decisiones son otra herramienta de aprendizaje

automático que se puede utilizar para clasificar o predecir datos en base a decisiones secuenciales basadas en características específicas. En el contexto de maloclusiones de Clase II de Angle en odontología, podríamos utilizar árboles de decisiones para analizar y predecir la severidad de la maloclusión en función de diversas características. Acontinuación, te proporcionaré un ejemplo

básico en Python utilizandoscikit-learn:

Esta es mi interaccion con google colab.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, plot_confusion_matrix
import matplotlib.pyplot as plt

# Crear un conjunto de datos ficticio
data = {
    'Edad': [25, 30, 35, 40, 45, 50, 55, 60],
    'Higiene_Oral': [3, 4, 2, 3, 4, 1, 2, 3],
    'Antecedentes_Familiares': [0, 1, 0, 1, 1, 0, 0, 1],
    'Severidad_Maloclusion': ['Leve', 'Moderada', 'Leve', 'Moderada', 'Severa', 'Moderada', 'Leve', 'Severa']
}

df = pd.DataFrame(data)

# Mapear etiquetas de severidad a números para el modelo
df['Severidad_Maloclusion_Num'] = df['Severidad_Maloclusion'].map({'Leve': 0, 'Moderada': 1, 'Severa': 2})

# Separar características (X) y etiquetas (y)
X = df[['Edad', 'Higiene_Oral', 'Antecedentes_Familiares']]
y = df['Severidad_Maloclusion_Num']

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo de árbol de decisiones
modelo_arbol = DecisionTreeClassifier()

# Entrenar el modelo
modelo_arbol.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
predicciones = modelo_arbol.predict(X_test)

# Evaluar el modelo
precision = accuracy_score(y_test, predicciones)
matriz_confusion = confusion_matrix(y_test, predicciones)

print(f'Precisión del modelo: {precision}')
print('Matriz de Confusión:')
print(matriz_confusion)

# Visualizar la matriz de confusión
plot_confusion_matrix(modelo_arbol, X_test, y_test, cmap='Blues')
plt.title('Matriz de Confusión del Modelo de Árbol de Decisiones')
plt.show()

En este ejemplo, utilizamos un modelo de árbol de decisiones para predecir

la severidad de la maloclusión. La precisión del modelo se evalúa y se muestra una

matriz de confusión para visualizar la calidad de las predicciones.

Tenen cuenta que este es un ejemplo simple y ficticio. En la práctica, se

requerirían conjuntos de datos más grandes y detallados, y el análisis debería realizarse en colaboración con profesionales de la salud dental. Además, la interpretación de los resultados y la toma de decisiones basadas en ellos deben realizarse por profesionales de la salud.

Ejemplo básico de cómo aplicar un algoritmo de árbol de decisiones a un conjunto de datos ficticio relacionado

con maloclusiones de Clase II de Angle en odontología. Utilizaré la biblioteca scikit-learn en Python. Asegúrate de tenerla instalada antes de ejecutar el código:

Esta es mi interaccion con google colab.

# Crear un conjunto de datos ficticio
data = {
    'Edad': [25, 30, 35, 40, 45, 50, 55, 60],
    'Higiene_Oral': [3, 4, 2, 3, 4, 1, 2, 3],
    'Antecedentes_Familiares': [0, 1, 0, 1, 1, 0, 0, 1],
    'Severidad_Maloclusion': ['Leve', 'Moderada', 'Leve', 'Moderada', 'Severa', 'Moderada', 'Leve', 'Severa']
}

df = pd.DataFrame(data)

# Mapear etiquetas de severidad a números para el modelo
df['Severidad_Maloclusion_Num'] = df['Severidad_Maloclusion'].map({'Leve': 0, 'Moderada': 1, 'Severa': 2})

# Separar características (X) y etiquetas (y)
X = df[['Edad', 'Higiene_Oral', 'Antecedentes_Familiares']]
y = df['Severidad_Maloclusion_Num']

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear un modelo de árbol de decisiones
modelo_arbol = DecisionTreeClassifier()

# Entrenar el modelo
modelo_arbol.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
predicciones = modelo_arbol.predict(X_test)

# Evaluar el modelo
precision = accuracy_score(y_test, predicciones)
matriz_confusion = confusion_matrix(y_test, predicciones)
informe_clasificacion = classification_report(y_test, predicciones)

print(f'Precisión del modelo: {precision}')
print('Matriz de Confusión:')
print(matriz_confusion)
print('Informe de Clasificación:')
print(informe_clasificacion)

# Visualizar el árbol de decisiones
plt.figure(figsize=(12, 8))
plot_tree(modelo_arbol, filled=True, feature_names=X.columns, class_names=df['Severidad_Maloclusion'].unique())
plt.title('Árbol de Decisiones para Maloclusiones de Clase II')
plt.show()

Precisión del modelo: 0.5 Matriz de Confusión: [[0 0] [1 1]] Informe de Clasificación: precision recall f1-score support 0 0.00 0.00 0.00 0 1 1.00 0.50 0.67 2 accuracy 0.50 2 macro avg 0.50 0.25 0.33 2 weighted avg 1.00 0.50 0.67 2


Este código utiliza un conjunto de datos ficticio para entrenar un modelo de

árbol de decisiones y evaluar su precisión en un conjunto de prueba. Además,

se muestra la matriz de confusión y un informe de clasificación.

Por último, se visualiza el árbol de decisiones generado. Ten en cuenta que

la interpretación de un árbol de decisiones puede ser compleja, y es importante

colaborar con profesionales de la salud dental para garantizar la relevancia

clínica de las variables incluidas en el modelo.

GRÁFICOS PARA VISUALIZAR LA INFORMACIÓN DEL CONJUNTO DE DATOS Y LOS RESULTADOS DEL MODELO.

GRÁFICO DE DISPERSION PARA VISUALIZAR LA RELACION ENTRE EDAD Y HIGIENE ORAL.

Esta es mi interaccion con google colab.

import seaborn as sns

# Gráfico de dispersión para visualizar la relación entre Edad y Higiene Oral
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Edad', y='Higiene_Oral', hue='Severidad_Maloclusion', data=df, palette='viridis', s=100)
plt.title('Relación entre Edad y Higiene Oral por Severidad de Maloclusión')
plt.xlabel('Edad')
plt.ylabel('Higiene Oral')
plt.show()

# Gráfico de barras para visualizar la distribución de Severidad de Maloclusión
plt.figure(figsize=(8, 5))
sns.countplot(x='Severidad_Maloclusion', data=df, palette='Set1')
plt.title('Distribución de Severidad de Maloclusión')
plt.xlabel('Severidad de Maloclusión')
plt.ylabel('Número de Pacientes')
plt.show()

 Estos gráficos utilizan la biblioteca Seaborn para visualizar la relación entre la edad y la higiene oral, así como la distribución de la severidad de la maloclusión en el conjunto de datos. Recuerda que estos gráficos son solo ejemplos y puedes personalizarlos según tus necesidades y preferencias. Además, al utilizar datos reales, se recomienda colaborar con profesionales de la salud dental para garantizar la interpretación clínica adecuada de los resultados.

Conclusiones y reflexiones: Aplicar los componentes del pensamiento computacional mediante el algoritmo Naive Bayes en aprendizaje supervisado, sobre la maloclusión de Clase II de Angle me dio mayores luces para implementar el aprendizaje automático. Se usó datos ficticios que no están fuera de la realidad, estas herramientas para mí son nuevas y las utilizare en la práctica docente.






Comentarios

Entradas populares de este blog

REGRESIÓN LOGÍSTICA (APRENDIZAJE SUPERVISADO) USO DE MATERIALES DE ENDODONCIA PARA LA OBTURACION DE CONDUCTOS

DIAGNÓSTICO EN PERIODONTITIS EN ODONTOLOGÍA: APLICACIÓN DEL ALGORITMO NAIVE BAYES EN APRENDIZAJE SUPERVISADO.