Všechno dohromady
Kromě pipeline pro detekci anomálií pomocí učení na základě vzdálenosti, kterou jsi sestavil/a v předchozím cvičení, chceš přidat i pipeline využívající jednotřídní SVM pro učení na základě příznaků. Rozhodneš se extrahovat dva příznaky: délku řetězce a numerické zakódování prvního písmene řetězce pomocí funkce LabelEncoder() popsané v kapitole 1. Aby bylo srovnání férové, zadáš skóre odlehlosti do výpočtu AUC. Importovány jsou: LabelEncoder(), roc_auc_score() jako auc() a OneClassSVM. Data jsou dostupná jako datový rámec pandas s názvem proteins se dvěma sloupci, label a seq, a dvěma třídami: IMMUNE SYSTEM a VIRUS. Natrénovaný detektor LoF je dostupný jako lof_detector.
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Pro řetězec
svrátílen(s)jeho délku. Aplikuj to na sloupecseqa získej nový sloupeclen. - Pro řetězec
svrátílist(s)seznam jeho znaků. Pomocí toho extrahuj první písmeno každé sekvence a zakóduj ho pomocíLabelEncoder(). - Skóre LoF jsou uložena v atributu
negative_outlier_factor_. Vypočítej jejich AUC. - Natrénuj jednotřídní SVM na datovém rámci obsahujícím pouze sloupce
lenafirst. Extrahuj skóre a vyhodnoť jak skóre LoF, tak skóre SVM pomocí AUC.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))