Levenshtein restreint
Vous remarquez que le package stringdist implémente également une variante de la distance de Levenshtein appelée distance de Damerau-Levenshtein restreinte, et vous souhaitez l’essayer. Vous allez suivre la logique de la leçon, l’englober dans une fonction personnalisée et pré-calculer la matrice des distances avant d’entraîner un détecteur d’anomalies de type Local Outlier Factor. Vous mesurerez la performance avec accuracy_score() disponible sous le nom accuracy(). Vous avez également accès aux packages stringdist, numpy sous le nom np, à pdist() et squareform() depuis scipy.spatial.distance, ainsi qu’à LocalOutlierFactor sous le nom lof. Les données ont été préchargées sous forme de dataframe pandas avec deux colonnes, label et sequence, et comportent deux classes : IMMUNE SYSTEM et VIRUS.
Cet exercice fait partie du cours
Concevoir des workflows de Machine Learning en Python
Instructions
- Écrivez une fonction prenant en entrée
uetv, chacun étant un tableau contenant une chaîne de caractères, et qui applique la fonctionrdlevenshtein()aux deux chaînes. - Remodellez la colonne
sequencedeproteinsen la convertissant d’abord en tableaunumpy, puis en utilisant.reshape(). - Calculez une matrice carrée des distances pour
sequencesà l’aide demy_rdlevenshtein(), puis ajustezlofdessus. - Calculez l’accuracy en convertissant
predsetproteins['label']en booléens indiquant si une protéine est un virus.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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(____, ____))