05.6 RNN - Ejercicio splicing para Entrega¶
Ejercicio de redes neuronales para estudiar de secuencias de RNA
import numpy as np
import pandas as pd
from IPython import display
Con las herramientas de sk-learn se reproducirá la red diseñada para el problema de RNA splicing por los autores:
M. O. Noordewier and G. G. Towell and J. W. Shavlik Training Knowledge-Based Neural Networks to Recognize Genes in DNA Sequences. Advances in Neural Information Processing Systems, vol. 3, Morgan Kaufmann (1991)
Carga de datos a partir de CSV¶
Como el archivo no incluye los nombres de las columnas se asigna el nombre a partir de una lista con el parámetro names de read_csv
Todas las secuencias tienen 60 pares de bases. La primera columna (Class) indica la clase a la que pertenece la secuencia: EI para las que proporcionan un salto exon-intrón (donores); IE para las secuencias que contienen una frontera intron-exón (aceptores); N para aquellas secuencias que no son ni EI ni IE.
La segunda columna (Instance) es una etiqueta para cada una de las instancias (filas), y la tercera columna da la secuencia correspondiente en terminos del alfabeto A, T, C y G.
Preproceso de las secuencias¶
Algunas de las secuencias tienen ambiguedad en determinadas posiciones, de forma que incluyen las letras D, N, S o R de acuerdo con la siguiente tabla:
Letra |
Significado |
---|---|
D |
A o G o T |
N |
A o G o T o C |
S |
C o G |
R |
A o G |
Estos caracteres ambiguos aparecen en muy pocas instancias, así que se van a eliminar de los datos para simplificar el analisis. Primero se realiza un proceso de filtrado para saber cuantas secuencias quedan:
Se borran las secuencias ambiguas como ya se vió en el ejercicio anterior
Primero se prepara la matriz X de los conjuntos de entranamiento y pruebas¶
Se separa la secuencia en 60 campos de un caracter identificando la base
Efectuar el entrenamiento con el Perceptron multicapa (Multilayer perceptron - MLP)¶
La librería sk-learn en el módulo neural_network implementa el perceptron multicapa en la clas MLPClassifier.
Los parámetros del constructor de la clase MLPClassifier son:
hidden_layer_sizes : Este parámetro permite establecer el número de capas y el número de nodos que se desean tener en el clasificador de redes neuronales. Cada elemento de la tupla representa el número de nodos en la i-ésima posición, donde i es el índice de la tupla. Por tanto, la longitud de la tupla denota el número total de capas ocultas en la red.
max_iter : número de épocas de entrenamiento.
activation : función de activación de las capas ocultas.
solver : algoritmo empleado en la optimización de los pesos de los nodos.
random_state : establece una semilla para reproducir los mismos resultados.
#len(X_train60[0]), np.unique(y_train), len(X_train60), len(y_train), len(X_test60), len(y_test)
# Creamos objeto con el constructor
## Entrenamiento de la red
Se presenta la exactitud del conjunto de entrenamiento y pruebas