ПочатиПочніть безкоштовно

Збираємо все докупи

На додачу до конвеєра виявлення аномалій на основі відстаней, який ви створили у попередній вправі, ви також хочете підтримати підхід навчання за ознаками з одно-класовим SVM. Ви вирішуєте видобути дві ознаки: по-перше, довжину рядка, а по-друге — числове кодування першої літери рядка, отримане за допомогою функції LabelEncoder(), описаної в Розділі 1. Щоб забезпечити коректне порівняння, ви передасте оцінки викидів до обчислення AUC. Імпортовано таке: LabelEncoder(), roc_auc_score() як auc() і OneClassSVM. Дані доступні як датафрейм pandas під назвою proteins з двома стовпцями — label і seq — та двома класами: IMMUNE SYSTEM і VIRUS. Навчений детектор LoF доступний як lof_detector.

Ця вправа є частиною курсу

Проєктування робочих процесів машинного навчання в Python

Переглянути курс

Інструкції до вправи

  • Для рядка s вираз len(s) повертає його довжину. Застосуйте це до стовпця seq, щоб отримати новий стовпець len.
  • Для рядка s вираз list(s) повертає список його символів. Скористайтеся цим, щоб видобути першу літеру кожної послідовності та закодувати її за допомогою LabelEncoder().
  • Оцінки LoF містяться в атрибуті negative_outlier_factor_. Обчисліть їхній AUC.
  • Навчіть одно-класовий SVM на датафреймі, який містить лише стовпці len і first. Видобудьте оцінки та оцініть як оцінки LoF, так і оцінки SVM за допомогою AUC.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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))
Редагувати та запускати код