Baru-baru ini, bahasa Scala telah banyak digunakan oleh Ilmu Data. Ini mendapatkan popularitas terutama karena munculnya Spark, yang ditulis dalam Scala. Dalam praktiknya, seringkali pada tahap penelitian, analisis dan pembuatan model dilakukan dengan Python dan kemudian diimplementasikan dalam Scala, karena bahasa ini lebih cocok untuk produksi.
Kami telah menyiapkan tinjauan mendetail tentang perpustakaan paling menarik yang digunakan untuk mengimplementasikan pembelajaran mesin dan tugas ilmu data di Scala. Beberapa dari mereka digunakan dalam program pendidikan kami " Analisis Data pada Scala ".
Untuk kenyamanan, semua perpustakaan yang disajikan dalam peringkat dibagi menjadi 5 kelompok: analisis data dan matematika, NLP, visualisasi, pembelajaran mesin, dan banyak lagi.
Analisis Data dan Matematika
1 Breeze (Berkomitmen: 3316, Kontributor: 84)
Perpustakaan Breeze dikenal sebagai perpustakaan sains utama untuk Scala. Ini memiliki hal serupa dari MATLAB (dalam hal struktur data), dan dari Python, kelas NumPy. Breeze menyediakan manipulasi array data yang cepat dan efisien dan memungkinkan Anda untuk melakukan banyak operasi lainnya, termasuk yang berikut:
- Operasi matriks dan vektor untuk membuat, mentransposisi, melakukan operasi elemen-bijaksana, inversi, menghitung determinan, dan banyak hal lainnya.
- Fungsi probabilitas dan statistik: dari distribusi statistik dan perhitungan statistik deskriptif (seperti rata-rata, varian, dan deviasi standar) hingga model rantai Markov. Paket utama untuk statistik adalah breeze.stats dan breeze.stats.distribution.
- Optimasi, yang melibatkan pemeriksaan fungsi untuk minimum lokal atau global. Metode optimasi disimpan dalam paket breeze.optimize.
- Aljabar Linier: Semua operasi dasar didasarkan pada perpustakaan netlib-java, membuat Breeze sangat cepat untuk komputasi aljabar.
- Operasi pemrosesan sinyal. Contoh operasi semacam itu di Breeze adalah konvolusi dan transformasi Fourier, yang membagi fungsi ini menjadi jumlah komponen sinus dan kosinus.
Perlu dicatat bahwa Breeze juga memungkinkan Anda membuat grafik, tetapi kita akan membicarakannya nanti.
2 Saddle (Komit: 184, Kontributor: 10)
Alat data lain untuk Scala adalah Saddle. Ini adalah analog Pandas dengan Python, tetapi hanya untuk Scala. Seperti bingkai data dalam Pandas atau R, Saddle didasarkan pada struktur bingkai (matriks dua dimensi yang diindeks).
Ada lima struktur data dasar secara total, yaitu:
Bingkai (matriks yang diindeks 2D)

- Indeks (sebagai hashmap)

Kelas Vec dan Mat terletak di Seri dan Bingkai. Anda dapat melakukan berbagai manipulasi dengan struktur data ini dan menggunakannya untuk analisis data dasar. Fitur hebat lainnya dari Saddle adalah ketahanannya terhadap kesenjangan data.
Nomor 3 ScalaLab (Berkomitmen: 23, Kontributor: 1)
ScalaLab adalah sejenis MATLAB di Scala. Selain itu, ScalaLab dapat langsung memanggil dan mengakses hasil skrip MATLAB.
Perbedaan utama dari pustaka komputasi sebelumnya adalah ScalaLab menggunakan bahasa spesifik domainnya sendiri yang disebut ScalaSci. Scalalab nyaman karena mengakses banyak perpustakaan ilmiah Java dan Scala, sehingga Anda dapat dengan mudah mengimpor data Anda dan kemudian menggunakan berbagai metode untuk melakukan manipulasi dan perhitungan. Kebanyakan hal mirip dengan Breeze dan Saddle. Selain itu, seperti di Breeze, ada bagan yang memungkinkan Anda untuk menginterpretasikan data lebih lanjut.
Nlp
Nomor 4 Epik (Komit: 1790, Kontributor: 15) dan Puck (Komit: 536, Kontributor: 1)
Scala memiliki beberapa perpustakaan pemrosesan bahasa alami yang baik sebagai bagian dari ScalaNLP, termasuk Epic dan Puck. Perpustakaan ini terutama digunakan sebagai alat analisis teks. Pada saat yang sama, Puck lebih nyaman jika Anda perlu menganalisis ribuan penawaran karena kecepatan tinggi dan penggunaan GPU. Epic juga dikenal sebagai kerangka peramalan yang menggunakan peramalan terstruktur untuk membangun sistem yang kompleks.
Visualisasi
No. 5. Breeze-viz (Komit: 29, Kontributor: 3)
Seperti namanya, Breeze-viz adalah perpustakaan visualisasi yang dikembangkan oleh Breeze for Scala. Ini didasarkan pada JFreeChart library Java yang terkenal dan charting agak mirip dengan MATLAB. Meskipun Breeze-viz memiliki fitur yang jauh lebih sedikit daripada MATLAB, matplotlib dalam Python atau R, namun demikian bermanfaat dalam menciptakan model dan menganalisis data.

No. 6. Vegas (Berkomitmen: 210, Kontributor: 14)
Pustaka visualisasi data Scala lainnya adalah Vegas. Ini jauh lebih fungsional daripada Breeze-yaitu, dan memungkinkan Anda untuk membuat beberapa transformasi yang berguna untuk grafik: pemfilteran, transformasi, dan agregasi. Secara umum, perpustakaan mirip dengan Bokeh dan Plotly dalam Python.
Vegas memungkinkan Anda untuk menulis kode dalam gaya deklaratif, yang memungkinkan untuk fokus terutama pada penentuan apa yang perlu dilakukan dengan data dan melakukan analisis visualisasi lebih lanjut tanpa khawatir tentang penerapan kode.

Pembelajaran mesin
Nomor 7 Senyum (Berkomitmen: 1019, Kontributor: 21)
Mesin Statistik Intelijen dan Pembelajaran Mesin, atau hanya Senyum, adalah perpustakaan pembelajaran mesin modern yang menjanjikan, agak mirip dengan scikit-belajar dengan Python. Ini dikembangkan di Jawa, tetapi juga memiliki API untuk Scala. Perpustakaannya cukup cepat dan produktif: penggunaan memori yang efisien, sejumlah besar algoritma pembelajaran mesin untuk klasifikasi, regresi, NNS, pemilihan fungsi, dll.


Nomor 8 Spark ML
Perpustakaan pembelajaran mesin yang bekerja di luar kotak di Apache Spark. Spark sendiri ditulis dalam Scala dan memiliki API yang sesuai untuk semua perpustakaannya.
Spark ML - tidak seperti Spark MLlib (perpustakaan yang lebih tua), Spark berfungsi dengan bingkai data. Ini juga memungkinkan untuk membangun jaringan pipa berbagai transformasi pada data Anda. Ini dapat dianggap sebagai urutan tahapan, di mana setiap tahap adalah Transformer yang mengubah satu frame data ke yang lain, atau Estimator, misalnya, algoritma pembelajaran mesin yang dilatih pada frame data.
No. 9. DeepLearning.scala (Berkomitmen: 1647, Kontributor: 14)
DeepLearning.scala adalah alat pembelajaran mesin alternatif yang memungkinkan Anda untuk membangun model pembelajaran yang mendalam. Perpustakaan menggunakan rumus matematika untuk membuat jaringan saraf dinamis yang kompleks melalui kombinasi pemrograman berorientasi objek dan fungsional. Ini menggunakan berbagai jenis, serta kelas jenis aplikatif. Yang terakhir memungkinkan Anda untuk memulai beberapa perhitungan sekaligus, yang meningkatkan produktivitas.
No. 10. Summing Bird (Berkomitmen: 1772, Kontributor: 31)
Summingbird adalah kerangka kerja pemrosesan data yang memungkinkan penggunaan batch dan perhitungan MapReduce real-time. Katalis utama untuk pengembangan bahasa adalah pengembang Twitter, yang sering menulis kode yang sama dua kali: pertama untuk pemrosesan batch, kemudian lagi untuk streaming.
Summingbird menggunakan dan menghasilkan dua jenis data: stream (urutan tak terbatas tupel) dan snapshot, yang pada titik waktu tertentu dianggap sebagai keadaan lengkap dari kumpulan data. Akhirnya, Summingbird menyediakan platform untuk Storm, Scalding, dan mesin memori untuk tujuan pengujian.
No. 11. PredictionIO (Berkomitmen: 4343, Kontributor: 125)
Perlu juga disebutkan layanan pembelajaran mesin untuk membuat dan menggunakan mekanisme prediktif yang disebut PredictionIO. Itu dibangun di atas Apache Spark MLlib dan HBase dan bahkan telah dinilai di Github sebagai produk pembelajaran mesin paling populer berdasarkan Apache Spark. Ini memungkinkan Anda untuk dengan mudah, efisien membuat, mengevaluasi, dan menyebarkan layanan, menerapkan model pembelajaran mesin Anda sendiri dan memasukkannya ke dalam layanan Anda.
Lainnya
No. 12. Akka (Berkomitmen: 21430, Kontributor: 467)
Dikembangkan oleh Scala, Akka adalah lingkungan paralel untuk membangun aplikasi JVM terdistribusi. Ini menggunakan model berbasis aktor, di mana aktor adalah objek yang menerima pesan dan melakukan tindakan yang sesuai.
Perbedaan utama adalah lapisan tambahan antara aktor dan kerangka kerja, yang hanya membutuhkan aktor untuk memproses pesan, sedangkan kerangka kerja mengurus hal-hal lain. Semua aktor diatur secara hierarkis, ini membantu para aktor berinteraksi lebih efektif satu sama lain dan memecahkan masalah yang rumit, membaginya menjadi tugas-tugas yang lebih kecil.
13 Slick (Komit: 1940, Kontributor: 92)
Perpustakaan terbaru adalah Slick, yang berarti Kit Koneksi Terpadu Bahasa Scala. Ini adalah pustaka untuk membuat dan mengeksekusi query database: H2, MySQL, PostgreSQL, dll. Beberapa database tersedia melalui ekstensi-slick.
Untuk membuat kueri, Slick menyediakan DSL yang kuat yang membuat kode seolah-olah Anda menggunakan koleksi Scala. Slick mendukung query SQL sederhana dan gabungan beberapa tabel yang sangat diketik. Selain itu, subkueri sederhana dapat digunakan untuk membuat yang lebih kompleks.
Kesimpulan
Dalam artikel ini, kami telah mengidentifikasi dan menjelaskan secara singkat beberapa perpustakaan Scala yang dapat sangat berguna dalam melakukan tugas-tugas pemrosesan data dasar.
Jika Anda memiliki pengalaman bekerja dengan perpustakaan atau platform Scala berguna lainnya yang layak ditambahkan ke daftar ini, jangan ragu untuk membagikannya di komentar.