Smile (Statistical Machine Intelligence and Learning Engine) ist ein schnelles und umfassendes maschinelles Lernen, NLP, lineare Algebra, Diagramm, Interpolation und Visualisierungssystem in Java und Scala. Mit fortschrittlichen Datenstrukturen und Algorithmen liefert Smile eine modernste Leistung. Smile ist gut dokumentiert und finden Sie die Projektwebsite für Programmierleitfäden und weitere Informationen.
Smile deckt jeden Aspekt des maschinellen Lernens ab, einschließlich Klassifizierung, Regression, Clustering, Assoziationsregel -Mining, Merkmalsauswahl, vielfältiger Lernen, mehrdimensionaler Skalierung, genetischen Algorithmen, fehlender Wertschicht, effizienter Nachbarsuchung usw.
Smile implementiert die folgenden Hauptalgorithmen für maschinelles Lernen:
Klassifizierung: Unterstützen Sie Vektormaschinen, Entscheidungsbäume, Adaboost, Gradienten -Boosting, zufällige Wald, logistische Regression, neuronale Netzwerke, RBF -Netzwerke, maximale Entropieklassifizierer, KNN, naives Bayesian, Fisher/Linear/quadratische/regulierte Diskriminanzanalyse.
Regression: Unterstützung der Vektorregression, Gaußscher Prozess, Regressionsbäume, Gradientenhöhung, Zufallswald, RBF -Netzwerke, OLS, Lasso, Elasticnet, Ridge Regression.
Merkmalsauswahl: Genetischer Algorithmus -basierter Merkmalsauswahl, Ensemble -Lernbasis -Merkmalsauswahl, Treeshap, Signalrauschverhältnis, Summenquadrate -Verhältnis.
Clustering: Birch, Clarans, DBSCAN, Denclue, Deterministisches Glühen, K-Means, X-Means, G-Means, Neuralgas, wachsendes neuronales Gas, hierarchisches Clustering, sequentielle Informations-Engpässe, selbstorganisierende Karten, spektrales Klulen, minimaler Entopie-Clustering.
Assoziationsregel und häufige Elements-Mining: FP-Wachstums-Mining-Algorithmus.
Vielseitiger Lernen: Isomap, LLE, Laplace-Eigenmap, T-Sne, UMAP, PCA, Kernel PCA, probabilistische PCA, GHA, zufällige Projektion, ICA.
Mehrdimensionale Skalierung: Klassische MDS, isotonische MDs, Sammon-Mapping.
Suche nach Nachbarn: Bk-Tree, Deckbaum, KD-Tree, Simhash, LSH.
Sequenzlernen: Hidden Markov -Modell, bedingte Zufallsfeld.
Verarbeitung natürlicher Sprache: Satzsplitter und Tokenizer, statistischer Bigram
Sie können die Bibliotheken über das Maven Central Repository verwenden, indem Sie Folgendes zu Ihrer Projektpom.xml -Datei hinzufügen.
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
Verwenden Sie für NLP das Artefactid Smile-NLP.
Für die Scala -API verwenden Sie bitte bitte
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Fügen Sie für die Kotlin -API das unten in den Abschnitt dependencies des Gradle Build -Skripts hinzu.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Für die Clojure -API fügen Sie Ihrem Projekt die folgende Abhängigkeit hinzu oder erstellen Sie die Datei erstellen:
[org.clojars.haifengl/smile "4.0.0"]
Einige Algorithmen stützen sich auf BLAS und LAPACK (z. B. vielfältiger Lernen, einige Clustering -Algorithmen, Gaußsche Prozessregression, MLP usw.). Um diese Algorithmen zu verwenden, sollten Sie OpenBLAs für eine optimierte Matrixberechnung einschließen:
libraryDependencies ++= Seq(
"org.bytedeco" % "javacpp" % "1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "openblas" % "0.3.28-1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "arpack-ng" % "3.9.1-1.5.11" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64"
)
In diesem Beispiel enthalten wir alle unterstützten 64-Bit-Plattformen und filtern 32-Bit-Plattformen. Der Benutzer sollte nur die benötigten Plattformen zum Speichern von Räumen enthalten.
Wenn Sie andere BLAS -Implementierungen bevorzugen, können Sie jede Bibliothek verwenden, die auf dem "java.library.path" oder auf dem Klassenpfad gefunden wird, indem Sie diese mit der Systemeigenschaft "org.Bytedeco.openblas.load" angeben. Um beispielsweise die BLAS -Bibliothek aus dem Accelerate Framework unter Mac OS X zu verwenden, können wir Optionen wie -Dorg.bytedeco.openblas.load=blas übergeben.
Wenn Sie eine Standardinstallation von MKL haben oder einfach die folgenden Module enthalten, die die Vollversion von MKL -Binärdateien enthalten, wechselt Smile automatisch zu MKL.
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile verwendet ein Dual -Lizenz -Modell, das den Entwicklungs- und Vertriebsbedarf sowohl der kommerziellen Händler (wie OEMs, ISVs und VARs) als auch von Open -Source -Projekten entspricht. Weitere Informationen finden Sie unter Lizenz.
Smile kommt mit interaktiven Muscheln für Java, Scala und Kotlin. Laden Sie ein vorverpacktes Lächeln von der Seite "Releases" herunter. Im Heimverzeichnis des Lächelns, Typ
./bin/smile
Um die Scala -Hülle zu betreten. Sie können alle gültigen Skala -Ausdrücke in der Schale ausführen. Im einfachsten Fall können Sie es als Taschenrechner verwenden. Außerdem sind alle hochrangigen Lächeln-Operatoren in der Hülle vordefiniert. Standardmäßig verwendet die Shell einen Speicher von bis zu 75%. Wenn Sie mehr Speicher benötigen, um große Daten zu verarbeiten, verwenden Sie die Option -J-Xmx oder -XX:MaxRAMPercentage . Zum Beispiel,
./bin/smile -J-Xmx30G
Sie können auch die Konfigurationsdatei ./conf/smile.ini für den Speicher und andere JVM -Einstellungen ändern.
Typen Sie Javas JSHELL, um zu verwenden
./bin/jshell.sh
Das hat Smiles Gläser im Klassenpfad. In ähnlicher Weise rennen Sie
./bin/kotlin.sh
Um Kotlin Repl.
Die meisten Modelle unterstützen die Serializable Java -Schnittstelle (alle Klassifikatoren unterstützen Serializable Schnittstelle), damit Sie sie in Spark verwenden können. Protostuff ist eine nette Alternative, die die Kompatibilität (Schemaentwicklung) und die Validierung unterstützt. Jenseits von XML unterstützt Protostuff viele andere Formate wie JSON, YAML, Protobuf usw.
Smile bietet eine Swing-basierte Datenvisualisierungsbibliothek SmilePlot, die Streudiagramm, Liniendiagramm, Treppenplot, Balkendiagramm, Box-Diagramm, Histogramm, 3D-Histogramm, Dendrogramm, Heatmap, HexMap, QQ-Diagramm, Konturdiagramm, Oberflächen und Drahtmodelle bietet.
Um Smileplot zu verwenden, fügen Sie Folgendes zu Abhängigkeiten hinzu
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
Smile unterstützt auch die Datenvisualisierung im deklarativen Ansatz. Mit smile.plot.vega package können wir eine Spezifikation erstellen, die Visualisierungen als Zuordnungen von Daten zu Eigenschaften grafischer Markierungen (z. B. Punkte oder Balken) beschreibt. Die Spezifikation basiert auf Vega-Lite. Der Vega-Lite-Compiler erzeugt automatisch Visualisierungskomponenten, einschließlich Achsen, Legenden und Skalen. Anschließend bestimmt die Eigenschaften dieser Komponenten, die auf einer Reihe von sorgfältig gestalteten Regeln basieren.
Kernel PCA | Isomap |
Mehrdimensionale Skalierung | Som |
Neurales Netzwerk | SVM |
Hierarchische Clustering | X-Means |
DBSCAN | Nervengas |
Wavelet | Exponentielle Familienmischung |