Eingeschränktes Levenshtein
Dir fällt auf, dass das Paket stringdist auch eine Variante der Levenshtein-Distanz implementiert, die Restricted Damerau-Levenshtein Distance, und du möchtest sie ausprobieren. Du folgst dabei der Logik aus der Lektion, kapselst sie in einer eigenen Funktion und berechnest die Distanzmatrix vorab, bevor du einen Local Outlier Factor zur Ausreißererkennung trainierst. Die Leistung misst du mit accuracy_score(), das dir als accuracy() zur Verfügung steht. Außerdem hast du Zugriff auf die Pakete stringdist, numpy als np, pdist() und squareform() aus scipy.spatial.distance sowie LocalOutlierFactor als lof. Die Daten wurden als pandas-DataFrame mit zwei Spalten, label und sequence, vorab geladen und enthalten zwei Klassen: IMMUNE SYSTEM und VIRUS.
Diese Übung ist Teil des Kurses
Machine-Learning-Workflows in Python entwerfen
Anleitung zur Übung
- Schreibe eine Funktion mit den Eingaben
uundv, die jeweils ein Array mit einem String enthalten, und wende darin die Funktionrdlevenshtein()auf die beiden Strings an. - Forme die Spalte
sequenceausproteinsum, indem du sie zunächst in einnumpy-Array umwandelst und anschließend.reshape()verwendest. - Berechne eine quadratische Distanzmatrix für
sequencesmitmy_rdlevenshtein()und trainierelofdarauf. - Berechne die Accuracy, indem du
predsundproteins['label']in Boolesche Werte umwandelst, die angeben, ob ein Protein ein Virus ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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(____, ____))