LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Schreibe eine Funktion mit den Eingaben u und v, die jeweils ein Array mit einem String enthalten, und wende darin die Funktion rdlevenshtein() auf die beiden Strings an.
  • Forme die Spalte sequence aus proteins um, indem du sie zunächst in ein numpy-Array umwandelst und anschließend .reshape() verwendest.
  • Berechne eine quadratische Distanzmatrix für sequences mit my_rdlevenshtein() und trainiere lof darauf.
  • Berechne die Accuracy, indem du preds und proteins['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(____, ____))
Code bearbeiten und ausführen