SMILE

2. Tipología

3. Ámbito de aplicación

4. Lenguaje de programación

Descripción

SMILE (acrónimo de Statistical Machine Intelligence and Learning Engine) es un sistema completo para la creación de modelos de machine learning, implementado en Java, de forma que sea lo más fácil posible convertir prototipos en implementaciones y que estas sean lo más eficientes posible.

SMILE incluye la mayoría de algoritmos usados para la construcción de modelos, entre otros regresión, clasificación, clusterización, extracción de características, sistemas basados en reglas, etc. Además, también incluye funciones para crear combinaciones de clasificadores y su evaluación. También incorpora un módulo para el reconocimiento de lenguaje natural. Finalmente, también incluye funciones para crear visualizaciones de datos basados en Vega-Lite.

SMILE incorpora un shell (línea de comandos) muy sencillo que permite usar el sistema como una calculadora avanzada, del mismo modo que hace R, por ejemplo. También es posible crear scripts que se pueden ejecutar de forma independiente desde la línea de comandos del sistema, así como la creación de notebooks Jupyter.

Enlace al recurso

http://haifengl.github.io/

Ejemplo de uso

El código que se muestra a continuación es un fragmento de lo que se puede encontrar en el repositorio github en el directorio demo, donde hay diferentes ejemplos de uso de SMILE. En este caso se muestra el método learn() que ejemplifica las llamadas necesarias para obtener una clusterización mediante el algoritmo K-means:

public JComponent learn() {
  long clock = System.currentTimeMillis();
  KMeans kmeans =
    KMeans.fit(dataset[datasetIndex], clusterNumber, 100, 4);
  System.out.format("K-Means clusterings %d samples in %dms\n",
    dataset[datasetIndex].length,
    System.currentTimeMillis()-clock);
  Canvas plot =
    ScatterPlot.of(dataset[datasetIndex], kmeans.y, mark).canvas();
  plot.add(ScatterPlot.of(kmeans.centroids, '@'));
  return plot.panel();
}

Este método usa KMeans.fit() para calcular la clusterización según el algoritmo K-means, imprime el tiempo empleado para hacer los cálculos y crea un gráfico de dispersión mediante ScatterPlot.of(), el cual es devuelto como resultado de este método.

Enlaces relacionados

Código fuente a GitHub: https://github.com/haifengl/smile

Ejemplo de uso: https://github.com/haifengl/smile/blob/master/demo/src/main/java/smile/demo/clustering/KMeansDemo.java

Vega-Lite: https://vega.github.io/vega-lite/