O SMILE (Inteligência de Máquina estatística e mecanismo de aprendizado) é um aprendizado de máquina rápido e abrangente, PNL, álgebra linear, gráfico, interpolação e sistema de visualização em Java e Scala. Com estruturas e algoritmos avançados de dados, o Smile oferece desempenho de ponta. O Smile está bem documentado e confira o site do projeto para obter guias de programação e mais informações.
O sorriso abrange todos os aspectos do aprendizado de máquina, incluindo classificação, regressão, agrupamento, mineração de regras de associação, seleção de recursos, aprendizado de múltiplos, escala multidimensional, algoritmos genéticos, imputação de valor ausente, pesquisa de vizinho mais próxima eficiente etc.
Smile implementa os seguintes algoritmos de aprendizado de máquina a seguir:
CLASSIFICAÇÃO: Máquinas vetoriais de suporte, árvores de decisão, adaboost, reforço de gradiente, floresta aleatória, regressão logística, redes neurais, redes RBF, classificador de entropia máxima, KNN, análise discriminante bayesiana ingênua, pescador/linear/quadrática/regularizada.
Regressão: Regressão vetorial de suporte, processo gaussiano, árvores de regressão, reforço de gradiente, floresta aleatória, redes RBF, OLS, LASSO, ELASSTNET, Regressão de Ridge.
Seleção de recursos: seleção de recursos baseados em algoritmos genéticos, seleção de recursos baseados em aprendizado de conjunto, Treeshap, razão de ruído de sinal, proporção de quadrados de soma.
Clustering: bétula, clarans, dbscan, denclue, recozimento determinístico, k-means, x-means, g-means, gás neural, gás neural crescente, agrupamento hierárquico, gargalos de informações sequenciais, mapas auto-organizadores, agrupamento espectral, agrupamento mínimo de entropia.
Regra da associação e mineração frequente de conjunto de itens: algoritmo de mineração de crescimento FP.
Learning Molyold: Isomap, LLE, Laplacian Eigenmap, T-Sne, UMAP, PCA, Kernel PCA, PCA probabilístico, GHA, projeção aleatória, ICA.
Escala multidimensional: MDS clássico, MDS isotônico, mapeamento de Sammon.
Pesquisa de vizinho mais próxima: BK-Tree, Tree Cover, KD-Tree, Simhash, LSH.
Aprendizagem de sequência: modelo oculto de Markov, campo aleatório condicional.
Processamento de linguagem natural: divisor de frases e tokenizer, teste estatístico bigram, extrator de frase, extrator de palavras -chave, estrondo, marcação de POS, classificação de relevância
Você pode usar as bibliotecas através do MAVEN Central Repository adicionando o seguinte ao seu arquivo POM.XML do Project Pom.xml.
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
Para a PNL, use o Artifactid Smile-NLP.
Para API Scala, use
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Para a API Kotlin, adicione a seção abaixo na seção de dependencies do script de construção gradle.
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Para API de Clojure, adicione a seguinte dependência ao seu projeto ou arquivo de construção:
[org.clojars.haifengl/smile "4.0.0"]
Alguns algoritmos confiam em blas e lapack (por exemplo, aprendizado do coletor, alguns algoritmos de agrupamento, regressão do processo gaussiano, MLP, etc.). Para usar esses algoritmos, você deve incluir o OpenBlas para computação de matriz otimizada:
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"
)
Neste exemplo, incluímos todas as plataformas de 64 bits suportadas e filtramos plataformas de 32 bits. O usuário deve incluir apenas as plataformas necessárias para salvar espaços.
Se você preferir outras implementações do BLAS, poderá usar qualquer biblioteca encontrada no "java.library.path" ou no caminho da classe, especificando -o com a propriedade "org.bytedeco.openblas.load". Por exemplo, para usar a biblioteca blas a partir da estrutura acelerada no Mac OS X, podemos passar opções como -Dorg.bytedeco.openblas.load=blas .
Se você tiver uma instalação padrão do MKL ou simplesmente incluir os módulos a seguir que incluem a versão completa dos binários MKL, o Smile mudará automaticamente para o MKL.
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
A Smile emprega um modelo de licença dupla projetada para atender às necessidades de desenvolvimento e distribuição de distribuidores comerciais (como OEMs, ISVs e VARs) e projetos de código aberto. Para detalhes, consulte a licença.
O sorriso vem com conchas interativas para Java, Scala e Kotlin. Faça o download do sorriso pré-embalado na página de lançamentos. No diretório doméstico de sorriso, digite
./bin/smile
para entrar no shell scala. Você pode executar quaisquer expressões de Scala válidas no shell. No caso mais simples, você pode usá -lo como uma calculadora. Além disso, todos os operadores de sorriso de alto nível são predefinidos na concha. Por padrão, o shell usa até 75% de memória. Se você precisar de mais memória para lidar com dados grandes, use a opção -J-Xmx ou -XX:MaxRAMPercentage . Por exemplo,
./bin/smile -J-Xmx30G
Você também pode modificar o arquivo de configuração ./conf/smile.ini para a memória e outras configurações da JVM.
Para usar o Java's Jshell, digite
./bin/jshell.sh
que tem frascos de sorriso no caminho de classe. Da mesma forma, corra
./bin/kotlin.sh
Para entrar em Kotlin Repl.
A maioria dos modelos suporta a interface Serializable Java (todos os classificadores oferecem suporte à interface Serializable ) para que você possa usá -los no Spark. O Protostuff é uma boa alternativa que suporta compatibilidade para o futuro (evolução do esquema) e validação. Além do XML, o Protostuff suporta muitos outros formatos, como JSON, YAML, Protobuf, etc.
O SMORL fornece uma biblioteca de visualização de dados baseada em giro, SmilePlot, que fornece gráfico de dispersão, gráfico de linha, gráfico de escada, gráfico de barras, gráfico de caixa, histograma, histograma 3D, dendrograma, mapa de calor, mapa hexépido, gráfico QQ, gráfico de contorno, superfície e quadro de arame.
Para usar o SmilePlot, adicione o seguinte às dependências
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
O sorriso também suporta a visualização de dados em abordagem declarativa. Com smile.plot.vega package , podemos criar uma especificação que descreva visualizações como mapeamentos de dados para propriedades de marcas gráficas (por exemplo, pontos ou barras). A especificação é baseada no Vega-Lite. O compilador Vega-Lite produz automaticamente componentes de visualização, incluindo eixos, lendas e escalas. Em seguida, determina as propriedades desses componentes com base em um conjunto de regras cuidadosamente projetadas.
Kernel PCA | Isomap |
Escala multidimensional | SOM |
Rede Neural | Svm |
Cluster hierárquico | X-means |
Dbscan | Gás neural |
Wavelet | Mistura familiar exponencial |