Code Monkey home page Code Monkey logo

dswp's Introduction

DSWP - DATA SCIENCE WITH PYTHON

0. Avisos, regras e um pouquinho de como eu gostaria que as coisas funcionassem

Ferramentas que usaremos nesse treinamento: Google Colab, Github e Turtoise.

Grupos de trabalho

Vamos dividí-los em grupos para trabalhem colaborativamente em busca de soluções para os problemas que serão propostos. Portanto, cada aluno será aleatoriamente atribuído a um grupo.

  • Identifique seus parceiros de grupo;
  • Se organizem: criem um canal de comunicação no Telegram, WhatsApp, Discord e etc para vosso grupo;
  • Definam o líder do grupo;
  • O grupo serve para discutirem alternativas/soluções para os problemas que vos serão apresentados!

Alguns avisos

  • Todo o material será entregue digitalmente via Github. Não se preocupe em copiar! Gostaria da sua total atenção, pois temos muito conteúdo. Além disso, seu foco é primordial para aprender os conceitos;
  • Faça perguntas! Se alguma coisa (material, explicação e etc) não estiver claro, pergunte-me. Se o material não estiver claro, notifique-me para que eu possa melhorá-lo.
  • Esse material é e sempre será um trabalho em andamento com melhoria contínua. Por favor, ajude-me a melhorá-lo porque ele estará disponível aos demais colegas que não tiveram a oportunidade de estar aqui conosco hoje;
  • Dependendo do rumo que as coisas tomarem, pode ser que eu não consiga cobrir todo o conteúdo do curso, mas prometo me esforçar para cobrir pelo menos os pontos principais da Ciência de Dados;
  • Se você identificar qualquer aplicação deste conhecimento/conteúdo em sua área/departamento, por favor, compartilhe comigo. Mapear as necessidades dos clientes faz parte do processo de melhoria contínua da formação, além de me ajudar a pensar e construir exemplos/estudos de caso/projetos cada vez mais associados à realidade dos clientes;
  • Participe e compartilhe conhecimento, não importa quão tímido (a) ou reservada você seja!
  • Sua contribuição é muito importante;
  • Estou aqui para ajudá-lo, mesmo quando o curso acabar!
  • Seu feedback honesto e sincero é um presente pra mim, não importa o quanto você o julgue difícil/duro;
  • Estou aqui para aprender também!

1. Instalar e preparar o ambiente para o treinamento Data Science com Python

1.1. Instalar Anaconda

Anaconda é uma ferramenta/plataforma para Data Science que permite gerir as distribuições de Python para os sistemas operacionais Windows, Linux e MAC. Então, por favor, instale o Anaconda. Neste tutorial, você vai encontrar os passos necessários para instalar o Anaconda no seu sistema operacional. Ao instalar o Anaconda, você estará instalando um ambiente para Data Science com todas as ferramentas necessárias como Python e suas principais bibliotecas, Jupyter Notebook e Spyder.

Sugestões de leitura:

1.2. Jupyter Notebook

JupyterNotebook

Jupyter Notebook é um ambiente computacional web, interativo para criação de documentos “Jupyter Notebooks”. O documento é um JSON com um esquema e contém uma lista ordenada de células que podem conter código, texto, fórmulas matemáticas, plotagens e imagens. A extensão dos notebooks é “.ipynb”. Vamos criar nossos programas Python utilizando principalmente o Jupyter Notebook.

Sugestões de leitura:

Google Colab

Se você tem uma conta do Google, você pode usar o Google Colab para executar seus scripts Python. Esta é uma interessante e rápida alternativa para usar o Python on-line sem qualquer instalação. Adicionalmente, você pode:

  • integrar o Google Colab com o GitHub ou Google Drive para guardar seus projetos de Data Science;
  • usar o Jupyter Notebook no Google Colab, permitindo que você use a GPU Tesla K80, ou seja, aproximadamente 12 GB de memória RAM;

Neste treinamento, vou utilizar o Google Colab como principal ferramenta de trabalho.

Sugestões de leitura:

1.4. Github

GitHub Fonte

GitHub é uma plataforma de hospedagem de código para colaboração e controle de versão, permitindo que as equipes de desenvolvimento trabalhem juntos. Neste treinamento, vamos usar muito o Github para colaboração e controle de versão dos Notebooks.

Sugestões de leitura:

1.5. Docker - NÃO SE PREOCUPEM COM O DOCKER, POIS NÃO VAMOS USAR NESTE TREINAMENTO

Docker

Fonte

Docker é uma alternatia mais eficiente à virtualização que garante maior facilidade na criação e administração de ambientes isolados chamados de containers, tendo por objetivo disponibilizar software/soluções para o usuário final de forma mais rápida.

Sugestões de leitura:

Turtoise é um client para Git em Windows. Resumidamente, você consegue via Turtoise aplicar todos os comandos do Git usando point-and-click.


2. Download dos dataframes do treinamento

Os dataframes que serão utilizados no treinamento estarão aqui. Faça o download dos dataframes para o seu computador (ou Github ou Google Drive).


3. Objetivos do Treinamento

3.1. Objetivo Geral:

Machine Learning é a principal ferramenta para a Inteligência Artificial e é um dos campos científicos mais amplamente estudados atualmente. Uma quantidade considerável de literatura foi publicada sobre Machine Learning. Nosso objetivo neste treinamento é fornecer os aspectos mais importantes do Machine Learning usando o Python.

3.1.1. Neste treinamento vamos estudar e aprender:

  • os princípios e técnicas fundamentais de Data Science através de exemplos, casos reais e práticos;

  • Formular uma solução plausível e estratégica para resolver probemas da Ciência de Dados usando o "Data Science Process" incluindo: formulação, EDA (Análise Exploratória de Dados incluindo Feature Engineering), Modelagem (incluindo hyperparameters de tunning e modelos de Machine Learning), Avaliação (incluindo Validação Cruzada), Implantação, Monitoramento e Feedback;

  • Usar EDA para avaliar e entender o impacto das anormalidades de dados (Missing Values e Outliers), bem como aplicar o tratamento apropriado;

  • Usar EDA para identificar variáveis/features redundantes. Nosso objetivo será selecionar as variáveis mais importantes para o modelo e tomada de decisão.

  • Entender o impacto das amostra desequilibradas (Imbalanced samples) nos modelos de Machine Learning;

  • Preparar dataframes (conjunto de dados) para aplicação dos algoritmos de Machine Learning mais apropriados, incluindo a divisão apropriada do conjunto de dados para treinamento, validação e teste;

  • Entender e aplicar as principais transformações de dados;

  • Entender, identificar e aplicar o algoritmo de Machine Learning apropriado para um determinado problema, bem como apresentar os prós e contras de cada algoritmo;

  • Entender, identificar e aplicar adequadamente métricas para avaliação da qualidade dos modelos de Machine Learning;

  • Entender, identificar, evitar e/ou tratar problemas relacionados à overfitting;

Sugestões de leitura:


4. A Lei de Pareto

Foco no mais relevante e importante primeiro! A ideia do curso é aplicar a Lei de Pareto para que você aprenda e domine 20% dos contúdos de Data Science e Python que lhe permita fazer 80% do trabalho necessário de um CD.

  • A seguir, outros exemplos da aplicação da Lei de Pareto:
    • 80% da riqueza da Itália pertence a apenas 20% da população;
    • 20% dos melhores funcionários geram 80% dos resultados;
    • 20% dos consumidores geram 80% das receitas/lucros;

4.1. Fatos importantes

  • Dados nunca estão limpos e é no tratamento e preparação dos dados que o Cientista de Dados gasta aproximadamente 80% do seu tempo. Considere que se "entra lixo --> sai lixo". Mais uma: o melhor algoritmo de Machine Learning do mundo não vai resolver o problema caso os dados não tenham qualidade.
  • 95% dos problemas não requerem Deep Learning. Veremos alguns exemplos em que os modelos simples e tradicionais entregam ótimos resultados em comparação com modelos mais sofisticados;
  • Em 90% dos casos, Generalized Linear Models (GLM) resolve o problema;
  • Big Data é somente mais uma ferramenta;
  • Sugiro fortemente você abrir a mente para o paradigma Bayesiano;
  • Academia e Business são mundos totalmente diferentes;
  • Apresentação é a chave - Aprenda a vender suas ideias e domine Powerpoint e Excel;
  • Todos os modelos são falsos, mas alguns são úteis. Quotations of George Box
  • Não existe (pelo menos até agora) processo automático para Machine Learning, embora existam ferramentas que nos ajudarão a selecionar as melhores variáveis, na maioria das vezes você terá que sujar a mão.
  • Python é fracamente tipada. No caso do Python, é tipagem dinâmica, ou seja, posso alterar os tipos das variáveis a qualquer momento.

5. Bibliografia usada neste curso


6. Python

Guia ou melhores práticas para se escrever códigos mais claros em Python. Em outras palavras, é uma forma de (tentar) padronizar a forma de se escrever Python codes.

Eu recomendo fortemente a investirem um tempo a ler este guia. Porque?

  • Escrevemos códigos somente para nós mesmos?
  • Trabalhamos sozinhos?
  • Quais as vantagens de termos (uma tentativa) códigos códigos?

Algumas vantagens:

  • Legibilidade - Escreva e documente códigos Python que lhe permita lembrar o que foi feito, como foi feito e porque foi feito. Isso ajuda quem for ler o seu código. Uma das máximas dos Developers é que é horrível entender o código que outra pessoa escreveu. Portanto, seja claro ao escrever seus códigos;
  • Convenções - Explicit is better than implicit (https://www.python.org/dev/peps/pep-0020/). Ao escrever códigos Python você precisa definir variáveis, funções, classes, pacores e etc. Definir nomes claros para funções, variáveis e etc vai te ajudar a economizar tempo e energia no futuro, pois pelo nome da variável (por exemplo), você será capaz de saber o tipo, o que ela guarda e etc. A seguir, algumas convenções:
Tipo Convenção Exemplo
Funções, variáveis, métodos, módulos Use letras minúsculas e separe palavras com "_" (underscore). minha_funcao, soma, minha_funcao, meu_metodo
Classes Comece cada palavra com letra maiúscula e separe palavras com "_" (underscore). Modelo, Soma, Retorna_Soma
Constantes Use letras maiúsculas e separe palavras com "_" (underscore). MINHA_CONSTANTE, STRING_CONSTANTE
Pacotes Use letras minúsculas e NÃO separe palavras com "_" (underscore). meupacote, soma

No Notebook introdutório NB01_01__Getting_Started.ipynb nós vamos falar um pouco mais sobre isso.

PEP significa Python Enhancement Proposal.


7. CRISP-DM PROCESS

CRISP-DM Fonte

CRISP-DM (Cross-Industry Process for Data Mining) é uma metodologia amplamente utilizada e estruturada para o planejamento e desenvolvimento de um projeto de Data Mining.

7.1. 1BU - BUSINESS UNDERSTANDING

Esta fase é dedicada a entender o que se deseja alcançar a partir de uma perspectiva de negócios. O objetivo deste estágio do processo é descobrir fatores importantes que possam influenciar o resultado do projeto. Há várias metodologias que podem ajudá-lo nesta fase. Sugiro a utilização da metodologia SMART para ajudá-lo nesta fase.

BusinessUnderstanding

SMART

7.1.1. Quais os principais outputs desta fase?

  • Estebelecer claramente os objetivos do Projeto;
  • Produzir o Project Plan (Recursos, limitações, suposições, riscos e etc);
  • Definir critérios de sucesso do Projeto;

7.2. 2DU - DATA UNDERSTANDING (Entendimento dos Dados)

O foco desta fase está na coleta e exploração dos dados. Lembre-se de que a precisão dos modelos de Machine Learning depende da quantidade e qualidade dos dados.

DataUnderstanding

7.2.1. EDA - Exploratory Data Analysis (Análise Exploratória de dados)

Também conhecido por EDA, nesta fase nosso foco está na exploração do dataframe, descobrir relações e descrever os dados em geral. Utilize-se das técnicas de Data Visualization para detectar relações relevantes entre as variáveis, desequilíbrios de classes e identificar variáveis mais importantes.

7.3. 3DP - DATA PREPARATION (Preparação dos Dados)

Nesta fase o Cientista de Dados vai investir 80% do seu tempo, pois esta fase é dedicada a coletar, preparar, transformar e limpar dados: remover duplicatas, corrigir erros, lidar com Missing Values, normalização, conversões de tipo de dados e etc.

DataPreparation

7.3.1. 3DP_Feature Engineering (Engenharia de Dados)

Nesta fase temos 2 objetivos: corrigir problemas nas variáveis e derivar novas variáveis.

  • É uma atividade que requer muita criatividade, intuição, conhecimento dos dados e do problema a ser resolvido;

  • Não há um guia ou livros para nos ajudar a projetar e selecionar bons atributos;

  • Muitas vezes o Data Scientist deve consultar o Business Analyst para fazer sentido com os dados;

  • O principal objetivo da Feature Engineering é reduzir a complexidade do modelo;

  • Geralmente aplicar transformaçes como "raiz quadrada", "elevar à 3 potência" ou "log" em certas colunas melhora a qualidade das predições uma vez que estas transformações corrigem a distribuição das variáveis.

  • Transfor e alterar tipos das variáveis;

  • Portanto, Feature Engineering tem 2 objetivos/fases:

    • Fase 1: O foco desta fase é corrigr possveis problemas de preenchimento das variáveis. Por exemplo, considere a variável 'Sexo' com os seguintes preenchimentos: m, M, Male, Men, Man, mALE, MALE, tudo isso para designar o sexo masculino. Isto é um problema de preenchimento e nesta fase vamos corrigir esses problemas.
    • Fase 2: Criar mais atributos a partir dos atributos disponíveis.

7.3.2. 3DP_Missing Values Handling (Lidando com valores faltantes nos dDados)

Nosso foco nesta fase é identificar e tratar os Missing Values que neste curso são chamados de NaN (Not a Number). A tarefa de tratar os NaN são também chamados de Imputing Missing Values. Quando estamos diante de uma variável com grande número de NaN's (tanto numricas quanto categóricas) uma prática interessante é construir uma variável indicadora para indicar se aquele registro é ou não um NaN. Veremos isso mais tarde na prática.

7.3.3. 3DP_Outliers Handling (Lindando com Outliers nos Dados)

Nosso foco aqui é identificar e tratar os Outlier. Tratar outliers significa, por exemplo, descartá-lo/deletá-lo ou imputá-lo usando Média/Mediana/Moda. Outra alternativa é aplicar o Máximo para os Outliers superiores e Mínimo para os outliers inferiores. O Gráfico de Boxplot pode ajudar nesta fase. Uma outra alternativa interessante é usar K-Means para agrupar as observaçes da variável. Neste caso, ter-se-à um cluster com os outliers, tanto superiores quanto inferiores.

7.3.4. 3DP_Data Transformation (Transformação de Dados)

Significa colocar as variáveis numa mesma escala. Há várias transformações que podem ser aplicadas nesta fase. Principais transformações que podem ser aplicadas nas variáveis:

StandardScaler

MinMaxScaler

MaxAbsScaler

RobustScaler

Normalizer

* Aplica as normas L1 ou L2. A norma L2 é default no scikit-learn.

Obs.: As funções matemáticas desta sessão foram escritas com a ajuda do site: https://www.codecogs.com/eqnedit.php?latex=\mathcal{W}(A,f)&space;=&space;(T,\bar{f}).

7.3.5. 3DP_Feature Selection ou Dimensionality Reduction

Selecionar os melhores atributos/variáveis para o(s) modelo(s) de Machine Learning. Pode-se utilizar Random Forest para avaliar a importância de cada atributo/variável para o modelo.

Sugestão de leitura:

7.4. 4M - MODELING

Algoritmos diferentes podem ser aplicados ao mesmo problema. Sugiro aplicar o maior número de algoritmos possveis e escolher o que entregar melhor resultados.

Modeling

7.4.1. Supervised vs Unsupervised Learning

Supervised_X_Unsupervised

7.4.2. Machine Learning Map

Machine Learning Map Source: Choosing the right estimator

7.4.3. Modeling With Python

  • Amostras de treinamento e teste

Nesta fase o Cientista de Dados deve selecionar aleatoriamente as amostras de treinamento e teste (ou validação) dos modelos de Machine Learning. Geralmente usamos 70% da amostra para treinamento e o restante, 30%, para teste/validação. Outras opções são usar os percentuais 80/20 ou 75/25.

Cross-Validation Fonte

  • Treinamento do Modelo de Machine Learning

Treinar o modelo com os dados significa encontrar o melhor (ou a melhor combinação de algoritmos de Machine Learning) que explica o fenômeno sob estudo. Vamos discutir esse tópico com mais detalhes mais tarde.

As informaçes do dataframe devem estar convenientemente organizadas da seguinte forma:

X Fonte

  • Parameter Tuning (ou otimização dos parâmetros dos modelos de Machine Learning)

Esta fase tem por objetivo otimizar o melhor modelo de Machine Learning da fase anterior. Os hiperparâmetros de modelos podem incluir: número de etapas de treinamento, taxa de aprendizado, valores de inicialização e distribuição, etc.

  • Ensemble Methods (ou combinação de modelos de Machine Learning)

Ensemble Methods envolve a utilização de mais de um algoritmo de Machine Learning são treinados para resolver o mesmo problema e combinados para obter melhores resultados.

Ensemble Source: Building an Ensemble Learning Model Using Scikit-learn

Sugestão de leitura:


7.5. 5MSE - SELEÇÃO E AVALIAÇÃO DOS MODELOS DE MACHINE LEARNING

Nesta fase identificamos e aplicamos as melhores métricas (Accuracy, Sensitivity, Specificity, F-Score, AUC, R-Sq, Adj R-SQ, RMSE (Root Mean Square Error)) para avaliar o desempenho/acurácia/performance dos modelos de Machine Learning. Treinamos os modelos de Machine Learning usando a amostra de treinamento e avaliamos o desempenho/acurácia/performance na amostra de teste/validação.

Evaluation


7.6. 6D - Deployment (ou implantação dos Modelos de Machine Learning)

Implementa o modelo (ou conjunto de modelos nos casos de Emsembles Methods).

"For every $1 you spend developing an algorith, you must spend $100 to deploy and support it". Tom Davenport

Deployment

Diário de Bordo

Aula 1

  • Set up do Google Colab;
  • Set up do Github;
  • Entender/medir o conhecimento da turma - Kahoot;
  • Fork do Github;

Aula 2

  • Sincronizar o Github individual (Pull Requests);
  • Notebook NB01_01__Getting_Started;
  • Notebook B;
  • ...

dswp's People

Contributors

martimdornelas13 avatar mathmachado avatar rosaniadornelas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.