IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Scrivi una funzione con input u e v, ciascuno dei quali è un array che contiene una stringa, e applica la funzione rdlevenshtein() alle due stringhe.
  • Rimodella la colonna sequence di proteins convertendola prima in un array numpy e poi usando .reshape().
  • Calcola una matrice di distanza quadrata per sequences usando my_rdlevenshtein() e addestra lof su di essa.
  • Calcola l'accuratezza convertendo preds e proteins['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(____, ____))
Modifica ed esegui il codice