Bence M0rkHaV'nin doğru fikri var. Scikit-öğrenme boru hattı sınıfı yalnızca (kez önemli yöntemler aramak zorunda böylece, bir nesnesine bir tahmincisi yanında birden fazla farklı transformatörleri kaplamak için bir araçtır fit()
, predict()
vs). İki ana bileşeni inceleyelim:
Transformers , hem fit()
ve hem de transform()
. Sen gibi araçlar ön işleme sklearn bazı aşina olabilirsiniz TfidfVectorizer
ve Binarizer
. Bu ön işleme araçlarının belgelerine bakarsanız, bu yöntemlerin her ikisini de uyguladıklarını göreceksiniz. Oldukça havalı bulduğum şey, bazı tahmin edicilerin dönüşüm adımları olarak da kullanılabilmesidir, örneğin LinearSVC
!
Kestirimciler hem uygulayan sınıflar vardır fit()
ve predict()
. Sınıflandırıcıların ve regresyon modellerinin çoğunun bu iki yöntemi de uyguladığını göreceksiniz ve bu nedenle birçok farklı modeli kolayca test edebilirsiniz. Nihai tahminleyici olarak başka bir transformatör kullanmak mümkündür (yani, zorunlu olarak uygulanmaz predict()
, ancak kesinlikle uygular fit()
). Bütün bunlar arayamayacağın anlamına geliyor predict()
.
Düzenlemenize gelince: Metin tabanlı bir örnek üzerinden geçelim. LabelBinarizer'ı kullanarak, bir etiket listesini ikili değerler listesine dönüştürmek istiyoruz.
bin = LabelBinarizer() #first we initialize
vec = ['cat', 'dog', 'dog', 'dog'] #we have our label list we want binarized
Şimdi, ikili düzenleyici bazı verilere takıldığında classes_
, transformatörün 'bildiği' benzersiz sınıfları içeren adı verilen bir yapıya sahip olacaktır . İkilleştiriciyi çağırmadan fit()
verilerin neye benzediğine dair hiçbir fikri yoktur, bu nedenle arama transform()
yapmak mantıklı olmaz. Verileri sığdırmaya çalışmadan önce sınıf listesini yazdırırsanız bu doğrudur.
print bin.classes_
Bunu denerken şu hatayı alıyorum:
AttributeError: 'LabelBinarizer' object has no attribute 'classes_'
Ancak ikili düzenleyiciyi vec
listeye :
bin.fit(vec)
ve yeniden dene
print bin.classes_
Aşağıdakileri alıyorum:
['cat' 'dog']
print bin.transform(vec)
Ve şimdi, dönüşümü çağırdıktan sonra vec
nesnede , şunu elde ederiz:
[[0]
[1]
[1]
[1]]
Transformatör olarak kullanılan tahmin edicilere gelince, DecisionTree
sınıflandırıcıyı bir özellik çıkarıcı örneği olarak kullanalım . Karar Ağaçları birçok nedenden ötürü harikadır, ancak bizim amaçlarımız için önemli olan, ağacın tahmin etmek için yararlı bulduğu özellikleri sıralama yeteneğine sahip olmalarıdır . Bir transform()
Karar Ağacı çağırdığınızda , giriş verilerinizi alacak ve en önemli özellikler olduğunu düşündüğü şeyi bulacaktır . Dolayısıyla, veri matrisinizi (n satır x m sütun) daha küçük bir matrise (k sütuna göre n satır) dönüştürmeyi düşünebilirsiniz; burada k sütunları, Karar Ağacının bulduğu en önemli özelliktir.