Um gerenciador de pacotes (ou package manager) é um programa para ajudar a organizar bibliotecas e ferramentas de um software em instâncias, namespace, silos ou ambientes que facilitam o trabalho com várias bibliotecas e versões.
No aprendizado de máquina ou Machine Learning (ML), quando um usuário trabalha com várias bibliotecas e programas, acompanhar as versões que funcionam bem juntas é uma obrigação. O Python tem algumas dezenas de versões disponíveis; o PyTorch como”Stable 1.3 e Nightly”; o TensorFlow tem uma dúzia de versões 1. x e 2.0, e assim por diante. Organizar bibliotecas em silos é melhor feito com um gerenciador de pacotes Python. Existem vários disponíveis para programadores, e selecionar um sobre o outro é apenas uma questão de gostos.
Yufeng Guo, Google Developer Advocate, apresentou uma visão geral de alto nível do trabalho com pacotes de Python. Aqui está um resumo de seus pontos:
- Pip: é o gerenciador de pacotes integrado do Python que está disponível há algum tempo. A ferramenta pode ser usada para instalar facilmente programas como TensorFlow, NumPy, Pandas, Jupyter e muitos mais, incluindo suas dependências.
- “Existem dois pacotes para gerenciar ambientes PiP”:
- Anaconda: distribuição de Python que funciona bem para projetos de ciência de dados. “Reúne muitas das ferramentas em ciência de dados e ML em apenas uma instalação”. Usado para criar ambientes diferentes para diferentes projetos. Seu gerenciador de pacotes é chamado Conda.
- Virtualenv: “um pacote que permite a criação de ambientes virtuais nomeados onde os pacotes Pip podem ser armazenados em um ambiente isolado”.
- Pyenv: um programa (biblioteca) que fica em cima de Virtualenv e Anaconda. Ele pode ser usado para controlar programas e diferentes versões do Python.
Bibliotecas de Python
Existem várias bibliotecas de Python disponíveis como projetos de código aberto. Alguns dos mais populares são NumPy, SciPy, Pandas e Matplotlib.
A ilustração abaixo mostra a pilha PyTorch
Segue um resumo de alto nível de quatro bibliotecas populares.
Numpy
NumPy é um padrão na comunidade científica. Ele contém um grande conjunto de funções e recursos matemáticos e é rápido. Existe um exemplo de um blogueiro que criou um teste que “inicializou 14 matrizes do tamanho 40000 X 40000, um milhão de vezes” e o NumPy superou o PyTorch, mas não por muito. Na comunidade científica, NumPy é conhecido como a ferramenta ideal para trabalhar com matrizes multidimensionais (coluna/linha tipo matriz).
Scipy
SciPy (Scientific Python) é uma coleção de bibliotecas Python usadas para computação científica e engenharia técnica. O ecossistema SciPy foi projetado para trabalhar com NumPy, Matplotlib, Sympy, Pandas e IPython. Um dos pacotes da coleção é a Biblioteca SciPy que vem com os seguintes módulos:
- Integração Numérica
- Fourier transforms
- Processamento de sinal e processamento de imagem
- Solucionadores ODE
- Interimplantação
- Otimização
- Álgebra linear
- Estatísticas
Pandas
Pandas é uma biblioteca Python construída sobre o NumPy usada para análise e manipulação de dados. Previamente, descrevemos como o Pandas foi usado para a preparação dos dados. Ele tem a capacidade de ingerir dados brutos, limpá-los, especialmente se houver valores ausentes, e depois transformá-los. Algumas característocas do Pandas:
- Trata com dados faltantes.
- Converte dados irregulares e indexados de forma diferente em outras estruturas Python e NumPy.
- Suporta slicing, subconfiguração, mesclagem, merging e indexação extravagante.
- Suporta pivôs e remodela conjuntos de dados.
- “Executa operações de combinação de aplicação dividida em conjuntos de dados”.
Matplotlib
Matplotlibe é uma biblioteca Python usada para plotagem 2D. Pode ser usada para “gerar gráficos, histogramas, espectros de potência, gráficos de barras, gráficos de erros, gráficos de dispersão”, e muito mais. Pacotes de terceiros podem estender suas capacidades e vem com um grande número de módulos, incluindo Pyplot que lhe dá uma interface semelhante ao MATLAB.