Smile (Statistical Machine Intelligence and Learning Engine) est un système d'apprentissage automatique rapide et complet, un système de visualisation linéaire, un graphique, une interpolation et un système de visualisation en Java et Scala. Avec des structures de données avancées et des algorithmes, SMIM offre des performances de pointe. Le sourire est bien documenté et veuillez consulter le site Web du projet pour les guides de programmation et plus d'informations.
Le sourire couvre tous les aspects de l'apprentissage automatique, y compris la classification, la régression, le clustering, l'exploitation des règles d'association, la sélection des fonctionnalités, l'apprentissage du collecteur, la mise à l'échelle multidimensionnelle, les algorithmes génétiques, l'imputation de valeur manquante, la recherche efficace du voisin le plus proche, etc.
Smile implémente les principaux algorithmes d'apprentissage automatique suivants:
Classification: Machines vectorielles de support, arbres de décision, Adaboost, boost de gradient, forêt aléatoire, régression logistique, réseaux de neurones, réseaux RBF, classificateur d'entropie maximal, KNN, analyse bayésienne naïve, pêcheur / linéaire / quadratique / régulière.
Régression: soutenir la régression des vecteurs, procédé gaussien, arbres de régression, augmentation du gradient, forêt aléatoire, réseaux RBF, OLS, lasso, élastique, régression de la crête.
Sélection des fonctionnalités: sélection de fonctionnalités basée sur l'algorithme génétique, sélection de fonctionnalités basée sur l'apprentissage d'ensemble, Treeshap, rapport de bruit de signal, rapport SUM Squares.
Clustering: bouleau, clarans, dbscan, denclue, recuit déterministe, k-means, x-means, g-means, gaz neural, culture neural en croissance, regroupement hiérarchique, goulot d'étranglement d'informations séquentielles, cartes auto-organisantes, regroupement spectral, clustering d'entrée minimale.
Règle d'association et exploitation des éléments fréquents: algorithme d'exploration de croissance FP-Growth.
Apprentissage du collecteur: Isomap, LLE, Laplacian Eigenmap, T-SNE, UMAP, PCA, noyau PCA, PCA probabiliste, GHA, projection aléatoire, ICA.
Échelle multidimensionnelle: MDS classiques, MDS isotoniques, cartographie Sammon.
Recherche du voisin le plus proche: BK-are, arbre de couverture, KD-Tree, Simhash, LSH.
Apprentissage de séquence: modèle de Markov caché, champ aléatoire conditionnel.
Traitement du langage naturel: séparateur de phrase et jetons, test statistique Bigram, extracteur de phrase, extracteur de mots clés, tige, étiquetage de POS, classement de pertinence
Vous pouvez utiliser les bibliothèques via le référentiel Maven Central en ajoutant ce qui suit à votre fichier Pom.xml de projet.
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
Pour la PNL, utilisez le Smile Arfactid-NLP.
Pour l'API Scala, veuillez utiliser
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Pour l'API Kotlin, ajoutez ce qui précède dans la section dependencies de Gradle Build Script.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Pour l'API Clojure, ajoutez la dépendance suivante à votre fichier de projet ou de construction:
[org.clojars.haifengl/smile "4.0.0"]
Certains algorithmes reposent sur Blas et Lapack (par exemple, l'apprentissage du collecteur, certains algorithmes de clustering, la régression du processus gaussien, MLP, etc.). Pour utiliser ces algorithmes, vous devez inclure OpenBlas pour un calcul de matrice optimisé:
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"
)
Dans cet exemple, nous incluons toutes les plates-formes 64 bits prises en charge et filtrez les plates-formes 32 bits. L'utilisateur doit inclure uniquement les plates-formes nécessaires pour enregistrer les espaces.
Si vous préférez d'autres implémentations BLAS, vous pouvez utiliser n'importe quelle bibliothèque trouvée sur le chemin "java.library.path" ou sur le chemin de classe, en le spécifiant avec la propriété Système "org.bytedeco.openblas.load". Par exemple, pour utiliser la bibliothèque BLAS à partir du framework Accelerate sur Mac OS X, nous pouvons transmettre des options telles que -Dorg.bytedeco.openblas.load=blas .
Si vous avez une installation par défaut de MKL ou incluez simplement les modules suivants qui incluent la version complète des binaires MKL, Smile passera automatiquement à MKL.
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile utilise un modèle à double licence conçu pour répondre aux besoins de développement et de distribution des distributeurs commerciaux (tels que OEMS, ISV et VARS) et des projets open source. Pour plus de détails, veuillez consulter la licence.
Le sourire est livré avec des obus interactifs pour Java, Scala et Kotlin. Téléchargez le sourire préemballé de la page des versions. Dans le répertoire d'origine de Smile, Type
./bin/smile
pour entrer la coque Scala. Vous pouvez exécuter toutes les expressions Scala valides dans la coquille. Dans le cas le plus simple, vous pouvez l'utiliser comme calculatrice. En outre, tous les opérateurs de sourire de haut niveau sont prédéfinis dans la coquille. Par défaut, le shell utilise jusqu'à 75% de mémoire. Si vous avez besoin de plus de mémoire pour gérer les grandes données, utilisez l'option -J-Xmx ou -XX:MaxRAMPercentage . Par exemple,
./bin/smile -J-Xmx30G
Vous pouvez également modifier le fichier de configuration ./conf/smile.ini pour la mémoire et d'autres paramètres JVM.
Pour utiliser Java's Jshell, Type
./bin/jshell.sh
qui a des pots de sourire dans le chemin de classe. De même, courez
./bin/kotlin.sh
Pour entrer Kotlin Rep.
La plupart des modèles prennent en charge l'interface Serializable Java (tous les classificateurs prennent en charge l'interface Serializable ) afin que vous puissiez les utiliser dans Spark. Protostuff est une belle alternative qui prend en charge la compatibilité des avantages avant (évolution du schéma) et la validation. Au-delà de XML, Protostuff prend en charge de nombreux autres formats tels que JSON, YAML, Protobuf, etc.
Smile fournit une bibliothèque de visualisation de données basée sur le swing SmilePlot, qui fournit un tracé de dispersion, un tracé de ligne, un tracé d'escalier, un tracé de bar, un tracé de boîte, un histogramme, un histogramme 3D, un dendrogramme, une map de chaleur, un hexmap, un tracé QQ, un tracé de contour, une surface et un wireframe.
Pour utiliser SmilePlot, ajoutez ce qui suit aux dépendances
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
Smile prend également en charge la visualisation des données dans une approche déclarative. Avec smile.plot.vega package , nous pouvons créer une spécification qui décrit les visualisations comme des mappages des données aux propriétés des marques graphiques (par exemple, points ou barres). La spécification est basée sur Vega-Lite. Le compilateur Vega-Lite produit automatiquement des composants de visualisation, y compris les axes, les légendes et les échelles. Il détermine ensuite les propriétés de ces composants sur la base d'un ensemble de règles soigneusement conçues.
Noyau PCA | Isomap |
Échelle multidimensionnelle | Quelque chose |
Réseau neuronal | SVM |
Regroupement hiérarchique | X-moyens |
Dbscan | Gaz neural |
Ondelette | Mélange de famille exponentielle |