# Data Scientist ## Nivel 1 - [ ] **Ciência de Dados - Fundamentos**: - Utilizar algoritmos e sistemas para extrair, organizar e analisar dados a partir de diversas fontes, a fim de detectar padrões e tomar decisões de negócios - As áreas de aplicação são infindáveis, como em negócios, biologia, medicina, engenharia, etc. - [ ] **Feature Engineering**: - Gerar novas variáveis a partir dos dados disponíveis - Transformar dados brutos em características - Realçar os problemas dos modelos preditivos - Melhorar a precisão do modelo para novos dados - [ ] **Extração e Tratamento de Dados**: - Obter os dados que serão analisados - Tratar os dados obtidos, transformando-os, alterando sua estrutura e valores a fim de deixar a base de dados mais coerente e garantir que os dados que serão trabalhados estejam nas melhores condições para serem analisados - [ ] **Python para Ciência de Dados**: - Python é uma linguagem de programação interpretada de alto nível e que suporta múltiplos paradigmas de programação, como imperativo, orientado a objetos e funcional. É uma linguagem com tipagem dinâmica e gerenciamento automático de memória. - Aprender lógica de programação em Python - Aprenda os fundamentos da linguagem como variáveis, funções, listas, condicionais e imports - Criar análises de dados - Utilizar o Matplotlib para gerar gráficos - Usar e manipular listas para agrupar dados - Conhecer a biblioteca NumPy - Conhecer a biblioteca Pandas - [ ] **R para Ciência de Dados**: - R é uma linguagem de programação comumente usada em estatística computacional e análise de dados. - Aprender a analisar, limpar e visualizar dados - Elaborar gráficos - Juntar bancos de dados - Tirar sumários estatísticos - Aprender modelos preditivos no R - [ ] **Estatística e Matemática - Fundamentos**: - Equações, funções e limites - Logaritmos - Matrizes, determinantes, vetores e espaço vetorial - Derivadas e integrais - Diferença entre média, mediana e moda - Distribuição de frequência - Variância e desvio padrão - Distribuição binomial, poisson e normal - Nível e intervalo de confiança - Técnicas de amostragem - Regressão linear - Séries temporais - [ ] **Machine Learning - Fundamentos**: - O Aprendizado de Máquina ou Machine Learning é um subcampo da Engenharia e da Ciência da Computação que evoluiu do estudo de reconhecimento de padrões e da teoria do aprendizado computacional em inteligência artificial. - Aprendizado supervisionado - Utilizar algoritmos de classificação - Utilizar algoritmos de regressão - Utilizar o Scikit-learn para criar modelos de machine learning - [ ] **Visualização de Dados**: - A visualização de dados é uma expressão contemporânea da comunicação visual que consiste na representação visual de dados. - Mapear dados abstratos em representações visuais - Representar visualmente os dados que estão presentes no nosso mundo real ## Nivel 2 - [ ] **Machine Learning - Aprendizado Não Supervisionado**: - O clustering ou análise de agrupamento de dados é o conjunto de técnicas de prospecção de dados (data mining) que visa fazer agrupamentos automáticos de dados segundo o seu grau de semelhança. - Conhecer a análise exploratória - Utilizar os métodos K-means, DBSCAN e Mean shift para agrupar dados sem classificação - Avaliar a qualidade de uma clusterização - Parametrizar métodos de clusterização através do máximo coeficiente de silhueta - Entender a matemática por trás das métricas de validação Silhouette, Davies Bouldin e Calinski Harabasz - Conhecer técnicas de redução de dimensionalidade - [ ] **Machine Learning - Avaliação de Modelos**: - O uso de métricas de avaliação nos ajuda a identificar se um modelo treinado terá um bom desempenho de previsão quando exposto a novos conjuntos de dados. - Conhecer diferentes estratégias de avaliação e otimização de modelos - Utilizar um pipeline para treino e validação - Métricas de avaliação de modelos de machine learning - [ ] **SQL - Fundamentos**: - Conhecer os comandos mais comuns do SQL - Usar SELECT para consultar uma tabela - Usar INSERT para inserir dados em uma tabela - Usar UPDATE para atualizar uma tabela - Usar DELETE para remover dados de uma tabela - Usar JOIN para conectar os dados de múltiplas tabelas - Conhecer as cláusulas (FROM, ORDER BY, etc) - [ ] **Web Scraping**: - Web scraping ou raspagem de dados na web é a extração de dados de websites. - Usar o BeautifulSoup e Python para coletar dados - Pesquisar e navegar no HTML - Acessar o conteúdo e atributos das tags HTML - Construir datasets com os resultados das raspagens - [ ] **Testes Estatísticos**: - Criar intervalos de confiança para amostras - Comparar grupos de amostras - Executar testes estatísticos - Planejar experimentos para a coleta de dados - Propor modelos matemáticos para entender um dado problema - Construir mapas de cores para auxiliar a interpretação dos dados ## Nivel 3 - [ ] **Deep Learning**: - Deep Learning é um ramo de Machine Learning baseado em um conjunto de algoritmos que tentam modelar abstrações de alto nível de dados usando um grafo profundo com várias camadas de processamento, compostas de várias transformações lineares e não lineares. - Construir e treinar modelos com Keras - Construir e treinar modelos com Tensorflow - Selecionar as camadas de um modelo - Classificar imagens - Entender os conceitos de pesos e vieses - Redes neurais para regressão - Entender o conceito de Redes recorrentes - [ ] **Aprendizado por Reforço**: - O Aprendizado por Reforço é uma área de Machine Learning que se preocupa com a forma como agentes inteligentes devem tomar medidas num ambiente, a fim de maximizar a noção de recompensa cumulativa. - Entender os conceitos de agente e recompensa - Entender a diferença entre reforço positivo e negativo - Conhecer o modelo Markov Decision Process - Entender o conceito de Retorno - Utilizar o algoritmo Q-learning - [ ] **Visão Computacional**: - Visão Computacional é um campo científico interdisciplinar que lida com a forma como os computadores podem ganhar conhecimentos de alto nível a partir de imagens ou vídeos digitais. Da perspectiva da engenharia, procura compreender e automatizar tarefas que o sistema visual humano pode fazer. - Extrair regiões de interesse de uma imagem - Normalizar e pré-processar dados de imagens - Construir classificadores para reconhecimento de faces - Extrair regiões do rosto humano baseado em marcos faciais - Analisar diferentes condições de cada componente do rosto humano - [ ] **Processamento de Linguagem Natural**: - Processamento de língua natural (PLN) é uma subárea da inteligência artificial e da linguística que estuda os problemas da geração e compreensão automática de línguas humanas naturais. - Análise de Sentimento - Criar visualizações para facilitar a análise de dados textuais - Conhecer as bibliotecas NLTK e Scikit-Learn - Normalizar textos - Usar TF-IDF e Ngrams para melhorar a classificação - Utilizar o SKlearn - Utilizar Regex em PLN - Conhecer o Word2Vec - Combinar vetores de palavras para representar textos e classificá-los ## Habilidade Auxiliar: Business e Soft skills - [ ] **Big Data e Engenharia de Dados**: - Big data é a área do conhecimento que estuda como tratar, analisar e obter informações a partir de conjuntos de dados grandes demais para serem analisados por sistemas tradicionais. - Engenharia de Dados envolve o desenvolvimento e organização de processos para coleta, armazenamento e transformação de dados em grande escala. - Criar um pipeline de dados - Conhecer o Apache Airflow - Conhecer o Apache Spark - Conhecer o conceito de Data Lake - Interagir com servidores na nuvem - Criar aplicações Spark - [ ] **Cloud - Fundamentos**: - Cloud, ou computação em nuvem é a distribuição de serviços de computação pela Internet usando um modelo de preço pago conforme o uso. Uma nuvem é composta de vários recursos de computação, que abrangem desde os próprios computadores (ou instâncias, na terminologia de nuvem) até redes, armazenamento, bancos de dados e o que estiver em torno deles. Ou seja, tudo o que normalmente é necessário para montar o equivalente a uma sala de servidores, ou mesmo um data center completo, estará pronto para ser utilizado, configurado e executado. - Conhecer a diferença entre IaaS, PaaS e SaaS - Conhecer os maiores provedores de cloud - Especializar-se em algum provedor - [ ] **Git e GitHub - Fundamentos**: - Criar um repositório - Clonar um repositório - Fazer commit, push e pull de e para o repositório - Reverter um commit - Lidar com merge e conflitos - [ ] **Linux - Fundamentos**: - Linux é um termo popularmente empregado para se referir a sistemas operacionais que utilizam o Kernel Linux. As distribuições incluem o Kernel Linux, além de softwares de sistema e bibliotecas. - Conhecer o sistema de diretórios do Linux - Compactar e descompactar arquivos - Editar arquivos no console com o VI - Gerenciar os processos rodando na máquina - Conhecer as variáveis de ambiente e o PATH - Gerenciar pacotes - Realizar comunicação remota com o SSH e SCP ## Habilidade Auxiliar: Cloud, Big Data e Sistemas - [ ] **Big Data e Engenharia de Dados**: - Big data é a área do conhecimento que estuda como tratar, analisar e obter informações a partir de conjuntos de dados grandes demais para serem analisados por sistemas tradicionais. - Engenharia de Dados envolve o desenvolvimento e organização de processos para coleta, armazenamento e transformação de dados em grande escala. - Criar um pipeline de dados - Conhecer o Apache Airflow - Conhecer o Apache Spark - Conhecer o conceito de Data Lake - Interagir com servidores na nuvem - Criar aplicações Spark - [ ] **Cloud - Fundamentos**: - Cloud, ou computação em nuvem é a distribuição de serviços de computação pela Internet usando um modelo de preço pago conforme o uso. Uma nuvem é composta de vários recursos de computação, que abrangem desde os próprios computadores (ou instâncias, na terminologia de nuvem) até redes, armazenamento, bancos de dados e o que estiver em torno deles. Ou seja, tudo o que normalmente é necessário para montar o equivalente a uma sala de servidores, ou mesmo um data center completo, estará pronto para ser utilizado, configurado e executado. - Conhecer a diferença entre IaaS, PaaS e SaaS - Conhecer os maiores provedores de cloud - Especializar-se em algum provedor - [ ] **Git e GitHub - Fundamentos**: - Criar um repositório - Clonar um repositório - Fazer commit, push e pull de e para o repositório - Reverter um commit - Lidar com merge e conflitos - [ ] **Linux - Fundamentos**: - Linux é um termo popularmente empregado para se referir a sistemas operacionais que utilizam o Kernel Linux. As distribuições incluem o Kernel Linux, além de softwares de sistema e bibliotecas. - Conhecer o sistema de diretórios do Linux - Compactar e descompactar arquivos - Editar arquivos no console com o VI - Gerenciar os processos rodando na máquina - Conhecer as variáveis de ambiente e o PATH - Gerenciar pacotes - Realizar comunicação remota com o SSH e SCP