ML++
Pembelajaran mesin adalah disiplin ilmu yang luas dan menarik, menarik perhatian para pakar di berbagai bidang. Sayangnya, bagi pemrogram dan penggemar C++, tampaknya dukungan di bidang pembelajaran mesin masih kurang. Untuk mengisi kekosongan tersebut dan memberikan C++ pijakan yang sebenarnya di bidang ML, perpustakaan ini ditulis. Tujuan dari perpustakaan ini adalah untuk bertindak sebagai persimpangan antara pengembang tingkat rendah dan insinyur pembelajaran mesin.

Instalasi
Mulailah dengan mengunduh file header untuk perpustakaan ML++. Anda dapat melakukan ini dengan mengkloning repositori dan mengekstrak direktori MLPP di dalamnya:
git clone https://github.com/novak-99/MLPP
Selanjutnya, jalankan skrip shell "buildSO.sh":
Setelah melakukannya, pertahankan file sumber ML++ di direktori lokal dan sertakan dengan cara ini:
# include " MLPP/Stat/Stat.hpp " // Including the ML++ statistics module.
int main (){
...
}
Terakhir, setelah Anda menyelesaikan pembuatan proyek, kompilasi menggunakan g++:
g++ main.cpp /usr/local/lib/MLPP.so --std=c++17
Penggunaan
Harap dicatat bahwa ML++ menggunakan tipe data std::vector<double>
untuk meniru vektor, dan tipe data std::vector<std::vector<double>>
untuk meniru matriks.
Mulailah dengan memasukkan file header pilihan Anda.
# include " MLPP/LinReg/LinReg.hpp "
Selanjutnya, buat instance objek kelas. Jangan lupa untuk meneruskan set input dan set output sebagai parameter.
LinReg model (inputSet, outputSet);
Setelah itu, panggil pengoptimal yang ingin Anda gunakan. Untuk pengoptimal berulang seperti penurunan gradien, sertakan kecepatan pembelajaran, nomor periode, dan apakah akan menggunakan panel UI atau tidak.
model.gradientDescent( 0.001 , 1000 , 0 );
Bagus, Anda sekarang siap untuk menguji! Untuk menguji instance pengujian tunggal, gunakan fungsi berikut:
model.modelTest(testSetInstance);
Ini akan mengembalikan prediksi tunggal model untuk contoh tersebut.
Untuk menguji seluruh set pengujian, gunakan fungsi berikut:
model.modelSetTest(testSet);
Hasilnya adalah prediksi model untuk keseluruhan dataset.
Isi Perpustakaan
- Regresi
- Regresi Linier
- Regresi Logistik
- Regresi Softmax
- Regresi Eksponensial
- Regresi Probit
- Regresi CLogLog
- Regresi Tanh
- Jaringan Neural yang Dalam dan Berukuran Dinamis
- Kemungkinan Fungsi Aktivasi
- Linier
- Sigmoid
- Softmax
- Desir
- Mis
- KarenaC
- Softplus
- tanda lunak
- log log
- Logat
- CDF Gaussian
- RELU
- GELU
- Tanda
- Langkah Satuan
- Sinh
- Tongkat pendek
- Tanh
- Csch
- Sech
- Coth
- Arsinh
- Arcosh
- Artanh
- Arcsch
- Arsech
- Arkot
- Algoritma Optimasi yang Mungkin
- Penurunan Gradien Batch
- Penurunan Gradien Batch Mini
- Penurunan Gradien Stokastik
- Penurunan Gradien dengan Momentum
- Gradien yang Dipercepat Nesterov
- Pengoptimal Adagrad
- Pengoptimal Adadelta
- Pengoptimal Adam
- Pengoptimal Adamax
- Pengoptimal Nadam
- Pengoptimal AMSGrad
- Pengoptimal Newton-Raphson Orde ke-2*
- Persamaan Biasa*
*Hanya tersedia untuk regresi linier - Fungsi Kerugian yang Mungkin
- UMK
- RMSE
- MAE
- MBE
- Kerugian Log
- Entropi Silang
- Kerugian Engsel
- Kerugian Wasserstein
- Kemungkinan Metode Regularisasi
- Laso
- Punggung bukit
- Jaringan elastis
- Kliping Berat
- Kemungkinan Metode Inisialisasi Bobot
- Seragam
- Xavier Biasa
- Seragam Xavier
- Dia Biasa saja
- Dia Seragam
- LeCun Normal
- Seragam LeCun
- Kemungkinan Penjadwal Kecepatan Pembelajaran
- Berdasarkan Waktu
- Berbasis Zaman
- Berbasis Langkah
- Eksponensial
- Jaringan Neural Bawaan
- Peceptron Berlapis-lapis
- Pembuat enkode otomatis
- Jaringan Softmax
- Pemodelan Generatif
- Jaringan Adversarial Generatif Tabular
- Jaringan Permusuhan Generatif Tabular Wasserstein
- Pemrosesan Bahasa Alami
- Word2Vec (Kantong Kata Berkelanjutan, Lewati-Gram)
- Berasal
- Kantong Kata-kata
- TFIDF
- Tokenisasi
- Fungsi Pemrosesan Teks Tambahan
- Visi Komputer
- Operasi Konvolusi
- Maks, Min, Penggabungan Rata-rata
- Maks Global, Min, Penggabungan Rata-rata
- Detektor Fitur Bawaan
- Filter Prewitt Horisontal/Vertikal
- Filter Sobel Horisontal/Vertikal
- Filter Scharr Horisontal/Vertikal
- Filter Roberts Horisontal/Vertikal
- Filter Gaussian
- Detektor Sudut Harris
- Analisis Komponen Utama
- Pengklasifikasi Naive Bayes
- Bayes Naif Multinomial
- Bernoulli Naif Bayes
- Gaussian Naif Bayes
- Klasifikasi Vektor Pendukung
- Formulasi Primal (Tujuan Kerugian Engsel)
- Formulasi Ganda (Melalui Pengganda Lagrangian)
- K-Berarti
- k-Tetangga Terdekat
- Pencari Pencilan (Menggunakan skor-z)
- Dekomposisi Matriks
- Dekomposisi SVD
- Dekomposisi Cholesky
- Pemeriksa Kepastian Positif
- Dekomposisi QR
- Analisis Numerik
- Diferensiasi Numerik
- Fungsi Univariat
- Fungsi Multivariat
- Kalkulator Vektor Jacobian
- Kalkulator Matriks Goni
- Perkiraan fungsi
- Perkiraan Konstan
- Pendekatan Linier
- Pendekatan Kuadrat
- Pendekatan Kubik
- Pemecah Persamaan Diferensial
- Metode Euler
- Metode Pertumbuhan
- Transformasi Matematika
- Transformasi Kosinus Diskrit
- Modul Aljabar Linier
- Modul Statistik
- Modul Pengolahan Data
- Mengatur dan Mencetak Kumpulan Data
- Kumpulan Data yang Tersedia
- Kumpulan Data Kanker Payudara Wisconsin
- Kumpulan Data MNIST
- Kumpulan Data Bunga Iris
- Kumpulan Data Anggur
- Kumpulan Data Perumahan California
- Kumpulan Data Kebakaran dan Kejahatan (Chicago)
- Penskalaan Fitur
- Berarti Normalisasi
- Satu Representasi Menarik
- Membalikkan Satu Representasi Panas
- Konversi Ruang Warna yang Didukung
- RGB ke Skala Abu-abu
- RGB ke HSV
- RGB ke YCbCr
- RGB ke XYZ
- XYZ ke RGB
- Utilitas
- Fungsi TP, FP, TN, FN
- Presisi
- Mengingat
- Ketepatan
- skor F1
Apa yang ada di Karya?
ML++, seperti kebanyakan framework lainnya, bersifat dinamis dan terus berubah. Hal ini sangat penting dalam dunia ML, karena algoritma dan teknik baru terus dikembangkan dari hari ke hari. Berikut beberapa hal yang sedang dikembangkan untuk ML++:
- Jaringan Syaraf Konvolusional
- Kernel untuk SVM
- Mendukung Regresi Vektor
Kutipan
Berbagai materi berbeda membantu saya dalam pembuatan ML++, dan saya ingin memberikan penghargaan kepada beberapa di antaranya di sini. Artikel dari TutorialsPoint ini sangat membantu ketika mencoba mengimplementasikan determinan sebuah matriks, dan artikel dari GeeksForGeeks ini sangat membantu ketika mencoba mengambil adjoint dan invers dari sebuah matriks.