Best Python Libraries for Machine Learning and Deep Learning
Embora haja muitas linguagens para escolher, Python está entre as linguagens de programação Machine Learning e Deep Learning mais amigáveis ao desenvolvedor, e vem com o suporte de um amplo conjunto de bibliotecas que atendem a todos os seus casos de uso e projetos.

>
● TensorFlow
A revolução está aqui! Bem-vindo ao TensorFlow 2.0.
TensorFlow é uma biblioteca rápida, flexível e escalável de aprendizagem de máquinas de código aberto para pesquisa e produção.
TensorFlow é uma das melhores bibliotecas disponíveis para trabalhar com a Aprendizagem de Máquinas em Python. Oferecido pelo Google, TensorFlow facilita a construção de modelos ML tanto para iniciantes como para profissionais.
Usando TensorFlow, você pode criar e treinar modelos ML não apenas em computadores, mas também em dispositivos móveis e servidores, usando TensorFlow Lite e TensorFlow Serving que oferece os mesmos benefícios, mas para plataformas móveis e servidores de alto desempenho.

>
algumas das áreas essenciais no ML e DL onde o TensorFlow brilha:
● Manuseio de redes neurais profundas
● Processamento de linguagem natural
● Equação diferencial parcial
● Capacidade de abstração
● Reconhecimento de imagem, texto e fala
● Colaboração de idéias e código sem esforço
Core Task: Build Deep Learning models
Para entender como realizar uma tarefa específica no TensorFlow, você pode consultar os tutoriais do TensorFlow.
● Keras
Keras é uma das bibliotecas de redes neurais mais populares e de código aberto para Python. Inicialmente projetada por um engenheiro do Google para o ONEIROS, abreviação de Open-Ended Neuro Electronic Intelligent Robot Operating System, Keras foi logo suportada na biblioteca central do TensorFlow, tornando-a acessível em cima do TensorFlow. Keras apresenta vários dos blocos de construção e ferramentas necessárias para criar uma rede neural, como por exemplo:
● Camadas neurais
● Funções de ativação e custo
● Objetivos
● Normalização de lotes
● Dropout
● Pooling

>
>>337>
Keras estende a usabilidade do TensorFlow com estes recursos adicionais para programação ML e DL. Com uma comunidade útil e um canal Slack dedicado, obter suporte é fácil. O suporte para a rede neural convolucional e recorrente também existe junto com as redes neuronais padrão. Você também pode se referir a outros modelos de exemplo na classe Keras e Computer Vision de Stanford.
Keras Cheat Sheet : https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Keras_Cheat_Sheet_Python.pdf
Core Task: Build Deep Learning models
Get Started with Keras –
● PyTorch
Developed by Facebook, PyTorch é uma das poucas bibliotecas de aprendizagem de máquinas para Python. Além do Python, PyTorch também tem suporte para C++ com sua interface C++, se você estiver nessa. Considerado entre os melhores competidores na corrida de ser o melhor framework de Machine Learning e Deep Learning, PyTorch enfrenta a competição de toque do TensorFlow. Você pode consultar os tutoriais do PyTorch para outros detalhes.

>>
>
>
Algumas das características vitais que distinguem PyTorch de TensorFlow são:
● Computação Tensor com capacidade de processamento acelerado via Unidades de Processamento Gráfico
● Fácil de aprender, usar e integrar com o resto do ecossistema Python
● Suporte para redes neurais construídas em um sistema de difusão automática baseado em fita adesiva
Os vários módulos PyTorch vem com, que ajudam a criar e treinar redes neurais:
● Tensores – tocha.Tensor

>
● Optimizadores – tocha.optim module
● Neural Networks – nn module
● Autograduação
Pros: muito personalizável, amplamente utilizado em pesquisas de aprendizagem profunda
Cons: menos abstrações de PNL, não otimizadas para velocidade
Tarefa principal: Desenvolvimento e treino de modelos de aprendizagem profunda
Keras vs Tensorflow vs PyTorch | Comparação de Estruturas de Aprendizagem Profunda
● Scikit-learn
Scikit-learn é outra biblioteca de aprendizagem de máquinas utilizada activamente para Python. Ela inclui fácil integração com diferentes bibliotecas de programação ML como NumPy e Pandas. Scikit-learn vem com o suporte de vários algoritmos, como por exemplo:
● Classificação
● Regressão
● Clustering
● Redução de Dimensão
● Seleção do Modelo
● Pré-processamento
>Criado em torno da idéia de ser fácil de usar, mas ainda assim ser flexível, Scikit-learn é focado na modelagem de dados e não em outras tarefas como carregamento, manuseio, manipulação e visualização de dados. É considerado suficiente para ser usado como um ML de ponta a ponta, desde a fase de pesquisa até a implantação. Para uma compreensão mais profunda do scikit-learn, você pode conferir os tutoriais do Scikit-learn.
Core Task: Modelagem
Learn Scikit-Learn-
● Pandas
Pandas é uma biblioteca de análise de dados Python e é usada principalmente para manipulação e análise de dados. Ela entra em jogo antes que o conjunto de dados seja preparado para o treinamento. Pandas faz o trabalho com séries temporais e dados multidimensionais estruturados sem esforço para programadores de aprendizagem de máquina. Algumas das grandes características dos Pandas quando se trata de manipulação de dados são:
● Reformulação e pivotamento do conjunto de dados
● Fusão e união de conjuntos de dados
● Manuseio de dados ausentes e alinhamento de dados
● Várias opções de indexação, tais como Indexação hierárquica de eixos, Indexação fantasia
● Opções de filtragem de dados

Pandas fazem uso de DataFrames, que é apenas um termo técnico para uma representação bidimensional de dados, oferecendo aos programadores com objetos DataFrame.
Tarefa principal: Manipulação e análise de dados
Google Trends – Pandas Interest Over Time

● NLTK
NLTK significa Natural Language Toolkit e é uma biblioteca Python para trabalhar com processamento de linguagem natural. É considerada como uma das bibliotecas mais populares para trabalhar com dados da linguagem humana. O NLTK oferece interfaces simples juntamente com uma grande variedade de recursos léxicos como FrameNet, WordNet, Word2Vec e vários outros para programadores. Alguns dos destaques do NLTK são:
● Pesquisa de palavras-chave em documentos
● Tokenization e classificação de textos
● Reconhecimento de voz e caligrafia
● Lemmatização e Limpeza de palavras
>

>>
>
>
>>337>>
NLTK e seu conjunto de pacotes são considerados uma escolha confiável para os alunos, engenheiros, pesquisadores, lingüistas e indústrias que trabalham com a língua.
Core Task: Processamento de texto
● Spark MLlib
MLlib é a biblioteca de aprendizagem de máquina escalável do Apache Spark
Desenvolvida pelo Apache, Spark MLlib é uma biblioteca de aprendizagem de máquina que permite escalar facilmente os seus cálculos. Ela é simples de usar, rápida, fácil de configurar e oferece uma integração suave com outras ferramentas. Spark MLlib tornou-se instantaneamente uma ferramenta conveniente para o desenvolvimento de algoritmos e aplicações de aprendizagem de máquinas.
As ferramentas que Spark MLlib traz para a mesa são:

alguns dos algoritmos e APIs populares que os programadores que trabalham no Machine Learning usando Spark MLlib podem utilizar são:
● Regressão
● Clustering
● Optimization
● Dimensional Reduction
● Classification
● Basic Statistics
● Feature Extraction
● Theano
Theano é uma poderosa biblioteca Python que permite uma fácil definição, optimização e avaliação de expressões matemáticas poderosas. Algumas das características que fazem de Theano uma biblioteca robusta para a realização de cálculos científicos em larga escala são:
● Suporte a GPUs para melhor desempenho em cálculos pesados em comparação com CPUs
● Suporte a integração forte com NumPy
● Avaliações mais rápidas e estáveis mesmo das variáveis mais complicadas
● Capacidade de criar código C personalizado para suas operações matemáticas
> Com Theano, você pode alcançar o rápido desenvolvimento de alguns dos mais eficientes algoritmos de aprendizagem de máquinas. Construídos em cima de Theano são algumas das conhecidas bibliotecas de aprendizagem profunda, como Keras, Blocks e Lasagne. Para conceitos mais avançados em Theano, você pode consultar o tutorial de Theano.
● MXNet
Uma biblioteca flexível e eficiente para aprendizagem profunda

>
Se o seu campo de especialização inclui Aprendizagem Profunda, você encontrará a MXNet para ser o ajuste perfeito. Usada para treinar e implantar redes neurais profundas, a MXNet é altamente escalável e suporta treinamento modelo rápido. A MXNet do Apache não só funciona com Python mas também com uma série de outras linguagens incluindo C++, Perl, Julia, R, Scala, Go e mais algumas.
A portabilidade e escalabilidade da MXNet permite levar de uma plataforma a outra e escalá-la para as necessidades exigentes de seu projeto. Alguns dos maiores nomes em tecnologia e educação como Intel, Microsoft, MIT e outros suportam atualmente a MXNet. O AWS da Amazon prefere a MXNet como sua escolha de estrutura de aprendizagem profunda preferida.
● Numpy

>
>
A biblioteca NumPy para Python concentra-se no manuseio de dados multidimensionais extensos e nas funções matemáticas intrincadas que operam sobre os dados. A NumPy oferece computação e execução rápidas de funções complicadas trabalhando em arrays. Poucos dos pontos em favor da NumPy são:
● Suporte para operações matemáticas e lógicas
● Manipulação da forma
● Capacidade de ordenação e seleção
● Transformações discretas de Fourier
● Álgebra linear básica e operações estatísticas
● Simulações aleatórias
● Suporte para n-matrizes dimensionais
NumPy trabalha em uma abordagem orientada a objetos e tem ferramentas para integrar C, C++ e código Fortran, e isto torna a NumPy altamente popular entre a comunidade científica.
Tarefa principal: Limpeza e manipulação de dados
Google Trends – Numpy Interest Over Time

Conclusion
Python é uma ferramenta de desenvolvimento verdadeiramente maravilhosa que não serve apenas como um general…linguagem de programação, mas também atende a nichos específicos do seu projeto ou fluxos de trabalho. Com um monte de bibliotecas e pacotes que expandem as capacidades do Python e o tornam um all-rounder e um ajuste perfeito para qualquer um que queira entrar no desenvolvimento de programas e algoritmos. Com algumas das bibliotecas de aprendizagem de máquinas modernas e de aprendizagem profunda para Python discutidas brevemente acima, você pode ter uma idéia sobre o que cada uma dessas bibliotecas tem a oferecer e fazer a sua escolha.