Begränsad Levenshtein
Du märker att paketet stringdist även implementerar en variant av Levenshtein-avstånd som kallas Restricted Damerau-Levenshtein-avstånd, och vill prova den. Du följer logiken från lektionen: du kapslar in den i en egen funktion och förberäknar avståndsmatrisen innan du anpassar en anomalidetektor baserad på Local Outlier Factor. Du mäter prestanda med accuracy_score(), som är tillgänglig som accuracy(). Du har även tillgång till paketen stringdist och numpy som np, samt pdist() och squareform() från scipy.spatial.distance, och LocalOutlierFactor som lof. Data har förinsläktats som en pandas-dataram med två kolumner, label och sequence, och innehåller två klasser: IMMUNE SYSTEM och VIRUS.
Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Skriv en funktion med indata
uochv, där vardera är en array som innehåller en sträng, och tillämpa funktionenrdlevenshtein()på de två strängarna. - Omforma kolumnen
sequencefrånproteinsgenom att först omvandla den till ennumpy-array och sedan använda.reshape(). - Beräkna en kvadratisk avståndsmatris för
sequencesmed hjälp avmy_rdlevenshtein(), och anpassalofpå den. - Beräkna noggrannheten genom att konvertera
predsochproteins['label']till booleska värden som anger huruvida ett protein är ett virus.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(____, ____))