Kom igångKom igång gratis

Sätt ihop allt

Utöver den avståndsbaserade anomalidetektionspipeline du skapade i den förra övningen vill du också stödja en funktionsbaserad variant med en enklassig SVM. Du väljer att extrahera två särdrag: dels strängens längd, dels en numerisk kodning av strängens första bokstav med hjälp av funktionen LabelEncoder() som beskrevs i kapitel 1. För en rättvis jämförelse matar du in avvikelsescorerna i en AUC-beräkning. Följande har importerats: LabelEncoder(), roc_auc_score() som auc() och OneClassSVM. Data finns tillgänglig som en pandas-dataram med namnet proteins, med två kolumner – label och seq – samt två klasser: IMMUNE SYSTEM och VIRUS. En anpassad LoF-detektor finns tillgänglig som lof_detector.

Den här övningen är en del av kursen

Att designa maskininlärningsflöden i Python

Visa kurs

Övningsinstruktioner

  • För en sträng s returnerar len(s) dess längd. Tillämpa detta på kolumnen seq för att skapa en ny kolumn len.
  • För en sträng s returnerar list(s) en lista med dess tecken. Använd detta för att extrahera den första bokstaven i varje sekvens och koda den med LabelEncoder().
  • LoF-scorerna finns i attributet negative_outlier_factor_. Beräkna deras AUC.
  • Anpassa en enklassig SVM till en dataram med enbart len och first som kolumner. Extrahera scorerna och utvärdera både LoF-scorerna och SVM-scorerna med hjälp av AUC.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Create a feature that contains the length of the string
proteins['len'] = proteins['seq'].apply(____)

# Create a feature encoding the first letter of the string
proteins['first'] =  ____.____(
  proteins['seq'].apply(____))

# Extract scores from the fitted LoF object, compute its AUC
scores_lof = lof_detector.____
print(____(proteins['label']==____, scores_lof))

# Fit a 1-class SVM, extract its scores, and compute its AUC
svm = ____.____(proteins[['len', 'first']])
scores_svm = svm.____(proteins[['len', 'first']])
print(____(proteins['label']==____, scores_svm))
Redigera och kör kod