Saya mempertimbangkan untuk menggunakan pustaka Python untuk melakukan eksperimen Machine Learning saya. Sejauh ini, saya mengandalkan WEKA, tetapi secara keseluruhan tidak puas. Ini terutama karena saya menemukan WEKA tidak begitu didukung (sangat sedikit contoh, dokumentasi jarang dan dukungan masyarakat kurang dari yang diinginkan dalam pengalaman saya), dan telah menemukan diri saya dalam situasi yang sulit tanpa bantuan yang akan datang. Alasan lain saya merenungkan langkah ini adalah karena saya benar-benar menyukai Python (saya baru mengenal Python), dan tidak ingin kembali ke pengkodean di Jawa.
Jadi pertanyaan saya adalah, apa lagi
- luas
- scalable (fitur 100k, contoh 10k) dan
- perpustakaan yang didukung dengan baik untuk melakukan ML dengan Python di luar sana?
Saya sangat tertarik melakukan klasifikasi teks, dan ingin menggunakan perpustakaan yang memiliki koleksi pengklasifikasi yang baik, metode pemilihan fitur (Penguatan Informasi, Chi-Sqaured, dll.), Dan kemampuan pra-pemrosesan teks (membendung, menghentikan penghentian kata-kata) , tf-idf dll.).
Berdasarkan utas email sebelumnya di sini dan di tempat lain, saya telah melihat PyML, scikits-learn dan Orange sejauh ini. Bagaimana pengalaman orang-orang sehubungan dengan 3 metrik di atas yang saya sebutkan?
Ada saran lain?
sumber
Jawaban:
Tentang opsi scikit-learn: fitur 100k (jarang) dan sampel 10k cukup kecil untuk ditampung dalam memori sehingga dapat dilakukan dengan scikit-learning (ukuran yang sama dengan 20 newsgroup dataset).
Berikut ini adalah tutorial yang saya berikan di PyCon 2011 dengan bab tentang klasifikasi teks dengan latihan dan solusi:
http://scikit-learn.github.com/scikit-learn-tutorial/ (versi HTML online)
https://github.com/downloads/scikit-learn/scikit-learn-tutorial/scikit_learn_tutorial.pdf (versi PDF)
https://github.com/scikit-learn/scikit-learn-tutorial (kode sumber + latihan)
Saya juga memberi ceramah tentang topik yang merupakan versi terbaru dari versi yang saya berikan di PyCon FR. Berikut ini slide (dan video yang disematkan di komentar):
Adapun pemilihan fitur, lihat jawaban ini pada quora di mana semua contoh didasarkan pada dokumentasi scikit-learn:
Kami belum memiliki ekstraksi fitur kolokasi di scikit-learn. Gunakan nltk dan nltk-trainer untuk melakukan ini dalam waktu yang bersamaan:
sumber
Dalam hal bekerja dengan teks, lihat NLTK. Sangat, sangat baik didukung & didokumentasikan (bahkan ada buku online, atau di kertas jika Anda suka) dan akan melakukan preprocesing yang Anda butuhkan. Anda mungkin menemukan Gensim juga berguna; penekanannya adalah pada pemodelan ruang vektor dan itu punya implementasi scalable LSI dan LDA (pLSI juga saya pikir) jika itu menarik. Ini juga akan melakukan seleksi oleh tf-idf - Saya tidak yakin NLTK melakukannya. Saya telah menggunakan potongan-potongan ini pada korpora ~ 50k tanpa banyak kesulitan.
NLTK: http://www.nltk.org/
Gensim: http://nlp.fi.muni.cz/projekty/gensim/
Sayangnya, mengenai dorongan utama pertanyaan Anda, saya tidak terbiasa dengan perpustakaan tertentu yang Anda referensi (walaupun saya telah menggunakan bit scikits-pelajari sebelumnya).
sumber
Python memiliki berbagai pustaka ML (lihat juga mloss.org). Namun, saya selalu merasa bahwa itu lebih berguna untuk para peneliti ml daripada untuk praktisi ml.
Numpy / SciPy dan matplotlib adalah alat yang sangat baik untuk karya ilmiah dengan Python. Jika Anda tidak takut meretas sebagian besar rumus matematika sendiri, Anda tidak akan kecewa. Juga, sangat mudah untuk menggunakan GPU dengan eksperimen cudamat atau gnumpy - yang memakan waktu berhari-hari sebelumnya sekarang diselesaikan dalam hitungan jam atau bahkan menit.
Bocah terbaru di blok itu mungkin Theano . Ini adalah bahasa simbolis untuk ekspresi matematis yang hadir dengan opmitimzations, implementasi GPU, dan diferensiasi otomatis fitur-über yang tidak kalah mengagumkan untuk metode berbasis gradien.
Juga, sejauh yang saya tahu NLTK yang disebutkan oleh JMS pada dasarnya adalah perpustakaan bahasa alami open source nomor satu di luar sana.
Python adalah alat yang tepat untuk pembelajaran mesin.
sumber
Izinkan saya menyarankan Oranye
Iya
Iya
Iya
Semua ini bekerja di luar kotak di Orange
Saya belum pernah menggunakan Orange untuk pemrosesan teks
sumber
Tidak yakin apakah ini sangat berguna, tetapi ada panduan bagi programmer untuk mempelajari statistik dengan Python yang tersedia online. http://www.greenteapress.com/thinkstats/
Tampaknya cukup bagus dari pemindaian singkat saya, dan tampaknya berbicara tentang beberapa metode pembelajaran mesin, jadi ini mungkin tempat yang baik untuk memulai.
sumber
Lihat libsvm .
sumber
SHOGUN ( 将軍 ) adalah kotak peralatan pembelajaran mesin skala besar, yang tampaknya menjanjikan.
sumber
open source perpustakaan python ml PySpark MLlib https://spark.apache.org/docs/0.9.0/mllib-guide.html
pustaka ml eksklusif dengan percobaan gratis GraphLab Buat https://dato.com/products/create/
sumber
Sebagai @ogrisel disorot, scikit-learn adalah salah satu paket pembelajaran mesin terbaik di luar sana untuk Python. Ini sangat cocok untuk set data sekecil 100k (jarang) fitur dan sampel 10k, dan bahkan untuk set data yang sedikit lebih besar yang mungkin berisi lebih dari 200k baris. Pada dasarnya, setiap dataset yang sesuai dengan memori.
Tapi, jika Anda mencari kerangka kerja Pembelajaran Mesin Python yang sangat scalable, saya sangat merekomendasikan Pyspark MLlib. Karena dataset hari ini dapat tumbuh besar secara eksponensial (mengingat data besar dan gelombang pembelajaran yang dalam), Anda akan sering membutuhkan platform yang dapat menskala dengan baik dan berjalan cepat tidak hanya pada fase pelatihan model, tetapi juga selama fase rekayasa fitur (transformasi fitur) , pemilihan fitur). Mari kita lihat ketiga metrik untuk platform Spark Mllib yang Anda minati:
Skalabilitas: Jika dataset Anda dapat ditampung dalam memori, scikit-learn harus menjadi pilihan Anda. Jika terlalu besar untuk muat di memori, Spark adalah cara untuk pergi. Yang penting untuk dicatat di sini adalah bahwa Spark bekerja lebih cepat hanya dalam pengaturan terdistribusi.
Kelengkapan : Sklearn jauh lebih kaya dalam hal implementasi yang layak dari sejumlah besar algoritma yang umum digunakan dibandingkan dengan spark mllib. Dukungan untuk manipulasi dan transformasi data juga lebih kaya dalam scikit-belajar. Spark Mllib memiliki modul transformasi data yang memadai yang melakukan trik sebagian besar kali. Jadi, jika Anda berakhir dengan spark mllib untuk masalah skalabilitas, Anda masih bisa menyelesaikan pekerjaan. Ia memiliki semua dukungan untuk analisis korelasi, ekstraksi fitur (tf-idf, word2vec, CountVectorizer), transformasi fitur (Tokenizer, StopWordsRemover, nn-gram, Binarizer, PCA dll). Untuk daftar terperinci, lihat tautan di bawah ini:
Mengekstrak, mengubah, dan memilih fitur di Spark mllib
Klasifikasi dan regresi Mllib
Bonus: Apache Spark memiliki dukungan untuk Python, R, Java, dan Scala. Jadi, jika besok Anda memutuskan untuk bereksperimen dengan bahasa yang berbeda (sebagai pilihan pribadi atau karena alasan profesional), Anda tidak perlu mempelajari kerangka kerja yang sama sekali baru.
sumber
Saya tidak tahu apakah Anda masih mencari saran (Anda mengajukan pertanyaan ini 5 bulan yang lalu ...). Saya baru saja memulai buku ini dan sejauh ini cukup baik:
https://www.amazon.com.mx/dp/1491962291/ref=cm_cr_ryp_prd_ttl_sol_3
Penulis menunjukkan kode, contoh, dan menjelaskan beberapa teori dan matematika "di balik layar" algoritma ML. Saya menemukan ini sangat instruktif. Semoga ini bisa sama untuk Anda.
sumber