Olá! Eu sou a Letícia, sou a instrutora aqui na Alura.
Audiodescrição: Letícia é uma pessoa branca, de olhos castanho-escuros e cabelo castanho-escuro, um pouco abaixo dos ombros. Veste uma camiseta marrom-escura; atrás há uma iluminação azul e rosa, e à sua frente, à esquerda, há um microfone também com iluminação rosa.
Qual é a proposta deste curso? Seguiremos uma abordagem um pouco diferente: não entraremos profundamente nos conceitos; em vez disso, vamos construir um projeto prático utilizando todos os conhecimentos que vimos no nível 1, aplicando-os a um cenário real.
Ao passarmos para a tela, temos um site aberto que reúne um repositório de Machine Learning (aprendizado de máquina) com diversos conjuntos de dados. Abrimos o conjunto de dados Banking Marketing, que será utilizado para o problema de negócio. Você pode baixá-lo e começar a explorar esses dados; porém, todos os arquivos que utilizarmos ou baixarmos estarão disponíveis no repositório no GitHub, que você pode consultar ao longo do curso.
Aqui também podemos ver as variáveis presentes nessa base de dados: escolaridade, estado civil, idade, entre outras. Nós vamos explorar isso melhor na próxima aula.
Qual é o cenário deste projeto? Trabalhamos com informações de um banco português relativas a campanhas de telemarketing para oferecer a clientes um depósito a prazo, que é essencialmente um investimento.
Como uma campanha envolve múltiplas ligações, o objetivo do banco — e também o objetivo deste projeto — é aumentar a eficiência das ligações, identificando quais clientes têm maior probabilidade de aceitar o depósito. Isso é importante porque, supondo uma base de 45 milhões de clientes, ligar para todas as pessoas é caro e demanda muito tempo.
Com um modelo de Machine Learning (Aprendizado de Máquina), o banco deseja priorizar os clientes com maior probabilidade de dizer “sim”, reduzir o custo operacional e elevar a taxa de conversão. Essa será nossa missão neste projeto.
Para avançar, vamos explorar os dados e compreender seu conteúdo. Neste projeto, construiremos um modelo de classificação. Nos dados, há informações dos clientes e uma variável que será nossa variável-alvo: ela indica se o cliente contratou ou não o depósito. Portanto, trata-se de um problema de classificação.
Na próxima aula, vamos aprofundar a exploração desses dados. Vamos em frente!
Vamos simular um cenário real. Antes de iniciarmos as análises, precisamos criar nosso ambiente de trabalho. Para isso, elaboramos um fluxograma com as etapas que vamos aplicar.
Utilizaremos a AWS para armazenar nossos dados. No Amazon S3, vamos armazenar os dados apresentados anteriormente. Em seguida, conectaremos um IDE (ambiente de desenvolvimento integrado) a esses dados armazenados na AWS. Para isso, usaremos o Cursor para realizar toda a parte de análise e também a de modelagem. Depois de termos o modelo pronto e alguns outros componentes, poderemos salvar esses artefatos novamente no S3. Por fim, para analisar os dados no dia a dia e tomar decisões, usaremos o Streamlit como dashboard (painel) para revisar o desempenho do modelo, a tabela de clientes que devemos priorizar e outros aspectos que veremos mais adiante. Portanto, usaremos o Streamlit para essa visualização.
Esse é o fluxo que temos. Antes de começar o projeto, precisamos criar alguns itens.
O primeiro passo é acessar o GitHub. Vamos entrar na nossa conta e ir até a aba de repositórios, pois criaremos um repositório para trabalhar. Na interface do GitHub, vamos clicar em New. Daremos um nome ao repositório: Projeto Alura. Esse nome aparecerá em vermelho se o repositório já existir. Podemos escolher a visibilidade (pública ou privada) e adicionar um README. Vamos selecionar a opção “Common” e, em seguida, clicar em Create repository.
Agora já estamos dentro do repositório. Temos um arquivo README e também “Requirements”. Isso foi adicionado posteriormente: é a pasta "Requirements" com um arquivo que utilizaremos para instalar todas as dependências mais adiante. Podemos usar o botão verde Code, que exibe um link para clonarmos o repositório. Vamos guardar esse link para utilizá-lo na próxima etapa.
Outra ferramenta que recomendamos é o GitHub Desktop. Na aula de GitHub, vimos a parte de commits, criação de branches e versionamento de código usando Git. Podemos fazer esse fluxo pelo terminal ou utilizar uma ferramenta gráfica. O GitHub Desktop facilita bastante, pois oferece uma interface que agiliza o processo. Recomendamos fazer o download (baixar) em desktop.github.com. Na página, basta selecionar a opção de download (baixar) para macOS ou Windows e instalar.
Após instalar, vamos abrir o GitHub Desktop. No topo, há opções, incluindo a de clonar o repositório. Para isso, clicamos na seta, depois em Add e em Clone repository. Podemos buscar o repositório que criamos ou usar o link que salvamos anteriormente, colar ali e clonar na nossa máquina. Depois do clone, podemos verificar onde o projeto foi salvo. Clicando com o botão direito, há uma opção para exibir o caminho na pasta (no macOS, por exemplo, para revelar no Finder). No exemplo, o repositório ficou dentro da pasta "dev" no desktop.
Com o repositório clonado, o próximo passo, antes de irmos ao Cursor, é configurar nosso bucket na AWS. No curso de AWS, vimos como criar uma conta e configurar o ambiente. Aqui, já estamos no console. Se ainda não houver uma conta, recomendamos criá-la. Ao entrar, veremos as seções mais acessadas. Inicialmente, vamos ao IAM. Podemos pesquisar por IAM na barra de busca, clicar em IAM e criar um novo usuário, que será utilizado para conectarmos o Cursor à AWS.
No IAM, vamos em IAM users e criamos um novo usuário. Daremos o nome Alura Projeto e clicaremos em Next. Podemos adicionar políticas diretamente. Vamos selecionar S3 Full. Como vimos em aulas anteriores, isso não é uma boa prática; o ideal seria especificar exatamente as permissões necessárias. No entanto, para simplificar nosso processo nesta aula, adicionaremos Amazon S3 Full Access. Em seguida, clicamos em Next e Create user.
Após criar a pessoa usuária, clicamos nela (Alura Projeto). Em seguida, acessamos a opção em inglês do console, Security and Credentials (Segurança e credenciais), onde existe a opção para criar uma access key (chave de acesso). Precisaremos dessa access key para acessar o Amazon S3 a partir da nossa IDE (ambiente de desenvolvimento integrado), no caso, o Cursor. Clicamos em Create Access Key (criar chave de acesso), selecionamos a opção Command Line (linha de comando) para acessar via CLI (interface de linha de comando) e avançamos em Confirm and Next (confirmar e avançar). Depois, clicamos em Create (criar).
Nesse momento, o console exibe duas informações muito importantes que precisam ser armazenadas com segurança e não devem ser compartilhadas:
Ambas serão utilizadas no Cursor mais adiante.
Agora, vamos criar um bucket (repositório de objetos) para armazenar os dados. Acessamos o serviço S3, clicamos em Create Bucket e informamos um nome global único. Por exemplo: Alura Projeto Banco. Verificamos se o nome está disponível, mantemos as demais opções no padrão e confirmamos em Create. Com o bucket criado, acessamos sua página. O próximo passo é enviar os dados ou criar uma estrutura de pastas. Neste projeto, criamos a pasta "RAW", onde armazenaremos os arquivos originais da campanha de marketing, e outra pasta "models", onde, nas últimas aulas, guardaremos os modelos que formos construindo. Inicialmente, deixamos essas duas pastas criadas. Em "RAW", podemos enviar os arquivos. No nosso caso, já existe um bucket previamente criado (Banco Marketing Alura), no qual estão os arquivos em "RAW" baixados do site mencionado no início.
Com o bucket criado e o repositório configurado, abrimos o Cursor. Na interface inicial, clicamos em Open Project e localizamos a pasta que clonamos na máquina, em "Dev" > "projeto Alura". Ao abrir, visualizamos os arquivos README.md e requirements.txt.
Recomendamos, como primeiro passo no Cursor, garantir a criação do arquivo requirements.txt. Podemos consultar o repositório do curso no GitHub e copiar as dependências que utilizaremos no projeto. Entre as bibliotecas necessárias, temos:
Para materializar isso, um exemplo de conteúdo de requirements.txt que podemos usar no projeto é o seguinte:
ipykernel==6.29.5 # para usar o jupyter notebook
boto3==1.43.2 # para usar o AWS S3
plotly==6.7.0
imbalanced-learn==0.13.0
lazypredict==0.3.0
lightgbm==4.6.0
joblib==1.5.0
streamlit==1.45.0
pandas==2.2.3
numpy==2.4.3
scikit-learn==1.6.1
nbformat==4.2.0 # necessario para o plotly funcionar no jupyter notebook
Esse arquivo inclui as bibliotecas citadas (ipykernel, boto3, nbformat, Plotly, Streamlit, Pandas e NumPy), além de outras que utilizaremos ao longo do projeto para modelagem e experimentação.
Depois do requirements.txt, configuramos o ambiente do projeto criando um ambiente virtual. Abrimos o terminal dentro do diretório do projeto e executamos o comando apropriado para criar um ambiente virtual com Python, nomeando-o .venv.
Execute o comando abaixo para criar o ambiente virtual:
python3 -m venv .venv
Em seguida, ativamos esse ambiente virtual com o comando correspondente ao sistema operacional. No macOS ou Linux, por exemplo, usamos:
source .venv/bin/activate
Após a ativação, instalamos as bibliotecas necessárias utilizando o pip para ler e instalar as dependências listadas no arquivo requirements.txt. Se ocorrer um erro por esquecer a letra “s” no nome do arquivo requirements.txt, corrigimos o nome e executamos novamente.
Primeiro, o comando incorreto (resultará em erro por causa do nome do arquivo):
pip install -r requirement.txt
Em seguida, o comando correto:
pip install -r requirements.txt
Ao final, todas as dependências do requirements.txt estarão instaladas.
Na sequência, instalamos o AWS CLI (interface de linha de comando da AWS), que será a forma de nos conectarmos ao S3. No macOS, podemos instalar com o gerenciador de pacotes Homebrew. No Windows, podemos utilizar o Chocolatey, ou fazer a instalação diretamente pelo link oficial do AWS CLI (que estará na descrição do projeto). Tanto o Homebrew quanto o Chocolatey são gerenciadores de pacotes que facilitam a instalação de ferramentas via terminal.
Como exemplo no macOS com Homebrew, podemos executar:
brew install awscli
Com o AWS CLI instalado, conectamos ao ambiente da AWS utilizando as chaves salvas anteriormente. No terminal, executamos o assistente de configuração (aws configure) e informamos:
Podemos manter as demais configurações padrão pressionando a tecla Enter quando solicitado. O comando para iniciar essa configuração é:
aws configure
Concluída essa etapa, já podemos acessar os recursos da AWS com nossa chave de acesso.
A última configuração necessária no Cursor é a de IA para auxiliar na produtividade durante a escrita de código. No macOS, pressionamos Command + Shift + P para abrir a paleta de comandos. No Cursor, existe o recurso chamado Cursor Tab (aba do Cursor), que oferece autocomplete (autocompletar) por meio de IA enquanto escrevemos. Essa ferramenta identifica o que pretendemos fazer a partir das linhas de código e também consegue interpretar comentários para sugerir implementações, frequentemente completando trechos inteiros. Haverá um link na descrição com mais detalhes sobre essas funcionalidades. Recomendamos habilitar esse recurso para facilitar significativamente a produção e a criação de código.
Com todo o ambiente configurado, na próxima aula começaremos criando um Jupyter Notebook (caderno Jupyter) e conectaremos nosso ambiente ao S3 para trazer os dados. Assim, poderemos iniciar efetivamente a etapa de análise de dados.
Agora que já configuramos todo o nosso ambiente, é hora de começar a trabalhar. Estamos dentro do nosso projeto e, antes de criar um Jupyter Notebook (caderno Jupyter), vamos abrir o GitHub Desktop (aplicativo de desktop do GitHub). Observamos que ele trouxe para o aplicativo todos os arquivos da nossa máquina virtual, tudo o que foi feito lá dentro. Não queremos versionar esses arquivos; queremos montar isso apenas localmente na nossa máquina.
Para evitar que esses itens apareçam no controle de versão, vamos adicionar um arquivo .gitignore e incluir nele o diretório .venv. Assim, esses arquivos serão ignorados. Para isso, adicione a seguinte linha ao .gitignore:
.venv/
Ao retornar ao GitHub Desktop (aplicativo de desktop do GitHub), confirmamos que eles desapareceram da lista de alterações.
Em seguida, vamos criar um arquivo de Notebook (caderno) chamado banco-marketing.ipynb. Vamos adicionar o código; no nosso caso, já aparece o ambiente Python 3.12.9 selecionado. Se não aparecer, veremos a opção de interface "Select Kernel" (selecionar núcleo), na qual podemos escolher a versão de Python que desejamos utilizar.
Vamos começar importando o boto3, que é o SDK (kit de desenvolvimento de software) da AWS (Serviços Web da Amazon) para Python. Executamos essa célula:
import boto3
Em seguida, movemos para a próxima célula para criar um cliente S3. Aqui entra o recurso de preenchimento automático do editor, isto é, o recurso de autocomplete (preenchimento automático): ao escrever S3, o editor já sugere a criação do cliente para nós. Basta pressionar a tecla "Tab" para aceitar a sugestão e seguir para a próxima linha.
s3 = boto3.client('s3')
Agora vamos chamar a API (interface de programação de aplicações) para listar os buckets (repositórios do S3). Primeiro, vamos atribuir a resposta à variável response chamando o método list_buckets do cliente S3:
response = s3.list_buckets()
Em seguida, vamos percorrer response['Buckets'] com um for para imprimir e verificar o que há dentro:
for bucket in response['Buckets']:
print(bucket['Name'])
Ao executar, visualizamos os buckets (repositórios do S3) da nossa conta. Entre eles, está o bank-marketing-alura, que foi criado com os dados que utilizaremos.
Vamos adicionar uma nova linha de código para listar os objetos (arquivos) dentro de um bucket (repositório do S3) específico. Vamos chamar list_objects_v2 no cliente S3, informando o bucket (repositório do S3) bank-marketing-alura. Primeiro, queremos apenas visualizar o conteúdo:
response = s3.list_objects_v2(Bucket='bank-marketing-alura')
for obj in response['Contents']:
print(obj['Key'])
Identificamos a pasta "raw", que contém os arquivos bank-full e additionalfull. Neste curso, utilizaremos o bank-full. Também há a pasta "models".
Confirmado que a listagem funcionou, agora queremos, de fato, buscar esses dados e armazená-los em uma variável para utilizarmos nas análises. Para isso, vamos importar pandas como pd e inserir uma quebra de linha:
import pandas as pd
Em seguida, vamos criar uma variável (por exemplo, obj) e utilizar o método get_object do cliente S3, informando os parâmetros Bucket e Key. A Key será o caminho do arquivo CSV que queremos ler. O editor já sugere automaticamente esses parâmetros, o que facilita a chamada. Com isso, traremos os dados do CSV e poderemos trabalhar com eles nas próximas etapas:
obj = s3.get_object(Bucket='bank-marketing-alura', Key='raw/bank-full.csv')
Vamos pressionar "Enter" aqui. Em seguida, vamos criar a variável dados e utilizar pandas, com pd.read_csv (o ambiente já sugeriu), para obter o body (corpo). Neste primeiro momento, faremos a leitura sem especificar o separador, apenas para verificar se os dados já vêm formatados. Depois, executamos dados.head():
dados = pd.read_csv(obj['Body'])
dados.head()
Observamos que os dados foram carregados sem formatação adequada. Portanto, voltamos e adicionamos um separador com o parâmetro sep, e executamos novamente. Agora a tabela foi carregada e está corretamente formatada:
dados = pd.read_csv(obj['Body'], sep=';')
Para revisar melhor as colunas, executamos dados.info():
dados.info()
As colunas estão em inglês. O que elas representam:
age: idade da pessoa cliente.job: tipo de trabalho (por exemplo, administrativo, técnico, estudante, entre outros).education: nível educacional (primário ou secundário).default: se está em mora no crédito ou não.balance: saldo médio anual da conta.housing: se possui empréstimo hipotecário.loan: se possui empréstimo pessoal.Também há informações de contato e de campanha:
contact: tipo de comunicação utilizada no contato (por exemplo, telefone, celular ou outro).day: dia do mês do último contato.month: mês do último contato.duration: duração da chamada do último contato (informação conhecida apenas ao final da ligação).campaign: número de tentativas de contato durante a campanha específica.pdays: número de dias desde o último contato com a pessoa cliente.previous: número de contatos realizados antes da campanha para essa pessoa.poutcome: resultado da campanha anterior (por exemplo, se falhou ou se teve sucesso).Por fim, temos a variável-alvo target, que é o que vamos prever com nosso modelo de classificação. Ela indica se a pessoa converteu, isto é, se aceitou o depósito ou não.
Toda essa descrição que mencionamos estará no repositório da aula: o que significa cada coluna estará detalhado lá. Uma sugestão: se não se sente confortável com o inglês, é possível traduzir e renomear as colunas para o português, o que pode facilitar a leitura.
Nas próximas aulas, começaremos a explorar mais esses dados, entender se há valores estranhos que precisemos remover ou tratar de alguma forma, e identificar quais são as categorias com maior taxa de conversão, entre outros aspectos. Iniciaremos essa parte de análise de todas as variáveis a partir da próxima aula.
O curso Projeto ciência de dados: exploração, modelagem e apresentação possui 304 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Data Science em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
O Plano Plus evoluiu: agora com Luri para impulsionar sua carreira com os melhores cursos e acesso à maior comunidade tech.
2 anos de Alura
Matricule-se no plano PLUS 24 e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Programação, Data Science, Front-end, DevOps, Mobile, Inovação & Gestão, UX & Design, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
Acesso à inteligência artificial da Alura.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri Vision chegou no Plano Pro: a IA da Alura que enxerga suas dúvidas, acelera seu aprendizado e conta também com o Alura Língua que prepara você para competir no mercado internacional.
2 anos de Alura
Todos os benefícios do PLUS 24 e mais vantagens exclusivas:
Chat, busca, exercícios abertos, revisão de aula, geração de legenda para certificado.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Para quem quer atingir seus objetivos mais rápido: Luri Vision ilimitado, vagas de emprego exclusivas e mentorias para acelerar cada etapa da jornada.
2 anos de Alura
Todos os benefícios do PRO 24 e mais vantagens exclusivas:
Catálogo de tecnologia para quem é da área de Marketing
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais de forma ilimitada.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.