MulaiMulai sekarang secara gratis

Menggabungkan semuanya

Selain pipeline deteksi anomali berbasis jarak yang Anda buat pada latihan sebelumnya, Anda juga ingin mendukung pendekatan pembelajaran berbasis fitur dengan one-class SVM. Anda memutuskan untuk mengekstrak dua fitur: pertama, panjang string, dan kedua, pengodean numerik dari huruf pertama string, yang diperoleh menggunakan fungsi LabelEncoder() seperti dijelaskan pada Bab 1. Untuk memastikan perbandingan yang adil, Anda akan memasukkan skor outlier ke dalam perhitungan AUC. Hal-hal berikut telah diimpor: LabelEncoder(), roc_auc_score() sebagai auc() dan OneClassSVM. Data tersedia sebagai data frame pandas bernama proteins dengan dua kolom, label dan seq, serta dua kelas, IMMUNE SYSTEM dan VIRUS. Sebuah detektor LoF yang sudah dipasang tersedia sebagai lof_detector.

Latihan ini adalah bagian dari kursus

Merancang Alur Kerja Machine Learning di Python

Lihat Kursus

Petunjuk latihan

  • Untuk string s, len(s) mengembalikan panjangnya. Terapkan pada kolom seq untuk memperoleh kolom baru len.
  • Untuk string s, list(s) mengembalikan daftar karakternya. Gunakan ini untuk mengekstrak huruf pertama dari setiap sekuens, lalu enkode menggunakan LabelEncoder().
  • Skor LoF ada pada atribut negative_outlier_factor_. Hitung AUC-nya.
  • Pasang SVM 1-kelas pada data frame yang hanya berisi kolom len dan first. Ekstrak skornya dan evaluasi baik skor LoF maupun skor SVM menggunakan AUC.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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))
Edit dan Jalankan Kode