Ограниченное расстояние Левенштейна
Вы замечаете, что пакет stringdist также реализует разновидность расстояния Левенштейна — ограниченное расстояние Дамерау–Левенштейна, и хотите опробовать её на практике. Вы будете следовать логике из урока: обернёте вычисление в пользовательскую функцию и предварительно вычислите матрицу расстояний перед обучением детектора аномалий на основе локального фактора выброса. Качество модели вы оцените с помощью 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. - Вычислите точность, преобразовав
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(____, ____))