Hepsini bir araya getirme
Son egzersizde oluşturduğun mesafe tabanlı öğrenme anomali tespiti iş akışına ek olarak, tek sınıflı SVM ile özellik tabanlı öğrenmeyi de desteklemek istiyorsun. İki özellik çıkarmaya karar verdin: birincisi, dizgenin uzunluğu; ikincisi ise, 1. bölümde anlatılan LabelEncoder() fonksiyonunu kullanarak elde edilen dizgenin ilk harfinin sayısal kodlaması. Adil bir karşılaştırma için, aykırı değer skorlarını bir AUC hesaplamasına girdi olarak vereceksin. Aşağıdakiler içe aktarıldı: LabelEncoder(), roc_auc_score() için auc() takma adı ve OneClassSVM. Veri, iki sütunu (label ve seq) ve iki sınıfı (IMMUNE SYSTEM ve VIRUS) olan proteins adlı bir pandas veri çerçevesi olarak mevcut. Ayrıca lof_detector adıyla eğitilmiş bir LoF dedektörü mevcut.
Bu egzersiz
Python'da Machine Learning İş Akışları Tasarlama
kursunun bir parçasıdırEgzersiz talimatları
- Bir dizge
siçinlen(s)uzunluğunu döndürür.seqsütununa uygula velenadlı yeni bir sütun elde et. - Bir dizge
siçinlist(s), karakterlerinin bir listesini döndürür. Bunu kullanarak her dizinin ilk harfini çıkar veLabelEncoder()ile kodla. - LoF skorları
negative_outlier_factor_özniteliğindedir. Bunların AUC'sini hesapla. - Yalnızca
lenvefirstsütunlarını içeren bir veri çerçevesine 1-sınıf SVM uygula. Skorları çıkar ve hem LoF skorlarını hem de SVM skorlarını AUC ile değerlendir.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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))