Levenshtein ristretto
Noti che il pacchetto stringdist implementa anche una variante della distanza di Levenshtein chiamata distanza di Damerau-Levenshtein ristretta, e vuoi provarla. Seguirai la logica vista nella lezione, incapsulandola in una funzione personalizzata e precalcolando la matrice delle distanze prima di addestrare un rilevatore di anomalie Local Outlier Factor. Valuterai le prestazioni con accuracy_score(), disponibile come accuracy(). Hai anche accesso ai pacchetti stringdist, numpy come np, pdist() e squareform() da scipy.spatial.distance, e LocalOutlierFactor come lof. I dati sono stati precaricati come dataframe pandas con due colonne, label e sequence, e hanno due classi: IMMUNE SYSTEM e VIRUS.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Scrivi una funzione con input
uev, ciascuno dei quali è un array che contiene una stringa, e applica la funzionerdlevenshtein()alle due stringhe. - Rimodella la colonna
sequencediproteinsconvertendola prima in un arraynumpye poi usando.reshape(). - Calcola una matrice di distanza quadrata per
sequencesusandomy_rdlevenshtein()e addestralofsu di essa. - Calcola l'accuratezza convertendo
predseproteins['label']in booleani che indicano se una proteina è un virus.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____, ____))