About this project

SMILE (Statistical Machine Intelligence & Learning Engine) is a machine learning framework for the JVM, with idiomatic APIs for Java, Scala and Kotlin. Version 5+ requires Java 25, v4.x requires Java 21, and earlier versions require Java 8. It is organized into modules: base (data structures, math, linear algebra, statistics, I/O), core (ML algorithms), deep (deep learning and LLMs), nlp, plot, serve, studio, scala, kotlin, json and spark. Core capabilities include classification (SVM, decision trees, random forest, AdaBoost, gradient boosting, logistic regression, neural networks, RBF networks, MaxEnt, KNN, Naive Bayes, LDA/QDA/RDA), regression (SVR, Gaussian process, regression trees, GBDT, random forest, RBF, OLS, LASSO, ElasticNet, Ridge), clustering (BIRCH, CLARANS, DBSCAN, DENCLUE, deterministic annealing, K-Means, X-Means, G-Means, neural gas, hierarchical, SOM, spectral, min-entropy), manifold learning (IsoMap, LLE, Laplacian eigenmap, t-SNE, UMAP, PCA, kernel PCA, random projection, ICA), feature engineering (genetic algorithm selection, ensemble selection, TreeSHAP, transformations, formula API), NLP (tokenization, bigram tests, phrase and keyword extraction, stemming, POS tagging, relevance ranking), association rule mining via FP-growth, sequence learning (HMM, CRF), nearest-neighbor structures (BK-tree, cover tree, KD-tree, SimHash, LSH), numerical methods (linear algebra, BFGS/L-BFGS optimization, interpolation, wavelets, distributions, hypothesis tests), and visualization through Swing plots and declarative Vega-Lite charts. The deep module adds LibTorch-backed tensor operations, neural network layers, losses, optimizers, EfficientNet-V2 image classification, LLaMA-3 inference with a tiktoken BPE tokenizer, and ONNX Runtime inference including GenAI chat models. SMILE Serve is a Quarkus-based inference server exposing classic ML models, ONNX models and OpenAI-compatible chat completions with SSE streaming, plus a bundled React web UI. SMILE Studio is an agentic IDE for data science with CLI entry points such as smile, smile shell, smile scala, smile train, smile predict and smile serve. Models are generally serializable, and a Spark integration allows SMILE models inside Spark ML pipelines. Installation is available via Maven, SBT and Gradle, with native BLAS/LAPACK libraries needed for some algorithms.