LightGBM alternatives and similar gems
Based on the "Machine Learning" category
-
rb-libsvm
Ruby language bindings for LIBSVM. SVM is a machine learning and classification algorithm. -
PredictionIO Ruby SDK
The PredictionIO Ruby SDK provides a convenient API to quickly record your users' behavior and retrieve personalized predictions for them. -
Ruby Linear Regression
Linear regression implemented in Ruby. -
Ruby Datumbox Wrapper
It's a simple Ruby Datumbox Wrapper. At the moment the API currently allows you to build applications that make use of machine learning algorithms.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of LightGBM or a related project?
README
LightGBM
LightGBM - the high performance machine learning library - for Ruby
:fire: Uses the C API for blazing performance
Installation
Add this line to your application’s Gemfile:
gem 'lightgbm'
On Mac, also install OpenMP:
brew install libomp
Getting Started
This library follows the Python API. A few differences are:
- The
get_
andset_
prefixes are removed from methods - The default verbosity is
-1
- With the
cv
method,stratified
is set tofalse
Some methods and options are also missing at the moment. PRs welcome!
Training API
Prep your data
x = [[1, 2], [3, 4], [5, 6], [7, 8]]
y = [1, 2, 3, 4]
Train a model
params = {objective: "regression"}
train_set = LightGBM::Dataset.new(x, label: y)
booster = LightGBM.train(params, train_set)
Predict
booster.predict(x)
Save the model to a file
booster.save_model("model.txt")
Load the model from a file
booster = LightGBM::Booster.new(model_file: "model.txt")
Get the importance of features
booster.feature_importance
Early stopping
LightGBM.train(params, train_set, valid_sets: [train_set, test_set], early_stopping_rounds: 5)
CV
LightGBM.cv(params, train_set, nfold: 5, verbose_eval: true)
Scikit-Learn API
Prep your data
x = [[1, 2], [3, 4], [5, 6], [7, 8]]
y = [1, 2, 3, 4]
Train a model
model = LightGBM::Regressor.new
model.fit(x, y)
For classification, use
LightGBM::Classifier
Predict
model.predict(x)
For classification, use
predict_proba
for probabilities
Save the model to a file
model.save_model("model.txt")
Load the model from a file
model.load_model("model.txt")
Get the importance of features
model.feature_importances
Early stopping
model.fit(x, y, eval_set: [[x_test, y_test]], early_stopping_rounds: 5)
Data
Data can be an array of arrays
[[1, 2, 3], [4, 5, 6]]
Or a Daru data frame
Daru::DataFrame.from_csv("houses.csv")
Or a Numo NArray
Numo::DFloat.new(3, 2).seq
Helpful Resources
Related Projects
Credits
Thanks to the xgboost gem for serving as an initial reference.
History
View the changelog
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development:
git clone https://github.com/ankane/lightgbm.git
cd lightgbm
bundle install
bundle exec rake vendor:all
bundle exec rake test