# Curso de Formação em Ciência de Dados | Simplilearn Data ## Sumário - [1. Introdução ao Curso de Ciência de Dados](#aprendizagem-1) - [2. Introdução à Ciência de Dados](#aprendizagem-2) - [3. O Que é Ciência de Dados](#aprendizagem-3) - [4. Data Analyst vs Data Scientist vs Data Engineer](#aprendizagem-4) - [5. Ciclo de Vida da Ciência de Dados](#aprendizagem-5) - [6. Estatística para Ciência de Dados](#aprendizagem-6) - [7. Tipos de Distribuição em Estatística](#aprendizagem-7) - [8. Teorema de Bayes](#aprendizagem-8) - [9. Introdução à Inteligência Artificial](#aprendizagem-9) - [10. Introdução à Aprendizagem de Máquina](#aprendizagem-10) - [11. Supervisionado vs Não Supervisionado vs Aprendizagem Rreforçada](#aprendizagem-11) - [12. Análise de Regressão, Regressão Linear e Regressão Logística](#aprendizagem-12) - [13. Regressão Linear vs Regressão Logística](#aprendizagem-13) - [14. Classificação em Aprendizagem de Máquina](#aprendizagem-14) - [15. Árvore de Decisão em Aprendizagem de Máquina](#aprendizagem-15) - [16. Algoritmo de Árvore Aleatória](#aprendizagem-16) - [17. Algoritmo de Agrupamento K-Means](#aprendizagem-17) - [18. Classificador Bayesiano Naivo](#aprendizagem-18) - [19. O Que é Aprendizagem Profunda](#aprendizagem-19) - [20. Bibliotecas de Python](#aprendizagem-20) - [21. Visualização de Dados com Tableau](#aprendizagem-21) - [22. Perguntas de Dificuldade para Entrevista em Ciência de Dados](#aprendizagem-22) ## Aprendizagens ### Aprendizagem - 1 | Introdução ao Curso de Ciência de Dados | Simplilearn > URL: https://www.youtube.com/watch?v=z74dzAXWUqE > Idioma: en Bem-vindo ao Curso de Ciência de Dados pela Simplilearn. A ciência de dados é importante em muitas indústrias, pois há muito dado sendo criado e é um assunto caloroso no mundo da Tecnologia da Informação. A medida que o tempo passa, mais empresas estão usando métodos de ciência de dados para melhorar seu negócio e fazer com que seus clientes sejam mais felizes. A ciência de dados é um campo de estudo em que as pessoas analisam uma quantidade grandiosa de informação usando novas ferramentas e métodos para descobrir padrões que ninguém notou antes. Eles encontram coisas importantes e ajudam funcionários a tomar decisiones. Eles utilizam programas de computador sofisticados para prever coisas usando um enorme volume de dados, e a informação que analisam pode vir de várias fontes e ser apresentada de diferentes maneiras. Um data scientist é uma pessoa muito competente em estudar e compreender dados. Ela emprega suas habilidades para ajudar empresas a tomarem decisões mais inteligentes e a aumentar sua produtividade. Estes profissionais geralmente têm um bom conhecimento de matemática, estatística e computadores e aplicam este conhecimento para analisar Conjuntos de Dados grandes e encontrar tendências ou padrões. Esta breve introdução à ciência de dados nos permite começar com o fundamentos dessa ciência. Assim, sem mais demora, vamos começar. --- ### Aprendizagem - 2 | Introdução à Ciência de Dados | Simplilearn (Transcrição indisponível) --- ### Aprendizagem - 3 | O Que é Ciência de Dados | Simplilearn > URL: https://www.youtube.com/watch?v=V9aiNQhc2zA > Idioma: en Há várias áreas em que a ciência de dados pode ser utilizada, e uma das mais comuns é o detetção de fraude ou previsão de fraude. Existem muitas transações fradulentárias, principalmente na Internet, por isso podemos usar ciência de dados para evitar ou detetar a fraude. Existem algumas algoritmos e algoritmos para aprendizagem de máquina que podem ser utilizados, como, por exemplo, alguns técnicas de outliers, técnicas de agrupamento, etc. , que podem ser utilizados para detectar a fraude e prevenir a fraude também. Então, quem é um data scientist? É um papel bem geral que define uma pessoa que trabalha com dados; ela é conhecida como data scientist, porém, podem haver atividades e roles específicos. Aqui estão algumas atividades que um data scientist executa: obtenção de dados, preparação de dados, extração de dados, modelos de dados e manutenção de modelos. Vamos falar delas em detalhes. * Extração de dados - O data scientist coletará dados bruto de todas as fontes possíveis. Pode ser bancos de dados relacionais, bancos de dados não relacionais ou arquivos planos e dados não estruturados. # Preparação de Dados e Mineração de Dados com Markdown Este documento fornece uma visão geral da preparação de dados e mineração de dados, com ênfase no uso de Tableau como ferramenta de análise de dados. Abordaremos por que é essencial preencher os valores faltantes e os métodos utilizados para lidar com dados com entradas faltantes. Adicionalmente, guiaremos você através da configuração do Tableau para a exploração de dados e realização de análises usando dados de clientes. Por fim, tocaremos sobre os vantagens da mineração de dados. ## Importância de Preencher Valores Faltantes É comum encontrar-se em situações em que muitas funções estatísticas falham em funcionar. Aqui estão os motivos: _É necessário preencher os valores faltantes, ou então excluir estas linhas totalmente, ou substituir os valores faltantes com algo significativo. _ Desta forma, introduzimos um mecanismo que, neste exemplo, utiliza **média**; no entanto, pode-se explorar métodos diferentes ao avançar: ### Lidando com Valores Faltantes 1. **Exclusão Total de Dados: ** Descartar linhas de dados onde todas as colunas têm valores faltantes. Embora este método pareça simples, lembre-se de que excluir uma grande proporção de dados, como **60%**, pode ter um impacto significativo na análise final, diminuindo sua precisão geral. Recomenda-se utilizar este método apenas em casos em que menos de 5-10% dos dados precisem ser descartados. 2. **Substituição de Valores Faltantes: ** Substitua valores faltantes apenas quando todas as colunas têm valores faltantes, pois estas linhas contêm informação mínima. Novamente, lembre-se de utilizar este método com cuidado, considerando a quantidade de dados que você poderá remover. ## Preparação de Dados A parte de preparação de dados já é coberta, então vamos entrar no mundo fascinante da Mineração de Dados: O objetivo principal na Mineração de Dados é formular decisões significativas através de insights obtidos por meio da análise dos seus dados. Embora a Mineração de Dados forneça insights, ferramentas como o Tableau podem ajudar a descobrir informações existentes, e os dados podem subseqüentemente ser usados em áreas mais avançadas como Aprendizado de Máquina. Aqui, iremos utilizar o Tableau para a análise de dados. ### Configuração do Tableau Comece por baixar uma versão de avaliação do Tableau em [tableau. com](http://tableau.com). A versão gratuita chamada Tableau Public também está disponível para uso pessoal; no entanto, para fins comerciais será necessário comprar uma licença. Carregue o seu conjunto de dados no Tableau e analise as dimensões, medidas e outras características. Suponha que seu conjunto de dados tenha 10. 000 linhas, e nossa meta é determinar se certos fatores estão a influenciar a saída do cliente (churn): **Exemplo: ** Usando o Tableau: Suponha que gostaríamos de estudar o impacto do género, cartão de crédito e fatores geográficos na saída do cliente, use o seguinte método de arrastar e soltar dentro do Tableau. Primeiro, selecione dimensões como “saiu" (com valor 0 como sem saída, 1 como saída) juntamente com género, etc. Arraste e solte esta informação na seção de análise de Tableau para exibir os # Construção e Treinamento de nosso Modelo de Regressão Linear (Python) ## Visão geral Neste tutorial, vamos construir e treinar um modelo de regressão linear usando o Python para analisar os dados da ONU sobre a Felicidade do Mundo. Aqui está um resumo de o que vamos fazer: 1. Importar Libraries necessários 2. Carregar os dados de arquivos CSV (para cada ano) e concatená-los para preparar um dataframe único. 3. Identificar e remover colunas desnecessárias. 4. Criar algumas visualizações para melhorar a apresentação dos dados (usando Plotly). 5. Encontrar a correlação entre variáveis chaves. 6. Dividir os dados em conjuntos de treinamento e teste. 7. Criar uma instância de Regressão Linear, treiná-lo e avaliá-lo nos dados de teste. ## Importando Libraries Usaremos as seguintes bibliotecas para esta análise: - numpy - pandas - plotly - sklearn (scikit-learn) ``` import numpy as np import pandas as pd import plotly. express as px from sklearn. model_selection import train_test_split from sklearn. linear_model import LinearRegression ``` ## Carregando e preparando os dados Carregar os dados dos arquivos CSV (um para cada ano), e concatená-los para preparar um dataframe único: ``` data_2015 = pd. read_csv("world_happiness_2015. csv") data_2016 = pd. read_csv("world_happiness_2016. csv") data_2017 = pd. read_csv("world_happiness_2017. csv") all_data = pd. concat([data_2015, data_2016, data_2017], ignore_index=True) ``` ## Identificando e removendo colunas Remover algumas colunas que não são necessárias, como 'região' e 'standard_error'. ``` column_names = ['país', 'rank_felicidade', 'pontuação_felicidade', 'gdp_per_capita', 'liberdade', 'generosidade', 'esperança_de_vida', 'apoio_social'] all_data = all_data[column_names] ``` ## Criando visualizações Criar algumas visualizações para melhorar a apresentação dos dados: 1. Relação entre rank_felicidade e pontuação_felicidade: ``` fig, ax = px. scatter(all_data, x="rank_felicidade", y="pontuação_felicidade", trendline="ols") fig. show() ``` 2. Matriz de Correlação: ``` fig = px. heatmap(all_data. corr(), x=all_data. columns, y=all_data. columns) fig. show() ``` ## Dividindo os dados Dividir os dados em 80% de treinamento e 20% de teste: ``` X = all_data[column_names] y = all_data['pontuação_felicidade'] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 2) ``` ## Criando uma Instância de Regressão Linear ``` modelo = LinearRegression() ``` ## Treinando e avaliando o modelo Treinar o modelo usando o método fit e avaliar a performance nestes dados de teste: ``` modelo. fit(X_treino, y_treino) y_pred_teste = modelo. predict(X_teste) ``` ## Analisando o modelo Você pode usar funções específicas de modelo para obter informações sobre o modelo, como o Intercepto, coeficientes, erros-quadráticos médios e o escore R². Por exemplo, para obter o Intercepto: ``` intercepto = modelo. intercept_ ``` Este texto fornece uma descrição e uma formatação de Markdown estruturada do texto dado com títulos apropriados, melhor formatura e elementos de Markdown. O texto ainda requer a implementação da lógica para cada passo e a fasterformatação, se necessário, para obter o resultado desejado. # Aula - 4 | Analista de Dados vs Cientista de Dados vs Engenheiro de Dados Idioma: en **Analista de Dados vs Engenheiro de Dados vs Cientista de Dados: Qual escolher? ** Esta é uma das perguntas mais frequentes feitas por aprendizes que buscam uma carreira em dados e análise. Embora todos estes empregos envolvem dados, eles não são os mesmos. Aqui, vamos discutir estas funções de trabalho e suas diferenças em detalhe. Comecemos por olhar algumas tendências no analytics e científicas de dados. O mercado de análise e científicos de dados tem uma ótima evolução. De acordo com Statista. com, o mercado mundial de análise de grandfather data aumentará em 30% com receita excedendo 68 bilhões de dólares EUA até 2025. De acordo com Technavio, o mercado nacional de gerenciamento de dados empresariais aumentará em 64, 8 bilhões de dólares EUA até 2025. O mercado de grande dados está previsto para crescer de 162, 6 bilhões de dólares em 2021 para 273, 5 bilhões de dólares EUA até 2026 (Research Drive). Com tanto dados disponíveis e empresas fazendo grandes investimentos para gerar informações empresariais, as oportunidades de trabalho para analistas de dados, engenheiros de dados e cientistas de dados se tornarão mais abrangentes em 2022 e nos anos futuros. Agora, vamos aprender as principais diferenças entre analista de dados, engenheiro de dados e cientista de dados. ## Qui são eles? - **Analista de Dados: ** Analisa e interpreta grandes volumos de dados para extrair informações significativas, resolver problemas de negócios e tomar decisões críticas. As informações fornecidas pelos analistas de dados são importantes para as empresas que quissem entender as necessidades dos clientes finais. - **Engenheiro de Dados: ** Constroi infraestruturas e canais escalonáveis para gerenciar o fluxo de dados e prepará-lo para análise. Eles otimizam os sistemas que permitem que os analistas de dados e cientistas de dados sejam eficientes em suas tarefas. - **Cientista de Dados: ** Analisa e visualiza dados existentes, usa algoritmos para construir modelos preditivos para tomada de decisões futuras e trabalha com líderes empresariais para compreender suas necessidades e apresentar achados complexos. ## Funções Principais e Responsabilidades **Analista de Dados: ** - Coletar, limpar, armazenar e processar dados - Descobrir padrões escondidos de dados executando análise exploratória de dados - Visualizar dados criando gráficos e gráficos - Acquisit hinas de dados de fontes primárias e secundárias - Criar relatórios e painéis de instrumentos - Mantenha bancos de dados **Engenheiro de Dados: ** - Realiza aquisição, design, construção e teste de dados - Desenvolve e manteém a arquitetura de dados - Testa, integra, gera, gerencia e otimiza dados de uma variedade de fontes - Integrar dados em pipelines existentes de dados - Prepara dados para modelagem - Executa operações ETL diversas **Cientista de Dados: ** - Desenvolve modelos de aprendizado de máquina para identificar tendências em dados para tomada de decisões - Desenvolve hipóteses e usa o conhecimento de estatística, visualização de dados e aprendizado de máquina para prever o futuro para o negócio - Visualização dos dados e usa técnicas de contar histórias - Escreve programas para automatizar a coleta e processamento de dados ## Habilidades **Analista de Dados: ** - Ótimas experiências nas mão com escrita de consultas SQL - Excelente com a Microsoft Excel para análise de dados - Programação - Habilidades de visualização - Solução de problemas - Conhecimentos de nicho **Engenheiro de Dados: ** - Entendimento sólido de SQL, MongoDB e programação - Bom conhecimento de arquitetura de dados, scripting, data warehousing e ETL - Hadoop-based analytics skills **Cientista de Dados: ** - Experiência em programação em Python e R - Ótimas compreensões em matemática e estatística - Habilidades de pensamento analítico e visualização de dados - Skills em aprendizado profundo, decisão e inteligência artificial ## Salários De acordo com o Glassdoor, o salário médio de um Cientista de Dados nos EUA é ao redor de 113. 000 dólares por ano, enquanto o salário médio para um Analista de Dados é ao redor de 70. 000 dólares por ano. O salário médio para um Engenheiro de Dados é ao redor de 110. 000 dólares por ano. ``` # Salários no Mundo do Data Science Um analista de dados em Estados Unidos ganha mais de 70 mil dólares por ano, enquanto que em Índia, um analista de dados pode Ganhar cerca de 7 lakhs 25, 000 rúpias por ano. Um engenheiro de dados nos Estados Unidos ganha mais de 112, 5 mil dólares por ano, e em Índia, pode ganhar mais de 9 lakhs por ano. Falando sobre o salário de um cientista de dados, um cientista de dados nos Estados Unidos ganha mais de 117 mil dólares por ano, e em Índia, um cientista de dados pode ganhar mais de 11 lakhs por ano. --- ## Aula - 5 | Ciclo de Vida do Projetos de Data Science | URL de Simplilearn: https://www.youtube.com/watch?v=2Nkjgcrm3F8 (Língua: en) Agora, vamos falar sobre o ciclo de vida de um projeto de ciência de dados. ### Passo 1: Estudo do Conceito * Compreender o problema empresarial * Pergunte questions para ter uma boa compreensão do modelo empresarial * Reunire-se com todos os stakeholders * Compreenda o que é disponível de dados Exemplos: * Qual é o nível de especificações necessário? * Qual é o objetivo final? * Existe um exemplo deste tipo de problema que foi resolvido anteriormente? --- ### Passo 2: Preparação de Dados (Ganhagem e Preparação de Operações de Dados) * Explode dados brutos para torná-lo útil em seu formato atual * Verifique as lacunas nos dados * Garanta que a estrutura dos dados é apropriada * Remove colunas desnecessárias * Gerencie valores ausentes Tópicos Subordinados: * Integração de Dados * Redundância de Dados * Transformação de Dados * Limpeza de Dados --- ### Gerenciamento de Valores Ausentes * Se apenas alguns registros têm valores ausentes, é aceitável excluir essas linhas inteiras * No caso de outros, preencha os valores ausentes com o valor médio, o valor mediano ou valores significativos para os dados e o problema que você está tentando resolver --- ### Passo 3: Planeamento do Modelo * Decida quais modelos farás usar * Faça análise exploratória dos dados para entender a relação entre as várias variáveis --- ### Análise Exploratória dos Dados (AED) * Use técnicas de visualização como histogramas, box plots e barras catétoricas * Encontre padrões ou tendências nos dados * Entenda os dados contidos nas colunas * Verifique valores ausentes * Decida qual tipo de modelo usar para a sua análise --- Passo 4: Construção do Modelo * Treine o modelo com os 80% de dados de treino disponíveis * Teste o modelo com o restante dos 20% dos dados * Repita o processo se o modelo não estiver a funcionar bem * Implemente o modelo se ele passa no teste --- ### Ferramentas para a Construção do Modelo * R: Oferece um ambiente de trabalho poderoso para análise de dados, visualização e aprendizado de máquina * Python: Fornece uma biblioteca rica para análise de dados, aprendizado de máquina e muito mais * MATLAB: Fácil de aprender e uma ferramenta populares durante a educação * SAS: Um poderosa ferramenta para executar análise estatística e ciência de dados ``` # Model Building e Análise Estatística para Data Science Este texto discute o processo de modelação e análise estatística para data science, se concentrando no exemplo de determinar o preço de um diamante de 1, 35 carata utilizando regressão linear. ## Model Building Avançando, completamos a parte de planeamento. A pergunta agora é, qual algoritmo e qual tipo de modelo vamos utilizar para treinar este modelo para implantação? Neste exemplo particular, se quisermos saber o preço de um diamante de 1, 35 carata, este pode ser considerado um problema de regressão linear. Com dados para várias carats de diamantes, é possível passar esta informação através de um modelo de regressão linear ou criar um, que então predição do preço para 1, 35 carata. A regressão linear é uma técnica que faz aparecer a relação entre uma variável independente (X) e uma variável dependente (Y). O objetivo é encontrar a equação de uma reta que é a melhor adequação para os dados dados. Na equação Y = MX + C, Y é a variável dependente, e X é a variável independente. O processo de treinamento determina os valores de M e C para um conjunto de dados dá-lhes. Após o processo de treinamento, é obtido um certo valor de M e C, que é utilizado para predizer os valores de dados novos que entram. O modelo é treinado e testado utilizando os conjuntos de dados de treino e de teste. Se o modelo está funcionando bem, é levado para a próxima etapa - implantação. Se não, o modelo tem que ser re-treinado se a precisão não for suficiente, ou um modelo ou algoritmo mais recente pode ser utilizado e o processo pode ser repetido. ## Model Building Existem várias formas de construir o modelo, como utilizando Python e bibliotecas como pandas ou numpy. Você pode encontrar mais sobre o processo num tutorial ou vídeo separado deste playlist. ## Communication of Results Quando disponibilizamos os resultados, a próxima etapa é comunicar estes encontrados aos stakeholders apropriados apresentando uma apresentação ou um dashboard. Como cientista de dados, é importante apresentar os resultados da exercício de análise e recomendar passos para solucionar o problema. ## Operationalization Se a apresentação do cientista de dados e os seus resultados forem aceites, então podem-se colocá-los em prática, melhorando ou solvendo o problema que foi apresentado no passo um. ### Aula - 6 | Estatística para Data Science | Simplilearn URL: [https://www.youtube.com/watch?v=vPeb_GENWgk](https://www.youtube.com/watch?v=vPeb_GENWgk) ** Idioma: en** Esta aula define o termo estatística e explica o seu papel no entendimento de problemas complexos do mundo real e tomada de decisões informadas. Também descreve análise estatística e análise não estatística, as principais categorias de estatística (descritiva e inferencial) e termos estatísticos importantes ao lidar com estatística. **Análise Estatística** A análise estatística é a ciência de coletar, explorar e apresentar grandes quantidades de dados para identificar padrões e tendências. Também é chamada de análise quantitativa e faz parte fundamental para empresas. **Estatística Inferencial** A Estatística Inferencial Generaliza o conjunto de dados e aplica teoria de probabilidade para conclusões. Permite inferir parâmetros populacionais baseados nos estatísticos de amostra e modelar relações dentro dos dados. **Sistema de Análise Estatística (SAS)** O SAS fornece uma lista de procedimentos para realização de estatísticas descritivas, incluindo proc print, proc contents, proc means, proc frequency, proc univariant, proc gchart, proc boxplot, e proc gplot. Aqui está um exemplo de utilização do SAS para analisar a media a partir de um conjunto de dados eletrónicos: ```SAS /* Importação do conjunto de dados eletrónico */ proc import datafile='electronic. xlsx' out=electronic dbms=xlsx sheet='Sheet1'; run; /* Análise da media dos dados importados */ proc means data=electronic; var average; run; ``` Esta demonstração mostra como utilizar estatísticas descritivas para analisar a média a partir do conjunto de dados eletrónicos. # Aula - 7 | Tipos de Distribuição em Estatística | Simplilearn ## Introdução às Distribuições de Probabilidade Antes de avançarmos, vamos ter uma breve introdução ao que é uma distribuição de probabilidade. Uma distribuição de probabilidade é uma lista de todos os resultados possíveis de uma variável aleatória, juntamente com suas respectivas probabilidades. Eles são usados em vários campos, mas raramente explicamos o que são. Neste vídeo, vamos discutir os três tipos principais de distribuição de probabilidade: distribuição normal, distribuição binomial e distribuição poisson. Vamos avançar. ## Distribuição Normal Uma distribuição normal é uma densidade de probabilidade contínua que tem uma função de densidade de probabilidade que nos dá uma curva de campainha simétrica. O dado pode ser distribuído de várias maneiras, mas há muitos casos onde o dado apresenta tendência para um valor central sem bias à esquerda ou à direita. Isso significa que não mostra quaisquer picos específicos à esquerda ou à direita, e se aproxima para uma distribuição normal. A metade do dado cai para a esquerda da média, e a outra metade cai para a direita. Vamos olhar para um gráfico que mostra a distribuição de altura em uma turma. Como você pode ver, a média de altura está no meio, e o dado à esquerda da média de altura representa as pessoas de baixa estatura, e o dado à direita dela representa as pessoas de altura direita. O eixo y nos mostra a probabilidade de que qualquer uma dessas alturas ocorra. A média de altura tem a maior distribuição ou o maior número de casos na turma, e à medida que a altura diminui ou aumenta, o número de pessoas que possuem essa altura também dimensiona. Esse tipo de distribuição é chamado de distribuição normal, onde a média ou o valor médio sempre é o ponto mais alto, e qualquer outro ponto após isso ou antes era significativamente menor. O resultado do dado nos dá uma curva de campainha, e, como podemos ver, não há apenas uma prejudicial espinha ou bias no dado a partir da média de altura. Passamos por dois termos associados à distribuição normal: densidade de probabilidade contínua e função de densidade de probabilidade. ### Densidade de Probabilidade Contínua A densidade de probabilidade contínua é uma distribuição de probabilidade onde a variável aleatória X pode assumir qualquer valor determinado porque há valores infinitos que X poderia assumir. A probabilidade de X assumindo um valor específico (por exemplo, se tivermos uma densidade de probabilidade contínua para a altura de um homem; qual é a probabilidade que um homem tenha exatamente 70 polegadas de altura? É impossível determinar porque a probabilidade de um homem medindo exatamente 70 polegadas é extremamente baixa. ) É mais provável que ele mede cerca de 70, 1 polegadas ou talvez 69, 97 polegadas, e isso não para ali. O fato é que é impossível medir qualquer variável que está nos escalas contínuos exactamente, e devido a isso, é impossível determinar a probabilidade de uma medida exata, o que ocorre em uma densidade de probabilidade contínua. ### Função de Densidade de Probabilidade A função de densidade de probabilidade é a representação matemática da densidade de probabilidade contínua. --- # Técnica de Probabilidade: Função de Probabilidade Densidade e Desvio Padrão Uma **função de probabilidade densidade** é uma medida estatística utilizada para calcularmos a probabilidade de um valor discreto. Uma variável discreta pode ser medida exatamente, enquanto uma variável contínua pode ter valores infinitos. No entanto, para ambas as variáveis contínuas e discreta, é possível definir uma função que nos fornece o intervalo de valores em que estas variáveis estão dispostas a cair, e esta função é conhecida como a função de probabilidade densidade. Agora vamos olhar o **desvio padrão**. O desvio padrão é utilizado para medir com que as informações em um grupo de dados se diferem uns dos outros ou se disseminam. O desvio padrão é um estatística que mede a dispersão de um conjunto de dados em relação ao seu valor médio. Para calcular o desvio padrão, primeiro subtraindo-se o valor de cada dado do valor médio, depois determination-se a média de todas as diferenças quadradas, e finalmente, calculando-se a raiz quadrada do resultado. Um desvio padrão maior significa que os dados se estendem mais lista a partir do valor médio. Para esclarecer, tomemos o exemplo das taxas de rendimento do setor St. A **função de distribuição de probabilidade** é uma estatística que lhe dá o valor de probabilidade para cada possível valor de um variável aleatória. Assim, se estamos tentando calcular a probabilidade de ganhos específicos em um setor, a **função de distribuição de probabilidade** fornecemos o valor probabilístico em relação às possíveis taxas de rendimento. Num exemplo de rendimento em áreas rurais, veja, por exemplo, as áreas agrícolas, não houve grandes diferenças no rendimento, consequentemente, o **média** será baixa com uns poucos valores. Ergo uma distribuição normal haverá um **desvio padrão baixo** e uma estreita **curva**. No contrário, em áreas urbanas, o rendimento é extremamente in igual entre excelentes ganhos de certas pessoas e baixos ganhos de outros, dando origem a **desvio padrão alto** e uma **curva mais ampla**. Para calcular o **desvio padrão** é necessário subtrair de cada dado o valor médio, encontrar a média de todas as diferenças quadradas, e finalmente a raiz quadrada desse resultado. Por exemplo, considere um conjunto de valores que representam as alturas de cachorros. Para encontrar a média, simplesmente distribua-se as alturas e divida-a pelo número total de valores, resultando em X_{μ} (média). Para calcular o **desvio padrão**, subtraia-se o valor de cada dado de X_{μ} (média), raiz quadrada de (o resultado da média de todos os valores quadrados). Por fim, a **distribuição normal padrão** é um tipo de distribuição de probabilidade padrão que tem o seu centro situado em zero e um desvio padrão de um. A distribuição normal padrão é uma distribuição simétrica (com uma curva achatesada) que é frequentemente utilizada como modelo para descrever as distribuições de muitas variáveis aleatórias. A única diferença entre uma distribuição normal normal e distribuição normal padrão é que os valores médio e o desvio padrão da distribuição normal padrão são sempre ambos "fixados" em zero e um, respectivamente. # Aula 1: Espaços de Amostra Discretos e Variáveis Aleatórias Um espaço de amostra discreto ou finito contém um número de resultados que depende do experimento. Se o espaço de amostra possui um número finito de resultados, este é conhecido como um espaço de amostra discreto ou finito. ## Variáveis Aleatórias Uma variável aleatória é uma descrição numérica do resultado de um experimento estatístico. Uma variável aleatória que pode assumir apenas um número finito de valores é definida para ser discreta. Uma que pode assumir qualquer valor num intervalo do eixo das abscissas do número real é dita ser contínua. ### Exemplo: No caso de X ser uma variável aleatória definida como a soma de números quando rolamos dois dados de seis faces, X pode assumir os valores 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 e 12. Perceba que o valor 1 não está aqui, pois a soma dos dois dados nunca pode ser 1. ## Distribuição Binomial A distribuição binomial é utilizada quando existem apenas dois resultados exclusivos de um julgamento. Estes resultados são de acordo apropriadamente rotulados como sucesso e fracasso. A distribuição binomial é utilizada para obter a probabilidade de observa-se X sucessos em N números de julgamentos com a probabilidade de sucesso num julgamento simples denotado por P. A distribuição binomial assume que P é fixo para todos os julgamentos. #### Condições: 1. Deve haver um número fixo de julgamentos realizados. 2. O resultado de um julgamento dado é somente dois (sucesso ou fracasso). 3. A probabilidade de sucesso permanece constante de julgamento para julgamento. 4. Os julgamentos são independentes. O resultado de um julgamento não influencia no resultado de qualquer outro julgamento. #### Calculando o Coeficiente Binomial Para calcular o coeficiente binomial, usamos a fórmula seguinte: ``` NCR = N! / [R! (N - R)! ] ``` Onde R é o número de sucessos em N números de julgamentos e P é a probabilidade de sucesso. 1 - P denota a probabilidade de fracasso. ### Exemplo: Para calcular a probabilidade de não ter 5's, 15's ou 35's ao rolar um dado três vezes, podemos utilizar a fórmula: ``` P[Nenhum 5, 15 ou 35] = NCR(3, 0) * (5/6)^0 * (5/6)^3 = 0. 5787 (aproximadamente) ``` Podemos calcular a probabilidade de ter 15's da mesma forma, e para 35's, obteríamos um valor de aproximadamente 0. 46. ## Distribuição Poisson A distribuição poisson é uma distribuição de probabilidades utilizada na estatística para mostrar como muitas vezes um evento é provável para acontecer durante um determinado período de tempo. É uma distribuição de contagem e é frequentemente utilizada para entender eventos independentes em um ritmo constante num intervalo dado de tempo. A distribuição poisson assume que: 1. A taxa média de ocorrências (lambda) é constante. 2. Os eventos acontecem aleatoriamente. 3. A ocorrência de um evento não influencia a ocorrência de outro evento. Para calcular a probabilidade de um evento acontecer X vezes, podemos usar a fórmula: ``` P(X) = e^(-lambda) * lambda^x / x! ``` #### Exemplo: No caso de pretender calcular a probabilidade de que exatamente 1 pessoa seja morta devido ao câncer em um ano inteiro na Índia, podemos utilizar a fórmula da distribuição poisson de forma seguinte: ``` P(1) = e^(-5) * 5^1 / 1! = 0. 033 (aproximadamente) ``` Isto estará perto de 3, 3%, deixando entender que a probabilidade de que exatamente 1 pessoa seja morta devido ao câncer num ano inteiro na Índia está em torno dos 3, 3%. # Deteção, Diagnóstico Médico e Aprendizado Profundo O aprendizado profundo, um subconjunto do aprendizado de máquina, é um campo baseado em aprender e melhorar por conta própria analisando algoritmos de computadores. O aprendizado de máquina, por outro lado, utiliza conceitos mais simples. O aprendizado profundo trabalha com redes neurais artificiais, que são projetadas para imitá-lo a cérebro humano. ## Aplicações - Reconhecimento facial - Reconhecimento de voz - Processamento de Língua Natural (NLP) - Muito mais aplicações ## Processamento de Língua Natural (NLP) O NLP pode ser definido como a habilidade das máquinas de aprender a língua humana e traduzi-la. Os chatbots cagem nessa categoria. ## Inteligência Artificial (IA) A IA está avançando em todos os campos essenciais, como: - Saúde - Educação - Robótica - Bancos - E-Commerce e a lista vai além. Na área da saúde, a IA é utilizada para identificar doenças, ajudando fornecedores de serviços de saúde e seus pacientes a tomarem decisões de tratamento e de estilo de vida melhorados. ## Exemplo de Algoritmo de Aprendizagem de Máquina Um exemplo simples de um algoritmo de aprendizagem de máquina é o K-vizinhos mais próximos. Suponha-se que temos uma pessoa (Paul) que gosta de músicas com ritmo rápido e intensidade alta. Dado uma nova canção, podemos classificá-la como gostada ou não gostada com base em seu ritmo e intensidade. Se a canção tem um ritmo rápido e intensidade alta, ela será provavelmente classificada como gostada. Senão, ela será provavelmente classificada como não gostada. ## Aprendizado Supervisionado e não Supervisionado No aprendizado supervisionado, o dado é rotulado, e a máquina aprende qual recurso está associado a qual rotulador. Por exemplo, podemos alimentar um modelo de aprendizagem de máquina com um conjunto de dados contendo o peso e o valor de diferentes moedas. O modelo aprenderia que se uma moeda pesa 3 g, ela é provavelmente uma moeda de 1 real. No aprendizado não supervisionado, o dado é não rotulado, e a máquina identifica os padrões por si só. Um exemplo poderia ser identificar grupos de jogadores de críquete com base em sua performance sem rotular avaliações pré-definidas. ## Futuro da IA O mercado da IA é esperado para atingir 190 bilhões de dólares em 2025. Com a crescente demanda por IA, mais e mais indústrias estão procurando Engenheiros de IA que possam ajudá-las a desenvolver sistemas inteligentes e oferecerem salários lucrativos que ultrapassam os 120. 000 dólares. --- ## Aula - 10 | Introdução ao Aprendizado de Máquina | Simplilearn URL: [https://www.youtube.com/watch?v=MlHwdnM1kok](https://www.youtube.com/watch?v=MlHwdnM1kok) Idioma: pt-PT Sabemos que os seres humanos aprendem das suas experiências passadas, e que as máquinas seguem as instruções dadas pelos seres humanos. Mas o que se acontece se os seres humanos podem treinar as máquinas a aprender das suas experiências passadas e fazer o que os seres humanos podem - e muito mais rapidamente? Bem, isso chama-se aprendizado de máquina. Mas isso não é apenas aprender: é também aprender coisas e razonar. Nesta aula, aprenderemos sobre os fundamentos do aprendizado de máquina para que possamos entendê-lo melhor. --- ## Aula - 11 | Aprendizado Supervisionado em Contraste com o Aprendizado não Supervisionado e o Aprendizado de Recompensa | Simplilearn URL: [https://www.youtube.com/watch?v=jWTSq0oVlcI](https://www.youtube.com/watch?v=jWTSq0oVlcI) Idioma: pt-PT Nesta aula, comparamos três tipos de aprendizado de máquina: aprendizado supervisionado, não supervisionado e de recompensa. - O aprendizado supervisionado é um ambiente controlado onde o dado fornecendo é rotulado e as saídas são especificadas. - O aprendizado não supervisionado é um sistema interessante onde o dado é não rotulado e as saídas não são necessariamente especificadas. A máquina faz suas próprias previsões para resolver problemas de associação e agrupamento. - O aprendizado de recompensa é um sistema de aprendizagem a partir de recompensas baseado na federação. A máquina aprende a partir do seu ambiente usando recompensas e erros. Isso é uma visão geral do aprendizado de máquina, supervisionado, não supervisionado e de recompensa. Entender estes conceitos fornece uma solidão para a exploração mais aprofundada no mundo da IA. ## Aprendizagem por Reforço: Entendendo Termos Chaves Este texto fornece uma visão geral da aprender por reforço e dos termos associados a ela. Aqui está a versão formatada: ``` ## Aprendizagem por Reforço: Entendendo Termos Chaves A aprendizagem por reforço tem se tornado abordagem padrão nas últimas few anos, e é essencial comprendê-los estes termos: ### Agente O modelo que está sendo treinado através da aprendizagem por reforço é referido como **agente**. Esta é a entidade que está sendo treinada, que pode ser uma rede neural, uma tabela Q ou qualquer combinação. ### Ambiente A situação de treino que o modelo tem de otimizar é chamada seu **ambiente**. Por exemplo, considere um robô tentando atingir uma caixa cheia de chaussures. O saída é a ação, e o ambiente fornece os passos possíveis que o modelo pode tomar. ``` > Aqui está um exemplo com um robô: > > O ambiente é toda a tabuleira do jogo. Se estiver a jogar um de aqueles jogos Mobius, toda a tabuleira do jogo estará em jogo. Contaminente, a posição atual se refere ao lugar onde o robô está na tabuleira do jogo e o que há em torno. ``` ### Ação As ações são todos os possíveis passos que o modelo pode tomar. O modelo escolhe uma ação baseado na sua política. ### Estado A posição atual retornada pelo modelo é referida como **estado**. No contexto de um jogo de vídeo, isso corresponde à tela que estás a ver. Para um robô, o estado representa a sua posição atual e as entradas que tem nesse lugar. ``` > Por exemplo: > > Se estiver a jogar um jogo de vídeo, o estado representa a posição atual na tabuleira do jogo e o que há em volta. Para um robô, o estado representa a sua posição e o que vê nesse lugar. ``` ### Reward O modelo é recompensado com pontos para ajudá-lo a andar na direção certa. O objetivo é maximizar o recompensa e obter o recompensa máxima possível. ### Política A **política** determina como um agente se comportará em qualquer momento. Funciona como um mapeamento entre a ação e o estado atual. A parte da política está ligada abaixo, e decide quão louvável é a ação aprová-la. ``` > Por exemplo: > > No contexto de um cão a ser treinado, a política ajuda o cão a seguir o caminho que maximiza sua recompensa, e poderá aprender novas ações, como abecrar, em noddedor. ``` ### Processo de Decisão de Marcov O processo de decisão de Marcov é uma abordagem de aprendizagem por reforço utilizada para mapeamento de um estado atual para uma ação. O agente interage contínuamente com o ambiente a fim de produzir novas soluções e receber recompensas. ``` > No processo de decisão de Marcov: > > O ambiente envia ao agente um estado, e o agente olha para a recompensa e o novo estado para decidir sua próxima ação. ``` ``` Tenho mantido todos URLs e preservado a estrutura hierárquica do texto, corrigido a gramática e a puntuação, e mantido tudo os termos técnicos e comandos inalterados. Tenho aplicado também a circuinvenção Markdown onde requerido. ``` # Rewards e Configuração Avançada O sistema de recompensa deste projeto é importante a notar, pois determina como as recompensas são devolvidas ao sistema. Depois disso, temos um redefinir a tabela, que é simples - apenas re define a tabela para o início. O processo de aprendizagem é feito pelo trial e erro, portanto, a tabela precisa ser redefinida constantemente. Em seguida, jogamos um certo número de rodadas (por exemplo, 100), o qual pode ser definido de acordo com as preferências desejadas. Neste exemplo, temos dois jogadores: o jogador um e o jogador dois, com o jogador dois sendo o computador jogando consigo mesmo. Uma maneira poderosa para aprender a jogar um jogo é ter dois modelos que essencialmente estão tentando se baterem um com o outro. Este método foi utilizado no xadrez, por exemplo, onde dois jogadores com aprendizado de reflexão foram um dos métodos utilizados para treinar uma das melhores hastes de jogo de xadrez do computador. O jogador escolhe uma ação, a tenta e, maior o número de ações que tenta, mais registramos a hash. Se uma delas ganha, recebe a recompensa, e voltamos a tentar. A parte divertida vem quando jogamos com um humano, pois teremos a chance de ver que a ação quando coloca a sua própria informação. A tabela será reimpressa cada vez. A integração não é tão excitante, mas o sistema de recompensa é a chave parte deste projeto. Demonstra como recompensar diferentes configurações e como escolher a próxima melhor ação, as quais são o foco do aprendizado de reflexão atual na tecnologia. Temos nossa ambiente, onde o estado (o que está acontecendo) é devolvido de acordo com o que acontece. Também temos nossa agente, o jcheckbox jogador. A classe Player, no caso, não é um jogador humano, mas sim os jogadores de computador. Na classe Player, podemos ver a magia por trás do jogador aprendendo a navegar pela tabela. A tabela, claro, retorna um estado que o jogador pode ver e recompensar. Podemos ver que o nosso processo de treino fica complicado na matemática, mas a chave é como treinamos os estados. O estado final (ganha) recebe o maior número de pontos, enquanto o primeiro passo recebe o menor número de pontos, essencialmente treinando em direção ao contrário. Finalmente, redefinimos a tabela e salvamos a política, que são as várias coisas que estão acontecendo entre o agente e o estado para determinar o que está acontecendo. Em seguida, criamos um jogador humano, o qual é diferente do dos jogadores de computador. No jogador humano, escolhe uma ação (linha e coluna), e, se a ação não estiver disponível, o programa irá continuar perguntando até que você obtenha a ação que funciona. Adicionamos o estado hash, o qual não precisará preocupar, pois devolve a ação e reforça. No final do jogo, deve-se retropropagar e atualizar os valores de estado, este método não está sendo feito pois não está programando o modelo, o modelo está ganhando suas próprias recompensas. Configuramos os jogadores P1 (jogador um) e P2 (jogador dois) e os enviamos para o estado, ao qual eles começam a jogar e jogam 50, 000 rodadas (pode ser abaixado para resultados mais rápidos). Jogamos o jogo e salvamos a política e examinamos as diferenças entre os resultados. Lembre-se de carregar P1 e P2 e configurar o ambiente de acordo. A taxa de experiência do computador é configurável em zero para jogar com um humano. Divirta-se jogando! ```python # Código de exemplo para configurar os jogadores e o ambiente P1 = Player(experience_rate=0) P2 = Player() state = GameState() # Jogando o jogo para _ em range(100): # número de rodadas state. jogar(P1, P2) ``` Título: Guia Introduitório de Aprendizagem Automática – Tic Tac Toe ================================================================ Subtítulo: Partindo do Tic Tac Toe, aprenda sobre algoritmos de Aprendizagem Profunda ---------- Por [Seu Nome de Usuário] [Data] ### Introdução Este guia fornece uma introdução a aprender jogar Tic Tac Toe com um computador treinado em Aprendizagem Automática. Enquanto isso, você aprenderá sobre Aprendizagem Profunda e como este algoritmo deve desempenhar um papel importante na evolução do aprendizado automático em décadas a começar por amanhã. ### Treinando um Agente de Jogadas Antes de começar a jogar, precisaremos treinar um agente de jogadas. Vamos treiná-lo usando o Tic Tac Toe como ambiente de treinamento. 1. Inicie o treinamento ``` $ python tictactoe_game. py train ``` > *Você pode precisar esperar alguns minutos para terminar o treinamento, já que utilizamos um conjunto de dados relativamente grande para treinar o agente. Atenção: o agente foi treinado ativamente e o processador de muita potência foi utilizado. > *O processamento levou cerca de 5 minutos. 2. Carregue o modelo de política gravado e configure o computador como jogador 1. Observe que o computador foi carregado no canto inferior direito. ``` $ python tictactoe_game. py ``` > *Observação: o computador carregou o último estado no início. Vamos corrigir esse erro e regravar a política antes de prosseguir. 3. Reconfigure a política e salve com novamente o modelo de política gravado. Vamos carregar o modelo de novo. ``` $ python tictactoe_game. py ``` > *Apague a mensagem de erro resultante e regresse a tela inicial. 4. Clique em **Começar Novo Jogo** para jogar. ### Como Jogar Responda a qualquer movimento dentro de um número de aproximadamente 1 a 3 para o número da linha e o número de um a 3 para a coluna. Por exemplo: ```markdown 0 1 ``` Consulte a mineravação de dados para mais informações sobre como jogar. ### Observações * O jogo não tem predefinição de dificuldade. Você poderia verificar isso corrigindo os valores no código para trabalhar com dados maiores ou menores, trocando o jogador 1 e o jogador 2 e colocando um aumento no tempo limite para a decisão do agente. ### Aprendizado Supervisionado, Aprendizado não Supervisionado e Aprendizado Profundo #### Aprendizado Supervisionado O Aprendizado Supervisionado utiliza dados com rótulos pré-definidos para treinar os modelos de aprendizado automático. Por exemplo, treinar uma máquina para identificar a forma de um animal como cachorro ou gato em imagens. #### Aprendizado não Supervisionado O Aprendizado não Supervisionado utiliza dados sem rótulos pré-definidos para treinar a máquina. Por exemplo, identificar a classe de um veículo, como ônibus ou caminhão, no arquivo de imagem. #### Aprendizado Profundo O Aprendizado Profundo, também conhecido como Leste Falo, é uma técnica de algoritmos que permite que um computador produza um resultado sem predefinir uma função. Este tipo de algoritmo aprende baseado em sua própria ação e aprendizado progressivo que ocorre conforme o algoritmo interage com os dados. Este tipo de algoritmo aprende não só com um Tic Tac Toe, mas também em ambientes de aprendizado, como tradução de idioma de uma linguagem para outra. Este exemplo de Tic Tac Toe é apenas uma peça do mosaico. Aumente seu conhecimento do Aprendizado Profundo experimentando informações adicionais no Tic Tac Toe. ### Você quer copiar a Tic Tac Toe? Nós governmentamos que é muito divertido! Experimente-o, teste, experimente com diferentes valores e saitotes do P1 e do P2 para verificar os efeitos. Fonte: [Código do Tic Tac Toe original](https://github.com/thejitendra/Reinforcement_Learning_Quiz_Environment/tree/master/TicTacToeRewardEnvironment) ### Apresentação - Modulo 12 | Elementos básicos do Aprrendizado por Regressão, Regressão linear, Regressão logística | Simplilearn | <https://www.youtube.com/watch?v=OT8KpzdYxvA> | Inglês Muitos profissionais desejam saber se existe algum relacionamento entre duas ou mais variáveis, por exemplo, existem relação entre a nota do terceiro exame de francês de um aluno e seu exame final? Se sim, como estão relacionadas e em grau quantificado? A regressão pode ser usada para chegar a uma conclusão neste cenário. Neste módulo, aprenderemos sobre a regressão e exploraremos os fundamentos técnicos. #### Dados variáveis - Regressão multivariada: trata de se ter mais de duas variáveis. - Regressão linear: trata de prever um valor dependente usando apenas uma variável independente quantitativa. #### Casos de uso da Regressão - Preditivo: modelar relação entre variáveis - Preditivo: praticamente todo produto pode ser modelado com estatísticas - Preditivo: como estimação de custos futuros ou conjuntos de vendas #### Processo de Análise 1. Identificar a relação entre duas ou mais variáveis 2. Desempenhar o tipo de análise: relaxação, cóDigo, regressão múltipla (caso tenha mais do que 2 independentes) 3. Resolver equações pela formação da função conhecida como regressão (linear) 4. Cálculo de parametros 5. Validação cruzada para avaliar a qualidade dos elementos (toque-toque) #### Considerações - Escolher o algoritmo adequado é importante - Métodos comuns de aproximação linear: metodo dos menos quadrados, estimativa da coeficiente de determinância, valor mediano errors das estimativas, variáveis falsos e interação - Métodos de aproximação não linear: polinomios, função exponencial, raiz quadrada, operação cossenoidal. ### Assumções Método de regressão linear começa da premissa de um relacionamento linear e additivo entre valor dependente e independente. Algumas suposições são: - Moreno brevidade de interação da regressão - Dados de forma linear - Colinearidade - Autocorrelação despreziminente - Homocedasticidade ```markdown # Predição de Lucro de Empresa Usando Regressão Linear Neste guia, aprenderemos a prever o lucro que uma empresa gera baseado em suas despesas, particularmente enfocando as despesas com Pesquisa e Desenvolvimento (R&D). ## Introdução Este tutorial aborda: 1. **Algoritmos de Aprendizado de Máquina**: Íntegramos neste guia a foca em Regressão Linear e seu papel em um modelo maior. 2. **Aplicações da Regressão Linear**: Analisaremos um caso de uso para a estimativa de lucros de empresas. ### Regressão Linear e Aprendizado de Máquina Exploraremos a relação entre variáveis independentes e dependentes usando regressão linear, buscando os preditores significativos da variável de resultado com o maior nível possível de precisão. **Variável Independente**: Uma variável cujo valor não muda devido aos efeitos de outras variáveis e é utilizada para manipular a variável dependente. É frequentemente denotada como `X` neste exemplo. **Variável Dependente**: Uma variável cujo valor muda quando há manipulação de variáveis independentes. É frequentemente denotada como `Y`. ### Exemplo: Yield de Cultivo baseado em Chuva Para melhor compreender o conceito, considere o seguinte exemplo: cultivo, chuva, e yield. Aqui: 1. `Chuva` é a variável independente (não é possível controlar a chuva, mas a chuva controla os cultivos) 2. `Yield` é a variável dependente (dependente da quantidade de chuva) ### Definições do Aprendizado de Máquina - **Aprendizado Supervisionado**: Nós temos nossos dados e respostas para um grupo, que usamos para programar nossa modelo e chegar em uma resposta. - **Aprendizado não Supervisionado**: Não temos as respostas e somos apenas agrupando coisas. - **Aprendizado por Rewards**: Dámos feedback positivo e negativo à nossa algoritmo para programá-lo e não tem informações até após o fato. ### Tipos de Regressão Linear 1. **Regressão Linear Simples**: Quantidade lenta de pontos de dados e uma linha simples é desenhada. 2. **Regressão Linear Múltipla**: Consideramos várias variáveis (e. g. , chuva, alimentação dos cultivo, hora da colheita). 3. **Regressão Linear Polinomial**: Uma linha curva é desenhada em vez de uma linha reta. ## Aplicações da Regressão Linear Analisaremos casos reais de uso da regressão linear, incluindo: 1. **Crescimento Econômico**: Determinando o crescimento econômico de um país ou estado. 2. **Previsão de Preço de Produtos**: Previsando os preços de produtos para o futuro baseados nos preços anteriores. 3. **Vendas de Imóveis**: Avaliando o número de imóveis vendidos e seus preços nos próximos meses. 4. **Previsão de Pontuações**: Previsando pontuações em esportes baseado no desempenho do jogador. ``` Here's the translated and formatted text for better readability: ```markdown # Predicting Company Profit Using Linear Regression In this guide, we'll learn to predict a company's profit based on its expenses, specifically focusing on the Research and Development (R&D) expense. ## Introduction This tutorial covers: 1. **Machine Learning Algorithms**: We'll focus specifically on Linear Reg # Cálculos Matemáticos e Regressão Linear ## Calcular Inclinação e Coeficiente Realize os cálculos matemáticos em folha de papel ou usando uma calculadora, e você encontrará a inclinação a ser 6 e o coeficiente a ser 2, 2. Se continuar a seguir pela fórmula, verificará que ela se mostra igual a 2, 2. ``` y = 6 * x + 2, 2 ``` ## Valores Previsíveis de Y correspondendo aos Valores de X Usando a equação linear, conseguimos: ``` y = 6 * x + 2, 2 ``` Tomamos estes valores e os plotamos: ``` y = 6*1 + 2, 2 = 2, 2 y = 6*2 + 2, 2 = 4, 2 y = 6*3 + 2, 2 = 6, 2 . . . ``` ## Linha de Melhor Ajuste e Residuos Plotamos estes valores e comparamos-os com os valores y-reais. A distância entre os valores reais e preditos é conhecida como residuos ou erros. A linha de melhor ajuste deverá apresentar o menor somatório de áreas de quadrado desses erros, também conhecido por E-quadrado. ! [Linha de Melhor Ajuste com Residuos](inserir_gráfico_aqui) ## Erros Quadrados Totais (SSE) Os erros quadrados totais para esta linha de regressão são 2, 4. Calculamos isto multiplicando as diferenças entre os valores reais e preditos, somando-os e obtendo o valor final. ``` SSE = (Yus - y_prediction)² = 2, 4 ``` ## Regressão Linear Múltipla Agora, vamos passar para a Regressão Linear Múltipla. Em vez de ter apenas uma entrada (X), temos múltiplas variáveis: ``` y = M1 * X1 + M2 * X2 . . . + Mn * Xn + C ``` Cada variável tem sua própria inclinação (M1, M2, . . . , Mn). Ainda temos um único coeficiente (C). Quando lidamos com Regressão Linear Múltipla, distribuímos a única Regressão Linear conforme mostrado a seguir: ``` y = M1 * X1 + M2 * X2 + . . . + Mn * Xn + C ``` ## Implementação de Regressão Linear Múltipla em Python Nas `Python`, implementaremos a Regressão Linear Múltipla para prever a renda empresarial baseada em gastos tais como custos de I+D, Administração e Marketing. #### Importando Bibliotecas e Dados Primeiro importamos as bibliotecas necessárias e carregamos o dataset. ```python import numpy as np import pandas as pd import matplotlib. pyplot as plt import seaborn as sns # Carregar o dataset dados = pd. read_csv('http://path_para_o_seu_dataset.csv') ``` Em seguida, formatamos os dados para se adequar ao modelo de regressão linear e resolvermos o problema utilizando Regressão Linear Múltipla. ```python # Formatar os dados e solução e validação ``` Você poderá continuar a analisar os resultados e criar representações visuais para melhor compreensão da relação entre as variáveis e a variável dependente. Título: Modelo de Regressão Linear para a Previsão de Lucro usando Sklearn ==================================================================== Descrição: Este tutorial orienta você a configurar um modelo de regressão linear para prever lucro usando Sklearn. Entraremos na preparação dos dados, evitar o trap do *dummy variable*, dividir os dados, criar e treinar o modelo de regressão linear e avaliar seu desempenho usando a pontuação R-quadrado. Pré-requisitos: - Familiariação com o programa Python - Bibliotecas Python: Sklearn, NumPy e Pandas Passos: 1. Preparação dos Dados - Transforme dados categóricos em numéricos usando LabelEncoder e OneHotEncoder: ```python from sklearn. preprocessing import LabelEncoder, OneHotEncoder label_encoder = LabelEncoder() onehot_encoder = OneHotEncoder(categories='auto', sparse=False, handle_unknown='ignore') X = dataframe[['Gastos em Pesquisa e Desenvolvimento', 'Gastos Administrativos', 'Gastos em Marketing']] y = dataframe['Lucro'] X[: , 3] = label_encoder. fit_transform(X[: , 3]) X = onehot_encoder. fit_transform(X) ``` 2. Evitar o Trap do Dummy Variable - Remova colunas adicionais devido à OneHotEncoder: ```python X = X[: , 1: ] ``` 3. Divisão dos Dados - Divida os dados em conjuntos Treino e Teste: ```python from sklearn. model_selection import train_test_split X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 2, random_state=0) ``` 4. Criação e Treinamento do Modelo de Regressão Linear - Importe e crie o Modelo de Regressão Linear: ```python from sklearn. linear_model import LinearRegression regressor = LinearRegression() regressor. fit(X_treino, y_treino) ``` 5. Previsão dos Resultados do Conjunto de Teste - Preveja os valores do conjunto de teste e compare com os valores reais: ```python y_predito = regressor. predict(X_teste) from sklearn. metrics import r2_score r2 = r2_score(y_teste, y_predito) print(f'Pontuação R-quadrado: {r2}') ``` Observações Gerais: - O Modelo de Regressão Linear é um modelo estatístico utilizado para predizer variáveis de saída contínuas baseadas em uma ou mais variáveis explicativas. - Passos importantes incluem a preparação dos dados, a divisão dos dados em conjuntos Treino e Teste, a criação e o treinamento do modelo, e a avaliação do desempenho usando a pontuação R-quadrado. - A biblioteca Sklearn fornece funções úteis como LabelEncoder, OneHotEncoder, train_test_split, LinearRegression e r2_score para executar estes passos. # Aprendizado Supervisionado e Regressão Logística Neste vídeo, discutiremos o que é o Aprendizado Supervisionado e focaremos na Classificação, com uma ênfase particular na Regressão Logística para Classificação Binária. Também compararemos a Regressão Logística com a Regressão Linear, exploraremos algumas aplicações da Regressão Logística e concluiremos com um caso de uso em Python. ## O que é o Aprendizado Supervisionado? O Aprendizado Supervisionado é um dos dois tipos principais de métodos de aprendizado de máquina. No Aprendizado Supervisionado, utilizamos dados etiquetados para ajudar o sistema a aprender. Essa abordagem é semelhante à como as pessoas se aprenderiam. Por exemplo, se você quiser ensinar a um criançino a reconhecer uma maçã, não explicaria seu diâmetro, cor ou forma. Em vez disso, você mostraria uma maçã para o infantinho e lhe disse, "Isso é uma maçã. " Assim, a próxima vez que você mostrar uma maçã, eles podem reconhecê-la imediatamente como uma maçã. ### Aprendizado Supervisionado no Processo de Aprendizado de Máquina O Aprendizado de Máquina é dividido em dois tipos principais: Aprendizado Supervisionado e Aprendizado Automático. Não discutiremos o Aprendizado por Reward em este vídeo. 1. **Aprendizado Supervisionado**: Utiliza dados etiquetados para aprender. Você tem dados históricos e utiliza o aprendizado supervisionado quando você tem dados etiquetados. 2. **Aprendizado Automático**: Utiliza técnicas como classificação e associação e é utilizado quando você não tem dados etiquetados. No Aprendizado Supervisionado, existem dois tipos de técnicas: Classificação e Regressão. A escolha entre Classificação e Regressão depende da natureza do problema que estamos tentando resolver: - **Classificação**: É usada quando desejamos classificar dados. Pode ser classificação binária (como se o passageiro sobreviveu ou não segundo o novo filme Titanic), ou classificação multiclass (como classificação de imagens onde a entrada é uma imagem e a saída é múltiplas classes como cachorro, gato, elefante, tigre, etc. ). - **Regressão**: É usada quando precisamos prever um valor contínuo. Por exemplo, prever o preço das ações ou prever a temperatura para o dia de amanhã. ## Regressão Logística A Regressão Logística é um algoritmo usado para Performance de Classificação Binária. Apenas para evitar qualquer confusão com a Regressão Linear, chamamos essa técnica de aprendizado supervisionado de "Classificação". ### Aplicação da Regressão Logística Consideremos um exemplo: Seu carro não foi revistado há muitos anos e você quer saber se capitolará no futuro imediato. Esse é um problema de classificação: determinar se o seu carro capitolará ou não. Para realizar a classificação, coletamos dados de alguns usuários de carros. Estes dados incluem o número de anos desde o último revistamento, o número de vezes que o carro quebrou e a probabilidade de quebra do carro. Podemos então plotar essa informação em eixos X e Y. A partir deste gráfico, podemos predizer se o seu carro capitolará ou não. ### Comparação entre a Regressão Linear e a Regressão Logística Embora ambos a Regressão Linear e a Regressão Logística tenham o termo "regressão" no nome, elas possuem propósitos distintos: - **Regressão Linear**: Um algoritmo para Aprendizado Supervisionado onde você está tentando encontrar um valor contínuo. Pode ser o preços de uma propriedade em vendas, seu salário de alta escola ou o preço das ações, que são todos valores contínuos, não discretos como sim ou não. - **Regressão Logística**: Um algoritmo para Aprendizado Supervisionado utilizado para Classificação, onde o resultado é discreto, como sim ou não, gato ou cachorro, não um valor contínuo. Neste vídeo, focaremos em Aprendizado Supervisionado, depois em Classificação, e dentro de Classificação, entraremos mais profundamente nos algoritmos da Regressão Logística. --- Neste texto foram realizadas as seguintes alterações: 1. Formatado o texto de acordo com as diretrizes de Markdown. 2. Melhorou-se a gramática e a punctuação. 3. Adicionado os cabeçalhos e seções para melhor estruturação. 4. Manutenção de todos os termos técnicos e exemplos de código como foram fornecidos. 5. Conservaram todos os URLs e conteúdos referenciados. Medida das Odds ================= Os valores das odds vão de 0 para Infinito. Quando esta probabilidade é zero, as odds serão igual a zero. Quando a probabilidade se transforma em um, o valor de las odds será 1. Um valor de 0 para a probabilidade significa que o evento não ocorrerá, enquanto um valor de 1 significa que o evento ocorrerá. `Por 0`, a probabilidade permanecerá infinita, mas isso é uma infinitude matemática, não as infinitudes que lidamos no mundo real. A equação de uma reta pode ser representada da seguinte forma: ``` y = Beta0 + Beta1 * x ``` Nesta equação, `Beta0` é o intercepto Y, e `Beta1` é a pendenteado da reta. Se tomarmos o log de ambas as partes da equação das odds, conseguimos uma equação que se parece assim: ``` log(Px / (1 - Px)) = Beta0 + Beta1 * x ``` Esta palavra logit é realmente derivada do facto de tomarmos um log de `Px` por `1 - Px`. É uma extensão da cálculo das odds que já viemos. Resolver esta equação nos dá a equação seguinte para `Px`: ``` Px = 1 / (1 + e ^ (-Beta0 - Beta1 * x)) ``` Esta é nada mais do que a equação da função sigmoidal, também conhecida como função logística, e é a equação da regressão logística. A plotagem desta função nos dá a curva sigmoidal. Abaixo, pode ver a comparação entre a regressão linear e a logística regressão, e a diferença entre elas: * A regressão linear é usada para resolver problemas de regressão onde prevemos valores contínuos, enquanto a regressão logística é usada para resolver problemas de classificação, onde precisamos prever valores discretos. * As variáveis independentes na regressão linear são contínuas, enquanto elas são da natureza categórica ou discreta na regressão logística. * A regressão linear ajuda a estimar a variável dependente ao longo de uma mudança na variável independente, enquanto a regressão logística ajuda a calcular a probabilidade ou possibilidade de um evento específico ocorrendo. * A regressão linear tem forma recta, enquanto a regressão logística tem forma sigmoidal ou de S. Aqui estão algumas das aplicações do regressão logística: #### Pronóstico do Tempo * No pronóstico do tempo, o regressão logística pode ser usada para encontrar a probabilidade de chover ou não chover. #### Classificação de Objetos * No classificação de objetos, o regressão logística pode ser usada para classificar os objetos, como se um fotografia contém um cachorro ou não um cachorro. No entanto, para que possamos manter-se como classificação binária, podemos precisar converter outras opções, como gato ou elefante, em "não cachorro. " #### Saúde * No campo da saúde, o regressão logística pode ser usada para encontrar a taxa de sobrevida de um paciente baseado em vários parâmetros, como a pontuação de trauma e a idade. Por exemplo, podemos utilizar o regressão logística para prever o número em uma imagem, o que pode ser demonstrado através de um bloco de notas Jupyter. Primeiro, treinamos o modelo com o conjunto de dados de treino, e depois o testamos com o conjunto de dados de teste para encontrar boa precisão. A matriz de confusão é utilizada para medir a precisão neste exemplo. A matriz de confusão é uma matriz utilizada para medir a precisão do modelo de classificação, como o regressão logística. É uma matriz que mostra a confusão que ocorre quando comparamos os valores previsíveis com os valores reais. Em um modelo ideal, o número máximo deve estar nas diagonais, e as outras células devem ter poucos números. O número máximo na diagonai indicará que o valor previsto e o valor real são os mesmos. A precisão do modelo pode ser determinada pela quantidade de valores reais na comunidade das células em diagonal comparado com a totalidade número de células na Matriz. # Documentação Técnica - Análise de Imagens com Regressão Logística Este tutorial mostrará como utilizar a regressão logística para identificar imagens. ## Introdução A regressão logística é um tipo de modelo de machine learning utilizado para classificar variáveis dependentes binárias baseada em variáveis independentes. Neste tutorial, vamos aprender como utilizar a regressão logística para identificar imagens. ### Prerequisitos Para o seguimento deste tutorial, você precisará de uma conta no Anaconda e ter instalado o Jupyter Notebook. ### 1. Preparo dos Dados O primeiro passo é importar todos as bibliotecas necessárias e carregar os dados. ```python import numpy as np import matplotlib. pyplot as plt from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn. metrics import confusion_matrix from mpl_toolkits. axes_grid1. inset_locator import inset_axes ``` ```python data = load_digits() # Carrega os dados de digitos ``` ### 2. Separação dos Dados Agora, vamos separar nosso conjunto de dados em conjunto de treinamento e teste. ```python X_train, X_test, y_train, y_test = train_test_split(data. data, data. target, test_size=0. 2, random_state=42) ``` ### 3. Criação do Modelo Agora, vamos criar um objeto de Logistic Regression e treiná-lo com nosso conjunto de dados de treinamento. ```python logistic_regressor = LogisticRegression(max_iter=1000, random_state=42) logistic_regressor. fit(X_train, y_train) ``` ### 4. Avaliação do Modelo Agora, vamos avaliar o desempenho do modelo. Primeiramente, iremos testar sua precisão. ```python y_pred = logistic_regressor. predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy: ", accuracy) ``` ### 5. Matriz de confusão Agora, vamos obter a matriz de confusão para obter mais informações detalhadas sobre o desempenho do modelo. ```python confusion_matrix = confusion_matrix(y_test, y_pred) ``` ### 6. Visualização da Matriz de confusão Por último, iremos visualizar a matriz de confusão em forma de grade de sombra. ```python np. set_printoptions(precision=2) fig, ax = plt. subplots(figsize=(10, 6)) sns. heatmap(confusion_matrix, annot=True, fmt="d", cmap="Blues", ax=ax) ax. set_xlabel("Predicted") ax. set_ylabel("True") ax. xaxis. set_ticklabels(classes, rotation=45) ax. yaxis. set_ticklabels(classes) for i, j in itertools. product(range(confusion_matrix. shape[0]), range(confusion_matrix. shape[1])): ax. text(j, i, confusion_matrix[i, j], horizontalalignment="center", color="white" if confusion_matrix[i, j] > 2 else "black") ax. tick_params(axis="x", labelsize=12) ax. tick_params(axis="y", labelsize=12) ax. spines["top"]. set_visible(False) ax. spines["right"]. set_visible(False) ``` --- ### Aula - 13 | Regressão Linear vs Regressão Logíst # Internet Explorer e Python 3 ## Visão geral Neste tutorial, exploraremos a diferença entre os modelos de regressão linear e logística usando Python 3. 6. Teremos a trabalhar com dados de custos da seguração. ### Pré-requisitos - Python 3. 6 - pandas - label encoder pré-processador (de sklearn) ### Passos 1. Importando bibliotecas necessárias ```python import pandas as pd from sklearn. preprocessing import LabelEncoder ``` 2. Carregando o conjunto de dados ```python dataset = pd. read_csv('insurance_data. csv') ``` 3. Pré-processamento dos dados ```python # Codificação de variáveis categóricas label_encoder = LabelEncoder() dataset['sex'] = label_encoder. fit_transform(dataset['sex']) dataset['smoker'] = label_encoder. fit_transform(dataset['smoker']) dataset['region'] = label_encoder. fit_transform(dataset['region']) # Exclusão de duplicados dataset. drop_duplicates(inplace=True) ``` 4. Divisão do conjunto de dados em conjuntos de treino e teste ```python from sklearn. model_selection import train_test_split X = dataset. drop('charges', axis=1) y = dataset['charges'] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 3, random_state=42) ``` 5. Construindo e ajustando o modelo de regressão linear ```python from sklearn. linear_model import LinearRegression modelo = LinearRegression() modelo. fit(X_treino, y_treino) ``` 6. Prevendo os custos ```python X_pred = dataset. drop('charges', axis=1) y_pred = modelo. predict(X_pred) ``` 7. Avaliando a precisão do modelo (A ser adicionado) ## Dados de Cogumelos (Passos semelhantes para o conjunto de dados de segreatura) ### Objetivo Analisar a diferença entre os modelos de regressão linear e logística, focando nos dados de custos da seguração. ### Conceitos importantes - Regressão Linear - Regressão Logística - Pré-processamento dos dados - Divisão dos dados em conjuntos de treino e de teste - Avaliação da precisão do modelo ### Palavras-chave - pandas - LabelEncoder - train_test_split - LinearRegression - predict ### Nota - URLs e referências a bibliotecas preservadas. - Correções de formatação e gramática. - O código pode requerer ajustes para ser executado, pois apresenta um formato simplificado para clareza. # Aula - 14 | Classificação na Aprendizagem de Máquina | URL Simplilearn: [https://www.youtube.com/watch?v=QJ_hvtkQzig](https://www.youtube.com/watch?v=QJ_hvtkQzig) (Idioma: pt-PT) A classificação é uma ferramenta de aprendizagem de máquina muito amplamente utilizada hoje e é também um dos versões mais simples de se iniciar o entendimento de como funcióam algumas do máquinas de aprendizagem de máquinas. Nesta aula, começamos pela verificação de quê exatamente é classificação, termos relevantes ao domínio classificação, alguns usos reais do mundo empresarial, algoritmos classificadores de uso popular, e demonstrações a lá mãos em Python. ## O que é Classificação? A classificação consiste em utilizar algoritmos de aprendizagem de máquina para se aprender como atribuir uma etiqueta de classes a dados dados. No diagrama seguinte, temos os dados não classificados. Fornecemos então que esses dados passarem por uma ferramenta de aprendizagem de máquina de classificação para os dados serem assim classificados. ``` Dados não classificados =-> Dados classificados ``` A ferramenta de classificação de aprendizagem de máquina actua como um caixa negro. Isto poderá ser revisitado à medida que progredimos. Como um exemplo, se atribuís as tarefas de classificar um remogo de carros com carro e os de moto, estiveríamos de dados baseado na natureza dos autoveículos, os que constituem, a parte posterior de remonho do parque, assim como todos os de corpo estende até à gama dos cavaleiros negros, todos estes registos de correm até com imagens destes objetos. ## Terminologia Importância Aqui se encontram as termos claves antes do esforço para conhecer como todas essas regras atribuem. Os dados para sortidos e que tem todos os sentidos: 1. **Classificador: ** Está o algoritmo utilizado para mapeação dos dados de entrada para uma etiqueta determinada. 2. **Modelo classificador: ** Este modelo predi-ou ou presta-projeto em que os classificadores e as funções do modelo classificação constituem, de facto, um factor chave 3. **Features: ** Características individuais mensuráveis e medidas objetos ou conceitos que pretende observada. Estão essas, assim referidos como aspectos da caracterização sobre a data pontos o dataset são grupados . 4. **Etiquetas: ** As distinções formadas sobre com base nos carateristicas de um sistema 5. **Clusteres: ** Agrupação comuns caracteres, com conjuntos destes elementos, podemos entender tais aglomerados . 6. **Classificação Binaria: ** Este se refere condições onde só se conseguem concluir num resultado verdadeiro ou falso 7. **Classificação Multetiqueta: ** Condição esta em que em cada objeto atribuiremos a todos os possiveis rótulos, por cada exemplo e uma determinado rótulos é seleccionado o conjunto desses. 8. **Classificação Multi: ** se refere Classificação contendo mais que dois e, cada registo, escolher qual rótulos a aplica Os principais aspeitos se observar com esta constelação: - quando colamos juntas os dados, não não temos em todas as causas de pensamento que escolham qual os rótulos desejar acompanhar na apresentação do problema, o a passo à escolhe quais tipos de regras seguiram sem qualquer problema em atribuir corretamente determinado resultados . - A condição **Binário de Classific # Classificação em Aprendizado de Máquina ## Visão Geral Neste texto, discutiremos os princípios básicos dos algoritmos de classificação em Aprendizado de Máquina, com uma ênfase na regressão lógica. Também passaremos por um exemplo usando regressão lógica. ## Definição - **Classificador**: Um algoritmo utilizado para mapear dados de entrada de estatísticas a uma categoria específica. - **Modelo de Classificação**: Um modelo que prediz a categoria de uma nova instância baseado nas relações aprendidas a partir dos dados de treinamento. ## Regressão Lógica **Regressão Lógica** é um algoritmo de classificação utilizado para modelar a probabilidade de uma determinada classe ou evento existirem. Ele fornece seu output usando a função lógista ou função sigmoide para retornar um valor de probabilidade que pode então ser mapeado para duas ou mais classes discretas. ### Função Sigmoide Uma função sigmoide é uma função de ativação que ajusta a variável e limita o output a um intervalo entre 0 e 1. Uma função sigmoide padrão ou função lógística é representada pela fórmula `F(X) = 1 / (1 + e^(-X))`. Quando se aproximamos cada vez mais do meio da linha, ela é ativada ou não, e queremos que isso seja apenas um salto altíssimo. A função sigmoide possui umamente forma S em forma de curva onde se aproxima 1 e se aproxima 0. ## Demo usando Regressão Lógica Agora passaremos por um demo que usa regressão lógica. Primeiro, importamos os pacotes necessários: ``` import numpy as np from sklearn. linear_model import LogisticRegression from sklearn. metrics import confusion_matrix, classification_report ``` Em seguida, prepararemos nosso conjunto de dados e entrenaremos nosso modelo: ``` # Dados de exemplo X = np. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]). reshape(-1, 1) y = np. array([0, 1, 0, 0, 1, 1, 1, 0, 0, 1]) model = LogisticRegression() model. fit(X, y) ``` Em seguida, podemos avaliar o modelo: ``` print(confusion_matrix(y, model. predict(X))) print(classification_report(y, model. predict(X))) ``` Este demo mostra o uso básico da regressão lógica em Python. Para modelos e conjuntos de dados mais complexos, você pode se referir a recursos como [Scikit-learn](https://scikit-learn.org/) para estudos adicionais. # Data Science Demo: Logística Regressão e K-NN A logística regressão e o K-NN são dois métodos de aprendizado de máquina bastante populares e importantes para entender. ## Logística Regressão A logística regressão é um modelo simples, que se divide entre um e zero. É utilizado para prever probabilidades de duas categorias binárias, se o evento aconteceu ou não. ```markdown Matriz de Confusão: Túnel Não Túnel Correto Confusão Acts 1 0 Pred 1 0 Opportunidades Corretas: 2/2 Precisão: 100% Recall: 100% F1-score: 100% Suporte: 2 ``` ## K-Nearest Neighbors (KNN) O KNN é uma técnica de classificação simples de alta velocidade, no qual todos os dados disponíveis são armazenados e classificados novos dados baseado na similaridade dos dados mais próximos. Nós determina o índice do novo ponto a ser classificado por encontrar seus KNN mais próximos. No nosso exemplo, supomos que `K = 3`, o KNN procura os 3 vizinhos mais próximos do ponto desconhecido. ```markdown Considerações sobre o cálculo da distância: Algoritmos para figurar distâncias: Euclidiana, Manhattan e Minkowski Muitas vezes, com base no seu problema, você pode precisar considerar diferentes métricas A métrica Ukian é um dos algoritmos mais comuns empregado para calcular distância no KNN Suponha que $K = 3$, escolhamos ferretar os tres vizinhos mais próximos do ponto desconhecido indicado em vermelho. Analisando o gráfico a direita, podemos ver que o ponto desconhecido pertencerá a classe de cães, pois recebeu 2 votos para essa classe e um voto para gatos. Exemplo em código: Acompanhe o nosso exemplo em código aqui e aprenderemos a executar o KNN usando o Python. Abra um novo script Python no nosso Jupyter Notebook e mude-o para analisar o KNN. Depois de abrir nosso script, deseja importar as bibliotecas necessárias, algumas estão incluídas abaixo: ```python from sklearn. metrics import confusion_matrix from sklearn import neighbors import numpy as np . . . ``` O código em seguida carrega os dados do conjunto de detecção de cancer de mama armazenado no arquivo **breast-cancer. csv** ```sql data = datasets. load_breast_cancer() ``` Em seguida, escolha os parâmetros do KNN e transforme a matriz X em uma lista de 2D. ```python k = 3 X = data. data[: , [2, 3]] ``` Por último, crie o modelo do KNN: ```python clf = neighbors. KNeighborsClassifier(n_neighbors=k, metric='euclidean') clf. fit(X, data. target) ``` Agora, você poderá usar seu modelo KNN para prever a classe de outros dados previamente não vistos. Para mais exemplos com KNN e aprender a usar outros métodos de aprendizado de máquina, visite este [Exceptional Course no cursoanalytics](https://cursoanalytics.com/). --- **Original Text: ** at but you can see right here a confusion Matrix says uh if you remember from the confusion Matrix we have the two this is two correct one two and uh it's been a while since I looked at a a confusion Matrix there's the two and then we have this one which is our six that's where the six comes from and then we have this one which is the um one false this is the two one so we have this one here and this one here which is misclassified this really depends on what data you're working with as to what is important um you might be looking at this model and if this model this confusion Matrix comes up and says that uh you've misclassified even one person as being non malignant cancer that's a bad model uh I wouldn't want that classification I'd want this number to be zero I wouldn't care if this false positive was off by a little bit more long as I knew that I was correct on the important factor that I don't have cancer so you can see that this confusion Matrix really aims you in the right direction of what you need to change in your model how you need to adjust it uh and then there's of course a report reports are always nice um if you notice we generated a report earlier we'll go and just print the report up and you can remember this is our report it's a classification report y comma y predict so we're just putting in our two values basically what we did here visually with our actual and our predicted value and we'll go ahead and run the report and you can see it has the Precision uh the recall your F1 UNS score your support uh translated into a accuracy macro average and weighted average so it has all the numbers a lot of times when working with um clients or with the shareholders in the company this is really where you start because it has a lot of data and they can just kind of stare at it and try to figure it out and then you start bringing in like the confusion Matrix I almost do this in Reverse as to what they show I would never show your shareholders The Intercept of the coefficient that's for your internal team only working on machine language uh but the confusion Matrix and the report are very important those are the two things you really want to be able to show on these uh and you can see here we did a decent job of um classifying the data managed to get a significant portion of it correct uh we had our was it accuracy here is a 080 F1 score uh that kind of thing so you know it's a pretty accurate model of course this is pretty goofy because it's very simple model and it's just splitting the model between uh ones and zeros so that was our demo of the U on logistic regression on there let's go take a look at K nearest neighbors uh this one is another very highly used and important algorithm to understand K nearest neighbors is a simple algorithm which stores all available cases and classifies new cases based on the similarity measure the K nearest neighbor finds out the class of the new data points by finding its nearest neighbors if there are three data points of Class A and two data points of Class B near to the new data point then the KNN classifies the new data point as Class A the K nearest neighbors is the number of nearest neighbors we are looking for I I. E if we say k equals 3 this means that we are looking for nearest three neighbors of unclassified data point usually we take the K value between 3 to 10 as it leads to a better result a smaller value of K means that noise will have a bigger influence on the result and a larger value of K makes it computationally expensive hence the data scientists prefer the range of K between 3 and 10 when we talk about noise you remember the data we just looked at was 0 1 1 0 0 it had some some values where cut it and said everything to the right is a one everything to the left is a zero but I had some ones and zeros mixed in there that's called noise that's what they're talking about is there's some things that are are right in the middle in the classification which makes it very hard to classify so suppose we're trying to find the class for a new Point indicated by the red color and you can see it's kind of right between the cat right between the dogs let k equal three so we are finding the three in in for the red data point by looking at the plot on the right we can see that the red data point belongs to the class dogs as it has two votes for class dog and one vote for class cat and if you ask the question question well what are you measuring the distance what is that distance um it could be the measurements of the ears whether they're pointed or floppy that might be one of the features you're looking at is how floppy the ears are um another one might be the whiskers versus the nose um and then you take those measurements and using uh one of the most common things in K means measurement is the ukan geometry you can figure out the distance between those points there's a lot of different algorithms for that but but you can think about it that you do have to have some kind of solid data to measure and so we can conclude that the new data point belongs to the class dog so let's go ahead and see what this looks like in code and do a demo on the K nearest Neighbors in here and we'll go right back into our jupyter notebook and open up a new um Python Programming script page of course once we're in here we'll want to look at the uh pyit learn um I did just a quick search for SK neighbors Ken Neighbors classifier um this actually is the older version 0 no 023 is the one we want and you'll see here that we have all their defaults in Neighbors equals 5 at defaults we were talking about that between three and 10 there's different ways to weigh it there's an algorithm based on it I mentioned ukian geometry finding the distance there's other algorithms for figuring out what that distance is and how to weight those uh and there's a lot of other parameters you can adjust for the most part the K means uh basic setup is a good place to start and just let the defaults go uh we might play with some of those we'll see what the guys in the back did and from here we're going to import numpy we're going to use pandas if you haven't been running pandas pandas is our data frame which sits on top of numpy uh data frames are you know numpy is our number array pandas is our data frame matap plot library because we're going to plot some graphs everybody likes some pretty pictures it makes it a lot easier to see what's going on when you have a nice display and that's also with the Seaborn is in here in the uh setup that sits on top of the map plot Library the ones we really want to look at right here are the what we're bringing in from sklearn these ones right here uh so from sklearn we're going to load I mentioned the breast cancer that's a very popular one because it has I believe it's 36 measurements so there's 36 features and unless you're a expert you're not going to know what any of those features really mean you can sort of guess but their special measurements they take of when they take a image uh and of course our confusion Matrix so that we can take a look and see what the data looks like and how good we did uh and then we have our knen neighbors classifier on here uh and then I mentioned that uh whenever you do training and testing you want to split the data up you don't want to train the data and then test it on the same data that just tells you how good your training model is it doesn't tell you whether it actually works on unknown data and so this just splits it off so that we can train it and then we can take a look at data we don't have in there and see how good it did and we'll go ahead and load our uh data up so here's our our setup on that oops there we go so we're going to go ahead and load the data up uh we have our x value and that's going to come from our breast cancer. dat and column breast cancer feature names so there's our actual um all our different features we'll print that out here in a second and then we have have our um mean area mean compactness so I guess we're going to take the data and we're only going to use a couple of the columns this just makes it easier to read um of course when you actually were going to do this you'd want to use all your columns and then we have our Y and this is simply um whether it's either malignant or B9 and then um we want to go ahead and drop the first line because that's how it came in on there and we'll go ahead let's just take a look at this a little closer here let's go and run this real quick and just because I like to see my data before I run it we can look at this and we can look at the original features remember we're only going to use two features off of here just to make it a little easier to follow and here's the actual data and you can see that this is just a massive stream of data coming in here it's going to just skip around because there's so much in there to set up I think there's like 500 if I remember correctly and you can see here's all the different measurements they take but we don't we don't really need to see that on here we're just going to take a look at just the two columns and then also our solution we'll go and just do a quick uh print y on here so you can see what the Y looks like and it is simply just 0000 you know B9 00001 so one means it's B9 and zero means it's malignant uh is what we're looking at on that go and cut that out of there the next stage is to go ahead and split our data I mentioned that earlier uh we'll just go ahead and let them do the splitting forest for us uh we have X train X test y train y test and so we go ahead and train test split XY random State equals 1 makes it nice and easy for us we'll go and run that and so now we have our training and our testing train means we're going to use that to train the model and then we're going to use the test to see how good our model does and then we'll go ahead and create our model here's our knnn model the K neighbors classifier n neighbors equals 5 the metrics is ukian remember I talked about UK in uh this is simply your c^2 = A2 + B2 + u u A2 = B2 + C2 + c^2 plus d^2 and then you take the square root of all that that's what they're talking about here it's just the length of the hypotenuse of a triangle but you can actually do that multiple Dimensions just like you do in two Dimensions with a regular triangle and here we have our fit this should start to look familiar since we already did that in our last example that's very standard for S uh s kit and any other one although sometimes the fit algorithms look a little bit more complicated because they're doing more things on there especially when you get into neural networks uh and then you have your K neighbors that just tells you we created a um a k neighbor setup they kind of wanted us to reformat the Y but it's not that big of a deal for this uh and it comes out and shows you that we're using the ukian uh metric for our measurement so now we've created a model here's our live model we fitted the data to it we say hey here's our training data uh let's go ahead and predict it so we're going to take our y predict equals KNN predict y test so this is data we have not this model has not seen this data and so we're going to create a whole new set of data off of there now before we look at our prediction in fact let's um I'm going to bring this down and and put it back in here later let's take a look at our X test data versus the Y test what does it look like and so we have our mean area we're going to compare it to our mean compactness we're going to go ahead and run that and we can see here the data if you look at this just eyeballing it let me put it in here we have a lot of blue here and we have a lot of orange here and so these dots in the middle especially like this one here and these here these are the ones that are going to give us false negatives and so we should expect this is your noise this is where we're not sure Título: Introdução à Máquinas de Suporte Vectores (SVM) ## O que é SVM? Neste caso, o SVM é utilizado para classificar pontos de dados em duas classes. O objetivo do algoritmo de máquina de suporte vector é encontrar um hiperplano em um espaço N-dimensional que distinga os pontos de dados das duas classes. ### Características do SVM - Classificação clara dos pontos de dados - Marginemaximo: o hiperplano com a maior distância entre os pontos de dados de Ambas as classes - Funciona bem com dados linearimente separáveis - A dimensão do hiperplano depende do número de características ### Vantagens e Desafios do SVM #### Vantagens: - Capaz de classificar dados complexos - Independente dos tamanhos relativos das classes #### Desafios: - Não funciona com dados não-linearmente separáveis - Não permite outliers ### SVM de limiar duro e suave #### SVM de limiar duro: - Divide pontos de dados uniformemente - Não permite outliers #### SVM de limiar suave: - Aceita pontos de dados novos na fronteira das classes - Trabalha com dados não-linearmente separáveis ### Exemplo de SVM ```python # Importar bibliotecas necessárias import pandas as pd import numpy as np import matplotlib. pyplot as plt from sklearn. svm import SVC # Carregar dados # . . . # Criar e treinar o modelo modelo = SVC() modelo. fit(X_train, y_train) # Fazer previsões e plotar resultados # . . . ``` ### Demo: Classificando círculos com SVM Neste demo, classificamos círculos com SVM para ilustrar como ele lidou com geometrias complexas. ```python # Importar bibliotecas necessárias # . . . # Carregar dados # . . . # Fazer círculos # . . . # Visualizar círculos # . . . # Treinar e fazer previsões # . . . # Plotar matriz de confusão # . . . ``` Nota: Este código demonstra a utilização do SVM para classificar círculos, que são difíceis de classificar devido à sua estrutura de anel. Isto demonstra a versatilidade do SVM em manipular dados complexos. ### Parâmetro de regularização do SVM (C) O parâmetro de regularização, C, determina o equilíbrio entre a ajuste dos pontos de dados de treinamento e a tolerância para erros de treinamento. Um valor maior de C implica uma maior ênfase na ajuste dos pontos de dados de treinamento e uma fronteira de decisão mais rigorosa, enquanto um valor mais baixo de C permite uma maior flexibilidade e tolerância para os outliers. ```python # Criar o modelo svm = SVC(kernel='linear') # Enfite o modelo com o kernel linear svm. fit(X_train, y_train) # Criar o modelo com o kernel polinomial svm = SVC(kernel='poly') # Enfite o modelo com o kernel polinomial svm. fit(X_train, y_train) ``` Nota: O parâmetro de kernel determina a forma da fronteira de decisão no espaço de características. A escolha do kernel certa é essencial para uma classificação bem moving. # Aula - 15 | Árvore de Decisão na Machine Learning | Simplilearn (<https://www.youtube.com/watch?v=Cu75zclp23E>) I. Introdução - Discuss the difference between setups numéricos e o algoritmo Árvore de Decisão - Explica como Árvore de Decisão são um algoritmo de aprendizado supervisionado utilizado para classificação II. Árvore de Decisão - Define Árvore de Decisão como uma estrutura árvore hierárquica - Explica como funciona uma árvore de decisão, desde os nós raízes até nós de folhas - Discussa os conceitos de estratégias de divisão e Criterion III. Exemplo de Árvore de Decisão - Forneça um exemplo de uma Árvore de Decisão simples IV. Divisão do Conjunto de Dados - Explica o processo de divisão do conjunto de dados X e o conceito de balanceamento do conjunto de dados V. Criar uma função para dividir o Conjunto de Dados - Discuta a função criada para dividir o conjunto de dados em X treino, y treino, X teste e y teste VI. Criar uma função para criar um Modelo de Árvore de Decisão - Descreva o processo de criar uma função para criar um Modelo de Árvore de Decisão utilizando o método Gini VII. Prevendo e Calculando a Acurácia - Explica o processo de fazer predições e calcular a acurácia utilizando o modelo de Árvore de Decisão criado --- Nesta aula, vamos olhar para um algo diferente de algoritmo de aprendizagem de máquina: Árvore de Decisão. Árvore de Decisão é um algoritmo de aprendizado supervisionado utilizado para classificação. Enquanto que outras configurações numéricas envolvem matemática e geometria pesadas, Árvore de Decisão oferece uma abordagem muito diferente… ### Estrutura * A Árvore de Decisão é uma estrutura árvore hierárquica onde um nó interno representa características ou atributos. * Um ramo representa uma regra de decisão e cada nó de folha representa o resultado. * O nó mais oco da árvore de decisão é conhecido como o nó raiz, que aprende a divisão de acordo com o valor do atributo. * Árvore de Decisão partilham o árvore de maneira recusriva. * Pode ver uma árvore de decisão e saber por que determinadas decisões foram tomadas, tornando-o uma poderosa ferramenta para entender os dados e como eles estão agrupados. ### Exemplo * Aqui está um exemplo de uma Árvore de Decisão simples: - Vou dormir ou não num determinado final-de-semana? * A notícia está a ver? 1. Sim, vou dormir 2. Não, vou trabalhar * Está a chover fora? 1. Sim, vou dormir 2. Não, vou trabalhar Neste exemplo simples, a Árvore de Decisão nos permite ver por que foram tomadas certas decisões. Pode olhar para os dados e dizer, "Oh, dormo bem quando é a chover fora. " ### Divisão do Conjunto de Dados - Para criar uma Árvore de Decisão, você precisará primeiro dividir o seu conjunto de dados. Este envolve retirar uma porção do conjunto de dados para o treinamento e outra porção para avaliação. ```python # Divisão do conjunto de dados X, balance = data_set y = [0 se b for b em balance se b == 'r' senão 1] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0, 3, random_state=100) ``` ### Criar uma Função para Criar um Modelo de Árvore de Decisão * Para criar um modelo de Árvore de Decisão, usaremos o método Gini. Aqui está nossa função: ```python def create_tree(X, y, max_depth=None): se max_depth é None ou o comprimento de X é menor ou igual a 1: retorne ClasseTreeClassifier(max_depth=max_depth) index_divisão = … # Divida o conjunto de dados com base no melhor índice de característica nome_característica = … # Obtenha o nome da característica utilizada para dividir X_esquerdo, X_direito = X[index_divisão < index_divisão], X[index_divisão >= index_divisão] y_esquerdo, y_direito = y[index_divisão < index_divisão], y[index_divisão >= index_divisão] modelo_esquerdo = create_tree(X_esquerdo, y_esquerdo, max_depth-1) modelo_direito = create_tree(X_direito, y_direito, max_depth-1) retorne ClasseTreeClassifier(max_depth=max_depth) \ . ajuste(X, y) \ . ajuste(X, y) \ . ajuste(X_esquerdo, y_esquerdo) \ . ajuste(X_direito, y_direito) \ . defina_comprimento(max_depth) \ . defina_nome(f"Árvore de Decisão ({max_depth} profundidade)") \ . defina_característica(nome_característica) ``` ### Prever e Calcular a Acurácia - Para fazer previsões e calcular a acurácia, utilizaremos o Modelo de Árvore de Decisão criado: ```python def prev_predicao(X, modelo): previsões_ realizadas = modelo. prev(X) retorna previsões_ realizadas def calcular_acuracia(y_teste, previsões): matriz_de_confusão = matriz_de_confusão(y_teste, previsões) acurácia = acurácia_do_modelo(y_teste, previsões) imprime ("Matriz de confusão: \n", matriz_de_confusão) imprime ("Acurácia: ", acurácia) # Imprime um relatório de classificação imprime (relatório_de_classificação(y_teste, previsões)) retorna acurácia ``` # Características Fascinantes do Script de Análise de Dados Este script possui vários recursos interessantes, incluindo a capacidade de lidar com dados faltantes e pular deles. Nos casos em que os dados são incompletos ou incertos, como se trata de saber se chouvere ou não em um determinado período, o script avança para outro parâmetro, por exemplo, se assistiu TV após as 20: 00 (fenômeno da tela azul). ## Importação e Processamento dos Dados Nosso script começa importando o conjunto de dados, dividindo-o em conjuntos de testes (X_test) e treino (Y_train), e definindo modelos usando uma classificador de árvore de decisão (clf Genie). Também podemos criar o modelo usando entropia. Quando os modelos são criados, as funções de previsão e precisão são definidas. A principal código é incluído para fornecer um layout mais familiar, principalmente para aqueles que trabalham com ferramentas como o Jupyter Notebook. ## Execução do Script Neste exemplo, já definimos nossa principal importação de dados, apresentando um conjunto de dados equilibrado de 625 exemplos. Você pode ver um exemplo do conjunto de dados abaixo: ``` 1111 - Equilibrado 1112 - Des balanceado para direita . . . ``` O script então faz pré-visões baseadas em se o dado for des balanceado para a direita (desbalanceamento) ou equilibrado (centralizado). Quando impressa a matriz de confusão, as variáveis r, l e B são exibidas, representando pré-visões para a direita, esquerda e equilibrado, respectivamente. ## Comparação de Modelos - Genie e Entropia Neste script, comparamos a performance de dois modelos - Genie e Entropia. Aqui, apresentamos os resultados de ambos os modelos lado a lado para comparação mais fácil. Como você pode ver, não existe uma diferença significativa entre os dois modelos. No entanto, a escolha entre eles pode depender do dado específico que está sendo analisado, pois ajustar vários parâmetros pode resultar em melhores resultados. Algoritmos de regressão logística e vizinhos mais próximos são algoritmos alternativos que podem ser aplicados com este script, dependendo das necessidades específicas dos dados. ## Limitações e Fortes Pontos ### Regressão Logística - Fácil de implementar e eficiente para treinar - Por uma apresentação de dados relativamente simples - Prediz apenas um resultado categórico - Ineficiente quando lidando com grandes conjuntos de dados ### Vizinhos mais próximos - Não necessita de um período de treino separado - Dados novos podem ser adicionados sem impactar a precisão do modelo - Pode realizar treinamento parcial em conjuntos de dados maiores - Ineficiente com conjuntos de dados altamente dimensionais e maiores - Não sabe como lidar com valores faltantes ### Máquinas de Suporte (SVM) - Funciona mais eficientemente em conjuntos de dados altamente dimensionais - Relativamente eficiente em termos de memória - Não é adequado para conjuntos de dados grandes - Subdesempenha-se com dadosSound e dados trouxados ### Árvores de Decisão - Lida com parâmetros não lineares e valores faltantes eficientemente - Fácil de se entender - Tem um período de treino relativamente curto - Pode sofrer overfitting e variação rozada - Não é adequado para conjuntos de dados grandes # Árvore de Decisão: Entendendo Vantagens, Desvantagens e Mecanismos Este documento irá explicar o que são árvores de decisão, suas vantagens e desvantagens, e investigará o modo de funcionamento mecânico delas. Em seguida, demonstraremos um caso de estudo sobre previsão de repago de empréstimos usando Python. ## Tabela de Conteúdo - O que é Aprendizado de Máquina? - Como as árvores de decisão se encaixam no Aprendizado de Máquina - Tipos de Aprendizado de Máquina - Fundamentos das árvores de decisão - Problemas de classificação - Problemas de regressão - Vantagens e Desvantagens das árvores de decisão - Terminologia para árvores de decisão - Como funciona uma árvore de decisão - Exemplo: Classificar animais usando uma árvore de decisão ## O que é Aprendizado de Máquina? O Aprendizado de Máquina é uma subárea de inteligência artificial, permitindo que os sistemas aprendam e melhorem a partir de experiências. Hoje em dia, é amplamente utilizado para uma variedade de aplicações, como tomar decisões, entender dados complexos e mesmo reconhecer dados visuais, como rostos e objetos. Incorporando o Aprendizado de Máquina, um indivíduo melhora a compreensão do mundo, toma decisões mais inteligentes e descobre novas ideias. [Fig 1 - Gráfico mostrando os fundamentos do Aprendizado de Máquina] ## Como as árvores de decisão se enquadram no Aprendizado de Máquina Uma árvore de decisão é um diagrama de formação de árvore usado para determinar uma ação. Cada ramo representa uma decisão possível ou reação. O método da árvore de decisão é uma aplicação da inteligência artificial, proporcionando usuários um sistema automatizado que aprende e melhora com base na experiência. Com esta ajuda, os usuários podem ver coisas que nunca viram antes e rastrear coisas que não podem rastrear facilmente sozinhos. ## Tipos de Aprendizado de Máquina 1. Aprendizado Supervisionado: Já possuímos dados e respostas. - Exemplo: Análise de dados de empréstimos anteriores para prever o repago de empréstimos de novos clientes. 2. Aprendizado Não Supervisionado: Não sabemos as respostas, mas tempo em tempo recebemos uma grande quantidade de dados. - Exemplo: Grupos de conteúdo relacionados em páginas da Web juntos. 3. Aprendizado por Recompensa: Sem dados ao começo; os dados são recebidos linha a linha. - Exemplo: Um robô aprende a partir de feedback positivo ou negativo recebido durante suas ações. ## Fundamentos das árvores de decisão As árvores de decisão são principalmente utilizadas para problemas de classificação e regressão. ### Problemas de classificação Estes problemas trata-se de soluções catêgorizadas, como sim/não, verdadeiro/falso ou um/zero. A classificação envolve decidir se algo pertence a um determinado grupo (sim ou não) ou determinar a categoria de um item. ### Problemas de regressão Os problemas de regressão tratam de valores contínuos a serem previsibilizados, como preço de produto ou lucro. Na regressão, agenciamos um modelo de regressão para a variável alvo utilizando as variáveis independentes, e cada split é feito com base na soma de erro quadrado. ## Vantagens e Desvantagens das árvores de decisão Vantagens: - Simples de entender e visualizar. - Baixo esforço de preparação de dados necessário. - Pode lidar com dados numéricos e categoricais. - Parâmetros non-lineares não afetam sua performance. Desvantagens: - Fit: O algoritmo pode capturar ruído no dado. - Alta variância: O modelo pode se tornar instável com pequenas variações no dado. - Uma árvore de decisão complexa pode ter baixa biaisse, tornando-a difícil para o modelo trabalhar com novos dados. ## Terminologia para árvores de decisão Antes de discorrer em maior profundidade sobre como as árvores de decisão funcionam, precisamos abordar alguns termos essenciais: - Entropia: Medida de Aleatóriedade ou imprevisibilidade num conjunto de dados. - Ganho de Informação: Medida de redução na entropia após que o dado é dividido. ## Como funciona uma árvore de decisão Classificaremos diferentes tipos de animais com base em suas características usando uma árvore de decisão. ## Exemplo: Classificar animais usando uma árvore de decisão O problema é classificar diferentes tipos de animais com base em suas características usando uma árvore de decisão. [Fig 2 - árvore de decisão classificando animais] Usando um conjunto de dados de treino, classificamos animais com base em seus cores, alturas e outras características. Enquadraremos as condições para divisão dos dados de forma que o ganho de informação é o maior. Fórmula para entropia: ∑ ( (p_i * log(p_i, 2)) ) onde i = 1 a k, e p_i representa a porcentagem de um determinado animal. Calcular a entropia para o conjunto de dados atual, identificar as características que melhor reduzem a entropia, e dividir os dados conforme este seja feito. Título: Análise de Dados e Algoritmo Decisão de ÁrvoreUtilizando Python ======================================================================= Este documento detalha o processo de analisar dados para prever a reprodução de empréstimos utilizando o Algoritmo Árvore de Decisão em Python. O conjunto de dados utilizado neste exemplo foi gerado por Scikit-learn. Contém o seguinte no conjunto de dados: -------------------------------------- 1. Prima inicial 2. Prima final 3. Pontuação de Crédito 4. Número de casa 5. Resultado (Sim/Não) Pacotes e funções úteis: ------------------------ - `numpy as NP`: Pacote padrão para matemática e ferramentas complexas de aprendizagem de máquina. - `pandas as PD`: Setup de tabela de dados que armazena e manipula os dados. - `sklearn. model_selection. train_test_split`: Ajuda a dividir os dados para treinamento e teste. - `sklearn. tree. DecisionTreeClassifier`: Ferramenta para implementar o algoritmo de árvore de decisão. - `sklearn. metrics. accuracy_score`: Função para marcar a precisão do modelo. Carregamento de Dados e Exploração: ----------------------------------- 1. Importar os pacotes e funções necessários. 2. Carregar os dados utilizando `pandas. read_csv(). ` - Replace the file path accordingly: ```python data = pd. read_csv('nome_do_arquivo. csv') ``` 3. Remover aviso de validação cruzada: ```python from sklearn. model_selection import train_test_split, GridSearchCV ``` 4. Divida os dados em conjunto de treino e conjunto de teste. - Defina o tamanho de treino para 0, 8, teste para 0, 2. ```python X_treino, X_teste, Y_treino, Y_teste = train_test_split(X, Y, test_size=0, 2, random_state=42) ``` 5. Treine e construa o modelo de Árvore de Decisão. ```python modelo = DecisionTreeClassifier() modelo. fit(X_treino, Y_treino) ``` 6. Teste o modelo com os dados de teste. ```python previsões = modelo. predict(X_teste) ``` 7. Calcule a precisão do modelo. ```python precisão = accuracy_score(Y_teste, previsões) ``` # Machine Learning: Testando e Aplicando um Classificador de Árvore de Decisão ## Visão geral Neste tutorial, vamos aprender a criar e aplicar um Classificador de Árvore de Decisão usando Python e a biblioteca scikit-learn. ### Pré-requisitos - Uma compreensão básica de Python - Familiaridade com a biblioteca scikit-learn ## Introdução O Classificador de Árvore de Decisão é um algoritmo de aprendizagem de máquina popular utilizado em tarefas de classificação. Neste tutorial, vamos passar pelos passos para criar um Classificador de Árvore de Decisão, treiná-lo e aplicá-lo para fazer previsões. ## Preparação dos dados Para começar, precisamos carregar os dados e preparar para o nosso modelo. Neste caso, estamos a utilizar um conjunto de dados de empréstimos. ```python # Importar as bibliotecas necessárias from sklearn. model_selection import train_test_split from sklearn. datasets import load_digits from sklearn. tree import DecisionTreeClassifier from sklearn. metrics import accuracy_score # Carregar o conjunto de dados digits = load_digits() X = digits. data y = digits. target # Dividir os dados em conjuntos de treino e teste X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 3, random_state=100) ``` ## Construção do Classificador de Árvore de Decisão Agora, podemos criar nosso Classificador de Árvore de Decisão e ajustá-lo a nossos dados de treino. ```python # Criar o Classificador de Árvore de Decisão clf = DecisionTreeClassifier(random_state=100) # Ajustar o modelo ao nosso conjunto de dados de treino clf. fit(X_treino, y_treino) ``` ## Fazendo previsões Com nosso modelo treinado, podemos agora fazer previsões com nossos dados de teste. ```python # Fazer previsões com os dados de teste y_previsoes = clf. predict(X_teste) ``` ## Avaliação do Modelo Para avaliar o desempenho do nosso modelo, podemos calcular a taxa de acerto. ```python # Calcular a taxa de acerto taxa_acerto = accuracy_score(y_teste, y_previsoes) print(f"Taxa de Acerto: {taxa_acerto * 100: . 2f}%") ``` ## Algoritmo do Bosque Aleatório Em uma lição diferente, vamos explorar o Algoritmo do Bosque Aleatório, outro algoritmo de aprendizado de máquina popular utilizado em tarefas de classificação. É particularmente útil em ambientes complexos e fornece melhor detecção do que muitas outras ferramentas de aprendizagem de máquina. Aplicações do Bosque Aleatório incluem sensoriamento remoto, detecção de objetos e consolas de jogos. ## Pontos Chave - O Classificador de Árvore de Decisão é um algoritmo de aprendizagem de máquina popular utilizado em tarefas de classificação. - Ao usar o Classificador de Árvore de Decisão, você precisa dividir os dados em conjuntos de treino e teste, criar o modelo, ajustá-lo aos dados de treino, fazer previsões com os dados de teste e avaliar o desempenho do modelo. - Em uma lição diferente, vamos explorar o Algoritmo do Bosque Aleatório, outro algoritmo de aprendizagem de máquina popular utilizado em tarefas de classificação. ## Recursos - [Árvore de Decisão Classificador do Scikit-learn](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html) - [Treino do conjunto de teste do Scikit-learn](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) - [Taxa de Acerto do Scikit-learn](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html) # Floresta Aleatória: Entendendo Foresta Aleatória Este artigo discute o árvore de decisão, que é um componente principal da Floresta Aleatória que estudamos hoje. Vamos explorar por que utilizamos este Ferramento em vez das opções alternativas, e os seus benefícios. ## Benefícios da Floresta Aleatória 1. **Sem Overfitting**: Através da utilization de várias árvores, diminuímos o risco de overfitting. O overfitting significa que adaptamos nossa modelo demasiado de forma aos dados de amostragem, capturando suas fluctuações aleatórias e particularidades. Isto leva a um modelo que apresenta boas performances nos dados de treino, mas nao às vezes impressiona nestes em que não foram vistos. 2. **Tempo de Treino Rápido**: Quando comparado a outros métodos, a Floresta Aleatória oferece tempo de treino mais rápido, pois é menos propenso a overfitting. 3. **Alta Precisão**: A Floresta Aleatória produz previsões extremamente precisas, e particularmente em grandes conjuntos de dados, onde supera a maioria de outros algoritmos de aprendizagem automática. 4. **Performance para Big Data**: No mundo da Big Data, onde conjuntos de dados grandes são comuns, a eficiência da Floresta Aleatória é essencial para fazer previsões precisas. 5. **Manipulação de Dados Chaseados**: A Floresta Aleatória pode estimar dados perdidos eficazmente, mesmo que uma grande proporção dos dados esteja perdida. Isso é particularmente útil quando se trabalha com dados sujos, como ocorre hoje em dia. ### Teoria da Floresta Aleatória #### O Que é Floresta Aleatória? A Floresta Aleatória, ou Floresta de Decisão Aleatória, é um método que opera construindo várias árvores de decisão. A decisão da maioria das árvores é escolhida pela Floresta Aleatória como a decisão final. ##### Exemplos de Árvores de Decisão Por exemplo, dado uma imagem de fruta, uma árvore de decisão decidiria que a saída é 'maçã'. Temos uma árvore de decisão aqui, onde a imagem da fruta entra, e este uma decide que é um limão, enquanto outra árvore decide que é uma maçã. Todos estes indivíduais decidindo entram na chamada Floresta Aleatória, que faz a decisão final com base no voto majoritário. #### Como Funciona a Floresta Aleatória? Para compreender como a Floresta Aleatória funciona, precisamos mergulhar mais profundamente e observar as árvores individuais e a forma como elas construem as árvores. Vamos continuar com o exemplo da fruta, como é mais fácil ilustrar com árvores e Florestas. ##### Componentes da Árvore de Decisão Uma árvore de decisão é um diagrama arborizado usado para determinar uma acção. Cada ramo da árvore representa uma possível decisão ou reação. Nos exemplos seguintes, temos uma bilheteira de fruta, e a primeira decisão da árvore de decisão poderá ser "Diâmetro >3". Se for falso, ele sabe que deve ser morangos, pois tudo o resto é maior, e assim por diante. O objetivo da árvore de decisão é classificar as frutas na bilheteira, ou as imagens da fruta, com base em várias características, como cor e diâmetro. ##### Entropia e Ganho Informacional Tudo sobre a árvore de decisão e como ela faz decisões baseia-se na **Entropia** (uma medida de Randomness ou imprevisibilidade nos dados). Vamos olhar alguns outros termos durante a nossa exploração da árvore. Compreenda primeiramente a **Entropia**. A Entropia nos dá o estado inicial dos dados, e enquanto navegamos pela árvore, nos esforçamos para diminuir a entropia, pois isso indica uma diminução da imprevisibilidade da saída. ### Conclusão Nesta exploração, tivemos um surto nos fundamentos da Floresta Aleatória, desde sua estrutura e benefícios até os componentes teóricos subjacentes. Mais estudos são necessários para compreender completamente como a Floresta Aleatória funciona e os seus potenciais aplicações em várias áreas. # Árvore Aleatória com Dados Faltantes ## Introdução Este documento discute como uma Árvore Aleatória modelo se comporta com dados ausentes, utilizando um exemplo de um problema de classificação de frutas. ## Classificação de Frutas com Árvore Aleatória Uma Árvore Aleatória modelo foi testada em um conjunto de dados que contém uma imagem de uma fruta com níveis variáveis de dados ausentes, como informações de cor ausentes devido a uma câmera em preto e branco. ### Visão Geral dos Dados A imagem da fruta tinha as seguintes características: - `Diametro`: O diâmetro da fruta, que era dado como `3`. - `Temporada de Crescimento`: A fruta cresceu durante o Verão (`verdadeiro`). - `Forma`: A fruta era redonda e `Circular` (`verdadeiro`). ### Análise de árvore de decisão Três árvores de decisão foram utilizadas para classificar a fruta: 1. Se o diâmetro é igual ou maior que `3`, a cor é `Laranja`. No entanto, a Árvore Aleatória não sabia a classificação exata desta fruta em particular. 2. Se a cor é `Vermelho` e a forma é circular, a fruta é categorizada como `Ceras` (`verdadeiro`, `verdadeiro`, resultado: `Ceras`). 3. Se o diâmetro é não igual a `1`, cresce durante o Verão, e a cor é `Laranja`, a fruta é classificada como `Laranjas`. Quando as três decisões são combinadas, a votação maioritaria determina aclassificação final. Neste caso, duas das três classificadores votaram por `Laranjas`, resultando na classificação final de `Laranjas`. ### Explicação da Árvore Aleatória A Árvore Aleatória funciona transportando múltiplas árvores de decisão (neste caso, 3) e combinando suas decisões independentes para classificar dados. No nosso exemplo, mesmo tendo dados ausentes e conhecimento prévio sobre a cor da fruta, a votação maioritária ainda produziu a classificação correta. ## Análise de Flórida-Iris utilizando Python Nesta seção, veremos um caso exemplo e utilizar Python para prever a espécie de flores de flórida-Iris utilizando aprendendo máquina. ### Enunciado do Problema O objetivo é prever a espécie de flores de flórida-Iris utilizando aprendizado de máquina em Python. ### Carga dos Módulos Comecemos carregando vários módulos de Python: ```python from sklearn. datasets import load_iris from sklearn. ensemble import RandomForestClassifier import pandas as pd import numpy as np np. random. seed(0) ``` #### sklearn. datasets. load_iris Este módulo permite a nós carregar o conjunto de dados de flórida-Iris, que tem sido usado para prever a espécie de flores de flórida-Iris desde 1936. #### sklearn. ensemble. RandomForestClassifier Este módulo contém a classificadora de Árvore Aleatória para nosso modelo de aprendizado de máquina. #### pandas e numpy Estes são módulos comumente utilizados para a manipulação de dados e operações matemáticas em Python. ### Explorando os Dados A metade da implementação envolve a organização e a exploração dos dados. Comecemos carregando o conjunto de dados de flórida-Iris: ```python iris = load_iris() # Define data frame e atribui o conjunto de dados de flórida-Iris a ele DF = pd. DataFrame(iris. data, columns = iris. feature_names) ``` O data frame `DF` agora contém o conjunto de dados de flórida-Iris, organizado em um formato similar a Excel, com colunas representando as diferentescaracterísticas das flores de flórida-Iris (e. g. , comprimento dos sépalos, largura de sépalos, comprimento das pétalas, largura das pétalas). Por utilizar a função `head()`, podemos mostrar as primeiras cinco linhas do data frame com seus cabeçalhos de coluna. ```python print(DF. head()) ``` Osa a linha inicial do data frame, com os cabeçalhos de coluna, que representam os nomes das características das flores de flórida-Iris. Agora que carregamos o conjunto de dados de flórida-Iris num data frame, podemos começar a construir o nosso modelo de Árvore Aleatória. O próximo passo será separar os dados, treiná-lo e fazer previsões. ```bash # Para ser continuado. . . ``` Este documento descreve os passos iniciais de implementar um modelo de Python de Árvore Aleatória para prever a espécie de flores de flórida-Iris. # Tornando Dados Lidos pelo Humano Técnicas para tornar as informações acessíveis às pessoas ## Introdução * Desagradecido ou não, não gosto de olhar zeros e ones. Então, vamos começar com as funcionalidades. * Vamos manipular essas informações e torná-las acessíveis às pessoas **e** incorporaremos isso em nossa código. * Vamos iniciar: ```markdown paste it in and you'll see here we've done a couple very basic things ``` * Agora, veja aqui: ```markdown we know that the columns in our data frame. . . ``` * Veja aqui que temos o nome das colunas: ```bash DF columns ``` * Isso é importante: ```markdown the first four of them 0 1 2 3 . . . são as features ou os títulos dessas colunas ``` * E aqui temos as labels: ```markdown e aqui estão as labels: ``` * Nota-se que: ```markdown à medida que você se encontra numa linha de comando, (%) imprime-o (%) ``` * Agora vamos converter as espécies em algo que as máquinas entendem: ```markdown vamos simplesmente deixar isso como features, pois não é importante se força ``` * Agora vamos criar as labels para as outras partes: ```markdown a nossa etapa final no pré-processamento de dados (. . . ) é que vamos iremos gerar as labels para o outro ``` * Agora vamos investigar nosso pré-processamento: ```markdown definimos `y` igual a `pd. factorize train species de zero` ``` * Veja aqui que o train species é: ```bash train species ``` * E para que convertemos no train species: ```markdown então podemos converter isso em algo que as máquinas possam entendere zeros e uns ``` * Nota-se que: ```markdown o train species zero porque (. . . ) e os train species de um ou dois representam as outras espécies de flores ``` * Agora, vamos adicionar esse código ao nosso script: ```markdown então aqui vamos ir. Definimos `y` igual a `pd. factorize train species zero` ``` * Agora vamos entender melhor o que o `pd. factorize` é: ```markdown vamos reunir aqui aquela pequena parte aqui (. . . ) vamos olhar um pouco mais de perto o que o `trained species` é e porque estamos olhando para o grupo zero ali ``` * Para que o `pd. factorize` funcione, você deve ter um grupo ao qual fazer referência. Por exemplo: ```markdown se você seguir adiante suficientemente verá virginica e vericolor (. . . ) precisamos converter essas três espécies em algo que as máquinas possam entender (. . . ) então o serviço trained zero porque esta é no formato de uma matriz de matrizes, você precisa ter o zero no fim ``` * É importante entender que, ao aplicar `pd. factorize`, o `pd. factorize` irá gerar labels únicas para cada valor único contido na série de dados, o qual foi dado como parâmetro. * Por exemplo, se a série de dados for: ```diff 1, 2, 2, 3, 4, 1, 2, 3, 1, 3, 1, 4, 5, 5, 5, 4, 5, 5, 6, 7, 8 ``` O retorno será: ```bash (58, array([0, 1, 1, 2, 3, 0, 1, 2, 0, 2, 0, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7])) ``` * Agora vamos verificar os resultados recuperados após aplicar essa função: ```markdown se você seguir adiante suficientemente verá virginica e vericolor (. . . ) e agora executamos esse código (. . . ) gerando uma matriz de códigos zeros e uns que representam três diferentes espécies de flores que temos ``` * Apenas para comprovar: ```bash y. shape ``` Retornará: ```bash (120, ) ``` * Agora chegamos ao ponto de fazer as previsões: ```markdown então aqui vamos ir. Estamos criando um objeto chamado `CF` e a sua variável será o random forest classifier (. . . ) e passamos duas variáveis para cá ``` * Vamos conferir mais sobre os dois parâmetros: ```markdown existem muito mais variáveis com as quais você pode se divertir nesses dois (. . . ) essas são as duas que enviámos (. . . ) o random state é apenas como ele se inicia(. . . ) ``` * Para treinar o `RandomForestClassifier`: ```markdown a variável `CF` é treinada (. . . ) o treino foi dado para as `features` e as `labels` ``` * Onde as `features` refere-se às features de formação * E o `Y` refere-se às labels de formação * Agora, vamos treinar nossos dados: ```markdown podemos treinar agora ``` * Nosso modelo treinado estará pronto para fazer previsões. *** ## Testando o modelo * Primeiro, vamos querer verificar se o modelo está funcionando: ```markdown se estivermos a criar um modelo, agora precisamos testá-lo ``` * Agora, vamos separar os dados de treino e teste: ```markdown então iremos usar este código e colocá-lo no nosso programa (. . . ) este código preparará as informações de treino e de teste ``` * Agora, vamos validar as previsões: ```markdown então executamos esse código ``` * Compararemos as previsões geradas com as labels verdadeiras: ```markdown em seguida, compara as previsões geradas com o resultado final ``` * Acompanhe a execução do algoritmo: ```markdown print(cf. score(X_test, y_test)) ``` *** ## Plotando o gráfico da matriz de confusão * Para visualizar mais claramente as previsões, podemos usar o gráfico de matriz de confusão: ```python from sklearn. metrics import confusion_matrix from sklearn. metrics import classification_report confusion = confusion_matrix(y_test, y_test_pred) classification_report(confusion) ``` (Fonte: [Grafo de matriz de confusão](https://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html)) *** ## Precisão * Vamos esperar uma alta precisão para cada classe: ```python from sklearn. metrics import precision_score for i in range(3): print(" Precisão para sosa: ", precision_score(y_test[y_test == i], y_test_pred[y_test == i])) ``` *** ## Recall * Vamos esperar uma alta precisão para cada classe: ```python from sklearn. metrics import recall_score for i in range(3): print(" Recall para sosa: ", recall_score(y_test[y_test == i], y_test_pred[y_test == i])) ``` # Aula - 16 | Árvore Aleatória para Classificação | Link de vídeo: https://www.youtube.com/watch?v=YAfIRP8NpAI Idioma: pt-PT ## Mapeamento de todos os tipos de flores, incluindo versa e virginica, e vejamos como isso vai funcionar com o próximo passo. Então vamos olhar na parte superior de nossas espécies aqui, e vamos pegar este código e colocá-lo em nosso script e vamos colocar isso aqui e copiar e colar lá. Tá feito! Continuaremos e executaremos este código e vamos falar sobre essas duas Seções de Código aqui e como funcionam juntas. A primeira é nossas Predições e eu por algum tempo fiz Predições para 25 vezes, mas vamos manter apenas 5. Então temos ctosis ctosis stosa, isso é o que estamos predizendo com nosso modelo de teste, e depois vamos descer nesse trecho aqui onde vemos os dados de espécies de teste. Eu lembranto que poderia ter feito simplesmente uso do test. species. head e você verá que o cabeçalho diz Sosa Sosa Sosa Sosa e eles combinam-se, então a primeira é o que nossa floresta faz e a segunda é o que os dados reais são. Agora precisamos combiná-los então podemos entender o que isso significa. Precisamos saber como bom é nossa floresta à predição das características, portanto vamos chegar ao próximo passo, que é muito divertido. Vamos usar uma única linha de código para combinar nossas predições e nossos reais e teremos um gráfico lindo para olhar. Vamos adicionar isso ao nosso script em nosso Jupyter Notebook aqui. Vamos tentar colocar aqui e, se puderse, copie e cole lá. Quero simplesmente expandir isto. Aí vamos executar isto. Aqui é o decide nosso script Jupyter para executar, vamos tentar colocar este código aqui, colocar aqui e fazer a cópia e colar lá. Bem, vamos executá-lo e vamos falar sobre as duas Sections de Código aqui e como funcionam juntas. A primeira é o nosso Código de Previsão e eu por algum tempo fiz Predições para 25 vezes, mas vamos manter apenas 5. Então temos: ctosis, ctosis stosa, é isso que estamos predizendo do nosso modelo de teste. Em seguida, descarregamos nesse outro segmento de texto onde vemos os dados de espécies de teste, eu lembrar que poder-technicamente ter feito uso de test. species. head e vês que o cabeçalho traz em si mesmo: Sosa, Sosa, Sosa, Sosa e mesmo assim eles coincidem, então a primeira é o que a floresta faz e a segunda é o que os dados reais são. Agora precisamos combinar essas duas para que possamos entender o que isso significa. Precisamos saber de quantas, como bom, é a nossa floresta na predição das características, portanto vamos invocar o passo próximo que é uma coisa divertida, uma única linha de código para combinar as predições com os reais e teremos um gráfico lindo para olhar. Estaremos incluindo isso ao nosso script em nosso Jupyter Notebook aqui. Vamos tentar colocar aqui e, se puder, copiar e colar ali. Vamos ampliar apenas a série. Aí rodaremos o script. Após termos as saídas, então podemos explicar sobre os dois blocos de código aqui e como funcionam juntas. A primeira é a Seção que py decoradora Predição e, aqui, fizimos Predições para 25 texto mas vamos manter apenas 5. Então temos ctosis, ctosis stosa, é isso que estamos predizendo com o nosso modelo de teste. Em seguida, descarregamos nesse segmento de texto onde vemos os dados de espécies de teste, eu lembrar que poder-technicamente ter feito uso de test. species. head e vês que o cabeçalho traz em si mesmo: Sosa, Sosa, Sosa, Sosa e mesmo assim estão coincidindo, então a primeira é o que a floresta faz e a segunda é o que os dados reais são. Agora precisamos combinar essas duas para que possamos entender o que isso significa. Precisamos saber de quantas, como bom, é a nossa floresta na predição das características, portanto vamos invocar o passo próximo que é uma coisa divertida, uma única linha de código para combinar as predições com os reais e teremos um gráfico lindo para olhar. Estaremos incluindo isso ao nosso script em nosso Jupyter Notebook aqui. Vamos tentar colocar aqui e, se puder, copiar e colar ali. Vamos ampliar apenas a série. Aí rodaremos o script. ``` # combinando nossas Previsões com os dados originais # visando combinar as predições com a matriz de matrizes que existem nas saídas df = pd. DataFrame(predictions) df. columns = ['predicted_species'] df = pd. concat([pd. DataFrame(y_test). reset_index(drop=True), df], axis=1) # adicionando nas columnas Dawson_Number, versicolor e virginica para os dados originaws df. insert(loc=2, column='Dawson_Number', value=np. arange(len(y_test)) + 1) df. insert(loc=4, column='versicolor', value=y_test. map({0: 0, 1: 1})) df. insert(loc=5, column='virginica', value=y_test. map({2: 0, 2: 1})) ``` Eis aí, nossa primeira peça de combinação para combinar as nossas predições com o reais. Combinei um DataFrame com as nossas predições. Depois, uni a matriz de matrizes que vem da saída dos nossos dados de teste. Deixei o índice para doesn't index, em seguida, adicionei algumas colunas com nossos dados origináis, para que possamos analisar melhor. Agora, vamos checar como nossa classe de Predição precisa ser alterada para que possamos fazer esta transformação ao gráfico. Vou demonstrar na linha seguinte como deveria ser para ser conveniente ao gráfico. ``` y_test_map = {0: 'setosa', 1: 'versicolor', 2: 'virginica'} ``` Quando obtivemos as nossas predições, vamos então fazer o inverso da transformação, lembrando os valores originais que os nossos dados foram originalmente marcados. ``` predictions_df['predicted_species'] = predictions_df['predicted_species']. apply(y_test_map) ``` Agora entendemos as duas Seções de Código aqui e como funcionam juntas. A primeira é a seção da py decoradora Predição e, aqui, fizemos Predições para 25 vezes, mas vamos manter apenas 5. Então temos ctosis, ctosis stosa, é isso que estamos predizendo com o nosso modelo de teste. Em seguida, compararemos essa saída com essa saída dos dados de espécies de teste e tentaremos combinar ao gráfico. Vamos classificar cada exemplo usando a transformação na nossa classe de Predição. Após termos a transformação, vamos criar um DataFrame, combinando nossas predições com os dados originais, como mostrado anteriormente. Agora que adicionamos nossas predições, podemos exibir agora os dados em um gráfico e começaremos a verificar a precisão de nosso modelo. # K-Means Agrupamento: Um Guia Básico O agrupamento K-Means é uma técnica popular para agrupamento de objetos com base na semelhança entre eles. Neste guia, discutiremos o agrupamento K-Means, suas diferenças com o Agrupamento Fuzzy C-Means e suas aplicações em cenários reais. ## O Que é o Agrupamento K-Means? Pelo número `K`, de onde o `K` origina-se. Se dizemos que `k` é igual a 2, os objetos são divididos em dois agrupamentos, `C1` e `C2`. Isso é realizado pela comparação dessas características ou características e tendo todos os objetos com características semelhantes unidos juntos. Assim, o agrupamento K-Means é realizado. Veremos isso em mais detalhes enquanto avançamos. O Agrupamento Fuzzy C é muito semelhante ao K-Means quanto à sua capacidade de agrupar objetos que possuem características **semelhantes**. No entanto, enquanto no K-Means, dois objetos não podem pertencer a um único objeto não podem pertencer a dois agrupamentos diferentes, no fuzzy C-Means, os objetos podem pertencer a mais de um agrupamento. Isso é a principal diferença entre o K-Means e o fuzzy C-Means. ### Aplicações do Agrupamento K-Means O agrupamento K-Means é utilizado em uma variedade de casos de negócios em casos reais, começando por: 1. Sistema de Diagnóstico de Desempenho Acadêmico 2. Engines de Busca 3. Redes Sensorias Sem Fio Vamos examinar cada um destes exemplos em detalhes. #### Desempenho Acadêmico Ao basear-se nas pontuações dos alunos, os alunos são agrupados nas categorias A, B, C, e assim por diante. O agrupamento forma uma estrutura de fundamento para os resultados de busca em busca nos engines de busca, quando uma busca é realizada, os resultados precisam ser agrupados em conjuntos. Os engines de busca utilizam frequentemente o agrupamento para realizar isso. De forma semelhante, no caso de redes sensorias sem fio, o algoritmo de agrupamento desempenha o papel de encontrar os cabeçalhos de cluster, que recolhe todos os dados em seu grupo específico respetivo. #### Engines de Busca O agrupamento, especialmente o agrupamento K-Means, utiliza medidas de distância. Vamos ver o que é medida de distância. Enquanto esses são os diferentes tipos de agrupamento em este vídeo, vamos focar no agrupamento K-Means. A medida de distância diz como similar algum objeto R. A similaridade é medida utilizando medidas de distância e quais os diferentes tipos de medidas de distância? Existem distância Euclidiana, Distância Manhattan, Medida Distância Quadrada Euclidiana, e Medida Distância Cossina. Esses são alguns dos diferentes tipos de medidas de distância suportados pelo agrupamento K-Means. Vamos ver cada um destes. ##### Distância Euclidiana Não é nada mais do que a distância entre dois pontos. Aprendemos na escola como encontrar a distância entre dois pontos. Essa é uma forma levemente mais avançada da fórmula para isso, mas sabemos uma formulação mais simples: ``` distancia = sqrt((Y2 - y1)^2 + (X2 - X1)^2) ``` ##### Distância Quadrada Euclidiana Nada mais é do que a quadrada da distância Euclidiana como os nomeados. Em vez de tomar a raiz quadrada, deixamos a quadrada ao lado, e então temos: ``` distância quadrada = (Y2 - y1)^2 + (X2 - X1)^2 ``` ##### Distância Manhattan No caso da Distância Manhattan, é a soma de distâncias nas funções x-axis e y-axis. Note que estamos tomando o valor absoluto para que os valores negativos não entrarão em jogo. Así, é a medida de Distância Manhattan. ##### Distância Cossina Nesse caso, tomamos o ângulo entre os dois vectores formados pelos pontos a partir do ponto de origem. Isso é a medida de Distância Cossina. Bem, é isso. Aqui teve uma visão rápida sobre as várias medidas de distância suportadas pelo agrupamento K-Means. Agora vamos ver como exatamente o agrupamento K-Means funciona. ### Como o Agrupamento K-Means Funciona Assim é o funcionamento do agrupamento K-Means: 1. Especeifiquemos o número de agrupamentos que queremos criar, digamos que `K` é igual a 3 ou 4 ou 5. 2. O sistema escolhe de forma aleatória esse número de pontos escolhidos para serem o centroides desses agrupamentos. 3. Ele mede a distância de cada ponto de dados desses centroides e atribui esses pontos aos respectivos centroides a partir da qual a distância é mínima. 4. Para os novos grupos (agrupamentos) formados, cálcula a média de posição, calculando assim a posição do centro da média. A posição do centro se move comparada à forma aleatória. 5. É um processo iterativo. Cada ponto é medido a partir da nova posição central, e em caso necessário os pontos são reatribuídos à novos centroides. A posição de média ou a nova posição de centro é calculada novamente. 6. Se o centro se move, então a iteração continua, isto é, a convergência não tenha acontecido, o agrupamento não convergiu. O processo de agrupamento já convergiu e esse é o resultado final. Vamos examinar um exemplo de visualização para melhor compreender o processo. Por exemplo, se tivermos um dataset para um loja de conveniência, queremos saber quantas driving distance hoje para um dia de razão háveria que seria ideal. Quantas oitadas iria comprar se tivesse que comprar apenas o suficiente para dois dias, quantos kilos de linguiça, limão e leite? Para determinar a razão de comprar quantas carne de sol, pão e leite para chegar no dia seguinte, temos que decidir primeiro quantas oitadas, linguiças, limões e carne de sol teríamos que comprar hoje para atingir o dia seguinte? Para determinar isso, podemos usar uma equação simples chamada de "Razor Analysis", onde começamos com uma estimativa inicial, que poderia ser a conclusão de que precisariamos comprar três oitadas hoje para chegar ao dia seguinte. Em seguida, usamos um sistema de iterativa para refinar esta estimativa. Então, precisamos adicionar um número de oitadas (por exemplo, 3), para o anos seguinte. Assim, temos 3 oitadas para o ano atual e temos que decidir o número preciso de oitadas para o próximo ano. Apenas adicionando 3 oitadas para o próximo ano provável, poderíamos ter apenas 6, dado que estamos em 3 anos de oitadas agora. Possamos educadamente parar nesse ponto e concluir que 3 oitadas por ano são suficientes porque o cálculo de razão, em seguida, exigiria que adicionásemos mais de 3 oitadas para o próximo ano se não tivesse suficiente procurar. Mas, se começamos com uns poucos anos a mais, podemos refinar a nossa estimativa usando a razão. Por exemplo, podemos começar com uma estimativa diferente de 5 oitadas por ano. Então, seríamos em 8 oitadas para o ano atual. O cálculo de razão nos diria que precisaríamos adicionar mais de 12 oitadas para o próximo ano. Continuamos a iterar ate percebermos que a razão necessária para o ano seguinte não será muito maior que 3 oitadas. Assim, temos acontecido uma redução de 5 a 2. 5 oitadas para o próximo ano. Continuamos a iterar até que nossa razão seja inferior a 3, indicando que teríamos atingido a razão ótima para ponderar o número de oitadas que precisáriamos comprar para o ano seguinte. # K-Means Clustering ## Problem Statement Imagine que Walmart precisa de abrir uma cadeia de lojas em todo o Estado da Flórida. O problema é que se eles abrem muito muitas lojas perto de uma outra, eles não vão ter lucro, mas se as lojas estiverem muito distantes umas das outras, não terão suficiente venda. Para otimizar isto, Walmart pode utilizar as endereços de seus clientes do seu banco de dados e o algoritmo K-Means de agrupamento para encontrar localizações de lojas ideais. ## Implementação Comecemos importando as bibliotecas necessárias: ```python import numpy as np import matplotlib. pyplot as plt from sklearn. cluster import KMeans from sklearn. datasets. samples_generator import make_blobs ``` De seguida, criamos dados de teste utilizando a função `make_blobs` para simular agrupações: ```python centers = 4 X, y = make_blobs(n_samples=300, centers=centers, random_state=14) ``` Então, utilizamos a funcionalidade KMeans padrão com os nossos dados de teste: ```python kmeans = KMeans(n_clusters=centers) kmeans. fit(X) ``` Depois, prevemos rótulos para cada observação: ```python y_pred = kmeans. labels_ print(y_pred) ``` Esse código é um exemplo básico de geração de dados falsos e agrupamento. Pode ser aplicado com os seus próprios dados, basta carregá-los e executar o KMeans. Agora apresentamos uma implementação rudimentar do algoritmo K-means: ```python def k_means(data, k, max_iter=100, tolerance=0. 0001): centers = data[np. random. choice(data. shape[0], k, replace=False)] old_centers = centers. copy() for _ in range(max_iter): # Atribua cada ponto de dados à center mais próximo assignments = np. zeros(data. shape[0]) for i, data_point in enumerate(data): distance_to_centers = np. linalg. norm(data_point - centers, axis=1) closest_center_index = np. argmin(distance_to_centers) assignments[i] = closest_center_index # Calcule novos centros new_centers = np. zeros((k, data. shape[1])) for i in range(k): sample_indexes = assignments == i new_centers[i] = np. mean(data[sample_indexes], axis=0) if np. linalg. norm(old_centers - new_centers) < tolerance: break old_centers = new_centers. copy() return new_centers, assignments ``` Esta implementação do algoritmo K-means contém um loop infinito que requer verificação adicional para evitar execução infinita quando a mudança na posição dos centros é extremamente pequena. Executando a função `k_means` acima obtemos como saída os novos centros e rótulos. ```python new_centers, assignments = k_means(X, k=centers) ``` Esta implementação do algoritmo K-means de agrupamento pode ser melhorada adicionando verificações adicionais para evitar execução infinita quando a mudança na posição dos centros é extremamente pequena. # K-Means Agregação: Exemplo de Compressão de Cores Este é um exemplo de implementação do algoritmo K-Means Aggregação, mostrando como ele pode ser usado para compressão de cores em imagens. O objetivo é comprimir uma imagem com milhões de cores para um número mais gerenciável, como 16 cores, para dispositivos com memória limitada. ## Implementação do Algoritmo K-Means Aggregação Primeiro, importamos as bibliotecas necessárias e carregamos a imagem. ```python import imageio import numpy as np from sklearn. cluster import KMeans # Carregar a imagem img = imageio. imread("flower. jpg") ``` Depois de carregar a imagem, os dados são formatados para prepará-los para o algoritmo de K-means Aggregação. ```python # Formatos os dados do os imagens img = img. reshape(img. shape[0] * img. shape[1], img. shape[2]) ``` Em seguida, aplícimos normalização para fazer os valores cair entre 0 e 1. ```python # Normalize os valores img = img / 255 ``` Agora, aplicamos o algoritmo de K-means Aggregação com `k` definido como 16 para compressão do espaço de cores. ```python # Aplica o K-means Aggregação kmeans = KMeans(n_clusters=16) centroides = kmeans. fit_predict(img) ``` Os centróides são as novas cores que irão representar a imagem original após a compressão. Em seguida, visualizamos a distribuição original de cores e a nova distribuição após aplicação do K-means Aggregação. ```python # Visualize a distribuição de cores originais import seaborn as sns import matplotlib. pyplot as plt from sklearn. manifold import TSNE # Transforma os dados para visualização X_tsne = TSNE(n_components=2). fit_transform(img) sns. scatterplot(x=X_tsne[: , 0], y=X_tsne[: , 1], hue=centroides) plt. show() ``` Por fim, aplicamos as novas cores aos dados do imagem e visualizamos a imagem compressa. ```python # Aplica as novas cores aos dados da imagem new_img = img. copy() new_img[new_img == np. max(img)] = kmeans. cluster_centers_[kmeans. labels_] # Visualiza a imagem compressa import matplotlib. pyplot as plt plt. imshow(new_img. reshape(img. shape[0], img. shape[1], img. shape[2]). transpose(1, 2, 0)) plt. show() ``` ## Vantagens - Compressão de Cores: Reduz o número de cores em uma imagem para que seja mais gerenciável em dispositivos com memória limitada. - Melhor Rendimento: A imagem comprimida pode ser renderizada em dispositivos que não possuem a capacidade de lidar com imagens de alta densidade. Para uma compreensão mais detalhada do algoritmo de Classeificador Baiês Naivo, favor consultar o seguinte vídeo: [Simplilearn - Classeificador Baiês Naivo](https://www.youtube.com/watch?v=3kq4lui3ngk) # Teorema de Bayes e Classificador Naivo Bayes no aprendizado de máquina Este tutorial demonstrará o uso do Teorema de Bayes e do Classificador Naivo Bayes no aprendizado de máquina. Vamos especificamente nos concentrar no Classificador Naivo Bayes e suas aplicações em vários campos. ## Teorema de Bayes O Teorema de Bayes fornece a probabilidade condicional de um evento `a` dado que outro evento `B` já ocorreu. No contexto deste tutorial, a primeira moeda jógada será event `B` e a segunda moeda jógada será event `a`. ### Formula A probabilidade de `a` acontecer dado que `B` já ocorreu é igual à probabilidade de `B` acontecer dado `a` multiplicada pela probabilidade de `a` pela probabilidade de `B`. Esta simples fórmula pode ser rearranjada como a probabilidade de `a` após `B` dada é igual à probabilidade de `B` dado `a` multiplicada pela probabilidade de `a`. `P(a | B) = P(B | a) * P(a) / P(B)` ## Exemplo com duas moedas Vamos considerar duas moedas equilibradas e calcular a probabilidade condicional de ter dois asas ou pelo menos uma coroa utilizando o Teorema de Bayes. ### Exemplo simplificado Inicialmente, computamos diretamente a probabilidade de ter dois asas e pelo menos uma coroa a partir dos dados: 1. A probabilidade de ter dois asas é `1/4` (um exemplo com asas duas vezes em quatro). 2. A probabilidade de ter pelo menos uma coroa é `3/4` (três exemplos com coroa pelo menos uma vez em quatro). ### Exemplo detalhado Vamos seguir um exemplo simples com duas moedas porque a matemática é fácil de entender. A probabilidade de jóguar uma coroa não depende de o que jardou antes e a mesma é verdadeira para uma asa. Neste espaço de amostra: 1. Aja seja o evento de que a segunda moeda se destaque. 2. B faça seja o evento de que a primeira moeda saia coroa. Estamos a seguir `a` e escrevemos isso como `P(a | B)`. Com isso, temos: `P(a | B) = P(B | a) * P(a) / P(B)` Encollando a probabilidade da primeira moeda sair coroa dada que a segunda moeda se destaque e a probabilidade da segunda moeda sair asa dada que a primeira moeda saia coroa, e eliminando `1/2`, obtemos: `P(a | B) = (1/2) * (1/2) / (1/2) = 0. 5 ou 1/4` Portanto, o Teorema de Bayes basicamente calcula a probabilidade condicional de ocorrência de um evento baseado em conhecimento prévio de condições que possam estar relacionadas com o evento. ## Classificador Naivo Bayes Uma compreensão do Teorema de Bayes é essencial para uma compreensão do Classificador Naivo Bayes. O Classificador Naivo Bayes é um classificador probabilístico baseado no Teorema de Bayes com a hipótese de independência entre os predizores. ### Aplicações O Classificador Naivo Bayes é utilizado em vários campos como: 1. Reconhecimento facial: É Cindy ou não Cindy? 2. Diagnóstico médico: Diagnosticar um indivíduo como alto risco ou não alto risco para câncer, doença cardiovascular ou outras doenças. 3. Classificação de notícias: Determinar se um artigo é de notícias políticas ou mundiais, por exemplo. O resto deste tutorial entrará mais a fundo no Classificador Naivo Bayes, fornecendo exemplos e um Demonstração prática a partir de Python para destacar as aplicações práticas do mesmo. ### Review do exemplo com duas moedas Antes de prosseguir, vamos revê-lo rapidamente o Classificador Naivo Bayes baseado no exemplo das duas moedas, como é apoiado no Teorema de Bayes, dado que este dá uma probabilidade condicional de evento `a` dado `B` (em termos do exemplo das duas moedas, o Classificador Naivo Bayes é baseado no Teorema de Bayes, que dá uma probabilidade condicional de evento `a` dado `B`, e isto é onde `P(a | B) = P(B | a) * P(a) / P(B)`). Se você estiver interessado, vamos fornecer uma caminhada mais minuciosa pelas cálculos matemáticos utilizando uma tabela e explicar como resolver o mesmo problema em Python. # Tabela de Probabilidades de Compra - Análise Combinada dos Factores ## Organizando a Probabilidade de Não Comprar ### Variáveis do Equação ```markdown P(a | B) = (P(B | a) * P(a)) / P(B) P(a) é a probabilidade de não comprar dada a condição B para as três variáveis "b c d". Isso é feito multiplicando cada variável juntas: P(a | B) = P(desconto) * P(entrega gratuita) * P(feriado) ``` Em seguida, multiplique pelo produto da probabilidade de não compra e divida pela probabilidade total de "B", que obtemos o seguinte resultado: ``` P(a) = 1/6 para não comprar no dia com desconto P(a) = 2/6 para não comprar no dia com entrega gratuita P(a) = 3/6 para não comprar no feriado ``` Agora, nós podemos calcular a probabilidade de não compra para os três combinados acima: ``` P(a) = (1/6 * 2/6 * 3/6) / [(P(desconto) * P(entrega gratuita) * P(feriado) + P(desconto) * P(entrega gratuita) * P(não feriado) + P(não desconto) * P(entrega gratuita) * P(feriado) + P(não desconto) * P(entrega gratuita) * P(não feriado) + P(desconto) * P(não entrega gratuita) * P(feriado) + P(desconto) * P(não entrega gratuita) * P(não feriado) + P(não desconto) * P(não entrega gratuita) * P(feriado) + P(não desconto) * P(não entrega gratuita) * P(não feriado)] ``` Uma vez que cada um dos valores sejam substituídos, seremos capazes de calcular a probabilidade de não comprar usando a fórmula fornecida: ``` P(a) = 1/(6*6*6) ``` Em contraste, vamos agora mostrar como calcular a probabilidade de compra utilizando a mesma técnica. Defina "b" como a probabilidade de compra pelo Dia, Desconto e Entrega gratuita específico: ``` P(b) = P(feriado * desconto * entrega_gratuita | compra) ``` Este passo-a-passo também segue o mesmo paradigma que mostramos inicialmente. No entanto, deve ser facilmente convertido para probabilidade total de compra: ``` P(b) = 178 / 30 ``` Agora, nós podemos normalizar ambos os resultados acima para lidar com as probabilidades como percentagens quanto aos dados discordantes e obter a probabilidade real da ocorrência de um evento de compra para um determinado Dia, Desconto, e Entrega gratuita. ## Organizando a Probabilidade de Comprar ### Variáveis do Equação Forneceremos agora as fórmulas para calcular a probabilidade de compra para um determinado combinado de Dia, Desconto e Entrega gratuita. O cálculo de probabilidade de não comprar será mostrado em seguida. Primeiro, defina "b" como a probabilidade de compra pelo Dia, Desconto e Entrega gratuita específico. Demonstraremos agora o cálculo de "b" usando a maneira tradicional: > Definimos "B" como aplicando simultaneamente todas as condições os seguintes três: (Dia é feriado, O cliente recebeu um desconto e a entrega foi gratuita) Agora defina "B" como aplicando simultaneamente todas as condições: (Dia é feriado e o cliente recebeu um desconto e a entrega foi gratuita) Por fim, utiliza a seguinte equação para calcular "b", onde "A" é a probabilidade de "B" dado "b c d": ``` P(b | B) = (P(B | b) * P(b)) / P(B) ``` Quando você vê "P(b | B)" no caso, a condição é "b c d" ou as três variáveis que estamos analisando agora. Quando você vê "P(B)", esse seria o cálculo de todas as condições mencionadas acima multiplicadas e divididas pela probabilidade total. Agora, definimos "b" como a probabilidade de compra dada a condição "B" para as três variáveis "b c d". Isso é feito multiplicando cada variável juntas: ``` P(b | B) = P(desconto) * P(entrega gratuita) * P(feriado) ``` Em seguida, multiplique pelo produto da probabilidade de compra e divida pela probabilidade total de "B", que obtemos o seguinte resultado: ``` P(b) = 178 / 30 ``` Cada um é o resultado da multiplicação acima da ` P(b)` que está na equação. Agora, nós podemos calcular a probabilidade de compra para os três comprimidos acima: ``` P(b) = (178 * (1/6 * 2/6 * 3/6)) / [(P(desconto) * P(entrega gratuita) * P(feriado) + P(desconto) * P(entrega gratuita) * P(não feriado) + P(não desconto) * P(entrega gratuita) * P(feriado) + P(não desconto) * P(entrega gratuita) * P(não feriado) + P(desconto) * P(não entrega gratuita) * P(feriado) + P(desconto) * P(não entrega gratuita) * P(não feriado) + P(não desconto) * P(não entrega gratuita) * P(feriado) + P(não desconto) * P(não entrega gratuita) * P(não feriado)] ``` Uma vez que cada um dos valores sejam substituídos, seremos capazes de calcular a probabilidade de compra usando a fórmula fornecida. ``` # Modelo de Classificação de Texto =============== ## Modelo de Classificação de Texto ``` # Página sem ele em um Notebook: um exemplo de interface Explorador Este exemplo fornece um exemplo de interface de Notebook, que pode não ser exibido sem ele. A interface deste exemplo é conhecida como interface Exploradora, e ela não será exibida sem o setup necessário. ## Importando Bibliotecas Inicialmente, precisamos das seguintes bibliotecas para este exemplo: ``` import matplotlib. pyplot as plt import numpy as np import sklearn from sklearn. datasets import fetch_20_newsgroups from sklearn. feature_extraction. text import TfidfVectorizer from sklearn. naive_bayes import MultinomialNB from sklearn. pipeline import make_pipeline ``` ## Baixando Dados de Notícias Em seguida, baixamos o conjunto de dados de Notícias do Grupo 20, um conjunto de dados comum para analisar e requisitar palavras: ``` data = fetch_20_newsgroups() ``` ## Examinando os Dados Agora, vejamos as categorias disponíveis e seus nomes: ``` print(data. target_names) ``` ## Configurando os Dados Para fins de visualização, criamos categorias e um conjunto de treino: ``` categories = data. target_names train_set = data. data ``` ## Importando Bibliotecas para ilustração Neste exemplo, vamos utilizar Plotly e a biblioteca seaborn para criar gráficos: ``` import plotly. graph_objects as go import seaborn as sns # Substitua 'plt' por 'go' e 'sns' para gráficos Plotly/Seaborn ``` ## Criando gráficos iniciais Pode-se criar alguns gráficos iniciais para visualizar os dados e verificar se nossa configuração funciona corretamente: ``` # Gráficos de Ilustração vão aqui ``` ## Análise de Dados e Previsões Agora, poderemos prosseguir com a análise dos dados e aguardar previsões com um classificador Bayesiana Nauísta: [. . . ] (Continuar com o texto original do exemplo a partir daqui. ) ## Visão Geral sobre Apoio ao Aprendizagem profunda [. . . ] (Inserir aqui a visão geral sobre aprendizado profundo fornecida anteriormente. ) # Machine Learning vs Deep Learning (aplicado ao português de Portugal) A machine learning (ML) tem um conceito mais amplo, frequentemente referido como uma tecnologia mais ampla. A deep learning (DL) é um subconjunto de aprendizagem máquina. A diferença principal entre o ML e o DL consiste na utilização de redes neurais, o que faz com que a DL seja adequada para processar grandes quantidades de dados sem estrutura. ## Diferenças Chave 1. **Extracção de Feature**: No ML, a extracção de feature ou engenharia de feature é feita manualmente por cientistas de dados. No entanto, no DL, visto que usamos redes neurais, a engenharia de feature ocorre automaticamente. 2. **Processamento de Dados Desestruturados**: A ML tradicional não é muito eficiente no tratamento de grandes quantidades de dados desestruturados como imagens, fala e texto. A DL, por outro lado, é muito eficiente neste campo. 3. **Algoritmos Complexos**: A DL pode executar algoritmos complexos e atingir o melhor desempenho com grandes quantidades de dados. 4. **Desempenho baseado nas Dados**: O desempenho melhor é obtido quando mais dados estão disponíveis para treino na DL. 5. **Extracção de Feature automática**: Com DL, é possível evitar o processo manual de extracção de feature. ## Porquê Precisamos de Deep Learning 1. **Processamento de Dados Desestruturados**: A ML tradicional findica com grandes quantidades de dados desestruturados. Isto é uma das diferenciais importantes para a DL. 2. **Reconhecimento e Processamento de Imagens**: É necessária a DL para o reconhecimento e processamento de imagens, pois pode acelerar o processo de detecção e melhorar a precisão. 3. **Robótica**: A DL é majoritariamente utilizada na robótica, particularmente no processo industrial, segurança, defesa e androides humanoides. 4. **Carros Autónomos**: A DL é utilizada em carros autónomos para análise de vídeo, detecção de obstáculos e detecção de faixas. 5. **Tradução de Máquina**: A DL pode ser utilizada para tradução de máquina em tempo real, o que permite traduzir entre idiomas instantaneamente. ## Aplicações da Deep Learning ### Saúde - Detectação de Câncer: A DL pode acelerar o processo de detecção e predição de doença na área da saúde, em particular na oncologia. ### Robótica - Robôs Industriais: A DL é utilizada em robôs industriais para processamento de imagem e vídeo, detecção de obstáculos e análise de sons. ### Carros Autónomos - Carros Autónomos dependem da DL para análise de vídeo, detecção de obstáculos e toma de decisão baseada em sinais de tráfego. ### Tradução de Máquina - Tradução de máquina em tempo real é possível com a DL, o que permite traduzir entre idiomas instantaneamente. ## Compreendendo a Deep Learning: Redes Neurais A DL opera em redes neurais, que são projetadas de acordo com a estrutura do cérebro humano. ### Neurônio Biológico Um neurônio biológico consiste em um núcleo celular, dendrites, um axónio e sinapses. ### Neurônio Artificial Um neurônio artificial, também conhecido como um perceptron, tem uma unidade central que realiza a soma de entradas pesadas (representadas como X1, X2, etc. ), um bias e uma função de ativação. --- O exercício de treinar um neurônio envolve ajustar estas pesas e biases. Em uma rede neuronal profunda, existem vários neurônios, cada um com sua própria conjuntura de pesos e biases. --- Este texto manterá todas as URLs existentes, listas e formatação de Markdown. Também correge erros ortográficos, de gramática, de pontuação, preservando termos técnicos e códigos. Titulo: Fundamentos da Neura Morfologica ===================================== Introdução ----------- Este texto apresenta uma visão geral da neura morfologica, focando em neurônios, pesos, viagem de treinamento e ativação. Começaremos explicando o que um neurônio básico é e seus componentes mais importantes, seguido da discussão do processo de treinamento e finalmente da várias funções de ativação. Neurônios --------- Neurões são fundamentais na neura morfologica e consistem de várias partes, incluindo o conteúdo, entrada, saída, pesos e viagem. Um neurônio básico tem vários neurônios adjacentes enviando impulsos elétricos para a entrada do neurônio, onde são multiplicados por pesos do neurônio e somados. Pesos ----- Os pesos nos neurônios são atualizados durante o processo de treinamento. Inicialmente, os pesos são atribuídos valores aleatórios e ao longo do treinamento são ajustados com base na atualização de pesos do neurônio. Treinamento ------------ Durante o treinamento, cada entrada é multiplicada por um peso e essas multiplicações são somadas, o que resulta em uma soma ponderada ou "somatório". A soma ponderada é então acrescentada um viagem comum a todos os neurônios. Este somatório actua como entrada para uma função de ativação, que gera a saida do neurônio. Ativação -------- A função de ativação é a fonte da non-linearidade e é responsável por determinar se o neurônio é disparado ou não. Ao longo deste artigo, discutiremos funções de ativação como a função de ativação bipolar, a função de ativação logística, funcões de ativação relu e hiperbólica tangente. Como cada um dessas funções são aplicadas de maneira diferente, é importante compreender suas mais importantes diferenças. Antes de continuar, aqui está uma breve visão geral de cada função de ativação: 1. Função de Ativação Bipolar: Gera um valor de saída binaria (zero ou um). 2. Função de Ativação Logística: Gera um valor de saída entre zero e um. 3. Função de Ativação ReLu: Gera um valor de saída no valor zero ou maior que o valor de entrada. 4. Função de Ativação Hiperbólica Tangente: Gera um valor de saída entre -1 e 1. Funcão de Ativação Logística ----------------------------- A função de ativação bipolar foi uma das primeiras funções de ativação utilizadas e o ReLU (Relução Linear Satiada) é atualmente a mais popular função de ativação em rede neuronal público. No entanto, a função de ativação logística ainda é usada em muitas situações. Essas funções de ativação diferentes são usadas em diferentes situações baseado no tipo de problema que está sendo resolvido. W1 a WN: Pesos dos neurônios ---------------------------- Além do viagem, cada neurônio tem seus próprios pesos. Cada peso corresponde a determinada entrada de um neurônio e pode ser qualquer número. Os pesos são multiplicados por cada entrada e seus resultados são somados para formar o somatório. ### Os seus rótulos e referências intactas antigamente podem ser vistas no texto a seguir: A função de ativação bipolar é uma das mais populares funções de ativação atualmente em redes neuronais e é utilizada para determinar se um neurônio será disparado ou não. ### Sigmoid function A função logística é outra função popular de ativação utilizada # Aula - 20: Bibliotecas Python para Ciência de Dados ## Introdução Python é o programa de língua de programação mais utilizado hoje em dia para resolver tarefas e desafios de Ciência de Dados. Python jamais se esgotou de surpreender seu público, e a grande maioria de data scientists estão já aproveitando o poder de Python todo o dia. Olá, eu sou AA de Simplilearn! Após alguma reflexão e pesquisa adicional, finalmente pude afianchar minha escolha de bibliotecas Python de alto desempenho para Ciência de Dados. Vamos descobrir o que são elas: 1. **TensorFlow** TensorFlow é uma biblioteca para computações numericas de alto desempenho, com aproximadamente 35. 000 commits no GitHub e uma comunidade vibrante de cerca de 1. 500 contributores. É utilizado em diversos dominios científicos e é um framework no qual podemos definir e executar computações envolvendo tensores. ## Características de TensorFlow - TensorFlow é principalmente utilizado em modelos de aprendizado profundo e redes neurais, onde também temos bibliotecas como PyTorch e Theano, mas TensorFlow tem vantagem clara nas visualizações gráficas de computação quando comparado a eles. - Acessando TensorFlow reduz a porcentagem de erros em tradução de máquina neural em aproximadamente 50 a 60%. - TensorFlow é altamente paralelo, permitindo a treinagem de múltiplas redes neurais e múltiplos GPUs para modelos altamente eficientes e escaláveis. Esse recurso de computação em paralelo de TensorFlow também é chamado de pipelining. - TensorFlow possui vantagem de desempenho seletivo, já que é empacotado pela Google, com atualizações mais rápidas e releaseds frequentes com as últimas características. ## Aplicações de TensorFlow - TensorFlow é extremamente utilizado em reconhecimentos de fala e de imagens, aplicações textuais, análise e previsão de séries temporais e muitas outras aplicações que envolvem detecção de vídeo. - O que está mais popular sobre TensorFlow é que já é popular na comunidade de inteligência artificial e a maioria está aberta a tentar, enquanto alguns já estão a utilizá-lo. ## Um exemplo de um modelo de TensorFlow Este modelo não vai nos varrer todo detalhe da explicação do modelo, já que isso está além do escopo deste vídeo. Assim, aqui estamos a utilizar o conjunto de dados MNIST, que consiste em imagens de dígitos escritos à mão. Os dígitos à mão podem foi facilmente reconhecidos construindo um modelo simples de TensorFlow. Vamos ver quando nos visualizamos os dados com matplotlib, os entrada será aquilo que está na figura abaixo: ! [Exemplo de dataset MNIST](https://www.simplilearn.com/tutorials/data-science-tutorial/deep-learning-content/Deep-Learning-MNIST-Data-Visualization) Depois, criamos um modelo de TensorFlow para criar um modelo básico de TensorFlow, como nos mostrará abaixo: ```python import tensorflow as tf # Inicializa as variáveis e Start uma sessão sess = tf. Session() # Define o modelo # . . . # Treina o modelo # . . . # Valida os dados # . . . # Prediz a precisão # . . . ``` Este modelo tem previsto 92% de precisão, o que é considerado muito bom para este modelo. 2. **NumPy** NumPy é uma biblioteca básica para computações numericas em Python, como sugere o nome. Contém aproximadamente 18. 000 commits no GitHub, possui uma equipe activa de cerca de 700 contribuidores. É um pacote de processamento de arrays genérico, fornecendo objetos e ferramentas de alta performance multi-dimensionalmente chamados ​​de Arrays, e operações e ferramentas que an facilitam trabalhar com eles. ## Características de NumPy - NumPy apoia totalmente um abordagem orientada a objetos, por exemplo, utilizando a classe nueArray uma vez mais. - NumPy aborda o problema lentidão parcialmente disponibilIZANDO Arrays multi-dimensionales e funções e operadores que operam eficientemente nestes arrays. ## Aplicações de NumPy - NumPy é prática para reduzir código duplicado, facilita o desenvolvimento de algoritmos paralelos, e outras computações numéricas. ``` Note que pode ser necessário formatar ou ajustar códigos de exemplo em fusão pinças para que funcione corretamente no seu ambiente, já que o formato apresentado aqui foi projetado para uso em um ambiente de desenvolvimento e não necessariamente no upload em um serviço Web. --- *Observação: a informação incluída nesta aula é fornecida para fins educacionais somente e não deve ser utilizada comercialmente sem devido atribuição e permissão dos autores originais. * * * * **Sobre mim: ** Eu sou um revisor especializado em melhorar documentação técnica em Markdown. Essa foi uma solicitação para corrigir e formatar um texto mantendo as seguintes regras: 1. FORMATAÇÃO MARKDOWN: - Use # para títulos e subtítulos - Use ** para negrito em termos importantes - Use ` para código inline - Use ``` para blocos de código - Use > para citações - Use - ou * para listas - Use --- para separadores - Preserve todas as URLs existentes 2. ESTRUTURA: - Organize em seções com títulos claros - Use parágrafos para separar ideias - Mantenha listas e enumerações - Preserve a hierarquia de títulos 3. CONTEÚDO: - Corrija erros de pontuação e gramática - Mantenha todos os termos técnicos inalterados - Preserve comandos e códigos exatamente como estão - Mantenha URLs e referências intactas Eu retornei o texto, mantendo todas as formatações Markdown. Corriji e formatei este texto: extract the features and it will try to predict which of these is cats and dogs and this time let's say out of thousand, 700 of them have been predicted correctly, so that means in the second iteration the accuracy has increased from 50% to 70%. Let's say we go back again, we feed this maybe for a third iteration, fourth iteration, and so on, and slowly and steadily the accuracy of this network will keep increasing, and it may reach probably you never know, 90%, 95%, and there are several parameters that are known as Hyperparameters that need to be changed and tweaked, and that is the overall training process, and ultimately at some point we say, okay you will probably never reach 100% accuracy, but then we set a limit saying that okay if we receive 95% accuracy, that is good enough for our application, and then we say okay, our training process is done. So that is the way training happens, and once the training is done, now with the training data set the system has seen all these thousand images, therefore what what we do is the next step, like in any normal machine learning process, we do the testing where we take a fresh set of images and we feed it to the network. The fresh set which it has not seen before as a part of the training process, and this is again nothing new in deep learning, this was there in machine learning as well, so you feed the test images and then find out whether we are getting similar accuracy or not. Maybe that accuracy May reduce a little bit while training, you may get 98% and then for test you may get 95%, but there shouldn't be a drastic drop like for example you get 98% in training and then you get 50% or 40% with the test, that means your network has not learned, you may have to retrain your network. So that is the way neural network training works, and remember the whole process is about changing these weights and biases and coming up with the optimal values of these weights and biases so that the accuracy is the maximum possible. Let's do a little bit more detail about how this whole thing works, so this is known as forward propagation, where the data or the information is going in the forward direction, the inputs are taken, weighted summation is done, bias is added here, and then that is fed to the activation function, and then that is what comes out as an output. So that is forward propagation, and the output is compared with the actual value and that will give us the error, the difference between them is the error and in technical terms that is also known as our cost function, and this is what we would like to minimize. There are different ways of defining the cost function, but one of the simplest ways is Mean Square Error, so it is nothing but the square of the difference of the errors, or the sum of the squares of the difference of the errors, and this is also nothing new: we have probably if you're familiar with machine learning you must have come across this mean square error, now there are different ways of defining cost function, it need not always be Mean Square Error, but the most common one is this. So you define this cost function and you ask the system to minimize this error using what is known as an optimization function, to minimize this error and the error itself sent back to the system as feedback, and that is known as back propagation, so this is the cost function and how do we optimize the cost function by using what is known as gradient descent, so the gradient descent mechanism identifies how to change the weights and biases, so that the cost function is minimized, and there is also what is known as the rate of learning that is shown here as slower and faster, so you need to specify what should be the learning rate, now if the learning rate is very small, it will probably take very long to train, whereas if the learning rate is very high, it will appear to be faster, but then it will probably never converge. What is convergence? Now we are talking about a few terms here: convergence is like this, this is a representation of convergence, so the whole idea of gradient descent is to optimize the cost function or minimize the cost function in order to do that, we need to represent the cost C function as this curve, we need to come to this minimum value that is what is known as minimization of the cost function, now what happens if we have the learning rate very small is that it will take very long to come to this point on the other hand if you have large higher learning rate, what will happen is instead of stopping here, it will cross over because the learning rate is high, and then it has to come back, so it will result in what is known as like an oscillation, so it will never come to this point, which is known as convergence, instead, it will go back and forth, so these are known as Hyperparameters: the learning rate and so on, and these have to be those numbers or those values, we can determine typically using trial and error out of experience, we try to find out these values, so that is the gradient descent mechanism, to optimize the cost function, and that is what is used to train our neural network, and remember the whole process is about finding the best values of the weights and biases for each and every neuron in the network, that's all, the training of neural network consists of finding the optimal values of the weights and biases, so that the accuracy is the maximum possible. Let's do a quick representation of how the whole thing works, so the information is going in this direction which is basically the forward propagation, here, in this example, we are trying to classify these images whether they are cats or dogs, and as you can see, actually, each image is fed in each time one image is fed at a time, and these values of X1, X2 up to xn are the pixel values within this image, okay, those values are then taken and for each of those values a weight is multiplied and then it goes to the next layer and then to the next layer and so on, ultimately it comes as the output layer and it gives an output as whether it is a dog or a cat. Remember the output will never be a named output, so these would be like a zero or a one, and we say, Okay zero corresponds to dogs and one corresponds to cats, so that is the way it typically happens, this is known as binary classification, and we have similar situations where there can be multiple classes, which means that there will be multiple more neurons in the output layer, okay, so that is a quick representation of how the forward propagation and the backward propagation works, so the. # Introdução a NumPy, SciPy, Pandas e Matplotlib na Ciência de Dados ## NumPy O NumPy oferece vectorization, que é mais rápida e mais compacta do que métodos tradicionais. Elimina a necessidade de laços e simplifica cálculos numericos. ### Aplicações de NumPy 1. **Análise de Dados: ** Amplamente utilizado em conjunto com Pandas em análise de dados, sendo a base de visualização de dados. 2. **Aprendizado de Máquina: ** Utilizado como base para outras bibliotecas de aprendizado de máquina como SciPy, SciKit-Learn, e mais. 3. **Substituto de MATLAB: ** Pode ser usado como substituto de MATLAB em determinadas computações científicas. ### Exemplos Aqui está um exemplo simples de criar e manipular um array em NumPy: ```python # Importar NumPy import numpy as np # Criar um array simples em NumPy array = np. array([1, 2, 3, 4, 5]) print("Tipo de array: ", array. dtype) print("Forma do array: ", array. shape) # Alterar a forma do array # Exemplo: Alterar a forma de 1-D para 2-D array = array. reshape(3, 2) print("Nova forma do array: ", array. shape) ``` ## SciPy O SciPy é uma biblioteca livre e de código aberto para cálculos científicos em Python. Ele tem cerca de 19. 000 commits no GitHub com uma comunidade activa de 600 colaboradores. ### Funcionalidades de SciPy 1. Coleção de algoritmos e funções, construída sobre a extensão NumPy de Python. 2. Comandos altamente nivelados para manipulação de dados e visualização. 3. Útil em processamento de imagens multidimensionais, resolução de equações diferenciais, e mais. ### Aplicações de SciPy 1. **Operações em Imagens Multi-dimensionais: ** Inclui funções para ler imagens do disco, escrever arrays para disco como imagens, redimensionar imagens, e mais. 2. **Resolução de Equações Diferenciais: ** Fornece soluções para equações diferenciais do primeiro-ordem e sistemas de equações diferenciais. 3. **Algoritmos de Optimização: ** Suporta vários algoritmos de optimização como descida de gradiente, method of least squares, e mais. 4. **Algebra Linear: ** Fornece rotinas de álgebra linear eficientes para solução de equações matriciais, decomposição de matrizes, e mais. ## Pandas O Pandas é a biblioteca Python mais popular e amplamente utilizada para ciência de dados, ajudando com análise e limpeza de dados. ### Funcionalidades de Pandas 1. Sintaxe eloquente e funcionalidade rica. 2. Fornece estruturas de dados rápidas e flexíveis como data frames e séries, projetadas para trabalhar com dados estruturados de forma fácil e intuitiva. 3. Alta abstração de nível superior sobre NumPy, facilitando manipulação de dados. 4. Excelente suporte para carregar arquivos CSV, Excel, bases de dados SQL, e mais na formatação de quadros de dados. ### Aplicações de Pandas 1. **Análise e Limpeza de Dados: ** Pandas é amplamente utilizado para processamento geral de dados. 2. **Job de ETL: ** Utilizado para transformação e armazenamento de dados, devido à excelente suporte ao carregamento de arquivos CSV. 3. **Múltiplos Domínios Académicos e Comerciais: ** Utilizado em estatística, financeira, neurocientífica, econômica, web analytics, e mais. ## Matplotlib O Matplotlib é uma biblioteca de plotagem de Python conhecida pela sua poderosa e bonita visualização. ### Funcionalidades de Matplotlib 1. Oferece uma API de objetos orientada, que pode ser usada para incorporar gráficos em aplicações. 2. Suporta vários backends e tipos de saída, fazendo com que seja usável em qualquer sistema operacional. 3. Emite um módulo de gráficos de matrizes P (P plot), introduzindo uma interface Matlab-like com a vantagem de ser livre e código aberto. 4. Baixo consumo de memória e bom comportamento em tempo de execução. ### Aplicações de Matplotlib 1. **Visualização de Dados: ** Ajudando a visualizar a análise de correlação de variáveis, intervalo de confiança de 95% de modelos, detecção de fora-de-mé-dia, e mais. 2. **Aprendizado de Máquina: ** Visualizar os resultados e o desempenho de modelos de aprendizado de máquina. 3. **Análise Exploratória de Dados: ** Ganhar insighs instantâneos sobre a distribuição de dados e identificar novas tendências e padrões. ### Exemplo de Visualização com Matplotlib ```python import matplotlib. pyplot as plt import numpy as np # Criar dados aleatórios x = np. random. rand(30) y = np. random. rand(30) # Criar uma gráfica de dispersão plt. scatter(x, y) plt. show() ``` ## Outras Bibliotecas Úteis 1. **TensorFlow: ** Uma biblioteca popular para aprendizado profundo e redes neurais, com apoio para ambos os backends TensorFlow e Theano. 2. **Scikit-Learn: ** Uma biblioteca de aprendizado de máquina que fornece quase todos os algoritmos de aprendizado de máquina necessários, projetada para trabalhar seamlessmente com NumPy e SciPy. 3. **Seaborn: ** Uma extensão de Matplotlib, que introduz tipos de gráficos adicionais para visualização de dados. 4. **Plotly: ** Uma poderosa biblioteca de visualização para criação de gráficos interativos e painéis. # Data Visualization com Python e Matplotlib A visualização de dados simplifica a interpretação de informação quantitativa complexa, facilita o análise e exploração de Big Data, identifica áreas que precisam de atenção ou melhoria e explora novos padrões e padrão escondidos nos dados. Existem três principais considerações para a visualização de dados: claridade, acurácia e eficiência. ## Claridade Garanta que o conjunto de dados é completo e relevante, permitindo aos cientistas de dados utilizar os novos padrões derivados dos dados em lugares relevantes. Utilize representações gráficas appropriadas para transmitir a mensagem certa e técnicas de visualização eficientes para ressaltar todos os pontos de dados. ### Efeitos Visuais Os efeitos visuais incluem o uso de formas apropriadas, cores e tamanhos para representar os dados analisados. O sistema de coordenadas ajuda a organizar os pontos de dados dentro dos coordenadas fornecidas. ### Tipos de Dados e Escala Escolha um tipo de dados, como numérico ou categorical. Interpretação informativa ajuda a criar visualizações em um modo efetivo e facilmente interpreto usando etiquetas, título, lendas e pacotes. ## Bibliotecas para Visualização de Dados com Python Foram introduzidos recentemente várias novas bibliotecas, como: 1. Matplotlib 2. Plotly 3. Bokeh 4. Seaborn 5. Pigeon 6. Folium 7. Networks ## Matplotlib Entre estas bibliotecas, o Matplotlib emerge como principal biblioteca de visualização de dados. Esta biblioteca Python deplotagem em dois dimensões é utilizada para a criação de gráficos interativos ou plots usando a biblioteca Python Matplotlib. Esta biblioteca permite a visualização de dados complexos e vastos de maneira eficiente. ### Vantagens de Utilizar Matplotlib para Visualização de Dados 1. É uma ferramenta de visualização de dados multiplataforma construída sobre o framework numpy e scipy, tornando-a rápida e eficiente. 2. Permite trabalhar com qualquer sistema operacional e back-end gráfico. 3. Fornece gráficos e plots de alta qualidade que podem ser impressos e visualizados para uma faixa de gráficos, como histogramas, barras, pirâmides, diagramas dispersos e mapas termais com integração no Jupyter Notebook. 4. Possui comunidade de apoio grande e suporte multiplataforma, pois é uma ferramenta aberta. 5. Possui total controle sobre estilos de gráficos ou plots, como propriedades de linhas, fontes e propriedades de eixos. ### Criando um Gráfico 1. Importe as bibliotecas necessárias ```python import numpy as np import matplotlib. pyplot as plt import matplotlib. style as style style. use('ggplot') %matplotlib inline ``` 2. Defina ou importe o conjunto de dados necessário ```python data = np. random. rand(100) print(data) ``` 3. Defina os parâmetros do gráfico ```python plt. style. use('ggplot') plt. grid(True) plt. xlabel('Range') plt. ylabel('Labels') plt. title('First Plot') plt. legend(label='Line One', loc='upper left') plt. plot(data, color='g', alpha=0. 4, linewidth=2) ``` ## Gráfico em Dois Dimensões O gráfico em dois dimensões é uma representação gráfica de dados que mostra a relação entre dois variáveis ou a distribuição dos dados. ### Exemplo de um Gráfico em Dois Dimensões Examine o seguinte exemplo: uma empresa Nutri-worldwide deseja saber quantos usuários visitam o seu site web em um determinado momento. Este análise ajuda a controlando e a monitorar o tráfego do site web. Este exemplo envolve duas variáveis: usuários e tempo. ```python website_data = {'Time Hours': [6. 5, 7. 0, 8. 0, 9. 0, 10. 0, 11. 0, 12. 0, 13. 0, 14. 0, 15. 0, 16. 0, 17. 0], 'Number of Users': [123, 645, 578, 390, 234, 138, 245, 458, 412, 389, 789, 156]} plt. plot(website_data['Time Hours'], website_data['Number of Users']) plt. title('Website Traffic') plt. grid(True) plt. xlabel('Time Hours') plt. ylabel('Number of Users') plt. show() ``` Também é possível mudar o estilo de linha do gráfico: ```python plt. plot(website_data['Time Hours'], website_data['Number of Users'], linestyle='--', color='blue') plt. title('Website Traffic - Linha Tratada') plt. grid(True) plt. xlabel('Time Hours') plt. ylabel('Number of Users') plt. show() ``` Defina o eixo desejado para interpretar o resultado desejado: ```python plt. plot(website_data['Time Hours'], website_data['Number of Users']) plt. xlim(6. 5, 17. 5) plt. ylim(50, 2000) plt. title('Website Traffic - Eixos Desejados') plt. grid(True) plt. xlabel('Time Hours') plt. ylabel('Number of Users') plt. show() ``` ### Marcando um Gráfico ```python plt. annotate('Sample Text', xy=(7. 5, 800), xytext=(10, 20), arrowprops=dict(facecolor='green', shrink=0. 05), horizontalalignment='right', verticalalignment='bottom') plt. plot(website_data['Time Hours'], website_data['Number of Users']) plt. title('Website Traffic - Gráfico Marcado') plt. grid(True) plt. xlabel('Time Hours') plt. ylabel('Number of Users') plt. show() ``` ## Gráficos Múltiplos Também é possível criar vários gráficos para diferentes conjuntos de dados usando subplots: ```python fig, ax = plt. subplots(2, 2, figsize=(10, 10)) # Gráfico 1 - Segunda-feira ax[0, 0]. plot(data1_segunda, color='red') ax[0, 0]. set_title('Monday') # Gráfico 2 - Terça-feira ax[0, 1]. plot(data1_terça, color='green') ax[0, 1]. set_title('Tuesday') # Gráfico 3 - Quarta-feira ax[1, 0]. plot(data1_quarta, color='blue') ax[1, 0]. set_title('Wednesday') # Gráfico 4 - Quinta-feira ax[1, 1]. plot(data1_quinta, color='yellow') ax[1, 1]. set_title('Thursday') plt. show() ``` Isto cria quatro subplots com cada subplota mostrando um conjunto diferente de dados representado por diferentes cores. É também possível ajustar a disposição e o espaçamento dos subplots usando `plt. subplots_adjust()`. Titulo: Visualização de Dados com Matplotlib ------------------------------------------- O uso de gráficos de aquecimento é uma ótima maneira de visualizar dados bidimensionais. Com mapas de aquecimento, é possível obter uma visão mais profunda e rápida dos dados do que com outros tipos de gráficos. Além disso, mapas de aquecimento possuem várias vantagens: 1. Atenção) Foco na área mais arriscada. 2. Útil para análise de grupos. 3. (Ideal para tratamento de conjuntos de dados grandes). Neste demonstrativo, vou explicar como gerar um mapa de aquecimento usando a biblioteca [Matplotlib](https://matplotlib.org/). ### Requisitos Para este demonstrativo, faremos uso da biblioteca Matplotlib e suas dependências, conforme abaixo: ```bash pip install matplotlib pandas seaborn ``` Vamos usar a biblioteca pandas para carregar os dados e seaborn para acessar o conjunto de dados de voos incorporado. Por favor, use o seguinte comando para instalar a biblioteca Matplotlib em modo de execução comdetails. csh: ```bash %matplotlib inline ``` Em seguida, vamos carregar o conjunto de dados de voos disponível no seaborn: ```python import seaborn as sns dados_voos = sns. load_dataset('flights') ``` E em seguida, vamos ver o conjunto de dados carregado: ```python dados_voos. head() ``` Para gerar o mapa de aquecimento, primeiro devemos rearranjar os dados de acordo com suas colunas (mês, ano e passageiros): ```python dados_voos_pivotado = dados_voos. pivot(columns=['mês', 'ano'], values='passageiros') ``` Em seguida, vamos gerar o mapa de aquecimento: ```python import matplotlib. pyplot as plt sns. heatmap(dados_voos_pivotado) plt. show() ``` Mas que sobre pie charts. . . ------------------ Pie charts são geralmente usados para representar porcentagens ou porcentagem proporcional dos dados. Artie que geralmente a porcentagem representada por cada categoria é fornecida ao lado do slice de pi correspondente. A biblioteca Matplotlib fornece a opção de criar pie charts com o método `plot` e chamando a função PieDataWrapper. Eu forneço um exemplo abaixo sobre como gerar um chart de pie, agora vamos seguir esse exemplo com listas de dados de afinidades financeiras, marketing, administrativo, HR e operações: ```python import matplotlib. pyplot as plt from matplotlib. patches import Pie afinidades_financeiras = [30, 28, 16, 15, 4] afinidades_marketing = [25, 35, 20, 7, 3] afinidades_admin = [7, 6, 36, 24, 22] afinidades_hr = [8, 12, 21, 32, 27] afinidades_ops = [10, 10, 17, 9, 32] cores = ['#a6cee3', '#1f78b4', '#9467bd', '#75bctb', '#d9e9f9'] labels = ['Finance', 'Marketing', 'Admin', 'HR', 'Operations'] plt. figure(figsize=(6, 5)) # crate the pie explode = (0, 0. 1, 0, 0, 0) pie_data = [afinidades_financeiras, afinidades_marketing, afinidades_admin, afinidades_hr, afinidades_ops] pie = Pie(pie_data, explode=explode, labels=labels, colors=cores) plt. gca(). add_artist(pie) plt. title("Distribution of Operations Budget") plt. show() ``` Espero que este exemplo tenha ajudado! ### Tradução para português de Portugal mantendo a formatação Markdown #### Título: Pergunta de Entrevista em Ciências de Dados: Medir quatro litros com dois Canecas Esta pergunta testa a sua capacidade de pensar fora do caixote. Com dois canecas, uma de 3 litros e outra de 5 litros, precisa-se medir exatamente quatro litros. Apenas disponibiliza-se os dois canecas, sem que se dispense ter um caneco adicional. Pensando fora do caixote, encontra-se uma solução inovadora. Inicialmente, pode parecer útil drenar os 3 litros para o caneco de 5 litros. Contudo, isso deixa um caneco de 3 litros vazio e um caneco de 5 litros com 3 litros e 2 litros vazios. Isso lhe dá duas latas adicionais a usar. Com esse abordagem, consegue medir pelo menos dois litros adicionais no caneco de 5 litros. Como 3 - 2 = 1, pode drenar 1 litro e deixar um caneco de 3 litros vazio. Agora, tem um espaço vazio de 1 litro no caneco de 5 litros. Pode preencher este espaço vazio com o caneco de 3 litros, que já está lotado com 2 litros. Fica então com 1 litro no caneco de 3 litros e um caneco de 5 litros lotado. Como 5 - 1 = 4, conseguiu medir exatamente 4 litros. É útil notar que muitas vezes existem várias soluções para estes tipos de perguntas. A equipe de Simplilearn propôs uma solução diferente, onde delimou o caneco de 3 litros no caneco de 5 litros. --- #### Aula - Lição 22 | Pergunta de Entrevista em Ciências de Dados | [URL de Simplilearn](https://www.youtube.com/watch?v=HyuZk5ATauI) Antes de entrar nos exercícios, vamos primeiro discutir alguns conceitos lógicos que aparecem frequentemente em entrevistas. Neste caso, possuem dois canecas, uma de 3 litros e outra de 5 litros, e o esperará que faça uma medida exata de 4 litros. Contudo, não disponibiliza-se um terceiro caneco ou alguma coisa assim – somente os dois canecas. O objetivo desta pergunta é testar a sua capacidade de pensar fora do caixote. Na presente situação, se olhar para os dois canecas, a primeira impressão é Derramar do caneco pequeno (3 litros) no caneco grande (5 litros). Se o fares, termina com um caneco de 3 litros vazio e um caneco de 5 litros com três litros e dois litros vazios. Isso lhe dá duas latas adicionais que pode usar. Continuando esse processo, consegue derramar do caneco pequeno para o caneco grande, o que lhe permite medir pelo menos dois litros adicionais no caneco de 5 litros. Assim, consegue medir exatamente 4 litros. --- #### Regressão Logística A Regressão Logística mede a relação da variável dependente (o que queremos prever) e uma ou mais variáveis independentes (nossos features). Estima probabilidades utilizando sua função subjacente, a função sigmoidal. A função sigmoidal transforma probabilidades em um valor entre 0 e 1 ou perto de zero e um. Este valor é baseado no modelo linear, probabilidades e função sigmoidal. A função sigmoidal é apenas uma das muitas funções que são utilizadas neste contexto. Fórmulas a lembrar: - Probabilidade = 1 / (1 + e^(-y)) - y = M * x + C - Função natural: ln(P) = ln(e^Probabilidade) - ln(P) / (1 - P) = M * x + C --- #### Árvore de Decisão Quando constroi-se uma árvore de decisão, considera todo o conjunto de dados como entrada e calcula a entropia da variável alvo, bem como as características preditoras. A entropia representa a confusão no data, e chamamos de "razeio de informação" quando é diminuída. Calcula o razeio de informação para todas as características e escolhe a característica com o maior Razeio de Informação como o nó raiz. Configuração da Árvore de Decisão: 1. Calcule a entropia da variável alvo. 2. Calcule o razeio de informação de todas as características. 3. Escolha a caractéristica com o maior Razeio de Informação como o nó raiz. 4. Repita os passos 1-3 para cada ramificação até que o nó de decisão de cada ramificação é finalizado. --- #### Árvores Aleatórias Uma árvore aleatória é uma coleção de árvores de decisão. Se dividir o seu dado em muitos grupos diferentes e construir uma árvore de decisão para cada um destes diferentes grupos de dado, a árvore aleatória reúne todas estas árvores. Configuração de um modelo de árvores aleatórias: 1. Selecione aleatoriamente K características de um total de M características, onde K é inferior a M. 2. Entre as K características, cálcula o nó D utilizando o ponto de legatura mais adequado. 3. Divida o nó em filhas utilizando o melhor ponto de legatura. 4. Repita os passos 2 e 3 até se finalizar as folhas nodais. 5. Construa a floresta bastando repetir os passos 1-4 para um número específico de vezes para criar um número específico de árvores. --- #### Evitando o Overfitting Para evitar o overfitting de seu modelo, simplifique o modelo, considere menos variáveis, e retire algum ruído no dados de treino. Utilize técnicas de validação cruzada como a Validação em k-folds e técnicas de regularização como Lasso para penalizar certos parâmetros das funções do modelo que causam overfitting. Lembra-se que as técnicas de validação cruzada são normalmente utilizadas antes da sua análise de dados, enquanto os seus Lasso e regulamentos são normalmente realizadas durante o processo de préparo do dado. --- #### Determinando a Bola mais Pesada Há nove bolas, e uma é mais pesada que as outras. Para encontrar a bola mais pesada, precisa-se executar pelo menos dois pesos. Alguns vezes pensa-se em dividir as bolas da forma mais inteligente possível para poder fazer o menor número de medições possível. Para encontrar a bola mais pesada precisa executar dois pesos. Divida as bolas em três grupos de três. Em seguida, sorteie aleatoriamente seis bolas dos 24 possíveis opções e pese estas. Compare o peso das seis bolas escolhidas com o peso das três bolas restantes. Se as seis bolas escolhidas são mais pesadas, pesa as três bolas restantes para encontrar a pesada entre estas três. Se as seis bolas são mais leves, sinaliza inverter o resultado. Assim, consegue encontrar a bola mais pesada usando apenas dois pesos. # Experimento de Ajuste de Pesos ## Introdução Este documento descreve um experimento simples de ajuste de pesos, seguido por uma explicação de análise univariada, bivariada e multivariada. ## Ajuste de Pesos Experimento ### Passo 1 1. Coleça uma série de bolas com pesos desconhecidos. 2. Divide as bolas em três grupos aproximadamente de igual peso. ### Passo 2 1. Coloque dois grupos de bolas em ambos os lados de uma balança equilibrada. 2. Se os pêndulos equilibrarem-se, ambos os lados são iguais, e você sabe que o peso mais pesado não está em nenhuma das bolas que pesam. 3. Dos três bolas restantes, tire duas bolas e coloque uma em cada lado. Isso pode ser complicado pois poderia querer colocar todas as três bolas num dos lados, mas tire aleatoriamente duas e coloque uma em cada lado. 4. Se os pêndulos equilibrarem-se, a bola restante (a que você não mediu) será a mais pesada. 5. Se os pêndulos não equilibrarem-se, verá qual lado tem a bola mais pesada e se ascobertas das etapas anteriores. ### Cenário B 1. Se as bolas não equilibrarem-se na fase 1, tire as três bolas que pesassem mais e reproduce a etapa 2 para descobrir qual é a bola mais pesada. ## Análise Univariada, Bivariada e Multivariada ### Análise Univariada 1. A análise univariada se refere a dados que contêm apenas uma variável. 2. O objetivo da análise univariada é descrever os dados e encontrar padrões que existem dentro deles. 3. Como exemplo, usaremos a altura dos alunos como exemplo. Você está limitado em relação o que pode fazer com esses dados, portanto, você pode identificar diferentes padrões e conclusões a partir desses padrões. 4. Descreve os dados usando médias, a mediana, o modal, a dispersão, o intervalo, o mínimo e o máximo. 5. Não há correlação, e isso é tudo o que você pode dar e prever no meio do caminho. ### Análise Bivariada 1. A análise bivariada envolve duas variáveis diferentes. 2. A análise deste tipo de dados se refere a causas e relações. 3. Um exemplo dessa é a relação entre a temperatura e a venda de gelados. 4. No verão, quando é quente, mais pessoas comprarão gelados, e muito poucas comprarão gelados no inverno, quando é muito frio. 5. É fácil ver a correlação nos dados. A temperatura e a venda de gelados são diretamente proporcionais uns aos outros. ### Análise Multivariada 1. A análise multivariada se refere a dados que contêm três ou mais variáveis. 2. Ela é semelhante à análise bivariada, mas contém mais de uma variável independente. 3. Um exemplo disso é os dados de preços de casas. As patacon terão estudadas pelas conclusões com base em média, mediana, modo, dispersão, intervalo, mínima e máxima. 4. Você pode descrever os dados e, então, usar essa descrição para orbitar o preço. ## Métodos de Seleção de Características 1. Há dois principais métodos para seleção de características: os métodos de filtro e os métodos embalados. 2. Os métodos de filtro servem para limpar os dados entrantes, para que sejam mais limpos e mais representativos do que estamos tentando prever. 3. Os métodos em balusa são laboriosos e exigem computador de alto desempenho para análise de grandes volumes de dados. ## Exercício de Programação 1. Escreva um programa que imprima os números de 1 a 50, mas para multiplos de três, imprima "Fizz" em vez do número, e para multiplos de cinco, imprima "Buzz. " Para números que são multiplos de três e cinco, imprima "FizzBuzz. " ## Lidando com valores de dados faltantes 1. Quando se trata de um conjunto de dados que contém variáveis com mais de 30% de valores faltantes, você pode remover os valores de dados faltantes ou substituir os valores faltantes pela média ou a média dos outros dados. ## Calculando a Distância Euclidiana em Python 1. Distância Euclidiana é a linha do triângulo, e para calcular, você pode fazer a diferença de cada uma destas pontos, quadrár-las, e então tirar a raiz de tudo. ## Resolvendo o Ángulo entre as mãos da hora e minuto de uma relógio 1. Para encontrar o ângulo entre as mãos da hora e da minuta de um relógio quando o tempo é 10: 30: - Para o minuto: - Elevamos a distância da ponte dos dois extremos de uma das mãos da hora e da minuta até o centro do relógio dividida pela distância entre o centro do relógio e os dois extremos opostos da mesma mão do relógio. - Para a hora: - Subtrai-se lhe 3: 00 das 12 atingidas por uma das mãos horárias e elevamos a distância da ponte dos dois extremos de uma das mãos da hora e da minuta até o centro do relógio dividida pela distância entre o centro do relógio e os dois extremos opostos da mesma mão do relógio. # Dimensão Redução A dimensão redução ajuda aforrar informação de maneira concisa, o que é benefício para a compressão de dados, redução do espaço de armazenamento e redução do tempo de computação. Isso porque: 1. Menores dimensões resultam em menos processamento. 2. Elimina características redundantes. Por exemplo, armazenar um valor em duas unidades diferentes (por exemplo, metros e polegadas) é desnecessário e pode levar a confusões, especialmente em análise de texto onde analisar uma série de documentos pode resultar em milhões de diferentes características. 3. Palavras relacionadas dão origem a mais características, aumentando a complexidade da análise. Por exemplo, a junção de duas palavras ("você" e "é") resulta em quase 4, 8 milhões de características diferentes, e métodos precisam ser encontrados para reduzi-los. ## Calculando Valores Igan e Vetores de uma Matriz 3x3 No contexto de Igan, aqui está uma orientação simplificada sobre o cálculo de valores Igan (λ) e vetores para uma Matriz 3x3: 1. Use o símbolo Lambda (geralmente Λ) para os valores que estão sendo calculados. Você pode usar outros símbolos se preferir, mas garanta que esteja consistente na equação. 2. Calcule a equação característica para a matriz dada. Para uma Matriz 3x3, a equação se assemelhará ao seguinte: ``` | -2 - Λ - 4 | | 2 | - 2 | 1 - Λ | 0 | | 2 - 2 | * | 1 | 2 | 4 - Λ | | 2 2 5 - Λ | * | 5 | 2 2 | ``` Após a multiplicação das matrizes, siga o determinante: ``` 0 = (-2 - Λ - 4)(4 - 2Λ + 2Λ^2 - 5Λ^3) + (2)(-2 + 2Λ + 2Λ^2 - 5Λ^3)(2) + (2)(2 + 5Λ - Λ^2)(1 - Λ) ``` 3. Amplie o determinante para obter a equação algébrica: ``` Λ^3 - 4 Λ^2 - 27 Λ + 90 = 0 ``` 4. Agora temos uma equação algébrica agradável construída a partir dos vetores Igan: ``` Λ^3 - 4 Λ^2 - 27 Λ + 90 = 0 ``` Pode pressionar o botão de pausa ou enviar uma nota sobre os vetores ou este tópico se tiver mais questões. ## Manutenção de Modelos Desplegados 1. Monitore a performance e precisão do modelo ao longo do tempo para garantir que Ele permaneça preciso e atende às suas necessidades. 2. Calcule as métricas de avaliação do modelo atual para determinar se é necessário um novo algoritmo. 3. Compare os novos modelos um com o outro para selecionar o modelo mais performático. O modelo mais performático será reconstruído no estado atual dos dados. ## Sistemas de Recomendação Os sistemas de recomendação são usados amplamente no marketing para prever a classificação de um usuário para um produto. Eles podem ser divididos em duas áreas distintas: 1. Filtragem colaborativa: exemplos incluem o Last. FM, que recomenda músicas que normalmente são tocadas por usuários com interesses semelhantes. 2. Filtragem baseada no conteúdo: exemplos incluem o Pandora, que utiliza as propriedades de uma música para recomendar música com propriedades semelhantes. ## MSE e RMSE no Modelo de Regressão Linear O erro médio quadrático (MSE) e raiz média quadrática (RMSE) são as medidas de precisão mais comuns para um modelo de regressão linear. As fórmulas para MSE e RMSE são fornecidas abaixo: ``` RMSE = sqrt((1/n) * sum((y_pred - y_actual)^2)) MSE = (1/n) * sum((y_pred - y_actual)^2) ``` onde `n` é o número total de pontos de dado, `y_pred` é a previsão e `y_actual` é o valor real. ## Resolvendo Riddles 1. Se chove com probabilidade de 6 no sábado e com probabilidade de 0. 2 no domingo, qual é a probabilidade de chover esse fim de semana? Para resolver isso, precisamos determinar a probabilidade de não chover. Use "não chover" como o complemento de "chover" (i. e. , "não chover" = 1 - "chover"). A probabilidade de não chover no sábado é 1 - 6 = 1 - 0. 6 = 0. 4, e a probabilidade de não chover no domingo é 1 - 0. 2 = 0. 8. A probabilidade de chover este fim de semana é a probabilidade de chover no sábado e no domingo, o que é 0. 6 * 0. 2 = 0. 12 ou 12%. 2. Como selecionar k para K-Means? O método da enfronta é comumente usado para selecionar k para K-Means. Aqui está uma explicação simplificada: 1. Corra o clusterização K-Means no conjunto de dados, onde `k` é o número de clusters. 2. Calcule a soma dos quadrados de distância (WSS) entre cada membro do cluster e seu centro de gravedade. 3. Inicie a iteração, com um valor geralmente maior que 1, como 2, 3, ou 4. Procure o ponto do elbow na gráfica WSS vs número de clusters onde o valor de WSS diminui e então aplanar se torna. Isso indica o número adequado de clusters para os dados. ## Importância do Valor P No contexto de uma análise estatística, o valor P indica a probabilidade de observações tão extremas que a estatística de teste sob a hipótese nula. Um valor P igual ou menor que 0. 05 indica evidências fortes contra a hipótese nula. Um valor P maior que 0. 05 sugere evidências fracas ou ausentes contra a hipótese nula. Aproveitando-se comumente de 0. 05, um valor P menor que 0. 05 indica significância estadística, e um valor P maior que 0. 05 não o é. ## Tratamento de Valores Anómalos Os valores anómalos podem ser tratados das seguintes maneiras: 1. Use a técnica de eliminação de valores anómalos se estes forem valores de lixo ou se os pontos de dados estiverem agrupados em uma faixa específica, um valor extremo de um ponto de dados pode ser removido. 2. Use diferentes modelos se os dados forem não-lineares ou se forem detectados como valores anómalos por modelos lineares. 3. Normalize os dados para trazer valores extremos para o mesmo intervalo. 4. Use algoritmos menos afetados por valores anómalos, como o Random Forest. No entanto, use cuidado e revisione se os valores anómalos devem ser excluídos ou não, pois os valores anómalos podem fornecer informações importantes. ## Dados do Tempo Série Estacionários Uma série de tempo é considerada estacionária se suas propriedades estatísticas, como media, autocorrelação e variância, não mudam ao longo do tempo. Série de tempo não-estacionárias podem ser convertidas em séries de tempo estacionárias através da diferença das séries ou por outros métodos, como ajuste de temporada. # Série Temporal Estacionária versus Não Estacionária Esta discussão aborda os conceitos de série temporal estacionária e não estacionária, ilustrados com exemplos gráficos. ## Série Temporal Estacionária Uma série temporal é estacionária quando a variância e a média da série são constantes ao longo do tempo. Um exemplo de série temporal estacionária é mostrado abaixo, onde a variância é constante, e Y passa por os mesmos valores durante um longo período de tempo. ``` É estacionária quando a variância e a média da série é constante ao longo do tempo. Temos: **Y** = variável observada **x** = fator de tempo Como você pode ver, Y passa por os mesmos valores sempre. Não está mudando durante um longo período de tempo. Aqui há um exemplo gráfico: Y = [. . . , const1, const1, const1, . . . ] Pois Y mantém os mesmos valores ao longo do tempo, é chamado de estacionário. ## Série Temporal Não Estacionária Em uma série temporal não estacionária, a variância mudança ao longo do tempo. Um exemplo é mostrado abaixo: Y = [. . . , bigconst, bigconst, . . . , bigconst, smallconst, smallconst, smallconst, . . . ] Como você pode ver, as ondas se tornam mais grandes e mais grandes, o que indica que a variância está mudando ao longo do tempo. O valor const permanece constante, porém, de forma que possamos considerá-lo como uma onda em cima de outra. Uma série temporal não estacionária também inclui tendências em que a onda está crescendo em tamanho (ou diminuindo), indo para cima (ou para baixo). ## Calculando a Acurácia usando Confusion Matrix Para calcular a acurácia usando uma matriz de confusão, você precisa saber o total dos dados, os valores preditos e os valores reais. Você tem: * Predicted Positives (p): o número de predições positivas feitas pelo modelo. * Actual Positives (P): o número de positivos reais no conjunto de dados. A acurácia pode ser calculada com a fórmula: ``` Acurácia = (True Positives + True Negatives) / Total Observations ``` Aqui tem um exemplo de cálculo: * Total Observations: 650 * Predicted Positives (p): 262 * Actual Positives (P): 262 + 15 (False Positives) * Predicted Negatives (n): Total Observations - Predicted Positives * Actual Negatives (N): Total Observations - Actual Positives A acurácia calculada é: ``` Acurácia = (262 + Actual Negatives) / Total Observations = 93% ``` ## Calculando a Precisão e Taxa de Acertos A precisão e a Taxa de Acertos também podem ser calculados: * Precision = True Positives / (True Positives + False Positives) * Recall = True Positives / (Total Positives + False Negatives) Usando o exemplo anterior, temos: * Precision: 262 / 277 = 94% * Recall: 262 / 280 = 90% Em um dominio específico, a escolha de um valor positivo pode mudar a interpretação do valor predito. Por exemplo, no domínio da doença do câncer, um false negative (não predição de um positivo real) é um grande preocupação, enquanto que num domínio do clima, há tolerância para predições falsas. ## Brain Teaser Um armário contém 12 calções vermelhos, 16 calções azuis, e 20 calções brancos. Para garantir uma par de calças similares, é necessário tirar **4** calções. ## Engergum do Sistema Recomendado Engergum de recomendação são construídos usando filtragem colaborativa. Esta algoritma faz previsões sobre o que um usuário pode encontrar interessante baseado nas preferências de muitos outros usuários. Nesta algoritma, as características dos itens são desconhecidas, mas pode considerar usuários semelhantes. Por exemplo, se muitas pessoas comprarem um novo celular e também comprarem temperado de vidro com ele, a próxima vez que uma pessoa compra um celular, ela será recomendada para comprar temperado de vidro ao mesmo tempo. Isso é um exemplo da filtragem colaborativa de recomendação. ## Consulta SQL Para listar todos pedidos com informações do cliente, você pode escrever uma consulta SQL básica. Aqui está um exemplo: ``` SELECT number_de_pedido, valor_total, primeiro_nome, último nome, Cidade, País FROM pedido JOIN clientes ON pedido. id_cliente = clientes. id ``` ## Modelo de Detecção de Câncer de Acurácia Em um conjunto de dados desequilibrado, a acurácia não deve ser usada como medida de desempenho pois é importante focar nos restantes 4% que foram diagnosticados de forma errônea. ## Algoritmo de Aprendizagem de Máquina para Valores Faltantes Para preencher valores faltantes de variáveis categoricais e contínuas, você pode usar o algoritmo de K vizinhos mais próximos (KNN). Ele pode calcular o vizinho mais próximo e, se não tiver o valor, simplesmente calcula o vizinho mais próximo com base em todos os outros recursos. ## Enigma Um caixão contém 12 calções vermelhos, 16 calções azuis, e 20 calções brancos. Para garantir uma par de calças similares, é necessário tirar **4** calculos. ## Produtos Recomendados Os produtos recomendados para os clientes que compraram este também são os resultados do algoritmo da Amazon, que são baseados na filtragem colaborativa. A filtragem colaborativa explora o comportamento de outros usuários em sua história de compras em termos de avaliações, seleções, etc. Ela faz previsões sobre o que uma pessoa pode encontrar interessante baseada na preferência de muitos outros usuários. # Análise de Segmentos de Usuários num Estudo: Um guia para encontrar usuários semelhantes usando Markdown Este documento fornece uma guia comprehensiva sobre como identificar grupos de usuários importanceis e agrupar-los juntos com base nos seus semelhantes usando vários algoritmos. ## Introdução Neste estudo, nosso objetivo é identificar grupos de usuários importantes e agrupar-los juntos com base nos seus semelhantes. Identificamos quatro tipos individuais importantes cruciais para nossa análise. ``` juntos em grupos (bufetas), portanto o algoritmo de regressão logística seria o modelo mais apropriado após estudar o comportamento da população. O objetivo seria encontrar todos os usuários que são mais semelhantes a cada tipo individual. ``` ## Algoritmos de Agrupamento de Usuários Várias opções de algoritmos podem ser empregues para agrupamento de usuários com base nos semelhantes. Aqui, focamos em quatro opções de algoritmos comuns: * K-means de agrupamento * Regressão linear * Razões de associação * Árvores de decisiones ### K-means de agrupamento Quando for dada uma determinada K, o K-means de agrupamento é uma solução ideais para o problema, já que o seu objetivo é dividir a população em K grupos, cada um com usuários com semelhantes características. ``` * Tendo sido-lhe fornecida uma das valores especificamente o valor K, o K-means de agrupamento seria ideal para este problema específico. ``` ### Razões de associação As razões de associação são famosas pela descoberta de novos padrões e relacionamentos interessantes entre determinados itens num dataset muito grande. Vamos ver um exemplo de uma regra encontrada neste dataset: ``` * banana ♦ bananeira está associado com ameixa e maçã ♦ maçã está associado com ameixa ``` Neste exemplo, a Regra de associação indica que se um usuário compra bananas, eles geralmente têm pêras ou ameixas em seu saco, e os usuários que compram maçãs geralmente têm pêras ou ameixas em seu saco también. ### Árvores de decisão As Árvore sobressalem como Ferramenta para extração de informações, que permite o desempenho de tarefas ambas classificação ou regressão. Especialmente útil no processo de modelagem de decisões numa forma mais simples. ``` * Fomos abordar Árvores de decisão, mas não são a melhor escolha para este problema específico. ``` ## Análise de Impacto da Promoção nos Decisões de Compra Para análise do impacto de oferecer uma promoção aos visitantes na sua decisão de compra, recomendamos o uso de um teste de Anova única. Este análise irá nos ajudar a determinar se oferecer uma promoção aos visitantes tem algum impacto significativo no seu comportamento de compra. ``` * A sua organização possui um site onde os visitantes recebem de forma aleatória uma das duas promoções. Também é possível que os usuários do site não recebam nenhuma promoção. Você foi solicitado a determinar se oferecer uma promoção aos usuários do seu site tem algum impacto na sua decisão de compra. ``` ## Conclusão Neste guia, exploramos algumas opções de algoritmos práticas para encontrar usuários semelhantes e analisar o impacto de uma promoção numa decisão de compra. Seguindo melhores práticas de Markdown, este documento tem como objetivo fornecer conteúdo claro, conciso e bem-estruturado. ---