Levenshtein bị giới hạn
Bạn nhận thấy gói stringdist cũng triển khai một biến thể của khoảng cách Levenshtein gọi là Restricted Damerau-Levenshtein, và muốn thử nghiệm nó. Bạn sẽ làm theo logic trong bài học: bọc nó trong một hàm tùy chỉnh và tính trước ma trận khoảng cách trước khi huấn luyện bộ dò bất thường Local Outlier Factor. Bạn sẽ đo hiệu năng bằng accuracy_score() (đã có sẵn dưới tên accuracy()). Bạn cũng có quyền dùng các gói stringdist, numpy với bí danh np, pdist() và squareform() từ scipy.spatial.distance, và LocalOutlierFactor với bí danh lof. Dữ liệu đã được nạp sẵn dưới dạng pandas dataframe với hai cột label và sequence, và có hai lớp: IMMUNE SYSTEM và VIRUS.
Bài tập này là một phần của khóa học
Thiết kế quy trình Machine Learning bằng Python
Hướng dẫn bài tập
- Viết một hàm nhận đầu vào
uvàv, mỗi đầu vào là một mảng chứa một chuỗi, và áp dụng hàmrdlevenshtein()lên hai chuỗi đó. - Chuyển đổi hình dạng cột
sequencetừproteinsbằng cách ép nó thành mảngnumpy, rồi dùng.reshape(). - Tính ma trận khoảng cách vuông cho
sequencesbằngmy_rdlevenshtein(), và huấn luyệnloftrên ma trận đó. - Tính accuracy bằng cách chuyển
predsvàproteins['label']sang kiểu boolean thể hiện một protein có phải virus hay không.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(____, ____))