Restricted Levenshtein
Všimneš si, že balíček stringdist implementuje také variantu Levenshteinovy vzdálenosti zvanou Restricted Damerau-Levenshtein distance, a chceš ji vyzkoušet. Budeš postupovat podle logiky z lekce: zabalíš ji do vlastní funkce a předpočítáš matici vzdáleností před trénováním detektoru anomálií local outlier factor. Výkon změříš pomocí accuracy_score(), která je dostupná jako accuracy(). Máš k dispozici také balíčky stringdist, numpy jako np, funkce pdist() a squareform() z scipy.spatial.distance a LocalOutlierFactor jako lof. Data jsou předem načtena jako pandas dataframe se dvěma sloupci, label a sequence, a obsahují dvě třídy: IMMUNE SYSTEM a VIRUS.
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Napiš funkci se vstupy
uav, kde každý z nich je pole obsahující jeden řetězec, a aplikuj na tyto dva řetězce funkcirdlevenshtein(). - Přetvaruj sloupec
sequencezproteinstak, že ho nejprve převedeš na polenumpya poté použiješ.reshape(). - Vypočítej čtvercovou matici vzdáleností pro
sequencespomocímy_rdlevenshtein()a natrénuj na nílof. - Vypočítej přesnost tak, že převedeš
predsaproteins['label']na booleovské hodnoty udávající, zda je daný protein virus.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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(____, ____))