Levenshtein restricționat
Observi că pachetul stringdist implementează și o variantă a distanței Levenshtein numită distanța Damerau-Levenshtein restricționată și vrei să o testezi. Vei urma logica din lecție, învelind-o într-o funcție personalizată și precalculând matricea de distanțe înainte de a antrena un detector de anomalii bazat pe factorul local de dispersie. Vei măsura performanța cu accuracy_score(), disponibil ca accuracy(). Ai acces la pachetele stringdist, numpy ca np, la pdist() și squareform() din scipy.spatial.distance, și la LocalOutlierFactor ca lof. Datele au fost preîncărcate ca un dataframe pandas cu două coloane, label și sequence, și conțin două clase: IMMUNE SYSTEM și VIRUS.
Acest exercițiu face parte din cursul
Proiectarea fluxurilor de lucru pentru Machine Learning în Python
Instrucțiuni pentru exercițiu
- Scrie o funcție cu parametrii
ușiv, fiecare reprezentând un array ce conține un șir de caractere, care aplică funcțiardlevenshtein()pe cele două șiruri. - Remodeleazǎ coloana
sequencedinproteinsconvertind-o mai întâi într-un arraynumpycunp.array(), apoi folosind.reshape(). - Calculează o matrice pătratică de distanțe pentru
sequencesfolosindmy_rdlevenshtein()și antreneazălofpe aceasta. - Calculează acuratețea convertind
predsșiproteins['label']în valori booleene care indică dacă o proteină este un virus.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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(____, ____))