Saya pikir M0rkHaV memiliki ide yang tepat. Scikit-belajar ini kelas pipa adalah alat yang berguna untuk encapsulating beberapa transformer yang berbeda bersama estimator menjadi satu objek, sehingga Anda hanya perlu memanggil metode penting Anda sekali ( fit()
, predict()
, dll). Mari kita uraikan dua komponen utama:
Transformer adalah kelas yang mengimplementasikan fit()
dan transform()
. Anda mungkin akrab dengan beberapa alat praproses sklearn, seperti TfidfVectorizer
dan Binarizer
. Jika Anda melihat dokumen untuk alat praproses ini, Anda akan melihat bahwa mereka menerapkan kedua metode ini. Yang menurut saya cukup keren adalah bahwa beberapa penduga juga dapat digunakan sebagai langkah transformasi, misalnya LinearSVC
!
Estimator adalah kelas yang mengimplementasikan fit()
dan predict()
. Anda akan menemukan bahwa banyak pengklasifikasi dan model regresi menerapkan kedua metode ini, dan dengan demikian Anda dapat dengan mudah menguji banyak model yang berbeda. Dimungkinkan untuk menggunakan transformator lain sebagai penduga akhir (yaitu, tidak harus diimplementasikan predict()
, tetapi pasti mengimplementasikan fit()
). Artinya, Anda tidak dapat menelepon predict()
.
Untuk hasil edit Anda: mari kita lihat contoh berbasis teks. Menggunakan LabelBinarizer, kami ingin mengubah daftar label menjadi daftar nilai biner.
bin = LabelBinarizer() #first we initialize
vec = ['cat', 'dog', 'dog', 'dog'] #we have our label list we want binarized
Sekarang, ketika binarizer dipasang pada beberapa data, ia akan memiliki struktur yang disebut classes_
yang berisi kelas-kelas unik yang 'diketahui' oleh transformator. Tanpa memanggil fit()
binarizer tidak tahu seperti apa datanya, jadi memanggil transform()
tidak akan masuk akal. Ini benar jika Anda mencetak daftar kelas sebelum mencoba menyesuaikan data.
print bin.classes_
Saya mendapatkan kesalahan berikut saat mencoba ini:
AttributeError: 'LabelBinarizer' object has no attribute 'classes_'
Tetapi jika Anda memasang binarizer di file vec
daftar:
bin.fit(vec)
dan coba lagi
print bin.classes_
Saya mendapatkan yang berikut:
['cat' 'dog']
print bin.transform(vec)
Dan sekarang, setelah memanggil transform pada vec
objek, kita mendapatkan yang berikut:
[[0]
[1]
[1]
[1]]
Adapun estimator yang digunakan sebagai transformer, mari kita gunakan DecisionTree
classifier sebagai contoh ekstraktor fitur. Decision Trees bagus untuk banyak alasan, tetapi untuk tujuan kita, yang penting adalah mereka memiliki kemampuan untuk menentukan peringkat fitur yang menurut pohon berguna untuk memprediksi. Saat Anda memanggil transform()
Pohon Keputusan, ia akan mengambil data masukan Anda dan menemukan fitur apa yang menurutnya paling penting. Jadi Anda bisa membayangkannya mengubah matriks data Anda (n baris kali m kolom) menjadi matriks yang lebih kecil (n baris kali k kolom), di mana k kolom adalah k fitur terpenting yang ditemukan Decision Tree.