As 13 principais bibliotecas da Scala para análise de dados

Recentemente, a linguagem Scala tem sido amplamente usada pela Data Science. Ele ganhou popularidade principalmente devido ao advento do Spark, que está escrito em Scala. Na prática, geralmente na fase de pesquisa, a análise e a criação do modelo são realizadas em Python e depois implementadas no Scala, pois essa linguagem é mais adequada para produção.


Preparamos uma visão geral detalhada das bibliotecas mais interessantes usadas para implementar tarefas de aprendizado de máquina e ciência de dados no Scala. Alguns deles são usados ​​em nosso programa educacional " Data Analysis on Scala ".


Por conveniência, todas as bibliotecas apresentadas na classificação foram divididas em 5 grupos: análise e matemática de dados, PNL, visualização, aprendizado de máquina e muito mais.


Análise de Dados e Matemática


No. 1. Breeze (Commits: 3316, Contribuintes: 84)


A biblioteca Breeze é conhecida como a principal biblioteca de ciências do Scala. Tem coisas semelhantes no MATLAB (em termos de estruturas de dados) e no Python, classes NumPy. O Breeze fornece manipulação rápida e eficiente de matrizes de dados e permite executar muitas outras operações, incluindo as seguintes:


  • Operações matriciais e vetoriais para criar, transpor, executar operações elemento a elemento, inversão, cálculo de determinantes e muitas outras coisas.
  • Funções probabilísticas e estatísticas: de distribuições estatísticas e cálculo de estatística descritiva (como média, variância e desvio padrão) a modelos de cadeia de Markov. Os principais pacotes de estatísticas são breeze.stats e breeze.stats.distributions.
  • Otimização, que envolve o exame de uma função para um mínimo local ou global. Os métodos de otimização são armazenados no pacote breeze.optimize.
  • Álgebra Linear: Todas as operações básicas são baseadas na biblioteca netlib-java, tornando o Breeze extremamente rápido para a computação algébrica.
  • Operações de processamento de sinal. Exemplos de tais operações no Breeze são a convolução e a transformada de Fourier, que divide essa função na soma dos componentes de seno e cosseno.

Vale ressaltar que o Breeze também permite que você crie gráficos, mas falaremos sobre isso mais tarde.


No. 2. Saddle (Commits: 184, Contribuintes: 10)


Outra ferramenta de dados para Scala é o Saddle. Este é um análogo dos pandas em Python, mas apenas para o Scala. Como quadros de dados em Pandas ou R, o Saddle é baseado em uma estrutura de quadros (matriz indexada bidimensional).


Existem cinco estruturas básicas de dados no total, a saber:


  • Vec (vetor 1D)



  • Tapete (matriz 2D)



  • Série (Matriz Indexada 1D)




Quadro (matriz indexada 2D)



  • Índice (como hashmap)

As classes Vec e Mat estão localizadas em Séries e Estrutura. Você pode executar várias manipulações com essas estruturas de dados e usá-las para análise básica de dados. Outra grande característica do Saddle é sua resistência a falhas de dados.


Número 3. ScalaLab (Commits: 23, Colaboradores: 1)


ScalaLab é um tipo de MATLAB em Scala. Além disso, o ScalaLab pode chamar e acessar diretamente os resultados do script MATLAB.


A principal diferença das bibliotecas de computação anteriores é que o ScalaLab usa sua própria linguagem específica de domínio chamada ScalaSci. O Scalalab é conveniente, pois acessa muitas bibliotecas científicas de Java e Scala, para que você possa importar facilmente seus dados e usar vários métodos para executar manipulações e cálculos. A maioria das coisas é semelhante ao Breeze e Saddle. Além disso, como no Breeze, existem gráficos que permitem interpretar melhor os dados.


PNL


Número 4. Epic (Commits: 1790, Contribuintes: 15) e Puck (Commits: 536, Contribuintes: 1)


O Scala tem algumas boas bibliotecas de processamento de linguagem natural como parte do ScalaNLP, incluindo Epic e Puck. Essas bibliotecas são usadas principalmente como ferramentas de análise de texto. Ao mesmo tempo, o Puck é mais conveniente se você precisar analisar milhares de ofertas devido à sua alta velocidade e ao uso de uma GPU. A Epic também é conhecida como uma estrutura de previsão que usa previsão estruturada para criar sistemas complexos.


Visualização


No. 5. Breeze-viz (Commits: 29, Colaboradores: 3)


Como o nome sugere, o Breeze-viz é uma biblioteca de visualização desenvolvida pelo Breeze para Scala. Ele é baseado na conhecida biblioteca Java JFreeChart e os gráficos são um pouco semelhantes ao MATLAB. Embora o Breeze-viz tenha muito menos recursos do que o MATLAB, matplotlib em Python ou R, ele é útil na criação de modelos e análise de dados.




No. 6. Vegas (compromissos: 210, colaboradores: 14)


Outra biblioteca de visualização de dados Scala é Vegas. É muito mais funcional que o Breeze-viz e permite fazer algumas transformações úteis para gráficos: filtragem, transformações e agregações. Em geral, a biblioteca é semelhante a Bokeh e Plotly em Python.


Vegas permite escrever código em um estilo declarativo, o que torna possível se concentrar principalmente na determinação do que precisa ser feito com os dados e na realização de análises adicionais das visualizações sem se preocupar em implementar o código.



Aprendizado de máquina


Número 7. Smile (commits: 1019, colaboradores: 21)


O Statistical Machine Intelligence and Learning Engine, ou simplesmente Smile, é uma biblioteca moderna e promissora de aprendizado de máquina, algo semelhante ao scikit-learn em Python. É desenvolvido em Java, mas também possui uma API para Scala. A biblioteca é bastante rápida e produtiva: uso eficiente da memória, um grande conjunto de algoritmos de aprendizado de máquina para classificação, regressão, NNS, seleção de funções etc.




Número 8. Spark ML


Uma biblioteca de aprendizado de máquina que funciona imediatamente no Apache Spark. O Spark em si é escrito em Scala e possui uma API apropriada para todas as suas bibliotecas.


Spark ML - diferente do Spark MLlib (uma biblioteca antiga), ele funciona com quadros de dados. Também possibilita a construção de pipelines de várias transformações nos seus dados. Isso pode ser considerado como uma sequência de estágios, em que cada estágio é um transformador que converte um quadro de dados em outro ou um estimador, por exemplo, um algoritmo de aprendizado de máquina treinado em um quadro de dados.


No. 9. DeepLearning.scala (Commits: 1647, Contribuintes: 14)


O DeepLearning.scala é uma ferramenta alternativa de aprendizado de máquina que permite criar modelos de aprendizado profundo. A biblioteca usa fórmulas matemáticas para criar redes neurais dinâmicas complexas através de uma combinação de programação funcional e orientada a objetos. Ele usa uma ampla variedade de tipos, bem como classes de tipos de aplicativos. O último permite iniciar vários cálculos ao mesmo tempo, o que melhora a produtividade.


No. 10. Summing Bird (Commits: 1772, Contribuintes: 31)


Summingbird é uma estrutura de processamento de dados que permite o uso de cálculos de MapReduce em lote e em tempo real. O principal catalisador para o desenvolvimento da linguagem foram os desenvolvedores do Twitter, que muitas vezes escreviam o mesmo código duas vezes: primeiro para o processamento batche, depois novamente para streaming.


O Summingbird usa e gera dois tipos de dados: fluxos (sequências infinitas de tuplas) e capturas instantâneas, que em um determinado momento são consideradas o estado completo do conjunto de dados. Por fim, o Summingbird fornece uma plataforma para Storm, Scalding e um mecanismo de memória para fins de teste.


No. 11. PredictionIO (Commits: 4343, Contribuintes: 125)


Também vale mencionar o serviço de aprendizado de máquina para criar e implantar mecanismos preditivos chamados PredictionIO. Ele foi desenvolvido no Apache Spark MLlib e HBase e foi classificado no Github como o produto de aprendizado de máquina mais popular baseado no Apache Spark. Permite criar, avaliar e implantar serviços de maneira fácil e eficiente, implementar seus próprios modelos de aprendizado de máquina e incorporá-los ao seu serviço.


Outros


No. 12. Akka (Commits: 21430, Contribuintes: 467)


Desenvolvido pela Scala, o Akka é um ambiente paralelo para a criação de aplicativos JVM distribuídos. Ele usa um modelo baseado em ator, em que um ator é um objeto que recebe mensagens e executa ações apropriadas.


A principal diferença é a camada extra entre os atores e a estrutura, que requer apenas que os atores processem as mensagens, enquanto a estrutura cuida de todo o resto. Todos os atores são organizados hierarquicamente, o que ajuda os atores a interagir com mais eficácia entre si e a resolver problemas complexos, dividindo-os em tarefas menores.


No. 13. Slick (Commits: 1940, Colaboradores: 92)


A biblioteca mais recente é o Slick, que significa o Kit de conexão integrado ao idioma Scala. Esta é uma biblioteca para criar e executar consultas ao banco de dados: H2, MySQL, PostgreSQL, etc. Alguns bancos de dados estão disponíveis através de extensões lisas.


Para criar consultas, o Slick fornece uma DSL poderosa que cria o código como se você estivesse usando coleções Scala. O Slick suporta consultas SQL simples e junções fortemente tipadas de várias tabelas. Além disso, subconsultas simples podem ser usadas para criar outras mais complexas.


Conclusão


Neste artigo, identificamos e descrevemos brevemente algumas bibliotecas Scala que podem ser muito úteis na execução de tarefas básicas de processamento de dados.


Se você tem experiência em trabalhar com outras bibliotecas ou plataformas Scala úteis que valem a pena adicionar a esta lista, sinta-se à vontade para compartilhá-las nos comentários.

Source: https://habr.com/ru/post/pt459172/


All Articles