Levenshtein restringida
Te fijas en que el paquete stringdist también implementa una variante de la distancia de Levenshtein llamada distancia de Damerau-Levenshtein restringida, y quieres probarla. Seguirás la lógica de la lección, encapsulándola en una función personalizada y precomputando la matriz de distancias antes de ajustar un detector de anomalías de factor de aislamiento local. Medirás el rendimiento con accuracy_score(), disponible como accuracy(). También tienes acceso a los paquetes stringdist, numpy como np, pdist() y squareform() de scipy.spatial.distance, y LocalOutlierFactor como lof. Los datos se han precargado en un pandas DataFrame con dos columnas, label y sequence, y dos clases: IMMUNE SYSTEM y VIRUS.
Este ejercicio forma parte del curso
Diseño de flujos de trabajo de Machine Learning en Python
Instrucciones del ejercicio
- Escribe una función con entrada
uyv, cada una un array que contiene una cadena, y aplica la funciónrdlevenshtein()a ambas cadenas. - Reestructura la columna
sequencedeproteinsconvirtiéndola primero en un array denumpyy luego usando.reshape(). - Calcula una matriz de distancias cuadrada para
sequencesusandomy_rdlevenshtein()y ajustalofsobre ella. - Calcula la exactitud convirtiendo
predsyproteins['label']en booleanos que indiquen si una proteína es un virus.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Wrap the RD-Levenshtein metric in a custom function
def my_rdlevenshtein(u, v):
return ____.rdlevenshtein(____, ____)
# Reshape the array into a numpy matrix
sequences = ____(proteins['seq']).____(-1, 1)
# Compute the pairwise distance matrix in square form
M = ____
# Run a LoF algorithm on the precomputed distance matrix
preds = lof(metric=____).____(M)
# Compute the accuracy of the outlier predictions
print(accuracy(____, ____))