Smile (Motor de inteligencia y aprendizaje de máquina estadística) es un sistema de aprendizaje automático rápido e integral, NLP, álgebra lineal, gráfico, interpolación y sistema de visualización en Java y Scala. Con estructuras de datos avanzadas y algoritmos, Smile ofrece un rendimiento de última generación. Smile está bien documentado y consulte el sitio web del proyecto para obtener guías de programación y más información.
La sonrisa cubre todos los aspectos del aprendizaje automático, incluida la clasificación, la regresión, la agrupación, la minería de reglas de asociación, la selección de características, el aprendizaje múltiple, la escala multidimensional, los algoritmos genéticos, la imputación de valor faltante, la búsqueda eficiente de vecinos más cercanos, etc.
Smile implementa los siguientes algoritmos principales de aprendizaje automático:
Clasificación: máquinas de vectores de soporte, árboles de decisión, adaboost, impulso de gradiente, bosque aleatorio, regresión logística, redes neuronales, redes RBF, clasificador de entropía máxima, KNN, análisis bayesiano ingenuo, pescador/lineal/cuadrático/regularizado.
Regresión: regresión de vectores de apoyo, proceso gaussiano, árboles de regresión, impulso de gradiente, bosque aleatorio, redes RBF, OLS, Lasso, Elasticnet, regresión de cresta.
Selección de características: selección de características basada en algoritmo genético, selección de características basada en el aprendizaje del conjunto, treeshap, relación de ruido de señal, relación de cuadrados de suma.
Agrupación: Birch, Clarans, DBSCan, Denclue, Recocido determinista, K-Medias, medias X, G-means, gas neuronal, cultivo de gas neuronal, agrupación jerárquica, cuello de botella de información secuencial, mapas de autoorganización, agrupación espectral, clúster mínimo de entropía.
Regla de asociación y minería frecuente de elementos: algoritmo de minería de crecimiento FP.
Aprendizaje múltiple: Isomap, LLE, Laplacian Eigenmap, T-SNE, UMAP, PCA, Kernel PCA, PCA probabilístico, GHA, Proyección aleatoria, ICA.
Escala multidimensional: MDS clásica, MDS isotónico, mapeo de sammon.
Búsqueda de vecinos más cercanos: árbol BK, árbol de portada, árbol KD, Simhash, LSH.
Aprendizaje de secuencia: modelo oculto de Markov, campo aleatorio condicional.
Procesamiento del lenguaje natural: divisor de oraciones y tokenizador, prueba estadística de BigRam, extractor de frases, extractor de palabras clave, Stemmer, etiqueta POS, clasificación de relevancia
Puede usar las bibliotecas a través del repositorio central de Maven agregando lo siguiente a su archivo Pom.xml de proyecto.
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
Para PNL, use el ArtifactID Smile-NP-NP.
Para la API de Scala, use
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Para la API de Kotlin, agregue la siguiente sección de dependencies del script de compilación de Gradle.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Para la API Clojure, agregue la siguiente dependencia a su proyecto o archivo de compilación:
[org.clojars.haifengl/smile "4.0.0"]
Algunos algoritmos se basan en BLAS y Lapack (por ejemplo, aprendizaje múltiple, algunos algoritmos de agrupación, regresión del proceso gaussiano, MLP, etc.). Para usar estos algoritmos, debe incluir OpenBlas para el cálculo de matriz optimizado:
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"
)
En este ejemplo, incluimos todas las plataformas compatibles de 64 bits y filtramos plataformas de 32 bits. El usuario debe incluir solo las plataformas necesarias para guardar espacios.
Si prefiere otras implementaciones de BLAS, puede usar cualquier biblioteca que se encuentre en la propiedad del sistema "java.library.path" o en la ruta de clase, especificándola con la propiedad del sistema "org.byedyeco.openblas.load". Por ejemplo, para usar la biblioteca BLAS del marco Acelerate en Mac OS X, podemos pasar opciones como -Dorg.bytedeco.openblas.load=blas .
Si tiene una instalación predeterminada de MKL o simplemente incluye los siguientes módulos que incluyen la versión completa de los binarios MKL, Smile cambiará automáticamente a MKL.
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smile emplea un modelo de doble licencia diseñado para satisfacer las necesidades de desarrollo y distribución de distribuidores comerciales (como OEM, ISV y VAR) y proyectos de código abierto. Para más detalles, consulte la licencia.
Smile viene con conchas interactivas para Java, Scala y Kotlin. Descargue la sonrisa preenvasada de la página de lanzamientos. En el directorio de la casa de Smile, Tipo
./bin/smile
para ingresar a la carcasa de Scala. Puede ejecutar cualquier expresión de Scala válida en el shell. En el caso más simple, puede usarlo como calculadora. Además, todos los operadores de sonrisa de alto nivel están predefinidos en el caparazón. Por defecto, el shell utiliza hasta un 75% de memoria. Si necesita más memoria para manejar datos grandes, use la opción -J-Xmx o -XX:MaxRAMPercentage . Por ejemplo,
./bin/smile -J-Xmx30G
También puede modificar el archivo de configuración ./conf/smile.ini para la memoria y otras configuraciones JVM.
Para usar JSHELL de Java, escriba
./bin/jshell.sh
que tiene los frascos de Smile en el classpath. Del mismo modo, ejecutar
./bin/kotlin.sh
para ingresar a Kotlin repl.
La mayoría de los modelos admiten la interfaz Java Serializable (todos los clasificadores admiten la interfaz Serializable ) para que pueda usarlos en Spark. Protostuff es una buena alternativa que admite la compatibilidad de retrajo (evolución del esquema) y la validación. Más allá de XML, Protostuff admite muchos otros formatos como JSON, YAML, ProtoBuf, etc.
Smile proporciona una biblioteca de visualización de datos basada en el swing SmilePlot, que proporciona diagrama de dispersión, gráfico de línea, gráfico de escaleras, gráfico de barras, diagrama de caja, histograma, histograma 3D, dendrograma, mapa de calor, hexmap, gráfico QQ, gráfico de contorno, superficie y vello.
Para usar SmilePlot, agregue lo siguiente a las dependencias
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
La sonrisa también apoya la visualización de datos en el enfoque declarativo. Con smile.plot.vega package , podemos crear una especificación que describa visualizaciones como asignaciones de datos a propiedades de marcas gráficas (por ejemplo, puntos o barras). La especificación se basa en Vega-Lite. El compilador Vega-Lite produce automáticamente componentes de visualización que incluyen ejes, leyendas y escamas. Luego determina las propiedades de estos componentes en función de un conjunto de reglas cuidadosamente diseñadas.
PCA del núcleo | Isoma |
Escala multidimensional | Som |
Red neuronal | SVM |
Agrupación jerárquica | X-means |
Dbscan | Gas neuronal |
Wavelet | Mezcla familiar exponencial |