Yapılandırılmamış veriler

Python'da Machine Learning İş Akışları Tasarlama

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Yapısal ve yapısal olmayan

  Class   AGE  SEX  STEROID    ...        
0    2.0  50.0  2.0      1.0    ...      
1    2.0  40.0  1.0      1.0    ...       
...
           label                                           sequence
0          VIRUS  AVTVVPDPTCCGTLSFKVPKDAKKGKHLGTFDIRQAIMDYGGLHSQ...
1  IMMUNE SYSTEM  QVQLQQPGAELVKPGASVKLSCKASGYTFTSYWMHWVKQRPGRGLE...
2  IMMUNE SYSTEM  QAVVTQESALTTSPGETVTLTCRSSTGAVTTSNYANWVQEKPDHLF...
3          VIRUS  MSQVTEQSVRFQTALASIKLIQASAVLDLTEDDFDFLTSNKVWIAT...
...

Bu veride virüsleri aykırı olarak işaretleyen bir dedektör kurabilir miyiz?

Python'da Machine Learning İş Akışları Tasarlama
import stringdist
stringdist.levenshtein('abc', 'acc')
1
stringdist.levenshtein('acc', 'cce')
2
             label   sequence
169  IMMUNE SYSTEM  ILSALVGIV
170  IMMUNE SYSTEM  ILSALVGIL
stringdist.levenshtein('ILSALVGIV', 'ILSALVGIL')
1
Python'da Machine Learning İş Akışları Tasarlama

Biraz hata ayıklama

# Bu çalışmaz
pdist(proteins['sequence'].iloc[:3], metric=stringdist.levenshtein)
Traceback (most recent call last):
ValueError: A 2-dimensional array must be passed.
Python'da Machine Learning İş Akışları Tasarlama

Biraz hata ayıklama

sequences = np.array(proteins['sequence'].iloc[:3]).reshape(-1,1)

# Bu farklı bir nedenle çalışmaz pdist(sequences, metric=stringdist.levenshtein)
Traceback (most recent call last):
TypeError: argument 1 must be str, not numpy.ndarray
Python'da Machine Learning İş Akışları Tasarlama

Biraz hata ayıklama

# Bu çalışıyor!!
def my_levenshtein(x, y):
    return stringdist.levenshtein(x[0], y[0])

pdist(sequences, metric=my_levenshtein)
array([136.,   2., 136.])
Python'da Machine Learning İş Akışları Tasarlama

Önceden hesaplanmış matrislerle protein aykırı değerleri

# Yaklaşık 1000 örnek için 2 dakika sürer
M = pdist(sequences, my_levenshtein)

Önceden hesaplanmış uzaklık matrisiyle LoF dedektörü:

# Bu 3 saniye sürer
detector = lof(metric='precomputed', contamination=0.1)
preds = detector.fit_predict(M)
roc_auc_score(proteins['label'] == 'VIRUS', preds == -1)
0.64
Python'da Machine Learning İş Akışları Tasarlama

Uzaklığınızı seçin

Python'da Machine Learning İş Akışları Tasarlama

Preparing Video For Download...