Bắt đầu ngayBắt đầu miễn phí

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()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 labelsequence, và có hai lớp: IMMUNE SYSTEMVIRUS.

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

Xem khóa học

Hướng dẫn bài tập

  • Viết một hàm nhận đầu vào uv, mỗi đầu vào là một mảng chứa một chuỗi, và áp dụng hàm rdlevenshtein() lên hai chuỗi đó.
  • Chuyển đổi hình dạng cột sequence từ proteins bằng cách ép nó thành mảng numpy, rồi dùng .reshape().
  • Tính ma trận khoảng cách vuông cho sequences bằng my_rdlevenshtein(), và huấn luyện lof trên ma trận đó.
  • Tính accuracy bằng cách chuyển predsproteins['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(____, ____))
Chỉnh sửa và Chạy Mã