Restricted Levenshtein
สังเกตว่าแพ็กเกจ stringdist มีการใช้งาน Levenshtein distance อีกรูปแบบหนึ่งที่เรียกว่า Restricted Damerau-Levenshtein distance และต้องการทดลองใช้ดู โดยจะทำตามแนวทางจากบทเรียน คือสร้าง custom function แล้วคำนวณ distance matrix ล่วงหน้าก่อนจะ fit โมเดลตรวจจับ anomaly แบบ local outlier factor วัดประสิทธิภาพด้วย accuracy_score() ซึ่งพร้อมใช้งานในชื่อ accuracy() นอกจากนี้ยังมีแพ็กเกจ stringdist, numpy ในชื่อ np, ฟังก์ชัน pdist() และ squareform() จาก scipy.spatial.distance และ LocalOutlierFactor ในชื่อ lof ข้อมูลถูกโหลดไว้ล่วงหน้าเป็น pandas dataframe ที่มีสองคอลัมน์ คือ label และ sequence และมีสองคลาส ได้แก่ IMMUNE SYSTEM และ VIRUS
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การออกแบบ Machine Learning Workflows ด้วย Python
คำแนะนำการฝึกหัด
- เขียนฟังก์ชันที่รับ input เป็น
uและvซึ่งแต่ละตัวเป็น array ที่มีสตริงอยู่ แล้วนำไปใช้กับฟังก์ชันrdlevenshtein()บนสตริงทั้งสอง - แปลงรูปร่างของคอลัมน์
sequenceจากproteinsโดยแปลงเป็นnumpyarray ก่อน จากนั้นใช้.reshape() - คำนวณ square distance matrix สำหรับ
sequencesโดยใช้my_rdlevenshtein()แล้ว fitlofบน matrix ดังกล่าว - คำนวณ accuracy โดยแปลง
predsและproteins['label']ให้เป็น boolean ที่ระบุว่าโปรตีนนั้นเป็นไวรัสหรือไม่
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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(____, ____))