Обмежена відстань Левенштейна
Ви помічаєте, що пакет stringdist також реалізує варіацію відстані Левенштейна — обмежену відстань Дамерау — Левенштейна (Restricted Damerau-Levenshtein), і хочете її спробувати. Ви повторите підхід з уроку: обгорнете виклик у власну функцію та попередньо обчислите матрицю відстаней перед навчанням детектора аномалій Local Outlier Factor. Ви виміряєте якість за допомогою accuracy_score(), яка доступна вам як accuracy(). Також у вас є доступ до пакетів stringdist, numpy як np, pdist() і squareform() зі scipy.spatial.distance, і LocalOutlierFactor як lof. Дані попередньо завантажено як датафрейм pandas з двома стовпцями — label і sequence, — і двома класами: IMMUNE SYSTEM та VIRUS.
Ця вправа є частиною курсу
Проєктування робочих процесів машинного навчання в Python
Інструкції до вправи
- Напишіть функцію з вхідними параметрами
uтаv, кожен з яких є масивом, що містить рядок, і застосовуєrdlevenshtein()до цих двох рядків. - Зміни́ть форму стовпця
sequenceзproteins, спочатку перетворивши його на масивnumpy, а потім використайте.reshape(). - Обчисліть квадратну матрицю відстаней для
sequences, використовуючиmy_rdlevenshtein(), і навчіть на нійlof. - Обчисліть accuracy, перетворивши
predsіproteins['label']на булеві значення, що вказують, чи є білок вірусом.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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(____, ____))