SMILE

2. Tipologia

3. Àmbit d'aplicació

4. Llenguatge de programació

Descripció

SMILE (acrònim de Statistical Machine Intelligence and Learning Engine) és un sistema complet per a la creació de models de machine learning, implementat en Java, de forma que sigui el més fàcil possible convertir prototips en implementacions i que aquestes siguin el més eficients possibles.

SMILE inclou la majoria d’algorismes usats per a la construcció de models, entre d’altres regressió, classificació, clusterització, extracció de característiques, sistemes basats en regles, etc. A més, també inclou funcions per a crear combinacions de classificadors i la seva avaluació. També incorpora un mòdul per al reconeixement de llenguatge natural. Finalment, també inclou funcions per a crear visualitzacions de dades basades en Vega-Lite.

SMILE incorpora un shell (línia de comandes) molt senzill que permet usar el sistema com una calculadora avançada, de la mateixa manera que fa R, per exemple. També és possible crear scripts que es poden executar de forma independent des de la línia de comandes del sistema, així com la creació de notebooks Jupyter.

Enllaç al recurs

http://haifengl.github.io/

Exemple d’ús

El codi que es mostra a continuació és un fragment del que es pot trobar al repositori github al directori demo, on hi ha diferents exemples d’ús de SMILE. En aquest cas es mostra el mètode learn() que exemplifica les crides necessàries per a obtenir una clusterització mitjançant l’algorisme 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();
}

Aquest mètode usa KMeans.fit() per a calcular la clusterització d’acord a l’algorisme K-means, imprimeix el temps emprat per a fer els càlculs i crea un gràfic de dispersió mitjançant ScatterPlot.of(), el qual és retornat com a resultat d’aquest mètode.

Enllaços relacionats

Codi font a GitHub: https://github.com/haifengl/smile

Exemple d’ús: https://github.com/haifengl/smile/blob/master/demo/src/main/java/smile/demo/clustering/KMeansDemo.java

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