Levenshtein restrito
Você percebe que o pacote stringdist também implementa uma variação da distância de Levenshtein chamada distância de Damerau-Levenshtein restrita e quer experimentá-la. Você vai seguir a lógica da lição, encapsulando-a em uma função personalizada e pré-computando a matriz de distâncias antes de ajustar um detector de anomalias Local Outlier Factor. Você vai medir o desempenho com accuracy_score(), que está disponível para você como accuracy(). Você também tem acesso aos pacotes stringdist, numpy como np, pdist() e squareform() de scipy.spatial.distance, e LocalOutlierFactor como lof. Os dados foram pré-carregados como um dataframe do pandas com duas colunas, label e sequence, e têm duas classes: IMMUNE SYSTEM e VIRUS.
Este exercício faz parte do curso
Projetando Workflows de Machine Learning em Python
Instruções do exercício
- Escreva uma função com entrada
uev, cada uma sendo um array contendo uma string, e aplique a funçãordlevenshtein()nas duas strings. - Redimensione a coluna
sequencedeproteinsconvertendo-a primeiro em um array donumpye depois usando.reshape(). - Calcule uma matriz de distâncias quadrada para
sequencesusandomy_rdlevenshtein()e ajustelofnela. - Calcule a acurácia convertendo
predseproteins['label']em valores booleanos indicando se uma proteína é um vírus.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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(____, ____))