Smile is a fast and comprehensive machine learning engine.
Smile now seems to be the go-to general-purpose machine learning library for those working in the Java and Scala worlds — a JVM Scikit-learn, if you will. I would actually find it hard to believe that you are working in that ecosystem and are unaware of the project.
- KDnuggets
Smile gives you a broad range of algorithms out of the box, ranging from simple functions like classification and regression to sophisticated offerings like natural language processing. And all you need is Java, or any JVM language.
- InfoWorld
Smile will amaze you with fast and extensive applications, efficient memory usage and a large set of machine learning algorithms for Classification, Regression, Nearest Neighbor Search, Feature Selection, etc.
- ActiveWizards
To say that I am satisfied with SMILE would be an understatement. It's truly one of the hidden gems in the Java framework ecosystem today.
- Patrick Martin, Principal Architect at Citi
LinkedIn used Smile to train its workforce on machine learning for its AI Academy. Smile was chosen because it's a Java library with a friendly open source license and supports a wide range of common algorithms.
- Ben McCann, Head of Hire Matching at LinkedIn
We leverage Smile's impressive capability in various machine learning tasks: feature engineering, modeling, visualization, benchmark test, etc. Thanks Smile and strongly recommend it to every engineer who is interested in machine learning.
- Ray Ma, Technology Manager at moKredit
SMILE is a great Java library for a wide range of AI tasks. Building bespoke methods atop SMILE run considerably faster than implementations in other languages more associated with data science.
- Shantanu Lodh, Senior Data Scientist at Hidden Depth AI, UK
Speed
With advanced data structures and algorithms, Smile delivers the state-of-art performance.
Compared to this third-party benchmark, Smile outperforms R, Python, Spark, H2O, xgboost significantly. Smile is several times faster than the closest competitor. The memory usage is also very efficient. If we can train advanced machine learning models on a PC, why buy a cluster?
Ease of Use
Write applications quickly in Java, Scala, or any JVM languages. Data scientists and developers can speak the same language now!
Smile provides hundreds advanced algorithms with clean interface. Scala/Kotlin API also offers high-level operators that make it easy to build machine learning apps. And you can use it interactively from the shell, embedded in Scala.
var iris = Read.arff("iris.arff");
var model = RandomForest.fit(Formula.lhs("class"), iris);
println(model.metrics());
val iris = read.arff("iris.arff")
val model = randomForest("class" ~, iris)
println(model.metrics)
val iris = read.arff("iris.arff")
val model = randomForest(Formula.lhs("class"), iris)
println(model.metrics())
(let [iris (read-arff
"data/weka/iris.arff")
model (random-forest
(Formula/lhs "class") iris)]
(.metrics model))
var iris = Read.arff("iris.arff")
var model = RandomForest.fit(Formula.lhs("class"), iris)
println model.metrics()
Comprehensive
The most complete machine learning engine. Smile covers every aspect of machine learning.
LLM, computer vision, deep learning, classification, regression, clustering, association rule mining, feature selection, manifold learning, multidimensional scaling, genetic algorithm, missing value imputation, efficient nearest neighbor search, etc. See the sidebar for a list of available algorithms.
Natural Language Processing
Understanding human language, and the intent behind our words.
GenAI with Llama 3 on JVM (more coming). Smile also includes many classic NLP algorithms such as tokenizers, stemming, word2vec, phrase detection, part-of-speech tagging, keyword extraction, named entity recognition, sentiment analysis, relevance ranking, taxomony, etc.
Mathematics and Statistics
Hidden gems in Smile.
From special functions, linear algebra, to random number generators, statistical distributions and hypothesis tests, Smile provides an advanced numerical computing environment. In additions, graph, wavlets, and a variety of interpolation algorithms are implemented. Smile even includes a computer algerbra system.
var A = Matrix.randn(3, 3);
double[] x = {1.0, 2.0, 3.0};
var lu = A.lu();
lu.solve(x);
lu.inverse().mm(A);
int[] bins1 = {8, 13, 16, 10, 3};
int[] bins2 = {4, 9, 14, 16, 7};
Hypothesis.chisq.test(bins1, bins2);
val x = Var("x")
val y = Var("y")
val e = x**2 + y**3 + x**2 * cot(y**3)
val dx = e.d(x)
println(dx)
Data Visualization
Interactive 2D/3D math plot.
Scatter plot, line plot, staircase plot, bar plot, box plot, heatmap, hexmap, histogram, qq plot, surface, grid, contour, dendrogram, sparse matrix visualization, wireframe, etc. Smile also supports declarative data visualization that compiles to Vega-Lite.