Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Cs Video Courses | 55,887 | 17 days ago | 16 | |||||||
List of Computer Science courses with video lectures. | ||||||||||
C Plus Plus | 24,540 | a day ago | 34 | mit | C++ | |||||
Collection of various algorithms in mathematics, machine learning, computer science and physics implemented in C++ for educational purposes. | ||||||||||
Awesome Datascience | 21,312 | 3 days ago | mit | |||||||
:memo: An awesome Data Science repository to learn and apply for real world problems. | ||||||||||
Homemade Machine Learning | 21,220 | a month ago | 22 | mit | Jupyter Notebook | |||||
🤖 Python examples of popular machine learning algorithms with interactive Jupyter demos and math being explained | ||||||||||
Wavefunctioncollapse | 20,815 | 3 months ago | 2 | other | C# | |||||
Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics | ||||||||||
C | 16,297 | a day ago | 19 | gpl-3.0 | C | |||||
Collection of various algorithms in mathematics, machine learning, computer science, physics, etc implemented in C for educational purposes. | ||||||||||
Nni | 12,950 | 8 | 22 | a day ago | 51 | June 22, 2022 | 281 | mit | Python | |
An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-parameter tuning. | ||||||||||
Machine Learning Tutorials | 12,876 | 5 months ago | 33 | cc0-1.0 | ||||||
machine learning and deep learning tutorials, articles and other resources | ||||||||||
Halfrost Field | 11,971 | 2 months ago | 6 | cc-by-sa-4.0 | Go | |||||
✍🏻 这里是写博客的地方 —— Halfrost-Field 冰霜之地 | ||||||||||
Numerical Linear Algebra | 9,325 | 2 months ago | 11 | Jupyter Notebook | ||||||
Free online textbook of Jupyter notebooks for fast.ai Computational Linear Algebra course |
Rumale (Ruby machine learning) is a machine learning library in Ruby. Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python. Rumale supports Support Vector Machine, Logistic Regression, Ridge, Lasso, Multi-layer Perceptron, Naive Bayes, Decision Tree, Gradient Tree Boosting, Random Forest, K-Means, Gaussian Mixture Model, DBSCAN, Spectral Clustering, Mutidimensional Scaling, t-SNE, Fisher Discriminant Analysis, Neighbourhood Component Analysis, Principal Component Analysis, Non-negative Matrix Factorization, and many other algorithms.
Add this line to your application's Gemfile:
gem 'rumale'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rumale
Rumale provides function loading libsvm format dataset file. We start by downloading the pendigits dataset from LIBSVM Data web site.
$ wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/pendigits
$ wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/pendigits.t
Training of the classifier with Linear SVM and RBF kernel feature map is the following code.
require 'rumale'
# Load the training dataset.
samples, labels = Rumale::Dataset.load_libsvm_file('pendigits')
# Map training data to RBF kernel feature space.
transformer = Rumale::KernelApproximation::RBF.new(gamma: 0.0001, n_components: 1024, random_seed: 1)
transformed = transformer.fit_transform(samples)
# Train linear SVM classifier.
classifier = Rumale::LinearModel::SVC.new(reg_param: 0.0001)
classifier.fit(transformed, labels)
# Save the model.
File.open('transformer.dat', 'wb') { |f| f.write(Marshal.dump(transformer)) }
File.open('classifier.dat', 'wb') { |f| f.write(Marshal.dump(classifier)) }
Classifying testing data with the trained classifier is the following code.
require 'rumale'
# Load the testing dataset.
samples, labels = Rumale::Dataset.load_libsvm_file('pendigits.t')
# Load the model.
transformer = Marshal.load(File.binread('transformer.dat'))
classifier = Marshal.load(File.binread('classifier.dat'))
# Map testing data to RBF kernel feature space.
transformed = transformer.transform(samples)
# Classify the testing data and evaluate prediction results.
puts("Accuracy: %.1f%%" % (100.0 * classifier.score(transformed, labels)))
# Other evaluating approach
# results = classifier.predict(transformed)
# evaluator = Rumale::EvaluationMeasure::Accuracy.new
# puts("Accuracy: %.1f%%" % (100.0 * evaluator.score(results, labels)))
Execution of the above scripts result in the following.
$ ruby train.rb
$ ruby test.rb
Accuracy: 98.5%
require 'rumale'
# Load dataset.
samples, labels = Rumale::Dataset.load_libsvm_file('pendigits')
# Define the estimator to be evaluated.
lr = Rumale::LinearModel::LogisticRegression.new
# Define the evaluation measure, splitting strategy, and cross validation.
ev = Rumale::EvaluationMeasure::Accuracy.new
kf = Rumale::ModelSelection::StratifiedKFold.new(n_splits: 5, shuffle: true, random_seed: 1)
cv = Rumale::ModelSelection::CrossValidation.new(estimator: lr, splitter: kf, evaluator: ev)
# Perform 5-cross validation.
report = cv.perform(samples, labels)
# Output result.
mean_accuracy = report[:test_score].sum / kf.n_splits
puts "5-CV mean accuracy: %.1f%%" % (100.0 * mean_accuracy)
Execution of the above scripts result in the following.
$ ruby cross_validation.rb
5-CV mean accuracy: 95.5%
Rumale uses Numo::NArray for typed arrays. Loading the Numo::Linalg allows to perform matrix and vector product of Numo::NArray using BLAS libraries. Some machine learning algorithms frequently compute matrix and vector products, the execution speed of such algorithms can be expected to be accelerated.
Install Numo::Linalg gem.
$ gem install numo-linalg
In ruby script, just load Numo::Linalg along with Rumale.
require 'numo/linalg/autoloader'
require 'rumale'
Numo::OpenBLAS downloads and builds OpenBLAS during installation and uses that as a background library for Numo::Linalg.
Install compilers for building OpenBLAS.
$ sudo apt-get install gcc gfortran make
Install Numo::OpenBLAS gem.
$ gem install numo-openblas
Load Numo::OpenBLAS gem instead of Numo::Linalg.
require 'numo/openblas'
require 'rumale'
Numo::BLIS downloads and builds BLIS during installation and uses that as a background library for Numo::Linalg. BLIS is one of the high-performance BLAS as with OpenBLAS, and using that can be expected to speed up of processing in Rumale.
Install Numo::BLIS gem.
$ gem install numo-blis
Load Numo::BLIS gem instead of Numo::Linalg.
require 'numo/blis'
require 'rumale'
Several estimators in Rumale support parallel processing. Parallel processing in Rumale is realized by Parallel gem, so install and load it.
$ gem install parallel
require 'parallel'
require 'rumale'
Estimators that support parallel processing have n_jobs parameter. When -1 is given to n_jobs parameter, all processors are used.
estimator = Rumale::Ensemble::RandomForestClassifier.new(n_jobs: -1, random_seed: 1)
The gem is available as open source under the terms of the BSD-3-Clause License.