Levenshtein restreint
Vous remarquez que le paquet stringdist implémente aussi 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'encapsuler dans une fonction personnalisée et précalculer la matrice des distances avant d'ajuster un détecteur d'anomalies de type Local Outlier Factor. Vous mesurerez la performance avec accuracy_score(), accessible ici sous le nom accuracy(). Vous avez aussi accès aux paquets stringdist, numpy sous np, à pdist() et squareform() de scipy.spatial.distance, ainsi qu'à LocalOutlierFactor sous lof. Les données ont été préchargées dans un dataframe pandas avec deux colonnes, label et sequence, et comportent deux classes : IMMUNE SYSTEM et VIRUS.
Cette activité fait partie du cours
Concevoir des flux de travail Machine Learning en Python
Instructions de l’exercice
- Écrivez une fonction prenant en entrée
uetv, chacun étant un tableau contenant une chaîne, et appliquez la fonctionrdlevenshtein()sur les deux chaînes. - Remodellez la colonne
sequencedeproteinsen la convertissant d'abord en tableaunumpy, puis en utilisant.reshape(). - Calculez une matrice carrée de distances pour
sequencesavecmy_rdlevenshtein(), puis ajustezlofdessus. - Calculez la justesse en convertissant
predsetproteins['label']en booléens indiquant si une protéine est un virus.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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(____, ____))