Ograniczona odległość Levenshteina
Zauważasz, że pakiet stringdist implementuje również wariant odległości Levenshteina – odległość Restricted Damerau-Levenshtein – i chcesz go wypróbować. Zastosuj podejście z lekcji: opakuj obliczenia w funkcję własną i wstępnie oblicz macierz odległości przed dopasowaniem detektora anomalii opartego na lokalnym współczynniku wartości odstających. Do pomiaru skuteczności użyj accuracy_score(), dostępnej jako accuracy(). Masz też dostęp do pakietów stringdist i numpy (jako np), a także do pdist() i squareform() z scipy.spatial.distance oraz LocalOutlierFactor jako lof. Dane zostały wczytane jako ramka danych pandas z dwiema kolumnami: label i sequence, i zawierają dwie klasy: IMMUNE SYSTEM oraz VIRUS.
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Napisz funkcję przyjmującą argumenty
uiv, z których każdy jest tablicą zawierającą ciąg znaków, i zastosuj w niej funkcjęrdlevenshtein()na tych dwóch ciągach. - Przekształć kolumnę
sequencezproteins, najpierw konwertując ją na tablicęnumpyza pomocąnp.array(), a następnie korzystając z.reshape(). - Oblicz kwadratową macierz odległości dla
sequencesprzy użyciumy_rdlevenshtein()i dopasuj na niejlof. - Oblicz dokładność, konwertując
predsiproteins['label']na wartości logiczne wskazujące, czy dane białko jest wirusem.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____, ____))