Restricted Levenshtein
Je ziet dat het stringdist-pakket ook een variant van de Levenshtein-afstand implementeert, de Restricted Damerau-Levenshtein-afstand, en je wilt die uitproberen. Je volgt de logica uit de les: je verpakt dit in een eigen functie en precompute de afstandsmatrix voordat je een Local Outlier Factor-anomaliedetector fit. Je meet de prestaties met accuracy_score(), die beschikbaar is als accuracy(). Je hebt ook toegang tot de pakketten stringdist, numpy als np, pdist() en squareform() uit scipy.spatial.distance, en LocalOutlierFactor als lof. De data is vooraf geladen als een pandas-dataframe met twee kolommen, label en sequence, en heeft twee klassen: IMMUNE SYSTEM en VIRUS.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Schrijf een functie met input
uenv, die elk een array met een string bevatten, en pas de functierdlevenshtein()toe op de twee strings. - Reshape de kolom
sequenceuitproteinsdoor deze eerst om te zetten naar eennumpy-array en vervolgens.reshape()te gebruiken. - Bereken een vierkante afstandsmatrix voor
sequencesmetmy_rdlevenshtein()en fitlofdaarop. - Bereken de nauwkeurigheid door
predsenproteins['label']om te zetten naar booleans die aangeven of een eiwit een virus is.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____, ____))