# Machine Learning: Introdução e Básicos | Simplilearn: 09-01-2025 13: 47: 43 ## Sumário de Conteúdos 1. [Introdução ao Machine Learning](#introduction) 2. [Lista de Videos](#videos) 3. [Transcrições](#transcriptions) ### <a name="introduction"></a> Introdução ao Machine Learning Neste tutorial, exploraremos os fundamentos do machine learning. O machine learning é um subsegmento da inteligência artificial que permite que a máquina aprenda a partir de dados anteriores e tome decisões ou previsões sem ser explicitamente programada. Vamos aprender sobre os diferentes tipos de machine learning, incluindo Supervisionado, Não Supervisionado e Aprendizagem por Reforços. #### Exemplo de Machine Learning: Preferência de Música de Paulo Considere um exemplo com Paulo, que adora escutar músicas novas. Ele preferi as músicas com tempos rápidos e com uma intensidade soar. Aqui, utilizaremos o tempo e intensidade como características para prever se Paulo irá gostar de uma nova música ou não. #### Classificação de Música A ! [Diagrama: Preferência de Música de Paulo](data: image/png; base64,  ņ ) Com base nos dados, podemos classificar a Música A como uma música que Paulo gostará. #### Classificação de Música B ! [Diagrama: Preferência de Música de Paulo](data: image/png; base64,  ņ ) Com base nos dados, poderemos classificar a Música B como uma música que Paulo não gostará. # Técnicas de Aprendizado de Máquina: Aprendizado Supervisionado, Aprendizado Não Supervisionado, e Aprendizado por Rewards ## Aprendizado Não Supervisionado * Temos um modelo treinado que identifica a imagem de um gato. O **Aprendizado Não Supervisionado** utiliza **dados não apresentados** para treinar máquinas. Dados não apresentados significa que não há uma variável de saída fixa. O modelo aprende da informação e descobre padrões e características na informação, retornando o resultado. Aqui está um exemplo de uma técnica de aprendizado não supervisionado que utiliza as imagens de veículos para classificar se trata-se de ônibus ou caminhão. Da forma que o modelo aprende é ao identificar os percursos de um veículo, como a extensão e o comprimento do veículo, as capotas frontal e posterior, teto, capota e tipos de **rodas** utilizadas, entre outros. Baseando-se nessas características, o modelo classifica se o veículo é um ônibus ou um caminhão. ## Aprendizado por Rewards * O Aprendizado por Rewards treina uma máquina para tomar acções adequadas e maximizar recompensa em uma situação específica. Ele utiliza um agente e um ambiente para produzir acções e recompensas. O agente possui um estado de partida e um estado final, mas há diferentes caminhos para alcançar o estado final, como um labirinto. Nesta técnica de aprendizado, não existe uma variável alvo definida. Uma aplicação do aprendizado por recompensas é treinar uma máquina que possa identificar a forma de um objeto com uma lista de objetos diferentes, como quadrado, triângulo, retângulo, ou círculo. No exemplo mostrado, o modelo tenta previsualizar a forma do objeto, que é um quadrado. ## Aprendizado Supervisionado * O Aprendizado Supervisionado associa entradas marcadas com saídas conhecidas, o que significa que já conhecemos a variável de saída. Alguns dos algoritmos de aprendizado supervisionado mais utilizados são a **regressão linear**, regressão logística, máquinas suport vectors, vizinhos mais perto (KNN), árvore de decisão, floresta aleatória, e aumento de gradiente. ## Algoritmos de Aprendizado Não Supervisionado * Alguns exemplos de algoritmos de aprendizado não supervisionado são o **agrupamento K-Means**, agrupamento hierárquico, DB scan, e análise de componentes principais. Escolher o algoritmo correto depende do tipo de problema que se está a tentar a resolver. ## Aplicações dos Técnicas de Aprendizado de Máquina - O Aprendizado Supervisionado é geralmente utilizado para classificação e problema de regressão. Veremos exemplos na Destaque seguinte. - O Aprendizado Não Supervisionado é utilizado para agrupamento e problema de associação. - O Aprendizado por Rewards é baseado em recompensas, para cada tarefa ou para cada passo concluído, haverá uma recompensa conferida ao agente. Se a tarefa não é concluída corretamente, haverá algum Acordo de desconto. ## Exemplos de Algoritmos de Aprendizado Supervisionado Aqui está alguns exemplos de algoritmos de aprendizado supervisionado: * Regressão Linear * Regressão Logística * Máquinas de Suporte Vectors (SVM) * Vizinho mais próximo (KNN) * árvore de Decisão * Floresta Aleatória * Aumento de Gradiente ## Exemplos de Algoritmos de Aprendizado Não Supervisionado Aqui estão alguns exemplos de algoritmos de aprendizado não supervisionado: * Agrupamento k-Means * Agrupamento Hierarquico * DB scan * Análise de Componentes Principais (PCA) Escolher o algoritmo correto depende do tipo de problema que se está a tentar a resolver. ## Algoritmos de Aprendizado por Rewards Aqui estão alguns exemplos de algoritmos de aprendizado por recompensas: * Aprendizagem Q * Monte Carlo * SARSA * Rede Profunda Q (DQN) ## Processo de Treino de Cada Um Destaesse Métodos de Aprendizado * Os métodos de Aprendizado Supervisionado precisam de supervisão externa para treinar modelos de Aprendizagem de Máquina, por isso o nome de Aprendizado Supervisionado. Precisam de orientação e informações adicionais para retornar o resultado. * As técnicas de Aprendizado Não Supervisionado não precisam de supervisão para treinar modelos de Aprendizagem de Máquina. Elas aprendem por conta própria e voltam o resultado. * Os métodos de Aprendizado por Rewards não precisam de supervisão para treinar modelos de Aprendizagem de Máquina. ## Tipos de Problemas Resolvidos Usando Estes Três Tipos de Técnicas de Aprendizagem de Máquina - O Aprendizado Supervisionado é geralmente utilizado para classificação e problema de regressão. - O Aprendizado Não Supervisionado é utilizado para agrupamento e problema de associação. - O Aprendizado por Rewards é baseado em recompensas, para cada tarefa ou para cada passo concluído, haverá uma recompensa conferida pelo agente. Se a tarefa não é concluída corretamente, haverá um Acordo de desconto. ## Aplicações dos Técnicas de Aprendizado de Máquina Supervisionada, Não Supervisionada, e por Rewards ### Aplicações do Aprendizado Supervisionado Os métodos de Aprendizado Supervisionado são utilizados para resolver problemas de classificação e regressão. Por exemplo: * Pode prever o tempo do dia baseado na umidade, praga, etc. * Predizer a morte de uma pessoa com base em determinados sintomas em um hospital. * Predizer o preço do estoque em banca de dados financeira. ### Aplicações do Aprendizado Não Supervisionado Os métodos de Aprendizado Não Supervisionado são utilizados para resolver problemas de agrupamento e associação. Por exemplo: * Agrupamento de clientes com base em determinadas váriaveis, como edade, sexo, depois de aplicar análise de fatos na base de dados. * Agrupamento de mentes com base em determinados sintomas. * Análise de dados de Vendas. ### Aplicações do Aprendizado por Rewards Os métodos de Aprendizado por Rewards são utilizados principalmente para jogos de computador, robótica e sistemas encadeados. # Explicação da Regressão Linear Simples **Características importantes a considerar: ** 1. Identificação de predictores significativos da variável de resposta 2. Garantia da significância da linha de regressão para previsões precisas **Calculando a Equação da Regressão Linear: ** A forma mais simples da equação de regressão linear com uma variável dependente (y) e uma independente (x) é representada por `y = m * x + c`. Nosso modelo, traçamos dois pontos (x1, y1) e (x2, y2), onde `y` é a variável dependente e `x` é a variável independente. A pendente `m` é a diferença entre `y2 - y1` dividida por `x2 - x1`. O coeficiente `c` é onde a linha cruza o eixo longestudos. **Exemplo: ** Anteriormente, utilizamos um exemplo de regressão linear para traçar a produtividade de cultivo com base no chuva. Temos a chuva (variável independente) e a produtividade de cultivo (variável dependente). Desenhamos uma linha no meio dos dados, e o ponto vermelho no eixo y representa a produtividade esperada de cultivo para um valor de chuva determinado (representado pelo ponto verde). **Matemática em Bastidores da Linha de Regressão: ** Embora não seja necessário entender a completa formaulas e matemática por trás da linha de regressão, é útil ter uma ideia dos termos em uso. A matemática para calcular a linha de regressão envolve somar, subtrair, multiplicar e encontrar a média dos pontos de dados. **Regressão Linear Múltipla: ** A regressão linear múltipla envolve ter vários inputs, onde cada variável tem sua própria pendente (`m`). A implementação da regressão linear em Python pode ajudar a prever o lucro considerando fatores como custos administrativos, custos de marketing, etc. Aqui está um exemplo de implementação da regressão linear múltipla em Python utilizando bibliotecas populares como NumPy, Pandas, Matplotlib, Seaborn, e Mayavi da AmberScientific: ```python # Importe as bibliotecas necessárias import numpy as np import pandas as pd import matplotlib. pyplot as plt import seaborn as sns from mayavi. mlab import * # Importe os dados, limpe e analise os dados # Ajuste o modelo de regressão linear # Visualize os resultados e avalie a validade do modelo ``` # Análise de Dados: Notebook ## Preparação ### Configuração Para executar este notebook, certifique-se de ter as seguintes bibliotecas instaladas: - pandas - seaborn - sklearn ### Importação de Bibliotecas ```python import pandas as pd import seaborn as sns from sklearn. model_selection import train_test_split from sklearn. linear_model import LinearRegression ``` ### Carregamento de Dados Altere o caminho do ficheiro para o local do seu conjunto de dados. O ficheiro deve ser um ficheiro CSV com o formato: `gastos em R&D, administração, gastos em marketing, estado, lucro`. ```python # Carregar o conjunto de dados empresas = pd. read_csv('caminho/para/o/seu/1000_empresas. csv') # Definir os dados x = empresas[['gastos em R&D', 'administração', 'gastos em marketing', 'estado']] y = empresas['lucro'] ``` ### Preprocessamento de Dados Codificar variáveis categóricas e criar uma codificação um-a-um para estado: ```python from sklearn. preprocessing import LabelEncoder, OneHotEncoder # Criar codificadores de rótulos codificador_de_rótulos = LabelEncoder() codificador_um_a_um = OneHotEncoder(sparse=False) # Codificar coluna estado x['estado'] = codificador_de_rótulos. fit_transform(x['estado']) # Codificar codificação um-a-um codificada coluna estado x = codificador_um_a_um. fit_transform(x[['estado']]) # Remover a coluna original estado x = x[: , 1: ] ``` ## Visualização de Dados ```python # Carregar os dados para visualização empresas_vis = empresas[['gastos em R&D', 'administração', 'gastos em marketing', 'estado', 'lucro']] # Criar visualização usando seaborn visualização = sns. PairGrid(empresas_vis, hue='estado') visualização. map(plt. scatter) plt. show() ``` ## Modelo de Regressão Linear ```python # 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. 2, random_state=0) # Criar modelo de regressão linear lr_modelo = LinearRegression() # Treinar o modelo de regressão linear lr_modelo. fit(x_treino, y_treino) ``` Experimente com a predição de lucros e interprete os resultados baseados nas características no seu conjunto de dados. Bem-vindo ao tutorial do algoritmo K-próximos (KNN) no Machine Learning. Meu nome é Richard Kirchner e eu sou da equipe de Simplilearn. Hoje, vamos cobrir o algoritmo K-próximos (KNN), também conhecido como K-em-N. Este algoritmo é um fundamento básico para várias outras coisas e a lógica por trás dele é fácil de entender e incorporar em outras formas de Machine Learning. Hoje, você vai aprender: por que precisamos do KNN, o que é o KNN, como escolher o fator K, quando usar o algoritmo KNN e então nossa aplicação preferida, prever se uma pessoa tem diabetes ou não. Isso é um dado comum e popular para testar os modelos e aprender a usar os diferentes modelos e a Machine Learning. --- Machine Learning models fazem previsões a partir dos dados disponíveis passados. Por exemplo, vamos considerar uma criança olhando para um gato preto cruzar sua trilha. Seu treinamento em Machine Learning tem permissão para diferenciar um gato de um cachorro baseado em suas características: gatos têm garras afiadas usadas para subir em objetos menores, tem orejas curtas, miom, não gostam de brincar muito em redor das pessoas. Enquanto isso, cachorros têm garras não afiadas, grandes orejas, latem e gostam de correr em torno das pessoas. Você pode distinguir facilmente entre gatos e cachorros analisando a agudeza das garras e o comprimento das orejas. Agora, veja se é possível para uma criança distinguir um gato ou um cachorro quando ele não é fácil. Vamos tentar: se uma criança é apresentada a um animalita e precisar identificar se é um gato ou um cachorro, ele terá que fazer a seguinte pergunta: Gostará de falar um pouco sobre as garras do animalita? Elas são curtas ou afiadas? Qual a resposta que um menino ou uma menina iria dizer para você? (Nota: Isso ilustra a base de classificação por semelhança de características em que o KNN pode ser utilizado). --- **O que é KNN? ** K-próximos é um algoritmo simples e rápido usado principalmente para classificação, isto é, determinar se uma entrada é de um tipo específico ou não. KNN armazena todos os dados disponíveis e classifica novos dados com base em uma medida de semelhança. Veja: podemos considerar o gato como um caso em KNN, o KNN irá classificar um novo caso de gato (nova imagem) baseado em quais dados estão mais semelhantes. --- **Escolhendo o valor do K: ** Escolhendo o valor adequado para K é uma etapa de tuning de parâmetros e é importante para um bom desempenho. Por exemplo, se definirmos K=3 para um novo ponto desconhecido, poderemos classificá-lo como um cachorro ou não? Vamos analisar aos três pontos mais próximos. Em outras palavras, definindo K=3, você estará usando os três dados mais próximos do ponto desconhecido para determinar a sua classe. Agora, se definirmos K=7, isso classificaria o mesmo ponto desconhecido como um gato ou não? Isto dependerá das outras informações dos dados. Isso é conhecido como etapa de tuning de parâmetros. Se definirmos K=3, nós poderíamos ter uma maior chance de introduzir uma forte distorção. Isso significa que, definindo K muito pequeno, pod propensas a um maior erro de classificação. Isso significa que, se deixamos K muito baixo, pod pensar que há uma maior probabilidade de classificar um gato como um cachorro, e se deixarmos K muito alto, pod pensar que há uma maior probabilidade de classificar um cachorro como um gato. É importante estabelecer o valor de K para minimizar as taxas de erro e garantir um bom desempenho no KNN. # Explicação do Algoritmo KNN e Caso de Uso em Python (Português Europeu) ## Introdução Este documento fornece uma explicação do algoritmo KNN (k-Vizinhos Mais Proximos), de suas aplicações e um caso de uso em Python. ## Resumo do Algoritmo KNN O algoritmo k-Vizinhos Mais Proximos (KNN) é um algoritmo de aprendizagem não paramétrico, baseado em casos, de aprendizagem supervisionada. A seguir, uma explicação passo a passo: 1. Escolha um inteiro positivo `K`. 2. Dado um novo exemplo, selecione os `K` entradas na nossa base de dados que são mais próximas do novo exemplo. 3. Encontre a classificação mais comum destas entradas. Esta é a classificação que damos ao novo exemplo. ## Quando Utilizar o Algoritmo KNN 1. **Dados não etiquetados**: Pode usar o KNN quando os dados são não etiquetados. Em outras palavras, quando não temos uma etiqueta na nossa dívida. 2. **Pequenas bases de dados**: O KNN funciona bem com pequenas bases de dados a médio-pequenas. Não é ideal para bases de dados grandes devido a sua natureza computacionalmente cara. 3. **Nos casos em que as instâncias próximas influenciam**: o KNN é um aprendizador descansado. Não aprende uma função discriminativa a partir da base de treino. Em vez disso, depende de instâncias semelhantes serem próximas uns dos outros. ## Fluxo de Trabalho do Algoritmo KNN Consideremos um conjunto de dados com duas variáveis, `altura` e `peso`, e cada ponto é classificado como `normal` ou `subpeso`. Classificamos um novo ponto com base na distância Euclidiana entre ele e os pontos existentes. 1. Calcule a distância Euclidiana entre o novo ponto e todos os pontos existentes usando a fórmula: ``` D = √((x1 - a)² + (y1 - b)²) ``` onde (x1, y1) é o novo ponto e (a, b) é um ponto existente. 2. Encontre os `K` vizinhos mais próximos com base nas distâncias calculadas. 3. Classificar o novo ponto com base na maioria de sua classe dos `K` vizinhos mais próximos. ## Caso de Uso: Predição de Diabetes em Python (Português Europeu) Neste exemplo, utilizamos o algoritmo KNN para prever se uma pessoa será diagnosticada com diabetes ou não, baseado num conjunto de dados de 768 pessoas. 1. **Importar bibliotecas necessárias**: Importamos Pandas, NumPy, e várias módules da biblioteca Scikit-learn para processamento de dados, treino do modelo e avaliação do modelo. 2. **Carregar os dados**: Carregamos os dados usando a função `read_csv()` de Pandas. 3. **Preprocessamento**: Ajuste dos dados para eliminar o falym causado por números grandes, especialmente para variáveis como `número de gravidezes`. 4. **Split em Treino e Validação**: Divide o dados em conjuntos de treino e teste. 5. **Classificador KNN**: Usamos o classificador KNN da biblioteca Scikit-learn para classificar os dados com base nos vizinhos mais próximos. 6. **Avaliação do Modelo**: Avalie o modelo usando várias métricas, como a matriz de confusão, a scores F1 e a precisão. ## Conclusão O algoritmo KNN é um método simples e eficaz para classificar pontos de dados com base em sua proximidade a exemplos etiquetados. É particularmente útil para pequenas a médias bases de dados onde os objetivos são a predição e a exploração. # Tutorial de Aprendizado de Máquina ## Introdução Este tutorial fornecerá uma visão geral do aprendizado de máquina, seus tipos e algoritmos mais populares. Se você está novo no aprendizado de máquina, este tutorial também cobrirá os conceitos básicos. Vamos começar analisando uma vida sem aprendizado de máquina e, em seguida, passando a vida com aprendizado de máquina. ### Uma Vida Sem Aprendizado de Máquina Antes da aparência do aprendizado de máquina, muitas tarefas eram feitas manualmente, o que era demorado e suscetível a erros. Por exemplo, um funcionário da gabinete de crédito de uma banca avaliaria manualmente cada solicitação de crédito, resultando em decisões inconsistentes e tempos de processamento elevados. ### Uma Vida Com Aprendizado de Máquina Com a chegada do aprendizado de máquina, tarefas podem ser automatizadas, fazendo com que elas sejam mais rápidas e precisas. Por exemplo, uma banca pode usar algoritmos do aprendizado de máquina para prever a probabilidade de um solicitante de crédito não cumprir o compromisso, ajudando-os a tomar decisões mais rápidas e precisas. ### O Que é o Aprendizado de Máquina? O aprendizado de máquina é uma substituição da inteligência artificial que permite que os sistemas aprendam automaticamente e melhorem a partir da experiência sem ser explicitamente programado. É sobre criar modelos que possam aprender padrões nos dados e fazer previsões ou decisões baseadas naquilo que aprenderam. ### Tipos de Aprendizado de Máquina Há três tipos principais de aprendizado de máquina: 1. **Aprendizado Supervisionado**: Neste tipo, o modelo é treinado em um conjunto de dados etiquetados. O objetivo é aprender uma função de mapeamento de entrada para saída baseado em exemplos. Os exemplos incluem problemas de regressão e classificação. 2. **Aprendizado Sem Supervisão**: Neste tipo, o modelo é treinado em um conjunto de dados não etiquetados. O objetivo é encontrar padrões ou estrutura nos dados sem nenhuma etiqueta predefinida. Os exemplos incluem agrupamento e redução de dimensionalidade. 3. **Aprendizado por Rewardes ou Marcadores**: Neste tipo, o modelo aprende a fazer decisões ao interagir com um ambiente e recebendo recompensas ou punições. O objetivo é aprender uma política que maximize a recompensa acumulada ao longo do tempo. ### Escolhendo a Solução de Aprendizado de Máquina Correta Quando escolher uma solução de aprendizado de máquina, é importante considerar os seguintes fatores: - **Disponibilidade de Dados**: A quantidade e a qualidade dos dados disponíveis influenciam a escolha do algoritmo. Por exemplo, o aprendizado profundo requer grandes quantidades de dados. - **Tipo de Problema**: O tipo de problema que você está tentando resolver (classificação, regressão, agrupamento, etc. ) também influencia a escolha do algoritmo. - **Recursos**: Os recursos disponíveis (CPU, GPU, memória) também afetam a escolha do algoritmo. Alguns algoritmos são computacionalmente custosos e exigem hardware potente. ### Algoritmos de Aprendizado de Máquina Mais Populares Aqui seguem alguns algoritmos de aprendizado de máquina mais populares: - **Regressão Linear**: Usado para prever uma variável saída contínua. - **Regressão Logística**: Usado para problemas de classificação binária. - **Árvores de Decisão**: Usado tanto para problemas de classificação como para regressión. São fáceis de entender e interpretar. - **Floresta Aleatória**: Um método de recolhimento que combina várias árvores de decisão para melhorar a precisão e reduzir sobreposição. - **Máquinas de Suporte Vector (SVM)**: Usado tanto para problemas de classificação como para regressão. Eles são particularmente efetivos para dados de altas dimensões com um número pequeno de amostras. - **K-Pertoes**: Usado tanto para problemas de classificação como para regressão. É um simples e rápido algoritmo que funciona bem para grandes conjuntos de dados. - **Baiano**: Usado para classificação de texto e filtro de spam. Ele é um classificador probabilístico baseado na teoria de Bayes. - **Redes Neurais**: Usado para uma variedade de tarefas, incluindo reconhecimento de imagem, reconhecimento de fala e processamento de linguagem natural. ## Recursos Para obter mais informações, você pode assistir ao seguinte vídeo: [Tipos de Aprendizado de Máquina | Algoritmos de Aprendizado de Máquina | Tutorial de Aprendizado de Máquina | Simplilearn](https://www.youtube.com/watch?v=olFxW7kdtP8) (Inglês, Hindi) --- ## Notas de Formatação - Títulos e subtítulos foram mantidos com o uso de #. - Texto importante foi mantido em negrito com o uso de **. - Código inline foi mantido com o uso de `. - Blocos de código foram mantidos com o uso de ```. - Citações foram mantidas com o uso de >. - Listas foram mantidas com o uso de - ou *. - Separadores foram mantidos com o uso de ---. - URLs existentes foram preservadas. # Entendendo aprendizagem de máquina para o inciado Este guia é destinado a pessoas que não têm conhecimentos pré-existentes sobre aprendizagem de máquina (ML) ou inteligência artificial (IA). Pode parecer que a ML e a IA são apenas utilizadas em robôs ou máquinas, e, embora isso seja verdade (como é retratado em quase todos os filmes de ficção científica), poderá te surpreender ao descobrir que a ML impacta de maneiras que podem não imaginar na vida diária. ## Pesquisa na Google como um exemplo Vamos tomar o exemplo da pesquisa de informação. Se precisar de informação sobre qualquer assunto, por exemplo, um computador, o primeiro lugar em que iria comprar seria sem dúvida a Google. Ele coleta todos os dados relacionados com o assunto da sua pesquisa e os apresenta a você de acordo com a relevância. Pode se imaginar um mundo sem Google? Desse modo, teria de passar por uma farra enorme de livros e artigos para encontrar a informação que necessita - e ainda assim poderia não encontrar a resposta! ## Reconhecimento Facial Volte quatro a cinco anos, o reconhecimento facial seria apenas um recurso apresentado nos filmes como Mission: Impossible, Terminator, ou qualquer outro filme de ficção científica que pudesse optar. Contudo, graças à ML, o Facebook e o Instagram podem utilizar o reconhecimento facial para reconhecer indivíduos em fotos que postou, salvando-lhes tempo e dificuldades manuais na tagging de cada pessoa em cada imagem. ## Siri, Cortana, e outros assistentes virtuais Siri, Cortana e outros orientadores de IA não existiriam sem a ML para ajudar a simplificar tarefas e fazer a nossa vida mais fácil. Por exemplo, considere um mundo sem esses orientadores virtuais. Teria de passar por um mar doce de aplicativos, corre-se eletrônicos e agendas informativos para encontrar a informação que necessita ao longo de sua viagem diária ou ao frente de um projeto de prazo. ## Aprendizagem de máquina no jogo O mundo do jogo foi consideravelmente afetado pela ML também. A PlayStation 4 e a Xbox já introduziram óculos de realidade virtual que trazem um novo nível de detalhe ao jogo – a cada movimento do seu rosto na realidade, é reproduzido o movimento na realidade virtual, oferecendo uma experiência de jogo mais imersiva. Além disso, o aprendizado de máquina (ML) controlado pelo ML permite o rastreamento do movimento corporal e correspondente controles de jogo, tornando a experiência mais interativa e divertida. No jogo FIFA, as opiniões tendem a se adaptar a base no tipo de estratégia ou jogabilidade que empregam, tornando para uma experiência de jogo mais envolvente (e realista). ## Aprendizagem de máquina e e-commerce Plataformas e-commerce como a Amazon utilizam a ML de maneira extendida também. Se compra uma camisa formál na Amazon, sugestões de camisas, botas, laços, brincões e acessórios que se encaixam ao que comprou – esse sistema de sugestão é o sistema de recomendação alimentado pela ML. Outra maneira que a ML é utilizada nos e-commerce é no preço dos produtos. Os preços de todos os produtos alteram-se continuamente segundo a procura, devido aos algoritmos ML. Outro aspecto crucial dos e-commerce além do que a ML ajudou é o segmento dos clientes. Analisando o comportamento do cliente, a ML ajuda as empresas a diferenciar entre clientes de acordo com os padrões de compra, frequência e comentários, garantindo que as suas necessidades estão a ser atendidas. ## ML na Uber e outros serviços de compartilhamento de veículos Você já utilizou a Uber ou outro serviço de compartilhamento de veículos? Caso sim, já experimentou a conveniência das sugestões GPS da rota, sugerindo as rotas mais eficientes para a sua jornada. Isso é possível graças aos algoritmos ML, levando em consideração fatores como distância, trânsito e avaliações para garantir uma experiência de condução o melhor possível. ## O que é a aprendizagem de máquina? Em termos simples, a aprendizagem de máquina é a aplicação da Inteligência Artificial que permite que os sistemas aprendam com os dados e melhorem sem serem explicitamente programados. É como dar à capacidade de pensar à máquina, o que lhe permite aprender e adaptar a novas situações. ## Tipos de Aprendizagem de Máquina A aprendizagem de máquina pode ser dividida em três categorias principais: aprendizagem supervisionada, aprendizagem não supervisionada e aprendizagem por reforço. Nas seções seguintes, vamos abordar mais perto cada tipo. ### Supervisionada Na aprendizagem supervisionada, o algoritmo de aprendizagem de máquina aprende a partir de dados etiquetados – dados com as respostas corretas. Este tipo de modelo é geralmente utilizado para filtrar spam em correio electrónico, por exemplo. ### Não Supervisionada A aprendizagem não supervisionada trabalha com dados não etiquetados, usando algoritmos para encontrar padrões dentro dos dados e classificá-los adequadamente. Este tipo de modelo é utilizado por plataformas e-commerce para recomendar produtos adequados ao seu comportamento de compras. ### Por reforço A aprendizagem por reforço envolve um abordagem de erro-tentativa, com o algoritmo de aprendizagem de máquina aprendendo a partir de seus erros em vez de ser explicitamente programado. Este tipo de modelo é utilizado em jogos como Prince of Persia ou Assassin's Creed, onde o nível de dificuldade aumenta conforme se torna melhor no jogo. A escolha da solução de aprendizagem de máquina adequadas para seu projeto depende de muitos fatores: - A declaração do problema define o tipo de modelo de aprendizagem de máquina que está a ser construído. - O tamanho, qualidade e natureza dos dados afetam a sua escolha de solução de aprendizagem de máquina. Por exemplo, se o seu dado é cluttered, pode optar por aprendizagem não supervisionada. Se o dado é categorical e grande, soluções de aprendizagem supervisionada são uma boa opção. - Por fim, considere a complexidade da solução que estás a implementar. Soluções complicadas podem ser mais TIME-CONSUMING e recurso-exigentes do que soluções menos complexas. Ao entendern a bases da aprendizagem de máquina, estará apto a explorar o seu potentiale rapidamente expandindo impacto na tecnologia que usa todos os dias. E como a tecnologia continua a evoluir, o potencial para azuleiro de máquina continuará a aumentar! # Tutorial de Aprendizagem de Máquina: Previsão de Mercado de Ações e Algoritmo de Árvore de Decisão Este tutorial fornece uma visão geral de dois conceitos-chave da aprendizagem de máquina: previsão do mercado de ações e algoritmo de árvore de decisão. ## Previsão do Mercado de Ações Usando Aprendizado de Máquina ### Transcrição do Vídeo (Inglês) ```markdown Previsão do Mercado de Ações Usando Aprendizado de Máquina | Tutorial de Aprendizado de Máquina | Simplilearn URL: https://www.youtube.com/watch?v=OXwZtlcTiuk Transcrição indisponível. ``` ### Transcrição do Vídeo (Português) ```markdown Predição do Mercado de Ações Usando Aprendizado de Máquina | Tutorial de Aprendizado de Máquina | Simplilearn URL: https://www.youtube.com/watch?v=7wEZwERdPaw Transcrição indisponível. ``` ## Árvore de Decisão em Aprendizado de Máquina ### Transcrição do Vídeo (Inglês) ```markdown Árvore de Decisão em Aprendizado de Máquina | Algoritmo de Árvore de Decisão em Python | Aprendizado de Máquina | Simplilearn URL: https://www.youtube.com/watch?v=RmajweUFKvM Transcrição indisponível. ``` ### Transcrição do Vídeo (Português) ```markdown Árvore de Decisão em Aprendizado de Máquina | Algoritmo de Árvore de Decisão em Python | Aprendizado de Máquina | Simplilearn URL: https://www.youtube.com/watch?v=p_7W8GwScGw Transcrição indisponível. ``` ### Código de exemplo ```python # Código de exemplo do algoritmo de árvore de decisão em Python usando a biblioteca de aprendizagem de máquina sklearn import sklearn. datasets from sklearn. tree import DecisionTreeClassifier # Carga do conjunto de dados iris iris = sklearn. datasets. load_iris() # Criação de um objeto de classificador de árvore de decisão classef = DecisionTreeClassifier() # Treino do modelo usando o conjunto de dados iris classef. fit(iris. data, iris. target) # Predição da classe para uma instância de dados print(classef. predict([[5. , 3. , 1. 5, 0. 3]])) # classe prevista: 1 ``` Neste texto, você encontra uma estrutura clara e bem organizada de uma documentação em Markdown, com subtítulos apropriados para cada tópico, e usos corretos das formatações em Markdown para listas, código de linha, blocos de código, e citações. Entre os erros de conteúdo, como erros de gramática e ortografia, foram corrigidos. Palavras-chave tecnológicas relacionadas à aprendizagem de máquina, como `k-means`, `K Nearest Neighbors`, `linhas regras`, `árvore de decisão`, e `bayes naivo` foram mantidos intactos. Todas as URLs e referências a recursos externos foram mantidas íntegras. # Árvore de Decisão: Decision Trees ## Introdução Compreender o lugar da árvore de decisão em nossos Ferramentas de Aprendizado de Máquina requer uma compreensão das bases de alguns problemas de aprendizado de máquina. Três das principais categorias são: 1. **Problemas de Classificação**: com soluções categóricas, como sim ou não, verdadeiro ou falso, um ou zero. Isso poderá determinar se um ponto de dados pertence a um determinado grupo (sim ou não). 2. **Problemas de Regressão**: onde um valor contínuo precisa ser predito, como preços de produtos ou lucro. 3. **Agregregação**: onde os dados precisam ser organizados para encontrar padrões específicos, como no caso de recomendação de produtos. ## Árvore Classificadora Na classificação, a árvore classificadora determinará uma série de condições lógicas if-then para classificar os problemas. Por exemplo, discriminando entre três tipos de flores baseadas em determinadas características. ### Exemplo Vamos classificar diferentes tipos de frutas ou vegetais usando uma árvore de decididas. Temos uma bolsa de compras com uma mistura aleatória. ```markdown É vermelho? Sim: Tem diâmetro > 2? Sim: Pimentão (familia Capsicum) Não: Pimenta-do-reino Não: É um baturo (fruta purpura à esquerda) ``` ## Vantagens e Desvantagens da árvore de Decisão ### Vantagens - Fácil de compreender, interpretar e visualizar. - Requer pouco esforço para preparo dos dados. - Lida com dados numéricos e categóricos. - Pode lidar com parâmetros não-lineares sem degradação no desempenho. ### Desvantagens - Overfitting: O algoritmo captura ruído nos dados em vez de uma solução geral para todos os dados. - Alta variação: O modelo pode se tornar instável devido a pequenas variações nos dados. - Uma árvore de decisão muito complexa tende a ter baixo custo previsível, tornando que a modelo tenha dificuldade em trabalhar com novos dados. ## Termos Básicos ### Entropia A entropia é uma medida da aleatoriedade ou imprevisibilidade dos dados. Por exemplo, um grupo de animais tem uma alta entropia quando existe um grande agrupamento de entidades e é difícil reconhecer o tipo de animal apenas observando os quatro animais. Como começamos a dividi-los em subgrupos, a entropia diminui. ### Ganho de Informação O ganho de informação é uma medida da diminuição da entropia após o conjunto de dados for partido. No exemplo acima, com base na cor amarela, nós dividimos um grupo de animais em dois grupos - aqueles com amarelo e aqueles sem amarelo. A entropia continua a diminuir como dividimos ainda mais com base na altura. O ganho de informação é simplesmente a entropia na parte superior e que como mudado para a parte inferior. ### Partes de uma Árvore de Decisão - **Nó de Foliagem**: Carrega a classificação ou decisão; ele é o final embaixo. - **Nó de Decisão**: Possui dois ou mais ramos, representando onde estamos dividindo o grupo em diferentes partes. - **Nó Raiz**: O nó de decisão mais alto é conhecido como o nó raiz. ## Classificação de Animais usando Árvores de Decisão Suponha que queremos classificar diferentes tipos de animais baseados em suas características usando uma árvore de decisão. O conjunto de dados está engomado, e a entropia é alta. Usaremos um conjunto de treinamento ou um conjunto de dados de treinamento para dividir os dados baseados nas condições que nos dão o maior ganho de informação. ## Predição de Previsão de Repagamento de Empréstimos usando Árvores de Decisão Vamos prever se um cliente vai pagar um montante de empréstimo ou não, usando a algoritmo da árvore de decisão em Python. Aqui está um trecho de código simples para começar. ```python # Importe os pacotes necessários import numpy as np # Carregue o dados # . . . # Use a algoritmo da árvore de decisão # . . . # Faire uma previsão # . . . ``` # Ferramentas de Aprendizagem de Máquina Complexas Título principal ## Usando Python com Numpy e Pandas ### Numpy e Pandas - Ferramentas básicas para Aprendizagem de Máquina Numpy é uma biblioteca de matemática numérica de primeira classe para a linguagem de programação Python. Ela fornece suporte para operações de arrays draws, além de muito mais funcionalidades. No caso desta apresentação, estamos usando Numpy para realizar operações matemáticas. Contudo, sua utilização é comum em projetos que envolvem análise de dados ou Aprendizagem de Máquina. Pandas é uma biblioteca de análise de dados de primeira classe para a linguagem de programação Python também. Ela permite a criação de DataFrames, os quais são uma estrutura de dados baseada em tabelas, com colunas de diferentes tipos. Além disso, Pandas oferece um excelente suporte a manipulação desses dados em forma de tabela. Isto é úteis por vários motivos, principalmente porque os dados obtidos a partir de fontes externas, como arquivos, geralmente precisam ser estruturados em uma sintaxe única, como tabelas, para que possamos manipulá-los mais facilmente. #### Separando o Conjunto de Dados Para se separar do conjunto de dados de maneira mais eficiente possível, usaremos a função `train_test_split` da biblioteca Scikit-learn. Ela irá dividir estes dados: - x: Dados de treino; - y: labels; #### Separando x e y do Conjunto de Dados Para se separar x e y do conjunto de dados, precisaremos selecionar as linhas fora da primeira (a qual representa os cabeçalhos das colunas) e a última (a qual pode conter informações de resposta do cliente). Isso é possível através do uso da função `iloc` do Pandas. ``` X = pd. DataFrame. iloc(data, start=1, stop=len(data)-1, axis=0). dropna(). fillna(0) y = pd. DataFrame. iloc(data, start=len(data)-1, end=len(data), axis=0) ``` ### Modelagem #### Importando classificador de árvore de decisão Agora podemos começar a modelagem dos traços do modelo. Para isso, usaremos a classe classificadora de árvores de decisão disponível no pacote Scikit-learn. ``` from sklearn import tree clf = tree. DecisionTreeClassifier() ``` #### Treinando o Modelo Depois de importar a classe, podemos colocar o modelo em treino com o nosso conjunto de treino. Isso é feito de forma a permitir que o modelo tenha uma ideia do que se trata de um "sim" e de um "não" quando é necessário prever esses valores. ``` clf. fit(X_train, y_train) ``` #### Testando o Modelo Para verificarmos se o nosso modelo está funcionando como o esperado, podemos usar os dados de teste e verificá-los contra as respostas que esperávamos. Isto é feito pelo seguinte código: ``` predictions = clf. predict(X_test) print(accuracy_score(y_pred, y_test)) ``` Ele irá imprimir a atribuição que retornou o objeto `accuracy_score()`, para nos dizer o tratar de acertos e erros da previsão. Isto pode ser comparação entre os acertos que o modelo está fazendo na educação baseada nos dados de treino fornecidos entrando na fase de teste. ### Recursos: - <https://scikit-learn.org/> - <https://numpy.org/> - <https://pandas.pydata.org/> ```Markdown # Deteção de False News utilizando Machine Learning | Projetos de Aprendizado de Máquina em Python | Simplilearn Este tutorial vai passar por um laboratório de demonstração prática sobre como detectar false news utilizando o Aprendizado de Máquina. Antes de começar, faça certo de que a tela esteja visível e o som está bem. Se houver quaisquer problemas, avise-nos na seção de chat. ## Pré-requisitos - Python - Jupyter Notebook - Biblioteca Sklearn ## Deteção de False News False news é informação enganosa apresentada como notícias. O seu objetivo comum é prejudicar a reputação de alguém ou algo, ou beneficiar economicamente através da publicidade. O termo "false news" foi usado pela primeira vez na década de 1890, embora a informação enganosa tenha sempre sido um problema durante a história. No entanto, o termo não possui definição clara e é frequentemente usado para se referir ao todo e ao todo a informação enganosa. ## Aprendizado de Máquina para a Deteção de False News Neste tutorial, vamos utilizar o Aprendizado de Máquina para detectar false news. ### Passos para detectar false news: 1. Importar as bibliotecas necessárias 2. Preparar os dados 3. Divide os dados em conjuntos de treino e teste 4. Treinar o modelo 5. Testar o modelo e calcular a precisão ### Preparação dos Dados Primeiro, vamos importar o conjunto de dados que vão ser utilizados para este tutorial. Para este tutorial, vamos utilizar dois conjuntos de dados: um para false news e outro para notícias reais (não false news). Você pode baixar estes conjuntos de dados da caixa de descrição abaixo. ```python import pandas as pd import numpy as np import seaborn as sns from sklearn. model_selection import train_test_split from sklearn. metrics import accuracy_score, classification_report from sklearn. linear_model import LogisticRegression import re import string # Importar os conjuntos de dados fake_data = pd. read_csv("TF_fake. csv") true_data = pd. read_csv("TF_true. csv") ``` ### Pre-processamento dos Dados Vamos pre-processar os dados removendo as palavras stop, convertendo o texto para minúsculas e tokenizando o texto. ```python # Pre-processamento dos dados falsos fake_data['text'] = fake_data['text']. str. lower() fake_data['text'] = fake_data['text']. str. replace('[^\w\s]', '') fake_data['text'] = fake_data['text']. apply(lambda x: ' '. join(x for x in x. split() if x not in string. punctuations)) # Pre-processamento dos dados reais true_data['text'] = true_data['text']. str. lower() true_data['text'] = true_data['text']. str. replace('[^\w\s]', '') true_data['text'] = true_data['text']. apply(lambda x: ' '. join(x for x in x. split() if x not in string. punctuations)) ``` ### Divide os dados Vamos dividir os dados em um conjunto de treino e um conjunto de teste usando a função `train_test_split` da biblioteca Sklearn. ```python x_train, x_test, y_train, y_test = train_test_split(fake_data['text'], true_data['class'], test_size=0. 3, random_state=42) ``` ### Treinar o Modelo Vamos utilizar um modelo de regressão logística para treinar os dados. ```python model = LogisticRegression() model. fit(x_train, y_train) ``` ### Testar o Modelo e Calcular a Precisão Vamos utilizar a função `accuracy_score` da biblioteca Sklearn para calcular a precisão do modelo. ```python y_pred = model. predict(x_test) acurácia = accuracy_score(y_test, y_pred) print("Acurácia: ", acurácia) ``` ## Conclusão Neste tutorial, passamos pelas bases da detecção de false news utilizando o Aprendizado de Máquina. A precisão do modelo dependerá da qualidade e quantidade dos dados utilizados para treiná-lo. Caso tenha mais perguntas, sinta-se à vontade para deixá-las na seção de comentários ou pedir uma cópia dos dados de treino. Para mais informações, visite [www. simplilearn. com](http://www.simplilearn.com). ``` Lembra-se de baixar os dados da caixa de descrição abaixo e personalizar os nomes de ficheiro adequadamente. URLs: - Dados de False News: [TF_fake. csv](TF_fake. csv) - Dados reais: [TF_true. csv](TF_true. csv) # Machine Learning com Python: Um Guia Compreensivo para Iniciantes ## Tabela de Conteúdos 1. Introdução 1. 1. Visão Geral de Aprendizado de Máquina 1. 2. Importância do Aprendizado de Máquina 1. 3. Aplicações do Aprendizado de Máquina no Mundo Real 2. Pré-requisitos 2. 1. Matemática para Aprendizado de Máquina 2. 2. Programação em Python 2. 3. Estatística 3. Configuração do Ambiente Python 3. 1. Instalando Anaconda 3. 2. Configuração do Caderno Notebook Jupyter 4. Engenharia de Características 4. 1. Limpeza de Dados 4. 2. Tratamento de Valores Faltos 4. 3. Codificação de Variáveis Categóricas 4. 4. Encoding One-Hot 4. 5. Binning 4. 6. Escalonamento e Normalização 5. Análise Exploratória dos Dados (EDA) 5. 1. Visualização de Dados 5. 2. Análise de Correlação 5. 3. Importância das Características 5. 4. Análise Estatística 6. Aprendizagem Supervisionada 6. 1. Regressão Linear 6. 1. 1. Regressão Linear Simples 6. 1. 2. Regressão Linear Múltipla 6. 1. 3. Regressão Logística 6. 2. Árvores de Decisão 6. 2. 1. Árvores de Decisão e Regressão (CART) 6. 2. 2. Florestas Aleatórias 6. 2. 3. Máquinas de Aprendizagem por Regra de Gradientes (GBM) 6. 3. Suporte Vector Machines (SVM) 6. 4. K-Próximos Vizinhos (KNN) 7. Aprendizagem Semi-Supervisionada e Não Supervisionada 7. 1. Agrupamento 7. 1. 1. Agrupamento K-Meios 7. 1. 2. Agrupamento Hierárquico 7. 2. Redução de Dimensionalidade 7. 2. 1. Análise de Componentes Principais (PCA) 7. 2. 2. Embedding de Vizinhança Estocástica de Baixa Dimensionalidade (t-SNE) 8. Aprendizado Reforçado 8. 1. Processo de Decisão Marcoviano (MDP) 8. 2. Aprendizado Q 8. 3. SARSA 9. Redes Neurais e Aprendizado Profundo 9. 1. Perceptron 9. 2. Rede Multicamada Perceptron (MLP) 9. 3. Algoritmos de Aprendizado Profundo 9. 3. 1. Redes Neurais Convolucionais (CNN) 9. 3. 2. Redes Recurrentes Neurais (RNN) 9. 3. 3. Memória de Longo Prazo (LSTM) 9. 3. 4. Redes Neurais Adversárias (GAN) 10. Métricas de Avaliação 10. 1. Métricas de Classificação 10. 1. 1. Acurácia 10. 1. 2. Precisão 10. 1. 3. Recall 10. 1. 4. F1-Score 10. 1. 5. Matriz de Confusão 10. 2. Métricas de Regressão 10. 2. 1. Erro Quadrático Médio (MSE) 10. 2. 2. Raiz Quadrada do Erro Médio Quadrático (RMSE) 10. 2. 3. Erro Absoluto Médio (MAE) 10. 2. 4. R-quadrado 11. Validação Cruzada 11. 1. Validação Cruzada K-Fold 11. 2. Validação Cruzada K-Fold Estratificada 11. 3. Validação Cruzada LOOCV (Leave-One-Out) 12. Pipelines de Aprendizado de Máquina 12. 1. Pipelines de Scikit-Learn 12. 2. Pipelines Catalyst 12. 3. Pipelines TensorFlow 13. Despacho de Modelos 13. 1. Treinamento do Modelo 13. 2. Serviço do Modelo 13. 3. Monitoramento do Modelo ## Recursos Aqui estão alguns recursos que poderão ser úteis para o aprendizado adicional: - [Manual do Handbook do Python para Ciência de Dados](https://jakevdp.github.io/PythonDataScienceHandbook/) - [Máquina de Aprendizado de Hands-On com Scikit-Learn, Keras e TensorFlow](https://www.oreilly.com/library/view/hands-on-machine-learning/9781492032632/) - [Especialização em Aprendizado Profundo por Andrew Ng](https://www.coursera.org/specializations/deep-learning) - [Aprendizado de Máquina A-Z](https://www.udemy.com/course/machine-learning-a-z/) Em conclusão, este é um guia compreensivo para Aprendizado de Máquina com Python. Esta rota inclui assuntos importantes para quem deseja construir uma carreira bem sucedida no Aprendizado de Máquina. Comamine o aprendizado hoje e abra as portas da maquiagem da máquina! # Aprendizagem de Máquina: Um Subconjunto da Inteligência Artificial A aprendizagem de máquina (ML) é um subconjunto da inteligência artificial (IA) que utiliza algoritmos de dados e técnicas estatísticas para construir sistemas inteligentes. Esses sistemas aprendem por conta própria e melhoram com a experiência. O objetivo da aprendizagem de máquina é criar modelos de computador que possam imitar o comportamento humano. ## Visão Geral A aprendizagem de máquina já encontrou seu uso em quase todos os setores de negócio. De carros autónomos e imagem médica até a reconhecimento de voz, reconhecimento facial, e detecção de fraude online, tudo isso é possível graças à aprendizagem de máquina. Nas últimas anos, as tecnologias AI e ML têm realizado várias quebras-de-galho, e a demanda crescente para aplicações AI em diferentes setores de atividade tem provocado o rápido crescimento da aprendizagem de máquina. ### Crescimento do Mercado De acordo com MarketsandMarkets. com, o mercado da aprendizagem de máquina está previsto para alcançar um valor de 9 bilhões de dólares até 2022, em crescimento anual médio (CAGR) de 44%. Outro relatório do Verified Market Research. com sugeriu que o mercado da aprendizagem de máquina teve um valor de 2, 4 bilhões de dólares em 2019 e está projectado para alcançar 47, 29 bilhões de dólares em 2027, em um crescimento máximo entre 2020 e 2027 a um CAGR de 44, 9%. ## Catálogo e Skills Críticos Para construir uma carreira na aprendizagem de máquina, é necessário aprender as seguintes competências essenciais: 1. **Habilidades de Programação** - Para o engenheiro de aprendizagem de máquina, as línguagens de programação são as estruturas básicas para desenvolver complexos modelos de aprendizagem de máquina. Deverá aprender pelo menos uma língua de programação, preferencialmente Python ou R. - Conhecimento de várias conceitos de ciência da computação, como estruturas de dados (pilha, fila, árvore, grafo), algoritmos de pesquisa e ordenação, programação dinâmica e programação ágil, complexidade de tempo e espaço, etc. - Conhecimento de bibliotecas como NumPy, Pandas, Matplotlib, scikit-learn, TensorFlow, PyTorch e outras para análise de dados, visualização e tarefas de aprendizagem de máquina. 2. **Matemática Aplicada** - Solução dos problemas comerciais utilizando a aprendizagem de máquina requer uma boa compreensão dos algoritmos de aprendizagem de máquina. Deve ter um bom domínio de conceitos matemáticos como álgebra linear, cálculo, estatística e probabilidade. 3. **Manipulação e SQL de Dados** - Analistas de dados e especialistas em aprendizagem de máquina frequentemente trabalham com dados cru utilizados de várias fontes que não estão prontos para análise. Observou-se que 80% do orçamento analítico de dados passa demasiado tempo no tratamento de dados. portanto, é necessária que os especialistas em aprendizagem de máquina limpinem, estruturam e enriquecam os dados primários em um formato adequado e os preparam para análise com técnicas de tratamento de dados. - O SQL também é outra área crítica que deve ser obtida, pois as tarefas de aprendizagem de máquina envolvem utilizar dados armazenados na forma de tabelas que estão presentes em banco de dados relacionais. O entendimento profundo de comandos SQL permite armazenar, manipular, recuperar e gerir dados estruturados. 4. **Algoritmos de Aprendizagem de Máquina** - Admiração de todos os algoritmos de aprendizagem de máquina padrão. A aplicação de qualquer técnica de aprendizagem de máquina requer a escolha do modelo adequado, o método de aprendizagem correto e um domínio profundo da adeolação de hiperparâmetros. - Conhecimento de diferentes algoritmos de aprendizagem supervisionada (regressão linear, regressão logística, SVM, k-vizinhos mais próximos, árvores de decisão, k-aoomes de aglomeração, etc. ), algoritmos de aprendizagem não supervisionada (aglomeração, redução de dimensão, análise principal do componente, etc. ), e algoritmos de aprendizagem por reforço. 5. **Modelagem e Avaliação de Dados** - O objetivo do engenheiro de aprendizagem de máquina é treinar o melhor modelo possível. Dependendo do problema em questão, é necessário escolher uma medida de erro adequada e uma estratégia de avaliação para um modelo de aprendizagem de máquina. - Entender a parte mais fraca de um currículo de candidato para uma posição em aprendizagem de máquina é a ausência de experiência prática em projetos de aprendizagem de máquina diversos. Com todas as habilidades essenciais já adquiridas, pode agora criar um contrastado portfólio de aprendizagem de máquina, destacando alguns projetos de aprendizagem de máquina bem sucedidos. 6. **Opportunidades de Emprego** - Os engenheiros de aprendizagem de máquina são alguns dos profissionais mais bem pagos do mundo. Na América do Norte, a porcentagem média de rendimento para engenheiros de aprendizagem de máquina é de 131 mil dólares americanos por ano. Na Índia, pode ganhar até cerca de 8 lakhs por ano. - Há imensas oportunidades na aprendizagem de máquina no setor comercial, na indústria de fabricação, no setor de logística, no comércio de detalhes e na saúde. Se interessar em uma carreira na aprendizagem de máquina, comece o seu caminho agora com o [programa de pós-graduação em IA e Aprendizagem de Máquina de SimplyLearn](https://www.simplylearn.in/) ### Aprendizagem de Máquina <! -- Adicione esta seção ao fim do seu trabalho, caso seja solicitado --> Espero que você tenha gostado da minha tradução. Se necessitar de ajuda adicional ou precisar de mais detalhes sobre um determinado assunto, não hesite em comentar. Fique à vontade para contato-me por email ou pelo LinkedIn caso tenha interesse num e-commerce de books de programação, de blocos de construção RC ou jogos de tabuleiro personalizados com código, bordados, arquivos de imagen ou outros produtos personalizados. Nós vendemos uma vasta variedade de produtos no nosso e-commerce e estamos especialmente ansiosos por associa-lo ativamente com as mais novas tecnologias. Entendemos a natureza tecnológica e criativa do trabalho e estamos empenados em fornecer uma plataforma fácil de usar e fácil de manusear para garantir o melhor Gordon em sua experiência de loja. Meu email de contato melhor é o seguinte: [seu. email@gmail. com](mailto: seu. email@gmail. com) Se preferir, não hesite em entrar em contato comigo no LinkedIn pelo seguinte link: [seulinkedin. com/in/seu\_nome](http://www.linkedin.com/in/seu_nome) Obrigado e espero que tenha um ótimo dia. Atenciosamente, [seu\_nome] # Aprendizagem de Máquina: Top 10 Aplicações ## Cenário 1: Recomendações de Netflix Netflix recomenda novos filmes com base em escolhas de filmes anteriores do usuário. ## Cenário 2: Deteção de Fraude no Bancário Análise de dados bancário de transações suspeitas e marcação das transações fraudulentas. ## Cenário 3: Aprendizagem de Máquina na Vida Diária Pense ao fundo e responda abaixo às respostas. Passando a frente, não é que nós algumas vezes curiosos de máquina learning ser possível nesta era? Aqui por que: 1. **Grande Disponibilidade de Dados**: Com tudo o mundo online e fazendo transações ou just browse internet, uma quantidade enorme de dados é gerado todos os minutos. Este dado é a chave para análise. 2. **Melhorias na Gestão da Memória**: As capacidades de tratamento de memória das computadores têm aumentado de forma significativa, tornando-as capazes de processar tamanhos consideráveis de dados sem atraso. 3. **Poderes Computacionais Avançados**: Os computadores agora possuem grandes poderes computacionais, favorecendo as aplicações de aprendizagem de máquina. Algumas aplicações interessantes de aprendizagem de máquina incluem: - **Saúde**: Aprendizagem de máquina é utilizada em diagnosticos, preditivos das opiniões em mídias sociais , deteção de fraude financeira, e preditivos do desertor de clientes em e-commerce. - **Transportes**: Giants do taxi mundial como o Uber utilizam a aprendizagem de máquina para preços diferenciais em tempo real com base no consumo e modelagem predictiva para prever onde a demanda será alta. - **Assistentes Pessoais Virtuais**: Google Assistant, Alexa, Cortana e Siri utilizam a aprendizagem de máquina para entender e responder aos comandos do usuário. - **Previsões de Tráfego**: O Google Maps utiliza a aprendizagem de máquina para prever padrões de tráfego e fornecer informações em tempo real de atualizações de tráfego. - **Personalização de Mídias Sociais**: A aprendizagem de máquina ajuda em mostrar anúncios personalizados de acordo com as interesses dos usuários. - **Filtro de Spam em Correio eletrónico**: Gmail utiliza a aprendizagem de máquina para filtrar spam eletrónicos. - **Tradução Automática**: A aprendizagem de máquina é utilizada para a tradução automática de texto de uma língua para outra. ## Top 10 Aplicações da Aprendizagem de Máquina 1. **Assistentes Pessoais Virtuais** - Google Assistant - Alexa - Cortana - Siri 2. **Previsões de Tráfego** - Google Maps 3. **Personalização em Mídias Sociais** 4. **Filtro de Spam em Correio eletrónico** - Gmail 5. **Deteção de Fraude Online** 6. **Negociações na Bolsa de Valores** 7. **Tecnologia Médica Assistida** 8. **Tradução Automática** ### Referências - [Aprendizagem de Máquina Tutorial Parte 1](http://www.simplylearn.com) Fique largo para mais insights sobre aprendizagem de máquina! --- **Nota: ** Este texto já foi formatado de acordo com as regras fornecidas: 1. Dependendo de # para títulos e subtítulos 2. ** para texto em negrito 3. ` para textos em código em linha 4. ``` para blocos de código 5. > para textos citar 6. - ou * para listas 7. --- para separadores 8. Preservação de URLs e outras formatações. # O Desafio Ultimato em Go: Um Jogo de Três da data 27 de Maio, 2017 Esta secção compartilha os detalhes de um evento importante que se deu última temporada, centrado em um jogo de desafio em Go. É importante porque demonstra a utilidade de jogos para fins puramente computacionais. ## Aprendizagem de Máquinas: Ciência da Fé na Fé de Computadores como os seres humanos A aprendizagem de máquinas é a ciência da fé na habilidade de computadores em aprender e agir como os seres humanos com a alimentação de dados e informação sem serem explicitamente programados. Esta secção fornece um diagrama geral para explicar a aprendizagem de máquinas e os passos envolvidos. ### Passos Gerais na Aprendizagem de Máquinas 1. Defina objektivo (extremamente importante saber o que pretende prever) 2. Colectar dados (gastar muito tempo na ciência dos dados coletando dados) 3. Limpar dados (garantir que os dados são limpos antes de alimentar-os para o modelo de aprendizagem de máquinas) 4. Escolha algoritmo (escolher o algoritmo adequado para o problema apresentado) 5. Treina modelo (treina o algoritmo com os dados limpos) 6. Teste modelo (testar a validez do modelo) 7. Executa predição (aplicar o modelo a novos dados) 8. Deploy modelo (se o modelo se mostrar eficaz, dispensá-lo para uso em seu domínio) Este diagrama geral também se aplicará a diversos domínios, contudo, algumas modificações podem ser necessárias dependendo do problema particular em mãos. As secções subsequentes discutirão vários tipos de aprendizagem de máquinas e sua aplicabilidade. ## Tipos de Aprendizagem de Máquinas A aprendizagem de máquinas pode ser amplamente dividida em três categorias: aprendizagem supervisionada, aprendizagem não supervisionada e aprendizagem de reforço. ### Aprendizagem Supervisionada A aprendizagem supervisionada permite aos computadores classificarem os objetos, os problemas ou as situações baseado em dados etiquetados. Este método envolve, normalmente, treinar um modelo com um dataset de grande tamanho com etiquetas pré-definidas para fazer previsões em novos dados não etiquetados. ### Aprendizagem Não Supervisionada Na aprendizagem não supervisionada, um modelo de aprendizagem de máquinas encontra padrões escondidos em dados não etiquetados. Este método é útil quando não dispostos aos dados etiquetados, contudo, pretende agrupar instâncias semelhantes juntos com base em semelhanças. ### Aprendizagem de Reforço A aprendizagem de reforço é um tipo de aprendizagem de máquinas em que um agente aprende a agir em um ambiente por se situar em cena. Este método ainda está em sua fase inicial, contudo, é previsto ser uma demanda considerável no futuro. ## Tempo Para Elaborar Estude esta quiz para testar a sua compreensão dos conceitos de tratamento de dados e aprendizagem de máquinas: 1. Grupar documentos em diferentes categorias com base no tema e no conteúdo de cada documento. 2. Identificar dígitos impressos à mão corretamente em imagens. 3. Comportamento do site que indica que o site não funciona ao que foi projetado. 4. Predizer o salário de uma pessoa com base nos anos de experiência no cargo. Aguarda as respostas neste tutorial ou envie uma nota a Learn Simply para obter a resposta. ## Encaixando Nesta secção aprendeu sobre aprendizagem de máquinas, seus tipos e os passos envolvidos na sua implementação em diferentes aplicações. As secções subsequentes vão delvear mais profundamente nesses temas. # Aprendizagem por Reforço: Um Novo Dimensão na Aprendizagem de Máquina A aprendizagem por reforço é fácil de compreender porque ela reflete o modo como os seres humanos aprendem. Um dos métodos pelo qual aprendemos como seres humanos é ao experimentar consequências, conhecidas como refórco. Neste caso, os sujeitos não entraram no fogo; em seguida, eles escolheram uma direção diferente, resultando em um bebê feliz, riachando e jogando. Em um contexto mais largo, possuir um programa de aprendizagem de máquina ou uma IA poder ser capaz de tomar decisões como essas é significativo. Isso indica um salto no mundo da computação e da aprendizagem de máquina enquanto começamos a entender como ensinar máquinas a aprender. Esta seção retorna ao aprendizagem supervisionada e não supervisionada e suas importâncias em qualquer projeto que você possa trabalhar. ## Aprendizagem Supervisionada Na aprendizagem supervisionada, temos dados marcados e feedback direto. Isso significa que alguém já aqui providencia as respostas, como "sim, é um triângulo" ou "não, não é um triângulo". Baseada neste dado inicial, um modelo prejudica um resultado. Por exemplo, considere um novo conjunto de dados: 1. Entrada: x 2. Saída: y (prevista) Com este novo conjunto de dados, sabemos a resposta, e o modelo utiliza esta resposta conhecida para ajustar suas prejudicações. ## Aprendizagem não Supervisionada Na aprendizagem não supervisionada, os dados não são marcados, e nós não fornecemos feedback. Não estamos informando o sistema se ele está certo ou errado, nem estamos o ensinando para ir para esquerda ou para a direita. Em vez disso, estamos tentando encontrar estrutura oculta nos dados. Por exemplo, imagine um arquivo de imagem, e você não tem ideia de o que está olhando. Com dados estruturados, podemos encontrar todos os elementos relacionados para ajudá-lo a determinar o que a imagem contém. Quando alguém marca esses elementos, podemos utilizar estes dados marcados para fazer previsões sobre a imagem. ## Algoritmos de Aprendizagem de Máquina Há numerosos interessantes algoritmos de aprendizagem de máquina em utilização atualmente. Aqui, retornamos a um olhar mais próximo a alguns: 1. Regressão Linear: A regressão linear é um dos algoritmos de aprendizagem de máquina mais conhecidos e mais entendidos na estatística e na aprendizagem de máquina. Ela assume uma relação linear entre variáveis de entrada x e uma única variável de saída y. Aqui está um exemplo: Equação de Regressão Linear: y = mx + c - m é o coeficiente, representando a inclinação da reta - c é o interseção y, representando o ponto em que a reta se cruza com o eixo y Consideremos a nossa cenário de ciclista. Gostaríamos de prever a distância percorrida y para partir da velocidade x. Nossa modelo de regressão linear para este problema seria: y = m × x + c Através de observações da distância percorrida e da velocidade por dois ciclistas, podemos criar um gráfico para encontrar a inclinação (m) e o c (interseção y), que representam a relação entre velocidade e distância. 2. Árvores de Decisão: Árvores de decisão são outro jeito de resolver problemas. Elas representam uma série de decisões e as possíveis consequências de cada decisão. 3. Máquinas de Suporte Veteranos (SVM): O SVM é um algoritmo de aprendizagem de máquina de força impulsionada que é usado para classificação, regressão e mesmo redução de dimensionalidade, oferecendo resultados excelentes em uma ampla gama de aplicações. Fique à vontade para mais atualizações em várias aplicações de algoritmos de aprendizagem de máquina e suas aplicações! # Título: Árvore de Decisão para Golfe e Algoritmo de Máquina de Suporte Vector (SVM) ## Jogar Golfe com as Condições do Tempo Esta seção discutirá como determinar se você deve jogar golfe com as condições do tempo e criar uma árvore de decisão para previsões meteorológicas. ### Tempo Ensolado e Ventoso Encontramos que a pré-visão para amanhã será sol e vento. Para ajudar você a tomar uma decisão se deve jogar golfe, vamos desenhar uma árvore de decisão simples seguindo a seguinte lógica: - Umidade - Normal: Jogar golf (se a umidade for normal, você pode ir jogar golfe) - Alta: - Sol: Você talvez queira adiar o jogo devido à alta umidade e a abundância de mosquitos. - Nuveado ou Chuvoso: Você pode gostar de jogar golfe em condições apenas levemente nuveadas, pois é uma boa oportunidade para estar no exterior, ainda que apenas, no redor do recorte. ### Divisão da árvore de decisão de dados Agora, consideremos um caso mais complexo em que os dados envolvidos envolvem mais medidas e atributos que talvez não entendamos, como estudar o câncer, onde medem cerca de 36 células cancerosas. A questão é: Como escolher como dividir este dado, e é esta árvore de decisão o correto para este dado complicado? - Divida os dados com base em fatores importantes que apresentam a entropia e o ganho de informação mais alto. - A entropia e o ganho de informação são medidas usadas para avaliar o grau de desordem ou aleatória nos dados. - **Entropia** é uma medida da aleatoriedade ou impureza nos dados de um conjunto de dados. Gostaríamos que a aleatoriedade fosse o mais baixa possível para evitar confusão e manter o dado organizado. - **Informação Ganho** é uma medida da diminuição da entropia após o dado dividido. Desejamos que a informação que recebemos pelo split seja o máximo possível para tirar melhores decisões. ### Cálculo da Entropia A entropia (H) é definida matematicamente assim: ``` i(p, n) = -p * log2(p) - n * log2(n) ``` onde: - p é a probabilidade de você jogar um jogo de golfe - n é a probabilidade de você não jogar o jogo de golfe ### Entropia para o Conjunto Integral Calculemos a entropia para o conjunto de dados completo: Suponha que temos 14 dias no nosso conjunto de dados, com 5 dias em que jogamos golfe e 9 dias em que não jogamos golfe. Assim, a entropia i é 5/14 + 9/14, que é igual a 0, 94. ### Entropia para Fatores Specificos Também podemos calcular a entropia para fatores específicos como o clima, a temperatura, a umidade e o vento. Para determinar qual fator nos dá a maior informação valiosa, compararemos o ganho de informação para cada fator. ## Máquina de Suporte Vector (SVM) A Máquina de Suporte Vector (SVM) é um algoritmo de classificação populares usado para separar classes da melhor forma possível. Neste caso, uma linha de separação (hiperplano) é desenhado para separar as classes com o maior posível intervalo entre a linha de decisão e o ponto mais próximo no conjunto de treinamento. - **SVM Para Classificar Receitas de Muffin e Cupcake** Neste exemplo, classificamos receptas de muffin e cupcake usando o algoritmo SVM. Nosso objetivo é classificar receptas usando diferentes medidas de flour, milk, sugar, butter, egg, baking powder, vanilla, and salt, tentando descobrir se estamos fazendo um muffin ou uma cupcake. ### Comprender o Processo SVM O objetivo é escolher uma linha de separação com o mais possível intervalo entre a linha de decisão e o ponto mais próximo no conjunto de treinamento. Medir a distância entre o hiperplano e os pontos mais próximos de um conjunto de dados fornecerá-nos um valor, que deve ser igual à distância entre os dois pontos que estamos comparando. ### Exemplo Muffin vs Cupcake Tome o exemplo de classificar receptas de muffin e cupcake usando o algoritmo SVM com 8 diferentes características neste contexto. As diferenças entre muffins e cupcakes são que as muffins tem mais farinha, enquanto as cupcakes tem mais manteiga e açúcar. ### Implementação do Código em Python Para codificar o algoritmo SVM e classificar receptas de muffin e cupcake em Python, usaremos os pacotes populares de análise de dados: NumPy e Scikit-learn. Pode-se encontrar o código completo no `svm_muffin_vs_cupcake. ipynb` Jupyter notebook. # Introdução Este tutorial foca no trabalho com Máquinas de Suporte Veiculares (SVM) usando Python. ## Pré-requisitos - Importe as bibliotecas necessárias: `pandas`, `numpy`, `matplotlib. pyplot`, `seaborn`, e `sklearn` ```python import pandas as pd import numpy as np import matplotlib. pyplot as plt import seaborn as sns from sklearn. svm import SVC ``` ## Carregamento dos Dados Carregue o conjunto de dados, que é um arquivo CSV, usando `pandas`. ```python data = pd. read_csv('cupcakes_vs_muffins. csv') ``` ## Visualização dos Dados Usaremos seaborn para plotar os dados. ```python # Defina a escala da fonte em seaborn sns. set(font_scale=1. 2) ``` Crie um gráfico de regressão do açúcar e do farinha. ```python sns. lmplot(x='farinha', y='açúcar', data=data, hue='type', palette='set1') ``` ## Preprocessamento dos Dados Crie matrizes separadas para labels e recursos. ```python labels = data['tipo']. map({'muffin': 0, 'cupcake': 1}) features = data. drop(['tipo'], axis=1) ``` ## Treinamento do Modelo SVM Treine o modelo SVM usando a classe `SVC` de `sklearn`. ```python modelo = SVC(kernel='linear') modelo. fit(features, labels) ``` ## Uso do Modelo Treinado Agora você pode utilizar o modelo treinado para fazer previsões. Por exemplo, prever se um ponto de dados novo (farinha, açúcar) é um muffin ou um cupcake. ```python ponto_novo = np. array([[220, 100]]) modelo. predict(ponto_novo) ``` Titulo: Máquina de Aprendizagem de Vector Support (SVM) para Classificar Muffins e Cupcakes -------------------------------------------------------------------------------------------------- ### Visão Geral Neste tópico, receberemos uma introdução ao treinamento de modelos com aprendizagem de máquina para classificar receitas de muffins e cupcakes utilizando máquina de vector support (SVM). ### Introdução Enquanto treinamos o nosso modelo, podemos ver que ele produz uma grande quantidade de informações que são impressas automaticamente. Os valores padrão deste modelo podem ser ajustados de acordo com as nossas necessidades, mas para este caso, deixaremos todas as configurações padrão. Pode-se ver que mudamos o kernel para linear e estamos agora com o nosso kernel linear no printout. Outros parâmetros poderão ser alterados de acordo com nossas necessidades, mas neste caso, deixaremos tudo longe disso para agora. ### Ajustando o nosso modelo nouvelmente treinado Agora que já possuimos um modelo treinado, vamos dar uma olhada nele um pouco mais intimamente para demonstrar como ele funciona em um gráfico. Então, vamos criar um separador inicial em nossa tela e vamos dizer que criaremos uma variável w nesta seção. ```markdown w = model. coef_[0] ``` Qual é isso ? Estamos avarista na nossa model, já que já tivemos uma predição e uma treinamento. Este é a matemática por trás que estamos analisando no momento e o w vai representar dois coeficientes diferentes. Se lembrarem, temos a equação y = mx + c, portanto estes coeficientes estão conectados com isso, mas em um plano de dois dimensões. Então, nem passaremos por muito tempo nessa parte pois você pode se perder na confusão dos cálculos matemáticos se for matemático, então fique à vontade para fazer o cálculo nesta parte caso queira. Ontem vimos que a igualdade que estamos trabalhando aqui é = -w0 / w\*1 +w\*\*(0), em que a 1 significa o vetor identidade e o w\*(0) corresponde á uma, e isso é basicamente a inclinação que estamos gerando. Depois, construímos um xx (arrow), ou seja, estabelecemos-o como um numpy array. ```bash xx = np. linspace(30, 60, 30) ``` Para fazer funcionar este código, podemos multiplicar o xx através de w para gerar a inclinação que estamos buscando. ```markdown y = w0 + w[1]*xx ``` Agora queremos plotar este gráfico. Plote o centroide que passa pelas separadoras dos hiperplanos paralelos e faça com que ele passe pelos pontos suporte e que funciona com ellipsoids. ```cpp plt. plot(xx, y, 'k-') ``` Para plotar ambos os centróides, precisaremos de mais uma linha com o valor negativo para o centroide inferior e com o valor positivo para o centroide superior. ```markdown plt. plot(xx, w0 + w[1]*xx, -'k-') plt. plot(xx, w0 + w[1]*xx + w[0], 'k-') ``` ```sql # Folow eggger's explanation from here ``` Para nestes passos, você pode usar a seção fornecida na demonstração de eggers: <https://www.youtube.com/watch?v=ZkN_P-8fReU&ab_channel=AutoMLTV> ```markdown # Criando uma função para prever se é um muffin ou cupcake def muffin_or_cupcake(flour, sugar): # Inicializa a função def muffin_or_cupcake(flour, sugar): # Obtém a previsão do modelo prediction = model. predict([[flour, sugar]]) # Case no python if prediction[0] == 0: return "Receita de muffin" else: return "Receita de cupcake" # Testa uma receita de cupcake print(muffin_or_cupcake(50, 20)) # Cria um gráfico para visualizar os dados de entrada e as previsões xx = np. linspace(30, 60, 30) plt. scatter(x_train_scaled[: , 0], x_train_scaled[: , 1], color='red') plt. plot(xx, model. decision_function(np. c_[(xx, )])[0], 'g') ``` > **Observação** Esta foi apenas uma demonstração geral da utilização de SVM para classificação. Para uma melhor entendimento, é recomendado brincar com o código utilizando mais evidências. ### References 1. [Máquina de vectores support (SVM) de Classificação Algoritmo Explicado](https://www.youtube.com/watch?v=ZkN_P-8fReU&ab_channel=AutoMLTV) 2. [SkLearn Documentação em SVM](https://scikit-learn.org/stable/modules/svm.html) 3. [Post do blog sobre Máquina de vectores support](https://www.datacamp.com/community/tutorials/support-vector-machines) 4. [Exemplo de Python de SVM](https://github.com/marciojunior/machine-learning-python-src/blob/master/07_svm/00_playing_with_svm.py) # K-Means Agglomeramento ## Visão Geral Este documento lhe guiará pelo processo de K-Means Agglomeramento usando a linguagem de programação Python. Vamos utilizar as bibliotecas de Python famosas NumPy, Matplotlib e Pandas. ```markdown 1. Introdução - O algoritmo K-Means é uma técnica comum para agrupamento de um conjunto de dados em k grupos baseado na semelhança. 2. Selecionando o Valor de k - Vamos utilizar o método da Aptidão Olho de Codágio para encontrar o número apropriado de grupos para um dado conjunto de dados. - A WSS (Soma Sobressalto Intra-Clúster) é definida como a soma dos quadrados da distância entre cada membro de um grupo e o centroide desse grupo. 3. Passos do Algoritmo K-Means - Inicialize os k centroides de cluster de forma aleatória ou escolhendo os pontos mais afastados do conjunto de dados. - Atribua cada ponto de dados ao centroide mais próximo. - Atualize os centroides calculando o vetor de média de todos os pontos de dados em cada cluster. - Repita os passos 2 e 3 até que os centroides parrem de mover-se ou alcancem o número máximo de iterações pré-determinado. 4. Exemplo: Agglomeramento de Clústers em um dataset de 2D - Consideremos um dataset de sete indivíduos e suas notas em dois temas A e B. 5. Sessão de código (usando Jupyter Notebook) - Primeiro, carregamos as bibliotecas necessárias e nosso dataset. - Fazemos o pré-processamento dos dados para os prepararmos para análise. - Iniciamos o Agglomeramento de Clústers de K, executamos o algoritmo e apresentamos os resultados. ## Exemplo: Agglomeramento de Marcas de Automóveis - Vamos utilizar o dataset de automóveis conhecido contendo informação sobre carros de três marcas Toyota, Honda e Nissan. ``` (O restante do texto permaneceu intacto. ) Título: Remoção de alimentos nulos e aproximação de dados em Python usando Pandas e KMeans ============================================================================================ Introdução ---------- Neste documento, exploraremos como remover valores nulos em conjuntos de dados e aprimorar nosso conjunto de dados usando a biblioteca de código aberto Pandas. Ao final, implementaremos o método de elbow para determinar o número ótimo de clusters para um conjunto de dados fortemente dimensionado usando o KMeans da bibliotecasklearn. Remoção de valores nulos no Python com Pandas ----------------------------------------------- Quando estivermos trabalhando com conjuntos de dados, ocorrerá muitas vezes que temos que remover ou normalizar dados nulos ou ausentes para que possamos processar e visualizar esses dados de forma correta. Este exemplo mostrará como utilizar a biblioteca Pandas para remover dados nulos de um conjunto de dados. ### Passos para remover dados nulos 1. Importar a biblioteca Pandas. 2. Ler o conjunto de dados CSV. 3. Verificar quantos valores nulos aparecem em cada coluna. 4. Remover as linhas ou colunas com valores nulos. 5. Salvar o conjunto de dados alterado em um novo arquivo CSV. ``` # Importando a biblioteca Pandas import pandas as pd # Lendo o conjunto de dados CSV df = pd. read_csv('meu_conjunto_de_dados. csv') # Verificando quantos valores nulos aparecem em cada coluna df. isnull(). sum() # Seguir as etapas de remoção de dados nulos de acordo com a sua preferência # Por exemplo, neste exemplo, irá remover as linhas com valores nulos df = df. dropna() # Salvar o conjunto de dados alterado em um novo arquivo CSV df. to_csv('meu_conjunto_de_dados_sem_nulos. csv', index=False) ``` Para obter uma análise mais detalhada das soluções que a Pandas tem para normalizar dados nulos, visite [Pandas cheat sheet](https://cheat-sheets.quantech.info/pandas-cheat-sheet-2/) (em português). Aproximação de dados com KMeans --------------------------------- Embora a remoção de dados nulos seja uma etapa importante para trabalhar com um conjunto de dados, devemos sempre tentar aproximar dados nulos, pois normalmente os dados nulos nos prevenem de realizar análises precisas e identificar relações significativas. Para aproximar dados nulos, utilizaremos o método KMeans da biblioteca sklearn. Após remover dados nulos, a próxima coisa normalmente aquilo é a inicialização do KMeans. ``` # Importando a biblioteca KMeans from sklearn. cluster import KMeans # Definindo o conjunto de dados X = . . . # Definindo um número de clusters k = . . . # Definindo as configurações de inicialização init = . . . max_iter = . . . n_init = . . . random_state = . . . # Inicializando o KMeans kmeans = KMeans(n_clusters = k, init = init, max_iter = max_iter, n_init = n_init, random_state = random_state) kmeans. fit(X) # Extraindo os dados aproximados y = kmeans. labels_ ``` Aplicando o método KMeans ------------------------ Neste exemplo, irá apresentar e analisar como utilizar o método KMeans para definir o número ótimo de clusters em um conjunto de dados com efeitos estratégicos. Pela hipótese de datos fictícios, considere um conjunto de dados contendo informações sobre categorias e preços de carros. Este conjunto de dados terá 200 linhas e 10 colunas, onde cada linha representa um carro diferente. O objetivo deste experimento é analisar como é possível encontrar o número ótimo de clusters em um conjunto de dados com base nos valores de preços juntamente com as categorias e identificar se eles podem ser utilizados para classificar os carros em categorias de segmento de preço. ### Passos básicos do experimento: 1. Carregar o conjunto de dados. 2. Verificar um subconjunto dos dados para análise e aprovar a técnica de visualização. 3. Verificar se eles possui valores nulos e removê-los. 4. Aproximar valores nulos usando KMeans. 5. Inicializar KMeans com várias configurações e encontrar o número ótimo de clusters. 6. Treinar, predizer e validar o KMeans para verificar o desempenho. 7. Verificar a qualidade dos clusters e representá-los visualmente. 8. Analisar o efeito do número de clusters na qualidade dos dados. ``` # Importando bibliotecas import numpy as np import pandas as pd import matplotlib. pyplot as plt from sklearn. cluster import KMeans from sklearn. metrics import silhouette_score # Carregando o conjunto de dados data = pd. read_csv('cars. csv') # Análise de um subconjunto dos dados para selecionar o número ótimo de clusters # As categorias deste conjunto são: Hybrid, Diesel, Gasoline, Electric, Combustível Desconhecido data[['Category', 'Price']]. head() # Verificando quantos valores nulos aparecem em esta coluna data. isnull(). sum() # Removendo valores nulos data = data. dropna() # Aproximando os valores nulos data['Price'] = data['Price']. fillna(data['Price']. mean()) # Preparando um vetor de dados X X = np. array(data[['Category', 'Price']]) # Definindo um número de clusters inicial para busca sequencial do número ótimo de clusters. k_start = 2 k_end = 8 step = 1 # Gerando diferentes configurações para KMeans configs = {} configs['k'] = [] configs['inertia'] = [] # Gerando diferentes configurações para KMeans inicializando-as com a estratégia k-means++ for k in range(k_start, k_end, step): configs['k']. append(k) configs_kmeans = {'init': 'k-means++', 'n_init': 10, 'max_iter': 300, 'random_state': 0} kmeans = KMeans(n_clusters = k, **configs_kmeans) kmeans. fit(X) configs['inertia']. append(kmeans. inertia_) # Buscando o número ótimo de clusters com a função de silueta scores = {} scores['k'] = [] for k in configs['k']: scores['k']. append(k) scores[k] = (silhouette_score(X, kmeans. labels_) for kmeans in kmeanss) scores[k] = np. mean(list(scores[k])) # Verificando o número ótimo de clusters best_k = np. argmax(scores['silhouette']) # Treinando, predizendo e analisando o KMeans do número ótimo de clusters encontrado anteriormente best_kmeans = KMeans(n_clusters = best_k, **configs_kmeans) best_kmeans. fit(X) # Practicando o KMeans y_pred = best_kmeans. predict(X) y_data = data["Category"] centroids = best_kmeans. cluster_centers_ # Verificando a qualidade dos clusters plt. scatter(data["Price"], data["Category"], c = y_pred, cmap = plt. cm. coolwarm_r, alpha = 0. 8) plt. scatter(centroids[: , 0], centroids[: , 1], marker = 'x', s = 200, color = 'k', alpha = 0. 8) plt. xlabel("Preço") plt. ylabel("Categoria") plt. title("Qualidade dos clusters") plt. show() # Analisando diferentes conjuntos de dados e diferentes tamanhos de amostragem para encontrar o desempenho ``` Resultados ---------- Neste experimento, foi utilizado um conjunto de dados fictício contendo 200 linhas e 10 colunas com categorias de carros e preços. A análise de um subconjunto de dados foi realizada para selecionar o número ótimo de clusters. Depois de carregar o conjunto de dados e verificar informações estudadas, foi possível identificar valores nulos e removê-los a partir deles pelo conjunto inteiro. O número ótimo de clusters para este conjunto de dados foi identificado como 4. Assim, o KMeans foi treinado com 4 clusters. A análise para verificar se o KMeans treinado está representando adequadamente o conjunto de dados é necessário analisar se os clusters que foram gerados tem exatamente uma centroid (em português, centroide) para cada classe. As figuras abaixo mostram isto: ! [KMeans com 4 clusters treinado para a análise de um subconjunto do conjunto de dados](images/kmeans_samples. png) Embora o KMeans tenha feito um bom trabalho em encontrar o número ótimo de clusters e seus respectivos centroide s, a maneira como os dados estão distribuídos na Figura 1 mostra que um número menor de clusters pode ser mais adequado para separar completamente os dados. Para descobrir o motivo perante isto, foi necessário verificar os dados e analisar se há registro de erros nos dados com preços similares. Depois de verificar a representatividade de alguns registros, ficou claro que alguns dos centroide s têm como resultado registros de dados com preços que não representam o valor esperado. Para corrigir este problema, substitui-se por uma centroide representativa de todos os registros que estão próximos a um determinado centroide. Apesar de apenas substituir alguns registros dos 4 clusters quais originais, a análise utilizando KMeans com 4 clusters treinado agora produziu o resultado esperado com uma não sobreposição de clusters. A Figura 2 abaixo mostra esta análise final. ! [KMeans com 4 clusters treinado para a análise da base de dados completa](images/kmeans_final. png) O número ótimo de clusters para este conjunto de dados foi agora determinado como 3. O KMeans foi treinado com 3 clusters para analisar os dados completamente. A análise dos dados mostrou que o número ótimo de clusters depende diretamente da qualidade dos dados fornecidos. Durante este experimento, houve um registro de erros em alguns dados com valores similares que contamserviram de origem na representatividade inadequada dos clusters durante a análise por KMeans. Referências ------------ [1] scikit-learn](http://scikit-learn.org/stable/) [2] Pandas](http://pandas.pydata.org/) [3] Matplotlib](https://matplotlib.org/) [4] Sklearn Cheat Sheet: [PDF disponível](http://scikit-learn.org/stable/resources/cheatsheets.html?highlight=cluster#kmeans-clustering-table) (em português) ### Recursos da Biblioteca de Plot A biblioteca de plot oferece uma variedade de recursos úteis, um deles sendo a capacidade de adicionar uma lenda. A lenda é automaticamente gerada, pois já estamos antes termos marcado diferentemente os aspectos da lenda com 'Toyota', 'Nissan' e 'Honda'. Por exemplo, pode ser vista uma clara divisão de nestes aglomerados nesta diagramo: ``` - Honda - Verde Toyota - Vermelho Nissan - Roxo ``` Estes aglomerados estão separados pelos centróides que foram posicionados adequadamente. Lembre-se que se usar uma editor diferente do Jupyter Notebook, pode rec Beijing uma janela pop-up desta lenda em vez de. ! [Imagem de Aglomerados]({your_image_url_here}) ### Usando K-Means para Agrupamento Agora que viu como usar o K-Means para agrupamento, vamos avançar para o próximo tópico. ### Regressão Logística O algoritmo de regressão logística é o mais simples para classificação, usado tanto para problemas binários como multiclasse. Vamos voltar a nosso pequena canadiana que é aficionada às histórias de terror. No seu tutorial anterior, aprendemos sobre regressão linear e suas variáveis independentes e dependentes. Como um lembrar: ``` y = mx + c ``` Neste caso, `y` é a variável alvo que será previsível. As variáveis independentes `x1` através de `xn` são as características ou atributos que serão usadas para prever a variável alvo. Em contraste com regressão linear, o gráfico de regressão logística não é facilmente dividido em categorias. No entanto, em casos em que precisamos da saída como um valor categorical, utilizaremos a regressão logística. Neste exemplo, considere `y` como os grados obtidos, e `x` como o número de horas estudadas. Utilizaremos a função de sigmoide para gerar uma curva de sigmoide, que ajuda-nos a categorizar a saída: ``` p = 1/(1 + e^(-y)) ``` Por tomar o logaritmo natural, obtemos a seguinte equação: ``` ln(p / (1 - p)) = m * x + c ``` Esta é a função de curva logística que pretendemos usar. A partir de uma visão mais detalhada da função, podemos ver que a função vai para 0 ou 1 dependendo do valor de x. Se o valor for maior que 0, 5, o estudante provavelmente passará. Em contraste, se o valor for menor que 0, 5, o estudante provavelmente falhará. ### Caso de Uso: Classificando o Tumor Um dos datasets de que gosto mais trabalhar é o dataset de classificação de tumor, em particular para identificar se um tumor é úmido ou benigno. Este dataset possui várias características, tornando-o desafiador entender sem conhecimento específico do domínio. É uma ótima oportunidade para explorar como diferentes dados aparecem sem a compreensão clara de domínio específico. Lembre-se de que a probabilidade alta pode ser promissora (por exemplo, 90% ou 95%), mas ainda deverá realizar uma biopsia, pois o domínio é medicina é muito sério. Este modelo poderia ajudar os médicos a identificar certos tipos de tumor, o que pode ajudar-lhes a entender o que eles possivelmente perderam anteriormente. ### Regressão Logística: Exemplo de Código ```python import numpy as np import pandas as pd import seaborn as sns import matplotlib. pyplot as plt # Defina matplotlib para inline no Jupyter Notebook %matplotlib inline # Importa as bibliotecas necessárias import numpy as np import pandas as pd import seaborn as sns import matplotlib. pyplot as plt # Carregue o dados data = pd. read_csv("dataforp2. csv") # Explorar os dados data. head() # Usando seaborn para criar uma représentación de plot do primeiro e do segundo colunas sns. jointplot(data['tamanho médio'], data['support vector']) ``` Fique livre de modificar este código para ajustar-se ao caminho do seu dataset em caso de estar localizado em um diretório diferente. Este código mostra como carregar e explorar os dados com a função jointplot de seaborn. É uma ótima forma de conseguir uma mobilidade rápida da sua visualização dos dados sem afetar os resultados. Para uma análise mais determinada, é possível avaliar a correlação entre as diferentes características para identificar padrões que podem ajudar a prever o tipo de tumor. # Análise de Dados usando Pandas e Seaborn ## Explorando valores nulos em Dados Nesta seção, aprenderemos a verificar valores nulos em nosso conjunto de dados usando a biblioteca `pandas`. Se lembrarmos de tempos anteriores deste treinamento, verificávamos valores nulos de forma diferente, contando valores ao invés de usar algum método de `pandas`. No entanto, `pandas` nos oferece isto rapidamente e facilmente. ```markdown data. isna(). sum() ``` Este comando verifica valores nulos em todas as colunas. Quando executar isto, veremos todas as colunas com nenhum valor nulo. Isto ajuda a garantir que não existam valores faltantes em nosso conjunto de dados, o que é uma etapa importante para evitar erros depois no processo. ### Dividindo os Dados Continuando, iremos focar nos dados piores criando um vetor que contenha os dados piores para "radius", "texture", "perimeter", "area", "smoothness", "compactness" e outros parâmetros. Isto é feito para prevenir o envergonhamento de determinados pontos de dados e facilitar o exame dos dados. ```markdown # Criar um vetor contendo os dados piores para cada parâmetro x = data[['radius', 'pior', 'texture', 'pior', 'perimeter', 'pior', 'area', 'pior', 'smoothness', 'pior', 'compactness', 'pior']] # De modo que se interessemos apenas na diagnóstico, a variável y conterá esta informação. y = data['diagnosis'] ``` ### Divisão dos Dados e Modelagem É importante testar o modelo, então dividiremos os dados em conjuntos de treinamento e de teste usando `train_test_split` do módulo `sklearn. model_selection`. ```markdown from sklearn. model_selection import train_test_split # Divisão dos dados em conjuntos de treinamento e de teste x_treino, x_teste, y_treino, y_teste = train_test_split(x, y, test_size=0. 3, random_state=42) ``` Aqui, estamos dividindo os dados em dois grupos, mas também é possível dividi-los em três grupos e testar o modelo contra cada grupo. Isto é além do escopo deste treinamento, mas é importante saber que é uma opção. ### Criando e Treinando o Modelo Agora, criaremos e treinaremos um modelo de regressão lógica usando a classe `LogisticRegression` da biblioteca `sklearn`. ```markdown from sklearn. linear_model import LogisticRegression # Importar e criar o modelo de regressão lógica log_reg = LogisticRegression() ``` Depois de criar o modelo, treinaremos-o sobre os dados de treinamento usando o método `fit`. ```markdown # Treinar o modelo sobre os dados de treinamento log_reg. fit(x_treino, y_treino) ``` ### Predizendo e Avaliando o Modelo Por fim, criaremos uma variável para conter os valores pré-dictados e usar o método `predict` para fazer previsões sobre os dados de teste. ```markdown # Criar uma variável para conter os valores pré-dictados y_pred = log_reg. predict(x_teste) # Imprimir os valores pré-dictados print(y_pred) ``` Para avaliar o modelo, podemos usar o `classification_report` do módulo `sklearn. metrics` para obter um relatório sobre a precisão, a f1-score, a memória e o ajuste do modelo. ```markdown from sklearn. metrics import classification_report # Criar uma variável para conter o relatório de classificação report = classification_report(y_teste, y_pred) # Imprimir o relatório de classificação print(report) ``` Isto dar-nos um relatório sobre o desempenho do nosso modelo de regressão lógica, incluindo a precisão, memória, ajuste e a f1-score para cada classe. ## Respostas para o Quiz sobre aprendizagem de máquina As seguintes exemplos ilustram casos de agrupamento e classificação: 1. Agrupar documentos em diferentes categorias com base em assunto e conteúdo de cada documento: Isso é um exemplo de agrupamento. Um método para realizar isso é o agrupamento k-means através do abordagem bag-of-words. 2. Identificar dígitos e imagens corretamente: Isso é um exemplo de classificação. Um abordagem tradicional para resolver este problema seria extrair características digit-dependentes, como a curvatura dos dígitos, etc. , e, em seguida, usar um classificador como o SVM para distinguir entre imagens. Se identificar esse problema como um problema de classificação, e sugerir o uso de SVM ou outro modelo, dá-se uns dois pêlos em cima! # Workshop de Aprendizagem de Máquina - Agenda Este documento fornece informações sobre a agenda de um workshop sobre aprendizagem de máquina. Ele contém informações sobre tipos de dados, álgebra linear, cálculo, estatística, probabilidade, redes neurais, e demonstrações práticas. Vá para citação abaixo para obter mais detalhes sobre cada área. ## Deteção de Anomalias e Regressão ### Deteção de Anomalias - Detectação de Anomalias é a capacidade limitada de um algoritmo para detectar se o comportamento observado é diferente do padrão esperado. - Ela aprende um padrão normal e um padrão anormal observando os logs de um website. - Aplicações: detecção de anomalias em mercados de valores ou ações. > "Os mercados de valores são muito voláteis e eles se comportam de forma extremamente radical, portanto, localizar essas áreas radicais e depois encontrar formas de rastreá-las pelo que foi postado nas redes sociais foi algo importantíssimo. " ### Regressão - Regressão é um modelo de aprendizado de máquina que previsiona a relação entre uma variável dependente e uma variável independente. - Um exemplo de regressão é previsão de salário de uma pessoa com base em suas experiências. > "Predizir o salário de uma pessoa com base em suas experiências. . . se você conjectura que a variável independente é uma função da variável dependente e que os termos lhe dão dois polegadas para cima. " ## Dados e Tipos de Dados - Dados são informações coletadas de várias fontes, armazenadas e analisadas. - Os dados podem ser de duas categorias: qualitativos ou quantitativos. ### Dados Qualitativos - Dados Qualitativos (também chamados de implícitos) não possuem um valor numérico disponível. - Podem ser classificados em ordinais ou nominais. #### Dados Nominais - Dados Nominais são os rótulos fornecidos para variáveis para que possam ser apresentadas de forma mais simples. - Exemplos: cor da pele, país, etc. #### Dados Ordenados - Dados Ordenados são dados categoricos com uma escala ordenada, às vezes rotulada. - Exemplo: Salário, avaliação em movimentos, etc. ### Dados Quantitativos - Dados Quantitativos representam um valor numérico. - Podem ser discretos ou contínuos. #### Dados Discretos - Dados Discretos são caracterizados por terem um valor numérico disponível definido, independentemente de ser inteiro ou não. - Podem ser considerados como inteiros restritos, definidos entre um número específico de valores. Exemplo: Resultados em um encquadramento estatístico. ## Álgebra Linear - Álgebra Linear é a disciplina matemática que trata de equações lineares e sua representação em espaços vetoriais através de matrizes. ### Matrizes - Matrizes são configurações rectangulares de um array de números ordenados em linhas e colunas. Aqui apresentamos alguns tópicos sobre matrizes: > "Matrizes referem-se a uma representação rectangular de um array de números ordenados em linhas e colunas. Assim, uma matriz apresenta-se aqui como m linhas por n colunas. Aqui a11 denota o elemento da primeira linha na primeira coluna, de modo semelhante a a12, o que se refere à primeira linha e segunda coluna, etc. " ## Multiplicação de Matrizes - Multiplicação de matrizes é uma operação básica disponível para trabalhar com matrizes no ambiente R. > "Multiplicação ao olhar parece mais como a multiplicação de um número por um valor em que "1x2 4x3" mas se olharmos mais detidamente sabemos que vai resultar na soma de várias multiplicações de 1 por 2 mais 4 por 3 entre outras, tal como em nossas igualdades lineares. " ## Transposição de Matrizes - A transposição de uma matriz é feita trocando-se as linhas e colunas e, frequentemente, denotada por `A'` ou `${A}^t$` ## Múltiplas Operações Com Matrizes - A adição e subtração de matrizes é similar à adição de parâmetros numéricos e é definida através da adição simples elemento a elemento: $a + b = \{a\_ij + b\_ij\}$ ## Divisão por escalar - Multiplicação de uma matriz por um escalar. > "Se uma matriz for multiplicada por um escalar, digamos que por 2. Essa é simplesmente como multiplicar todos os elementos da matriz por 2 $2 \cdot \textbf{A}$" ## Multiplicação de Matrizes Transpostas por Matriz - $A^t \cdot A = \|A \cdot A\|^2$ ## Multiplicação de Matrizes - Para se multiplicar matrizes o número de colunas da matriz A deve ser igual ao número de linhas da matriz B. Isso diferencia a multiplicação de matrizes da multiplicação entre um escalar e uma matriz. O resultado de se multiplicar matrizes é outra matriz. > "Ao multiplicar matrizes, o número de colunas de uma matriz A deve ser igual ao número de linhas de uma matriz B. Isto é diferente do produto entre um escalar e uma matriz. O resultado de se multiplicar matrizes é outra matriz. " # Demonstração de Álgebra Linear ## Tempo Você tem uma matriz em que, originalmente, tinha 12 8, mas agora tem 12 14 8 21. Está apenas invertendo as colunas e linhas. Depois, claro, você pode fazer um inverso, mudando os sinais dos valores na diagonal principal. Aqui podemos ver como o inverso `a^{-1}` acaba com: ``` -22 -12 ``` em vez de 12 8. ## Vetores Um vetor simplesmente significa que temos um valor e uma direção. Aqui, temos quatro números a seguir para nosso vetor. Na matemática, uma matriz umidimensional é chamada de _vetor_. Se você tiver sua eixo x, e tiver um único valor, é operando na eixo x e tem uma dimensão única. Se você tiver dois eixos, pode se pensar em colocá-los em um gráfico. Você pode ter x, y, e cada valor indica uma direção. A distância real será associada ao cateto do cuescate do triângulo. Isso pode ser feito com três dimensões (x, y, z) e até mesmo para espaços de dimensão n. ## Classificação K-means Quando se fala no algoritmo K-means para classificar e quanto eles estão próximos um do outro, ele calcula isso baseado no teorema de Pitágoras. Você deve calcular a soma dos quadrados de cada valor, somá-los todos juntos e tomar a raiz quadrada. Isso dá uma distância para saber onde esse ponto ou esse vetor está ou um valor exato. Então, você pode comparar o valor do ponto com outro. É uma comparação fácil em vez de comparar 50 ou 60 números diferentes. ## Vetores i-gene e valores i-gene Os vetores de higiene são vetores que não alteram seu domínio durante a transformação. Os valores i-gene são os valores de escalar associados aos vetores. Conceitualmente, você pode pensar neste vetor como sua noção de imagem. Você tem uma imagem, que é duas dimensões (x, y), e então, quando você faz essas duas dimensões e esses dois valores (qualquer um desses valores), isso é esse ponto. No entanto, os valores mudam quando você distorce. Portanto, se tomamos e temos um vetor `a` e isso é nossa sete de valores, `b` é o vetor de i-gene 2, que é o valor de i-gene. Assim, estamos alterando todos os valores em duas unidades. Mas você pode ver, ao transformar suas informações diferentes, como você transfigura é então o valor de higiene. Aqui, após a transformação linear, temos `3a` (`a` é o vetor de higiene) e 3 (é o valor de envelhecimento). Então, `a` não é alterado, isso é o que começamos, é a sua imagem original, 3 está fazendo distorção na direção de uma. ## Demonstração de Álgebra Linear Para isso, vou passar por meu Anaconda para meu Jupyter notebook e criaremos um novo notebook chamado álgebra linear. Como estamos trabalhando em Python, usaremos a nossa NumPy (importada como np ou numpy). Aqui, vamos prosseguir e criar duas variáveis diferentes: ```python import numpy as np a = np. array([10, 15]) b = np. array([29]) ``` Ps: aqui você pode adicionar `a + b` para somar as nossas matrizes: ```python print(a + b) ``` Isso vai dar 30 24, que é o que você espera (10 + 20, 15 + 9). Podemos fazer isso de uma maneira diferente e fazer `np. dot(a. T, b)`: ```shell print(np. dot(a. T, b)) ``` Isto vai dar 30 24 irão de outra maneira. Podemos subtrair um vetor de outro apenas marcando `a - b`: ```python print(a - b) ``` Isso vai dar: ```shell [-19 -14] ``` Essa é a última linha deste trecho, portanto, não precisamos de libelinha com print dentro. Podemos também fazer a muitiplicação por escalar apenas indicando `scalar`: ```python a * scalar ``` Aqui, temos `scalar`, que é o único valor, e temos a matriz `b`, então, podemos também fazer `scalar * b` como mostrado. ## Multiplicação de Matriz e Vetor Temos as matrizes `a` e `b`: ```python a = np. array([[10, 20, 25, 6], [4, 31]]) b = np. array([1, 2]) ``` Vamos ir adiante e fazer `np. dot(a, b)`: ```python print(np. dot(a, b)) ``` Isto vai dar 370 370, que é uma multiplicação de matrizes e vetores em que é usada para resolver o algoritmo linear quando você tem múltiplas entradas para e múltiplos valores a serem avaliados. Podemos criar duas matrizes complexas: ```python a = np. array([[12, 10, 4, 6], [4, 31, 4, 3]]) ``` Podemos somar matrizes: ```python a + np. array([[2, 8], [26, 4]]) ``` Este vai dar 14 18, e assim por diante, como fizemos a soma de matrizes que fizemos antes. Podemos também fazer subtração de matriz: ```python a - np. array([[2, 8], [26, 4]]) ``` Isso vai dar 10 10, e assim por diante, você sabe, apenas como fazemos a subtração de matrizes. Similar à soma de matriz, podemos fazer a multiplicação por escalar: ```python a * scalar ``` Isto vai dar: ``` array([[24, 20, 16, 12], [ 8, 64, 8, 32]]) ``` ## Multiplicação de Matriz e Vetor Temos uma matriz `a`, que é nossa matriz de matrizes, e temos uma matriz única `b`. Então podemos fazer `np. dot(a, b)`. Isso retorna dois valores e o primeiro valor pode ser considerado como o produto escalar entre o primeiro array em `b` com toda matriz em `a`, e então com o segundo array em `b` com o resto das matrizes em `a`. Lembre-se, se você estiver fazendo ciência de dados, frequentemente não estará vendo isto (isto é o que está acontecendo por trás da cena), portanto se você estiver na sklearn (onde você faz modelos de regressão linhares), isso é algumas das matemáticas que está sendo escondida por trás da cena que está acontecendo. Por vezes, você pode encontrar que precisará fazer parte deste e manipular a data por suas voltas para que ela se adapte, e depois você retorna para trás e o passa através da sklearn. Podemos também fazer a multiplicação de dois matrizes de matriz: ```python np. dot(np. array([[10, 20, 25, 6], [4, 31, 4, 3], [8, 19, 1, 2]], np. array([1, 2, 3, 4])) ``` Isso dá: ``` array([[162, 168, 153, 156], [252, 264, 238, 240], [240, 252, 222, 228]]) ``` ## Transposes Temos uma matriz à transe: ```python print(np. transpose(a)) ``` E tentamos inverter a ordem de sua linha e coluna. Podemos incluir o `T` notação diretamente em nossas matrizes: ``` print(a. T) ``` Essa é uma ferramenta importante para a matemática e para plotagem e para todo o tipo de coisas. ## Matriz Identidade Uma matriz identidade é uma matriz que cria uma diagonal de um, por exemplo uma matriz identidade 2 x 2 fica assim: `1 0 0 1`. Você cria esta matriz preset e em seguida você pode ajustar estes números de acordo com o que você está trabalhando e como o domínio é. ## Inversa de Matriz A inversa de uma matriz pode ser encontrada usando a biblioteca NumPy: ```python np. linalg. inv(np. array([[2, 1], [1, 2]]) ``` Isto retorna a matriz inversa que satisfaz `a × inverse(a)`, que é a matriz identidade). # Álgebra e Cálculo em Aprendizagem de Máquina ## Visão Geral Nesta seção, entraremos no lado de cálculo da aprendizagem de máquina, com o foco em cálculo e equação diferencial. Conceitos matemáticos essenciais, especialmente quando se trabalha com rede neural grandiosa, mas também surgem em muitas outras áreas. Felizmente, a maior parte do trabalho já foi feito para nós pelo backend, portanto nosso enfoque será no entendimento deles a partir de uma perspectiva de ciência dos dados. ### Velocidade vs Tempo Para entender o cálculo, vamos considerar a velocidade de um carro em relação ao tempo. Suponha que grafeamos uma gráfico da velocidade de um carro em relação ao tempo. ``` algebra side of it let's go ahead and take a look at the calculus side of what's going on here with the machine learning so calculus oh my goodness and differential equations you got to throw that in there because that's all part of the bag of tricks especially when you're doing large neural networks but also comes up in many other areas the good news is most of it's already done for you in the back end so when it comes up you really do need to understand from the data science not data analytics data analytics means you're digging deep into actually solving these math equations and a neural network is just a giant differential equation so we talk about calculus we're going to go ahead and understand it by talking about cars versus time and speed ``` Pode ver que o carro acelera ao se juntar à autoestrada, chega à velocidade máxima e então lenta quando Peter desce. ### Calculando a Aceleração Para calcular a aceleração, encontramos a taxa de mudança da velocidade em relação ao tempo. Aqui, a aceleração é a área entre o ponto de partida `x` e o ponto de chegada `delta x`. ``` so Suppose we plot a graph of the speed of a car with respect to time so as you can see here going down the highway probably merged into the highway from an on-ramp so i had to accelerate so my speed went way up uh stuck in traffic merged into the traffic traffic opens up and i accelerate again up to the speed limit and uh maybe peter's off up there so you can look at this is as the speed versus time i'm getting faster and faster because i'm continually accelerating and if i hit the brakes you go the other way so the rate of change of speed with respect of time is nothing but acceleration how fast are we accelerating the acceleration is the area between the star point of x and the endpoint of delta x so we can calculate a simple if you had x and delta x we could put a line there and that slope of the line is our acceleration now that's pretty easy when you're doing linear algebra but i don't want to know it just for that line and those two points i want to know what across the whole of what i'm working with that's where we get into calculus ``` No cálculo, aproximamos a aceleração dividindo as intervalos de tempo em pequenas partes e calculando a aceleração em cada intervalo. Eventualmente, fazemos o espaço (`delta x`) infinitamente pequeno, o que nos dá a integral. ``` so we talk about the distance between x and delta x it has to be the smallest possible near to zero in order to approximate the acceleration so the idea is instead of i mean if you ever did took a basic calculus class they would draw bars down here and you would divide this area up let's go back up the screen you divide this area of this time period up into maybe 10 sections and you'd use that and you could calculate the acceleration between each one of those 10 sections kind of thing and then we just keep making that space smaller and smaller until delta x is almost infinitesimally small and so we get a function of a equals a limit as h goes to 0 of a function of a plus h minus a function of a over h and that is you're computing the slope of the line we're just computing that slope under smaller and smaller and smaller samples and that's what calculus is calculus is the integral ``` ### Cálculo Múlti-variado O cálculo multivariado se refere a funções que possuem variáveis múltiplas. Ele envolve equações complexas e traduz em integração múlti-variada usando integrais duplas. ``` when we talk about multivariate calculus multivariate calculus deals with functions that have multiple variables and you can see here we start getting into some very complicated equations change in w over change of time equals change of w over change of z the differential of z to dx differential of x to dt it gets pretty complicated uh it really translates into the multivariate integration using double integrals and so you have the the sum of the sum of f of x of y of d of a equals the sum from c to d and a to b of f of x y d x d y equals uh the sum of a to b sum of c to d of f x y d y d x understanding the very specifics of everything going on in here and actually doing the math is usually calculus 1 calculus 2 and differential equations so you're talking about three full-length courses to dig into and solve these math equations ``` ### Aplicações do Cálculo O cálculo fornece as ferramentas para criar um modelo preditivo preciso. Ajuda-nos a compreender como as mudanças estão acontecendo e como essas mudanças afetam outras variáveis. ``` what we want to take from here is we're talking about calculus uh we're talking about summing of all these different slopes and so we're still solving a linear expression we're still solving y equals m x plus b but we're doing this for infinitesimally small x's and then we want to sum them up that's what this integral sign means the sum of a of x d of x equals a plus c and when you see these very complicated multivariate differentiation using the chain rule when we come in here and we have the change of w to the change of t equals the change of w dz and so forth that's what's going on here that's what these means we're basically looking for the area under the curve which really comes to how is the change changing speeds going up how is that changing and then you end up with a multiple layer so if i have three layers of neural networks how is the third layer changing based on the second layer changing which is based on the first layer changing and you get the picture here that now we have a very complicated multivariate integration with integrals ``` A boa notícia é que podemos resolver isto matematicamente, e isso é o que fazemos quando trabajamos com redes neurais e propagação inversa. O trabalho pesado de cálculo e equação diferencial é geralmente feito para nós, portanto nos oprimosharemos em colocar juntos o código para construir os modelos. ``` the nice thing is um all the heavy lifting's done i actually ended up putting together one of these a while back as when i didn't know about sidekick and i was just starting boys a long while back and uh is playing high low how do you play high low not get stuck in the valleys uh figure out these curves and things like that well you do that and the back end is all the calculus and differential equations to calculate this out the good news is you don't have to do those so instead we're going to put together the code and let's go ahead and see what we can do with that so uh guys in the back put together a nice little piece of code here which is kind of fun uh some things we're gonna note and this is this is really important stuff because when you start doing your data science and digging into your machine learning models you're going to find these things are stumbling blocks the first one is current x where do we start at keep in mind your model that you're working with is very generic so whatever you use to minimize it the first question is where do we start and we started at this because the algorithm starts at x equals three so we arbitrarily picked five learning rate is uh how many bars to skip going one way or the other i'm in fact i'm going to separate that a little bit because these two are really important if we're dealing with something like this where we're talking about well here's our here's the function we're going to use our gradient of our function 2 times x plus 5 keep it simple so that's a function we're going to work with so if i'm dealing with increments of a thousand point one is going to be a very long time and if i'm dealing with increments of 0. 001 0. 1 is going to skip over my answer so i won't get a very good answer and then we look at precision this tells us when to stop the algorithm so again very specific to what you're working on uh if you're working with money and you don't convert it into a float value uh you might be dealing with 0. 01 which is a penny that might be your precision you're working with and then of course the previous step size max iterations we want something to cut out at a certain point usually that's built into a lot of minimization functions and then here's our actual formula we're going to be working with and then we come in we go while previous step size is greater than precision and it is less than max and max iters say that 10 times fast we're just saying if it's uh if we're if we're still greater than our precision level we still got to keep digging deeper um and then we also don't want to go past a thou or whatever this is a million or ten thousand uh running that's actually pretty high i almost never do max iterations more than like 100 or 200 rare occasions you might go up to four or 500 if it's depending on the problem you're working with uh so we have our previous equals our current that way we can track timewise the current now equals the current minus the rate times the formula of our previous x so now we've generated our new version previous step size equals the absolute current previous so we're looking for the change in x errors equals iterations plus one that's so we know to stop if we get too far and then we're just going to print the local minimum occurs at x on here and if we go ahead and run this you can see right here it gets down to this point and it says hey local minimum is minus 3. 3222 for this particular series we created this is created off of our formula here lambda x two times x plus five now when i'm running this stuff uh you'll see this come up a lot in uh with the sk learn kit and one of the nice reasons of breaking this down the way we did is i could go over those top pieces uh those top pieces are everything when you start looking at these minimization tool kits in built-in code and so from um we'll just do it's actually docs dot scipy. org and we're looking at the scikit there we go optimize minimize you can only minimize one value you have the function that's going in this function can be very complicated so we used a very simple function up here it could be there's all kinds of things that could be on there and there's a number of methods ``` [Aqui está o código de descida de índice](https://scikit-learn.org/stable/modules/generated/sklearn.optimize.minimize_scalar.html), que é uma ferramenta essencial para encontrar a melhor resposta a um problema. A descida de índice desempenha um papel crucial na identificação da resposta otimizada e será abordado em mais detalhes em uma seção separada. # Resolvendo um problema: Entendendo o encolhimento e valores iniciais Para resolver este problema, precisaremos entender como algumas variáveis encolhem e encontrar o seu valor inicial. 1. **Sua posição inicial** Seu método (ou algoritmo) precisa de um ponto de partida, ideia de algo que você já sabe que está principalmente a solução. Se não tiver um ponto de partida, terá uma dificultade para calcular o resultado ou você pode escrever seu próprio script que faz uma análise de alto e baixo e tenta achar o valor máximo. 2. **Estatística: Entendendo os dados** A estatística se preocupa com a coleta, organização, análise, interpretação e apresentação dos dados. 3. **Passos de análise de dados** * É valido o dado? * O que isso significa? * Como o organizamos? * Como o analisamos? * Como interpretamos a análise? * Como apresentamos de forma que as pessoas possam compreendê-lo? 4. **Dominios e população** A população inclui todos os objetos ou medições cujas propriedades estão sendo observadas. Os objetos podem ser tão diversos quanto as pessoas, componentes mecânicos ou ventiladores de esgoto. 5. **Parâmetro, amostra e variáveis** * Parâmetro: Uma matriz que é usada para representar uma população ou característica. * Amostra: Uma subamostra da população estudada. Não queremos estudar toda a população porque não é prático. A mostra nos ajuda a testar nossas conclusões. * Variável: Uma métrica de interesse para cada pessoa ou objeto na população. 6. **Tipos de amostragem** * Aproximada probabilística: seleciona amostras de uma população maior baseada na teoria da probabilidade. Vamos entrar em mais detalhes sobre isso mais tarde. * Amostragem não probabilística: seleciona amostras baseado no julgamento subjetivo do investigador em vez de seleção aleatória. 7. **Amostragem aleatória e amostragem sistemática** * Amostragem Aleatória: seleciona amostras de tamanho aleatório de todos os grupos ou categorias com o menor preconceito possível. * Amostragem Sistemática: seleciona amostras de tamanho aleatório de todos os grupos ou categorias com intervalo fixo. 8. **Amostragem estratificada** A amostragem estratificada envolve selecionar amostras aproximadamente iguais de cada grupo ou categoria para separar as categorias e obter insights sobre diferentes culturas e seus efeitos. 9. **Estatística descritiva e estadística inferencial** A estatística descritiva é utilizada para descrever as características básicas dos dados. O exemplo inclui média, mediana, modo, intervalo, variância e desvio-tipo padrão. A estatística inferencial é utilizada para fazer previsões sobre uma população maior baseada em uma população menor. 10. **Média central** * Média: O resultado médio da amostra de dados. * Mediana: separa a metade superior da metade inferior do conjunto de dados. * Mode: A valores mais frequentes. 11. **Métricas de dispersão** * Espaço: O diferença entre o maior e o menor valor. * Interquartile range: divide um conjunto de dados ordenado em quatro partes iguais. * Variância: mimir as distâncias de cada número da amostra em relação à média. * Desvio-tipo padrão: mimir a variância ou a dispersão de uma série de dados em relação à média. Ao examinar a estatística da população, devemos ser cuidadosos para evitar grupos que podem gerar informações falsas ao estudar apenas um grupo e supor que os resultados se aplicam a todos. É eticamente errado fazer tais generalizações sem considerar todos os grupos relevantes. # Resumo de Estatísticas Básicas e Demonstração em Python (Português de Portugal) A média da calculada de um conjunto de dados é aproximadamente 66. A desvio padrão, calculada da variância, é aproximadamente 16. Quando analisar um modelo previsível, é importante considerar a desvio baseado no erro, que determina quão grande error a previsão pode ser. No Python, pode-se utilizar bibliotecas como numpy e pandas para análise estatística. Nesta demonstração, utilizaremos pandas. ```python # Importando a biblioteca pandas import pandas as pd # Criando um data frame para a demonstração data = {'Nome': ['Jane', 'Michael', 'William', 'Rosie', 'Hannah'], 'Salário': [70000, 70000, 80000, 189000, 50000]} df = pd. DataFrame(data) # Encontrando a média do salário print(df['Salário']. mean()) # Encontrando a mediana do salário print(df['Salário']. mediana()) # Encontrando o modo (mais comum rendimentos) print(df['Salário']. mode()[0]) # Encontrando o salário mínimo e máximo print(df['Salário']. min()) print(df['Salário']. max()) ``` Analisando as estatísticas diversas, podemos obter insights sobre os dados de render. É essencial investigar o salário mínimo e máximo, bem como as diferenças entre a média, mediana e modo, pois podem ressaltar discrepâncias e atraques no dado. A desvio padrão, como medida da dispersão dos dados, é igualmente importante no entendimento da distribuição. Além da histograma, pode ser utilizada para representar a distribuição de dados de forma visual, o que pode revelar padrões de tendência nos rendimentos dos indivíduos analisados. Quando apresentar dados estatísticos, é importante fornecer contexto e óthetaciar discrepâncias entre as várias estatísticas, pois valores diferentes (por exemplo, a mediana versus a média) podem fornecer diferentes insights. As estatísticas inferenciais permitem-nos fazer previsões ou inferências a partir dos dados, permitindo tomarmos decisões mais informadas baseando-nos no análise estatística. É importante compreender os fundamentos da teste de hipóteses, estimativa de pontos e intervalo de confiança ao trabalhar com estatísticas inferenciais. Por exemplo, já ao testar vacinas para COVID-19 ou gripe, um grupo de pessoas é escolhido, são realizados trial médicos e os resultados são generalizados para a população todo. Isso é um processo de estimativa de pontos, que ajuda a encontrar um valor aproximado para o parâmetro da população, como a média ou média. A hipótese teste é usado para medir a probabilidade de uma hipótese usando dados de amostra. As estatísticas inferenciais também envolve conceitos como o teorema binômio, distribuição normal e teorema do limite central, que fornecem ferramentas essenciais para a análise estatística. # Documento técnico: Análise de probabilidades em jogos de azar e estatística ## Introdução Aqui, estão as regras da partida não tradicional de quatro jogadores que se chamam **Chits**. 1. Os jogadores fazem 4 idealizados, cada um com seu nome. 2. Cada um desses idealizados é designado para uma tarefa diária, a limpeza. 3. A tarefa de limpeza é designada a quem tiver seu nome sorteado no idealizado que será distribuído em um determinado dia. ## O caso de Nick, Rob, Imlia e Summer Recentemente, Nick fez idealizados para a escola e marcou os nomes de todos de forma fácil de serem lidos. No entanto, Rob e Imlia e Summer tinham suspeito que algo estranho trabalhasse nos idealizados. ### Definição das hipóteses nulos e alternativas A hipótese nula diz que não há correlação entre o nome dos jogadores e o número de seus idealizados (ou seja, o sorteio é equilibrado). A hipótese alternativa afirma que há uma correlação (ou seja, Rob tirou de sorte seu nome em determinado idealizado com o objetivo de obter o projeto de limpeza). Aqui estão as investigações que foram realizadas para resolver essa questão: - Calculamos a probabilidade de Rob conseguir a limpeza em cada dia. - A probabilidade de Rob conseguir a limpeza em um dia específico diminui diariamente. - A probabilidade de Rob conseguir a limpeza em 12 dias consecutivos é extremamente baixa. - Probabilidade de Rob não conseguir a limpeza no primeiro dia: `0. 75` - Probabilidade de Rob não conseguir a limpeza em todos os 12 dias: `0. 032`, muito menor do que `0. 05`, que é um valor atribuído frequentemente quando se está falando de certos valores na estatística. ### Interpretação das achados A probabilidade extremamente baixa de Rob não conseguir a limpeza nos 12 primeiros dias sugere que ele, de alguma maneira, tentou mudar os idealizados para ter uma grande chance de tarefa de limpeza. Esta evidência é suficiente para nos tornarmos suficientemente confiantes da conclusão de que Rob fez algo inadequado aos idealizados e deve ser punido por isso. --- ## Aplicação à estatística Os conceitos discutidos neste documento podem ser extensivamente aplicados na estatística. Neste contexto, esta análise foi feita a fim de ajudar a provar que está correta a hipótese nula: os jogadores foram selecionados aleatoriamente com a mesma probabilidade. Foram usados os seguintes conceitos: - **Probabilidade: ** é a probabilidade de que um evento deverá ocorrer. - **Hipótese nula: ** é uma declaração geral que afirma a ausência de relação entre dois fenômenos medidos. - **Hipótese alternativa: ** oposição à hipótese nula, ela leva em consideração uma relação de causa e efeito. - **Valor p: ** é a probabilidade de encontrar um valor como ou mais extremo quando se assume que a hipótese nula é verdadeira. - **Valor t: ** é a diferença representada em unidades de distância padrão da sua média. A probabilidade menor ou igual a `0. 05` é um padrão geral para rejeitar uma hipótese nula. Se o valor p é menor ou igual a `0. 05`, a hipótese nula é rejeitada em favor da hipótese alternativa. --- # Distribuições Desviadas e Probabilidade Condicional ## Distribuições Desviadas Quando se discute a assimetria ou falta de assimetria de uma distribuição, os valores médias das amostras terão aproximadamente uma distribuição normal. Se tirar amostras grandes aleatórias de uma população com média μ e desvio-padrão σ, com recolocação, é possível ver aqui que: ``` - μ - 2σ: A espalhamentos - Média: O valor central - Média: O valor central quando os dados foram reorganizados em ordem crescente - Moda: O valor que aparece mais frequentemente Estamos falando de populações muito grande. Esses números deveriam se reunir e você não deveria ter um valor assimétrico. Se houver, isso é uma bandeira que algo está errado. É por isso tão importante estar atento ao que está acontecendo com seus dados, onde seus amostras estão vindo e a matemática por trás. ## Probabilidade Condicional Se estámos a fazer isso, temos que saltar no **probabilidade condicional**. A **probabilidade condicional de um acontecimento A** é a probabilidade de que o acontecimento A ocorrer **com o conhecimento de que um evento B já ocorreu**. Você o verá aqui como Teorema de Bayes, **b-a-y-e-s**. Este teorema foi descrito pela primeira vez nos anos 1800. É tão importante este formula e é realmente bastante poderoso. Teorema de Bayes: ``` P(A|B) = P(B|A) * P(A) / P(B) ``` Você pode simplesmente fazer um multiplicar e depois dividir, e verá a mesma matemática, mas funciona com probabilidades, o que é bastante agradável. ## Caso de Uso: Doença Pulmonar por Fumar Vamos descobrir a chance de um indivíduo ter uma doença pulmonar por causa de fumar. De acordo com um relatório médico fornecido pelo hospital, cerca de 10% de todos os pacientes que o trataram sofreram de doença pulmonar. Temos um relatório médico geral. Eles adicionalmente descobriram por um questionário que 15% dos pacientes que visitam são fumantes. Por fim, 5% da pessoa continuou a fumar mesmo quando tiveram doença pulmonar. Não é a melhor opção, mas você sabe que é uma adição, portanto pode ser bastante difícil de desistir. Se olharmos para a probabilidade: - P(Doença Pulmonar) (P(A)) - a probabilidade anterior de 10 pessoas terem doença pulmonar - P(Fuma) (P(B)) - a probabilidade de que um paciente fuma é 15% - P(Fuma|Doença Pulmonar) (P(B|A)) - a probabilidade de um paciente fuma ainda com doença pulmonar é 5% - P(Doença Pulmonar|Fuma) (P(A|B)) - a probabilidade de um paciente ter doença pulmonar se fumar Quando se junta as fórmulas, obtém-se: ``` P(A|B) = P(B|A) * P(A) / P(B) P(Doença Pulmonar|Fuma) = P(Fuma|Doença Pulmonar) * P(Doença Pulmonar) / P(Fuma) = 0. 05 * 0. 10 / 0. 15 = 0. 0333 Há uma 3, 33% de chance que um fumante desenvolva doença pulmonar. ``` ## Código Python Sou sempre meu favorito. . . Python! Arrumem fartos os braços. Tenha em mente que faremos isso como de trás para ver o que está acontecendo: ```python # Criando um Conjunto meu_set = {4, 7} meu_lista = [1, 2, 3, 4, 4] meu_set_a_partir_da_lista = set(meu_lista) # apaga os valores repetidos # Conjunto e lista import itertools as itemuplos dois_dados = {set(range(1, 7)), set(range(1, 7))} resultado = set(itemuplos. product(*dois_dados)) # todas as combinações possíveis dos dados # Área de Trabalho area_trabalho = {**set(i) for i in resultado} # criando uma sequência, não em uma linha print(area_trabalho) # Probabilidade de Múltiplos de 3 no Setup favor_resultado = {x + y for x, y in resultado if (x+y) % 3 == 0} probabilidade = len(favor_resultado) / len(area_trabalho) print(probabilidade) # aprovadamente 0. 3333 (um terço) # Probabilidade da soma sendo um múltiplo de 5 mas não um múltiplo de 3 area_trabalho_5 = {**set(i) para i in resultado if (x+y) % 5 == 0 e (x+y) % 3 ! = 0} favor_resultado_5 = {x + y for x, y in area_trabalho_5} probabilidade_5 = len(favor_resultado_5) / len(area_trabalho_5) print(probabilidade_5) # 0. 11625 ou 11, 62% ## Matriz de Confusão # . . . (a seguir) ``` Este texto fornece uma introdução simples aos conceitos de distribuições desviadas, probabilidade condicional e teorema de Bayes. O código demonstra como calcular a probabilidade de obter um resultado específico (por exemplo, um múltiplo de 3) em vários lançamentos de dados. O caso de uso de doença pulmonar por fumar é um aplicativo prático desses conceitos. O código demonstra como calcular a probabilidade de um fumante desenvolver doença pulmonar usando o teorema de Bayes. A parte da matriz de confusão é deixada para explicação adicional. Esta é a resposta traduzida para português europeu segue abaixo, preservando todos os elementos de formatação Markdown e terminologia técnica em inglês original. # Falso Positivos e Verdadeiros Negativos em Modelos Preditivos Aqui está o conceito de seu modelo de previsão: suppose que você dividir seu conjunto de dados em três terços e crie um modelo com um deles, depois teste-o contra o terceiro último, para verificar sua performance e, qual foi o número de "falso positivo" e "verdadeiro negativo" que ocorreram? Um f also-positivo é um caso de detecção falso, uma situação que é considerada de alguma importância em vários campos, incluindo a saúde. Uma das situações em que você não quer se envolver é em que o f also-positive é progredir para a detectação da Covid-19, pois, em vez de ter um falso negative e fazer a repetição da Análise, você teria um falso positive de 30% em um teste que é praticamente inconseqüente. Uma aplicação exemplificativa para previsão de câncer é o uso de um modelo de aprendizado de máquina para prever o diagnóstico de câncer com precisão e precaucionaridade. Considere a seguinte situação: quando você utiliza um modelo de diagnóstico de câncer para avaliar a precisão e precaucionaridade, você irá comparar os resultados reais com o que o modelo de aprendizado de máquina previu. Na tabela a seguir está o conjunto de dados mostrando-se os resultados médicos: você terá o seu resultado real: "cancer" (erguem) ou não ("yes" ou "no"). Ova é a coisa que mais você não quer como falso positive ("false positive" se traduzir pelo inglês para falso positivo). No final, você não quer se envolver com falso negativo, que significa que o modelo revelará que você não tem câncer, mas deve realmente ter esse diagnóstico. Isso leva a uma questão de muita importância, porque você precisa detectar falso negativos. Este exemplo de demonstração utiliza o classificador bayesiano naívos, em que foram feitas algumas ajustes anteriores, como o classificador utilizado na exploração de Redmisskit explorando vários classificadores. Para um modelo zurück Wor Bayes classifier, pois tomamos esse de Scikitkit Sklearn. Quando se explora a classificação, Scikit-learn fornece uma variedade de opções, desde "nearest neighbor" linear" até frequentemente o devotar à atenção do back bayes. Aqui está o recurso que utilizaremos: ``` # Importando as bibliotecas necessárias import numpy as np import pandas as pd import matplotlib. pyplot as plt from sklearn. datasets import load_digits # Carregando o conjunto de dados Social Network data = load_data('social_network_advertising. csv') df = pd. DataFrame(data, columns=['user_id', 'gender', 'age', 'estimated_salary', 'purchased']) # Visualizando os dados df. head() ``` Em seguida, dividimos os dados em conjuntos de treinamento e teste utilizando a função de train_test_split e pre-processamos os dados fazendo escala dos recursos: ``` # Adividindo os dados from sklearn. model_selection import train_test_split X = df[['age', 'estimated_salary', 'purchased']] y = df['purchased'] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 25, random_state=42) # Pre-processando os dados fazendo a escala dos recursos from sklearn. preprocessing import StandardScaler scaler = StandardScaler() X_treino['idade'] = scaler. fit_transform(X_treino['idade']. values. reshape(-1, 1)) X_treino['salário projetado'] = scaler. fit_transform(X_treino['salário projetado']. values. reshape(-1, 1)) ``` Finalmente, podemos treinar o nosso modelo e desenvolver previsões para conjuntos desconhecidos em avaliar nossa performance e fazer uso de uma matriz de confusão para avaliar nossa performance: ``` # Treinando o modelo de aprendizado de máquina from sklearn. naive_bayes import GaussianNB modelo = GaussianNB() modelo. fit(X_treino, y_treino) ``` ``` # Fazendo previsões no conjunto de teste previsões = modelo. predict(X_teste) de matriz_de_confusão = confusão_matriz(y_teste, previsões) imprime(matriz_de_confusão) ``` Em seguida, podemos utilizar Matplotlib para visualizar os nossos resultados: ``` # Visualizando os resultados from sklearn. datasets import load_digits dados = load_digits() X = dados['data'] y = dados['target'] # Pre-processando os dados fazendo escala dos recursos scaler = StandardScaler() dados_escalados = scaler. fit_transform(X) # Representação geométrica from mpl_toolkits. mplot3d import Axes3D de cores = cm de cores_lista = ListedColormap([ 'branco', 'vermelho', 'verde']) import matplotlib. pyplot as plt # Definindo o número de retículas a representar núm_retículas = 10 # Criando o gráfico fig = plt. figure(figsize=(10, 5)) ax = fig. add_subplot(111, projeção='3d') # Definindo os extremos para a idade idade_min, idade_max = dados_escalados[: , 0]. min(), dados_escalados[: , 0]. max() salario_min, salário_max = dados_escalados[: , 1]. min(), dados_escalados[: , 1]. max() # Criando a grade retícula_x, retícula_y = np. meshgrid(np. linspace(idade_min, idade_max, núm_retículas), np. linspace(salario_min, salario_max, num_reg), indexing='ij') regr_y = modelo. predict(np. cbind(retícula_x. ravel(), retícula_y. ravel())). reshape(núm_retículas, num_reg) # Representando as retículas ax. plot_wireframe(retícula_x, retícula_y, regr_y, cmap=de_cores_lista, lw=2) # Representação de pontos de treino ax. scatter(dados_scaled[: 500, 0], dados_scaled[: 500, 1], dados_scaled[: 500, 2], altura_cor=y[: 500], cmap=de_cores_lista, marca="o", célula=100, alfa=0, 5) # Adicionando título, rolamento e rótulos aos pontos do gráfico ax. set_title(f'Classificador Bayesiano Naívos Ressalto', tamanho=20) ax. set_xlabel(r'Idade', tamanho=15) ax. set_ylabel(r'Salário estimado', tamanho=15) ax. set_zlabel('Compra', tamanho=15) # Exibição ícone X e Y dos eixos ax. set_xticks([idade_min, idade_max]) ax. set_yticks([salario_min, salario_max]) ax. view_init(30, 20) plt. show() ``` No código `Z_mesh = modelo. predict(np. cbind(X_mesh, Y_mesh)). reshape(núm_retículas, num_reg)` sustitua por `Z_mesh = modelo. predict(np. cbind(X_mesh. ravel(), retícula_y. ravel())). reshape(núm_retículas, num_reg)` para corrigir o erro. # Análise de Regressão Linear Múltiple ## Introdução NesteDesse análise, vamos executar uma análise de regressão linear múltiple em Python para prever o lucro empresa baseado em vários fatores como despesas, custos administrativos, custos de marketing e estado. ## Bibliotecas Importadas Vamos utilizar as seguintes bibliotecas para a nossa análise: * numpy como np * pandas como pd * matplotlib. pyplot como plt * seaborn como sns * scikit-learn ## Carregamento do Data Set Iniciaremos por carregar o data set e extrair as variáveis independentes e dependentes. Neste caso, o data set tem o nome `1000_companies. csv`. ```python import numpy as np import pandas as pd import matplotlib. pyplot as plt import seaborn as sns from sklearn. linear_model import LinearRegression # Carregar o data set e extrair as variáveis independentes e dependentes companies = pd. read_csv("SimplyLearn/1000_companies. csv") x = companies. iloc[: , 1: 5] y = companies. iloc[: , 5] ``` ## Visualização dos Dados Agora, vamos visualizar os dados para obter uma melhor compreensão da sua distribuição: ```python # Visualizar os dados sns. pairplot(x=x, y=y) plt. show() ``` ## Modelo de Regressão Linear Múltiple Agora, vamos criar o modelo de regressão linear múltiple e analisar os resultados: ```python # Criar o modelo de regressão linear múltiple modelo = LinearRegression() modelo. fit(x, y) # Analisar os resultados print("Coefficients: ", modelo. coef_) print("Intercept: ", modelo. intercept_) ``` ## Previsão de Lucro Agora, vamos utilizar o modelo para prever o lucro de uma empresa com base em valores específicos para despesas, custos administrativos, custos de marketing e estado: ```python # Dados de exemplo para uma nova empresa valores_novo = np. array([[165, 349, 136897. 8, 20, "CA"]]) # Prever o lucro lucro_predito = modelo. predict(valores_novo) print("Lucro previsto: ", lucro_predito[0]) ``` ## Conclusão Neste estudo, executamos uma análise de regressão linear múltiple para prever o lucro de uma empresa baseado em suas despesas, custos administrativos, custos de marketing e estado. Primeiro, carregamos o data set e extraimos as variáveis independentes e dependentes, em seguida, visualizoumos os dados para melhor compreensão. Em seguida, criamos o modelo de regressão linear múltiple, analisamos os resultados e, finalmente, utilizamos o modelo para prever o lucro de uma nova empresa com base em valores específicos. # Modelo de Regressão Linear para Previsão de Benefícios Este tutorial fornece uma visão detalhada sobre a criação de um modelo de regressão linear para a previsão de benefícios. Depois de examinar a visualização dos dados, iremos prosseguir para o próximo passo e gerar algumas informações e valores reais. ## Preparação dos Dados Antes de configurar o modelo de regressão linear, precisamos preparar algumas das nossas informações de modo a que elas sejam ajustadas corretamente. Importe as bibliotecas necessárias e utilize o `LabelEncoder` e `OneHotEncoder` para a codificação de dados. ```python from sklearn. preprocessing import LabelEncoder, OneHotEncoder # Crie uma variável para o LabelEncoder label_encoder = LabelEncoder() # Altere as informações de estado baseadas em categorias em valores numéricos X = X[: , : 3] # Selecione as primeiras três colunas (gastos em R&D, gastos administrativos, gastos de marketing) X[. . . , 2] = label_encoder. fit_transform(X[. . . , 2]) # Mude a terceira coluna (estado) # Realize a codificação OneHot onehot = OneHotEncoder(features=[3]) X = onehot. fit_transform(X). toarray() ``` ## Configuração dos Dados Evite o trap do variável bônus criando durante a codificação de um hot e label removendo-o. ```python X = X[: , 1: ] # Remova a primeira coluna ``` ## Divisão dos Dados Divida os dados em um conjunto de treinamento e um conjunto de teste para a criação do modelo preditivo. ```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) ``` ## Criação do Modelo de Regressão Linear Importe o modelo de regressão linear, crie uma variável para ele e faça com que o modelo seja afinado com os dados de treinamento. ```python from sklearn. linear_model import LinearRegression regressor = LinearRegression() # Crie modelo de regressão linear regressor. fit(X_treino, y_treino) # Afinie o modelo de regressão linear usando os dados de treinamento ``` ## Previsão de Resultados do Conjunto de Teste Preencha as previsões das informações de teste e compare-as com valores reais para avaliar o desempenho do modelo. ```python y_previsoes = regressor. predict(X_teste) ``` ## Aposimento dos Coeficientes e Interceptos Cálcule os coeficientes e os interceptos para entender o que está acontecendo por trás da linha. ```python coeficientes = regressor. coef_ intercept = regressor. intercept_ ``` ## Cálculo do Valor R-Quadrado Calcule o valor R-Quadrado para prever o desempenho do modelo. ```python from sklearn. metrics import r2_score r2_score(y_teste, y_previsoes) ``` Este script demonstra como criar um modelo de regressão linear para a previsão de benefícios usando um conjunto de dados de exemplo. O desempenho do modelo é avaliado usando o valor R-Quadrado para garantir a validade do modelo. ## Treinamento, Teste e Implementação de Modelos de Aprendizagem de Máquina ## Resumo Neste tutorial, vamos avançar pelo processo de treinamento de um modelo de máquina de aprendizagem para reconhecimento de dígitos utilizando a regressão lógica. Utilizaremos o conjunto de dados de dígitos e os dividiremos em conjuntos de treinamento e teste, realizará-se uma análise exploratória, construiremos o modelo, o treinaremos, o testaremos, o comprovaremos a sua acurácia utilizando uma matriz de confusão. ## Passo a Passo do Código ### Importação de Bibliotecas ``` import numpy as np import matplotlib. pyplot as plt from sklearn. datasets import load_digits from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression ``` ### Carregamento do Conjunto de Dados Digits ``` digits = load_digits() ``` ### Visualização da Forma dos Dígitos ``` plt. imshow(digits. images[0], cmap=plt. cm. gray_r, interpolation='nearest') plt. show() ``` ### Divisão dos Dados em Conjuntos de Treinamento e Teste ``` X_treino, X_teste, y_treino, y_teste = train_test_split(digits. data, digits. target, test_size=0. 23, random_state=42) ``` ### Construção do Modelo de Regressão Lógica ``` log_reg = LogisticRegression() ``` ### Treinamento do Modelo ``` log_reg. fit(X_treino, y_treino) ``` ### Teste do Modelo ``` previsões = log_reg. predict(X_teste) ``` ### Avaliação da Acurácia do Modelo ``` acurácia = log_reg. score(X_teste, y_teste) print(f"Acurácia do modelo: {acurácia}") ``` ### Criação de uma Matriz de Confusão ``` do imports sklearn. metrics import confusion_matrix matriz_de_confusão = confusion_matrix(y_teste, previsões) print(matriz_de_confusão) ``` A matriz de confusão mostrará o número de instâncias classificadas corretamente e incorretamente para cada classe de dígitos. A acurácia do modelo pode ser determinada pelo número de instâncias classificadas corretamente na diagonal da matriz. ## Entendendo a Matriz de Confusão A matriz de confusão é uma ferramenta útil para avaliar o desempenho de um modelo de classificação. Mostra o número de instâncias classificadas corretamente e incorretamente para cada classe. Os elementos da diagonal representam as instâncias classificadas corretamente, enquanto os elementos fora da diagonal representam instâncias mal classificadas. Um modelo perfeito teria todas as instâncias classificadas corretamente, resultando em uma matriz diagonal com apenas zeros em lugares restantes. Em prática, isso é raramente o caso, e a matriz de confusão ajuda a identificar quais classes estão causando mais confusão para o modelo. ## Conclusão Neste tutorial, caminhamos pelo processo de treinamento de um modelo de máquina de aprendizagem para reconhecimento de dígitos. Dividimos os dados em conjuntos de treinamento e teste, realizamos uma análise exploratória, construímos o modelo, o treinamos, o testamos e avaliámos a sua acurácia utilizando uma matriz de confusão. Este processo pode ser aplicado a outras tarefas de aprendizagem de máquina também. (Esse texto está em inglês porque alguns dos termos técnicos utilizados são em inglês). # Formatação da Matriz de Confusão para Regressão Logística ## Principais pontos 1. Explicação da Matriz de Confusão - 4. 1. Construção de uma Matriz de Confusão - 4. 2. Origém do Conceito de Matriz de Confusão - 4. 3. Ler uma Matriz de Confusão - 4. 4. Interpretação de uma Matriz de Confusão - 4. 5. Importância do Conceito de Matriz de Confusão 2. Estrutura da Matriz de Confusão - 2. 1. Formatação da Matriz de Confusão - 2. 2. Diagnóstico Visual da Matriz de Confusão - 2. 3. Visualização da Matriz de Confusão com um Heatmap ## 4. 1. Construção de uma Matriz de Confusão A Matriz de Confusão é uma tabela layout utilizada para visualizar as predições de uma classe classificador. Ela permite identificar os erros comuns da classificação de máquina cognitiva. ```python from sklearn. metrics import confusion_matrix y_true = [. . . ] y_pred = [. . . ] conf_matrix = confusion_matrix(y_true, y_pred) ``` ## 4. 2. Origém do Conceito de Matriz de Confusão A Matriz de Confusão foi criada para medir a performance de um classificador classificador de predição, mas em classificações, como em Regressão Logística. A probabilidade de ter uma alta acurácia pode não ser alta se o classificador assumir que a maioria das categorias é a mesma. ## 4. 3. Ler uma Matriz de Confusão ```python import pandas as pd conf_matrix = pd. DataFrame(conf_matrix) ``` ## 4. 4. Interpretação de uma Matriz de Confusão - Linhas exibem as predições do classificador - Colunas exibem os valores originais - Valores na diagonal principal representam as predições corretas - Valores fora da diagonal principal representam as predições errôneas ## 4. 5. Importância do Conceito de Matriz de Confusão - Ela ajuda a superiorizar a acurácia geral - Ajuda a classificar individualmente os erros na modelagem - Melhora a leitura de resultados classificadores ## 2. Estrutura da Matriz de Confusão ### 2. 1. Formatação da Matriz de Confusão - Usa-se a tabela abaixo para uma visualização apropriada ``` Rotulo Real 0 1 2 Rotulo Previsto 0 1 2 ``` ### 2. 2. Diagnóstico Visual da Matriz de Confusão - Adiciona colors a medida que sejam necessárias para a visualização (Heatmap) ```python from matplotlib. pyplot import imshow, heatmap import matplotlib. colors as colors from sklearn. utils import normalize fig, ax = plt. subplots() norm = normalize(conf_matrix) heatmap = ax. imshow(norm, cmap='viridis') ax. set_title("Matriz de Confusão") ax. set_xlabel("Rotulo Real") ax. set_ylabel("Rotulo Previsto") precision, recall, afp, fnr = confusion_metrics(y_true, y_pred) ax. text(0. 5, 0. 04, f"Precision: {precision: . 3f}\n" f"Recall: {recall: . 3f}\n" f"F1 Score: {(2 * precision * recall) / (precision + recall): . 3f}") ``` ### 2. 3. Visualização da Matriz de Confusão com um Heatmap - Com um Heatmap, é possível verificar como causados erros são causados e para qual rotulo eles são causados ```python fig = plt. figure(figsize=(10, 10)) sns. heatmap(conf_matrix, cmap='viridis', annot=True, cbar=False) plt. xlabel("Rotulo Real") plt. ylabel("Rotulo Previsto"); ``` # Sklearn e Previsão de Doença Cardíaca Este tutorial demonstrará o uso do scikit-learn para a previsão de doença cardíaca usando o dataset do Coração da Harvaard. ## Visão Geral Neste tutorial, faremos: 1. Importar bibliotecas necessárias 2. Carregar dados 3. Preprocessar dados 4. Dividir dados 5. Escalonar dados 6. Configuração do modelo 7. Avaliar o modelo ### Importar Bibliotecas ```python import pandas as pd from sklearn. model_selection import train_test_split from sklearn. preprocessing import StandardScaler from sklearn. linear_model import LogisticRegression from sklearn. metrics import accuracy_score, confusion_matrix, classification_report ``` ### Carregar Dados ```python # Carregar dados data = pd. read_csv('heart_disease_dataset. csv') head(data) ``` **Nota: ** Ajuste o caminho para o arquivo csv conforme necessário. ### Preprocessar Dados ```python # Definir variável de alvo target = data['target'] # X (feature) e y (target) X = data. drop('target', axis=1) ``` ### Dividir Dados ```python # Dividir dados X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 3, random_state=42) ``` ### Escalonar Dados ```python # Escalonar dados escalador = StandardScaler() X_treino = escalador. fit_transform(X_treino) X_teste = escalador. transform(X_teste) ``` ### Configurar Modelo ```python # Criar modelo modelo = LogisticRegression() # Treinar modelo modelo. fit(X_treino, y_treino) # Previsões y_previsoes = modelo. predict(X_teste) ``` ### Avaliar o Modelo ```python # Avaliar pontuação de acurácia pontuacao_de_acurácia = pontuacao_de_acurácia_score(y_teste, y_previsoes) print('Pontuação de Acurácia: ', pontuacao_de_acurácia) # Avaliar Matriz de Confusão matriz_de_confusão = matriz_de_confusão(y_teste, y_previsões) print('Matriz de Confusão: ', matriz_de_confusão) # Avaliar Relatório de Classificação relatório_de_classificação = relatório_de_classificação(y_teste, y_previsoes) print('Relatório de Classificação: ', relatório_de_classificação) ``` **Nota: ** Ajuste o título e outras seções conforme necessário para melhor se adaptar à sua guia específica. ### Arvore de Decisão Terminologia Antes de mergulhar mais profundamente, vamos definir algumas terminologias importantes para as árvores de decisão: 1. Entropia: Medida da aleatoriedade ou imprevisibilidade num conjunto de dados. 2. Ganho de Informação: Medida da diminuição na entropia após dividir um conjunto de dados. 3. Nó de Folha: o ponto final da árvore que carrega uma classificação ou decisão. 4. Nó de Decisão: o nó que divide os dados em diferentes partes. 5. Nó Raiz: o nó mais alto na árvore. ### Exemplos de Arvore de Decisão **Exemplo: ** Classificação de diferentes # Cálculo da Entropia do Animal ## Introdução Este documento apresenta uma guia passo a passo para o cálculo da entropia de um conjunto de dados que contém diferentes espécies de animais. ### Pré-requisitos - Uma compreensão básica da Teoria da Informação e Entropia - Familiaridade com o programação Python ### Formula A fórmula utilizada para calcular a entropia está baseada na seguinte fórmula: ``` H(X) = - Σ P(x_i) * log2(P(x_i)) ``` em que: - `X` é o conjunto - `x_i` é cada classe do conjunto - `P(x_i)` é a probabilidade de cada classe `x_i` no conjunto ### Cálculo da Entropia Primeiro, coletemos os animais: 3 girafas, 2 tigres, 1 macaco, 2 elefantes. Isso nos dá um total de 8 animais. Se colocarmos isso na fórmula, obteremos uma entropia que equivale a `3 / 8`, que é aproximadamente 0, 375. Porém, eles usam usualmente a base 2 para o logaritmo, então precisamos converter nossa entropia para base 2. ``` H(X) = - (3 / 8 * log2(3/8) + 2/8 * log2(2/8) + 1/8 * log2(1/8) + 2/8 * log2(2/8)) ``` Resultando em uma entropia de aproximadamente 0, 571. ### Cálculo do Ganho Após cada divisão, calculamos o ganho da entropia usando a seguinte fórmula: ``` Entropia(S) = - Σ P(s_i) * log2(P(s_i)) Gain(S) = Entropia(S_tot) - Entropia(S_left) - Entropia(S_right) ``` em que: - `S` representa um conjunto a dividir - `S_tot` representa o conjunto total - `S_left` e `S_right` representam os dois novos conjuntos após a divisão ### ['Primeira Divisão'](#primeira-divisao) A primeira divisão é determinada pela condição que dá nos mais ganho. Neste caso, se dividirmos com base na cor dos animais (sobre um pavimento amarelo), podemos alcançar um ganho maior e construir um árvore que prevê todos as classes de animais com 100% de precisão. Aqui está uma lista dos split: ``` - Girafa (Cor: AMARELO) - Elefante (Cor: Branco) - Elefante (Cor: Branco) - Macaco (Cor: E multicolorido) - Tigre (Cor: Laranja) - Tigre (Cor: Laranja) ``` ### [Previsão de Repagamentos de Empréstimos](#previsao-de-repagamentos-de-emprestimos) agora, vamos mexer em um caso mais prático: a previsão de repagamentos de empréstimos. Para prever se um cliente pagará ou não seu empréstimo, usaremos as seguintes etapas: 1. Importar pacotes necessários 2. Carregar os dados 3. Dividir os dados 4. Usar o Classificador de Árvore de Decisão 5. Avaliar o modelo ### Implementação em Python Aqui está um exemplo de código em Python utilizando o Classificador de Árvore de Decisão para prever os repagamentos de empréstimos: ```python # Importando pacotes necessários import numpy as np import pandas as pd from sklearn. model_selection import train_test_split from sklearn. tree import DecisionTreeClassifier from sklearn. metrics import accuracy_score # Carregando os dados # (Você precisará substituir o caminho do arquivo pelo seu próprio caminho) dados = pd. read_csv('full_file_name. csv') # Dividindo os dados X = dados. drop('repagamentos_de_emprestimo', eixo=1) y = dados['repagamentos_de_emprestimo'] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 2, random_state=42) # Construindo o modelo arvore_decisao = DecisionTreeClassifier() modelo = arvore_decisao. fit(X_treino, y_treino) # Prevendo e avaliando o modelo prev_previsoes = modelo. predict(X_teste) avaliacao = accuracy_score(y_teste, prev_previsoes) print(f'Avaliação: {avaliacao}') ``` Substitua o 'full_file_name. csv' pelo caminho para o seu próprio arquivo de dados. --- # Primeira Divisão <a name="primeira-divisao"></a> Na [Previsão de Repagamentos de Empréstimos](#previsao-de-repagamentos-de-emprestimos) exemplo, a primeira divisão seria com base no característica 'cor' dos dados. Esta divisão diferenciaria os clientes com diferentes comportamentos em repagamentos de empréstimos. # Previsão de Repagamentos de Empréstimos <a name="previsao-de-repagamentos-de-emprestimos"></a> Neste exemplo, vamos implementar um programa para previsão de repagamentos em empréstimos utilizando Python. Usaremos o Classificador de Árvore de Decisão para prever se um cliente pagará ou não o seu empréstimo. ```python # Importando pacotes necessários import numpy as np import pandas as pd from sklearn. model_selection import train_test_split from sklearn. tree import DecisionTreeClassifier from sklearn. metrics import accuracy_score # Carregando os dados dados = pd. read_csv('full_file_name. csv') # Preparando os dados para o modelo preditivo # (Você precisará substituir os nomes de coluna com os nomes da coluna na sua base de dados) X = dados. drop(['emprestimo_valor', 'id_cliente'], eixo=1) y = dados['repagamentos_de_emprestimo'] X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 2, random_state=42) # Construindo o modelo arvore_decisao = DecisionTreeClassifier() modelo = arvore_decisao. fit(X_treino, y_treino) # Prevendo e avaliando o modelo prev_previsoes = modelo. predict(X_teste) avaliacao = accuracy_score(y_teste, prev_previsoes) print(f'Avaliação: {avaliacao}') ``` Neste caso, assumimos que o seu arquivo de dados seja chamado 'full_file_name. csv'. Substitua o 'full_file_name' pelo nome real de seu arquivo de dados. Se os nomes de coluna forem diferentes, você precisará adaptar o código de acordo com seu arquivo de dados específico. O programa carrega os dados, prepara os dados para o modelo preditivo, divide os dados em conjuntos de treino e teste, construi um classificador de árvore de decisão, faz previsões em conjunto de teste, e imprime a avaliação # Previsão de Padrão de Empréstimo Usando Classificador de Árvore de Decisão e Floresta Aleatória ## Introdução Neste tutorial, vamos aprender a construir um modelo de previsão de padrão de empréstimo usando o Classificador de Árvore de Decisão e Floresta Aleatória em Python. Usaremos a biblioteca Scikit-Learn para aprendizado de máquina. ## Preparação dos Dados Primeiro, vamos entender a estrutura dos dados: ``` - `x`: Os dados que serão analisados - `y`: A variável alvo ou resposta que vamos prever Neste caso, vamos usar `x` para denotar as características do empréstimo e `y` para denotar o status de padrão. ``` x = dados. values x[0: 5] # Isso retornará as primeiras 5 linhas de dados # Selecionando características de 0 a 4 (lembre-se que Python usa indexação 0-base) x = dados. values[: , 0: 5] y = dados[0, 5] # A sexta coluna é a variável alvo ``` Em seguida, vamos dividir os dados em conjuntos de treinamento, validação e teste: ``` from sklearn. model_selection import train_test_split # Divisão dos dados em conjuntos de treinamento, teste e validação X_treino, X_teste, y_treino, y_teste = train_test_split(x, y, test_size=0. 3, random_state=0) ``` ## Classificador de Árvore de Decisão Agora, vamos construir um classificador de árvore de decisão: ``` from sklearn. tree import DecisionTreeClassifier clf = DecisionTreeClassifier(random_state=0) # Treinamento do modelo com os dados de treinamento clf. fit(X_treino, y_treino) ``` ## Floresta Aleatória Agora, vamos construir uma floresta aleatória com 100 árvores e uma profundidade máxima de 3: ``` from sklearn. ensemble import RandomForestClassifier rf_clf = RandomForestClassifier(n_estimators=100, max_depth=3, random_state=0) # Treinamento do modelo com os dados de treinamento rf_clf. fit(X_treino, y_treino) ``` ## Previsão Agora vamos fazer uma previsão usando os dados de teste, para um aplicativo real-world isso seria os empréstimos novos que você está colocando para adivinhar se a pessoa vai pagar o empréstimo ou não: ``` y_pred = clf. predict(X_teste) # Previsão usando o Classificador de Árvore de Decisão y_rf_pred = rf_clf. predict(X_teste) # Previsão usando a Floresta Aleatória ``` ## Avaliação Agora vamos calcular a precisão de nossos modelos: ``` from sklearn. metrics import accuracy_score precisao_clf = accuracy_score(y_teste, y_pred) # Precisão do Classificador de Árvore de Decisão precisao_rf = accuracy_score(y_teste, y_rf_pred) # Precisão da Floresta Aleatória ``` ### Caso de Exemplo: Análise de Flores de Iris Neste exemplo, vamos prever a espécie de flores de iris usando aprendizado de máquina em Python. `` # Técnicas de Machine Learning: Classificação de Flores com Random Forest ## Importando as Bibliotecas necessárias ```python from sklearn. ensemble import RandomForestClassifier import pandas as pd import numpy as np ``` ## Carregando o conjunto de dados Iris e Explorando-o ```python # Carregando o módulo para carregar o conjunto de dados Iris from sklearn. datasets import load_iris # Carregando o conjunto de dados Iris e atribuindo a variável "iris" iris = load_iris() # Criando um DataFrame pandas com as colunas e dados do conjunto de dados Iris df = pd. DataFrame(data=iris. data, columns=iris. feature_names) # Exibindo as primeiras linhas do DataFrame df. head() ``` ## Informações adicionais sobre o DataFrame ```python # Mostrando que o objeto "df" é um DataFrame Pandas type(df) # Exibindo o nome da classe do DataFrame df['class_'] ``` ## Identificando o Tipo de Flores ```python # Definindo uma função para predictar o tipo de flores def predict_flower_type(X, y): # Posicionando a variável "y" como o conjunto de dados de treino X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0. 25, random_state=0) # Criando um classificador RandomForest clf = RandomForestClassifier() # Treinando o classificador com o conjunto de dados de treino clf. fit(X_train, y_train) # Predizendo o tipo de flores para o conjunto de dados de teste y_pred = clf. predict(X_test) return y_pred ``` ## Exemplo de uso da função para predizer o tipo de flores ```python # Criando um exemplo de dados de entrada example_data = [[5. 0, 2. 9, 4. 8, 1. 6]] # Predizendo o tipo de flor usando o exemplo de dados flower_type = predict_flower_type(example_data, iris. target) # Exibindo o tipo de flor predito print(flower_type[0]) ``` //Fim do texto traduzido com toda a formatação Markdown. # Classificador Aleatório de Floresta em Python com Scikit-learn ## Introdução Nesta guia, vamos passar pelos passos necessários para construir um Classificador Aleatório de Floresta usando Scikit-learn em Python. Este modelo será aplicado ao conjunto de dados Iris. ## Pré-requisitos - Python 3. x - Biblioteca Scikit-learn ## Importação das bibliotecas necessárias ```python from sklearn. ensemble import RandomForestClassifier from sklearn. datasets import load_iris from sklearn. model_selection import train_test_split # Importação de pandas para manipulação de dados import pandas as pd ``` ## Carregamento do conjunto de dados Iris ```python iris = load_iris() X = iris. data y = iris. target ``` ## Divisão do conjunto de dados ```python X_treino, X_teste, y_treino, y_teste = train_test_split(X, y, test_size=0. 25) ``` ## Criação do Classificador Aleatório de Floresta ```python clf = RandomForestClassifier() ``` ## Treinamento do Classificador ```python clf. fit(X_treino, y_treino) ``` ## Predição das classes ```python previsões = clf. predict(X_teste) ``` ## Gerando probabilidade para cada classe ```python probabilidades = clf. predict_proba(X_teste) ``` ## Mapeamento das previsões para os nomes originais ```python nomes_previsões = iris. target_names ``` ## Mapeamento dos dados de teste para os nomes originais ```python dados_teste_especies = iris. target_names[iris. target] ``` ## Combinação de previsões e valores reais para avaliação ```python pd. crosstab(previsões, dados_teste_especies, rownames=['Predito'], colnames=['Atual'], normalize='index') ``` ## Explorando a Matriz de Confução A matriz de confusão resultante mostra a precisão, inprecisão e a precisão global do modelo. ## Implementação do Modelo Para usar o modelo treinado em dados novos, basta chamar o método `predict()` com os dados novos. ```python dados_novo = [[feature1, feature2, feature3, feature4]] # Isto deve ser substituído pelos dados reais a serem previstos previsão_do_modelo = clf. predict(dados_novo) ``` # Aprendizagem de Máquina com k-Vizinhos Mais Próximos (kNN) O algoritmo K-Vizinhos Mais Próximos (kNN) é um fundamental na área de aprendizagem de máquina, sendo a base para muitas outras técnicas. Este artigo abordará as aspectos essenciais do kNN, incluindo uma breve comparação, casos de uso e um exemplo em Python. ## Introdução O kNN é um algoritmo de aprendizagem supervisionada simples, muito comum para classificação. Ele prevê se um ponto de dados pertence a uma classe em particular baseado nas votos de seus k vizinhos mais próximos. O algoritmo recebe um novo caso, identifica seus k vizinhos mais próximos no conjunto de treinamento e classifica o novo caso usando uma votação majoritária dos vizinhos classificados. ## Por Que o KNN? A lógica por trás do kNN é fácil de compreender, tornando-o um ótimo ponto de partida para iniciantes em aprendizagem de máquina. Fornece uma abordagem simples para classificar dados e sua simplicidade se combina bem para ser incorporada em outras formas de aprendizagem de máquina. ## Escolhendo o k Escolher o valor de k é uma parte essencial ao usar o kNN, pois teve um impacto significativo no desempenho do algoritmo. Esse processo é chamado de ajuste de parâmetro e é importante para conseguir maior precisão. O valor para k pode ser determinado com base na natureza dos dados e no nível de precisão desejado. ### Determinando o k Encontrar o valor ótimo de k pode ser desafiador, mas há técnicas para fazer isso mais simples: 1. Para conjuntos de dados pequenos, é possível experimentar diferentes valores de k manualmente. 2. Em conjuntos de dados maiores, pode-se usar métodos como cross-validation para encontrar o valor ótimo de k. ## Caso de Uso: Predizendo diabetes Neste exemplo, usaremos um conjunto popular e comum de dados para prever se uma pessoa terá diabetes ou não. Este conjunto de dados contém informações sobre indivíduos que foram diagnosticados com diabetes ou não, tornando-o uma escolha ideal para o kNN. ### Pré-processamento de Dados Usaremos o Python para este exemplo. Primeiro, importamos as bibliotecas necessárias e abrimos o conjunto de dados: ```python import pandas as pd # Carregue o conjunto de dados data = pd. read_csv("diabetes. csv") ``` ### Classificação Depois de carregar o conjunto de dados, precisaremos prepará-lo para classificação kNN ao dividindo-o em características e a variável alvo. Depois disso, usaremos o algoritmo kNN para classificar dados novos: ```python # Defina as características e a variável alvo X = data. drop("Outcome", axis=1) y = data["Outcome"] # Escolha o número de vizinhos (k) para o kNN k = 3 # Aplique o kNN para classificar dados novos from sklearn. neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=k) knn. fit(X, y) # Classe de dados novos como menores que 50 ou maiores ou iguais a 50 # Você pode substituir 50 por qualquer ponto de dados novo previsão = knn. predict([[50, 70, 150, 70, 170, 80, 105, 20, 120, 590]]) print(previsão) ``` Observação: o resultado variará dependendo dos dados usados para treinamento e do valor de k. # Predição de Diabetes usando k-Vizinhos mais próximos em Jupyter Notebook ## Configuração do Ambiente Cada ambiente neste projeto está organizado de forma bem legível e oferece uma interface agradável. Além disso, há um botão lá onde você pode instalar diferentes pacotes. Clicando no botão e abri a terminal permitirá a utilização do comando simples `pip install` para instalar vários pacotes que está trabalhando. ## Início Vamos voltar para a Home e iniciar nossa nota. Pois o script está já preparado, então a nota abrirá quase que instantaneamente (em contraste com levar alguns minutos a abrir uma janela de navegador, neste caso, Google Chrome, que é o navegador padrão utilizado). Pois o script já estiver pronto, você verá várias janelas abrir em cima. A que estamos trabalhando é marcada como "Untitled". Pois o modelo que estamos a trabalhar é o modelo k-Vizinhos mais próximos para prever se uma pessoa terá diabetes ou não, vamos portanto definir esse título lá. Em seguida, vamos para cima da célula superior, clicar em `Célula` e inserir uma célula abaixo. Em seguida, vamos de volta à célula superior e mudar o tipo de célula para Markdown, isso significa que esta célula não será executada como Python, mas sim como Markdown, assim a primeira célula estará anunciada em letras grandes. ## Importando Módulos Requisitados Remindemos o que estamos a trabalhar e já deverás estar familiarizado com seus imports: ``` import pandas as pd import numpy as np ``` O Pandas é uma poderosa frame de dados, enquanto que NumPy é um array de número. ## Preparação dos Dados Nós já trouxemos nossos Pandas, NumPy e dois módulos python gerais. Aqui, temos nosso treinamento, divisão de testes, pré-processamento, e processador de escala predefinidos: ```python from sklearn. model_selection import train_test_split from sklearn. preprocessing import StandardScaler ``` Vamos discutir estas importações em detalhes. ## Carga da Base de Dados Agora precisamos carregar a base de dados utilizando pandas: ``` dataset = pd. read_csv('diabetes. csv') ``` Este comando lê o ficheiro CSV 'diabetes. csv', o qual deverá estar localizado no mesmo diretório que sua nota de Jupyter. ## Explorar os Dados Vamos fazer uma rápida análise dos dados set: ``` print(len(dataset)) ``` Vamos também inspecionar o próprio ficheiro de dados: ``` dataset. head() ``` Este comando apresenta a primeira linha de 5 do conjunto de dados. ## Pré-processamento de Dados Em seguida, vamos criar uma lista de colunas que não permitem valores nulos, pois a extração de dados para estas colunas pode ter impacto nos resultados: ``` my_columns = ['pregnancies', 'glucose', 'blood pressure', 'skin thickness', 'insulin', 'BMI', 'diabetes pedigree function'] ``` Então para cada coluna substituiremos qualquer valor nulo pelo média da coluna: ```python for column in my_columns: dataset[column] = dataset[column]. replace(0, dataset[column]. mean()) ``` ### Divisão do Conjunto de Dados Após o pré-processamento, vamos dividir o conjunto de dados em conjuntos de treino e teste: ```python X_train, X_test, y_train, y_test = train_test_split(dataset. drop('outcome', axis=1), dataset['outcome'], test_size=0. 2, random_state=0) ``` ### Escalonamento dos Dados Por fim, vamos normalizar os dados com um Scaler Standard: ``` scaler = StandardScaler() X_train = scaler. fit_transform(X_train) X_test = scaler. transform(X_test) ``` ### Construção e Treino do Modelo Agora, definimos e treinamos o modelo k-Vizinhos mais próximos: ```python from sklearn. neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=5) knn. fit(X_train, y_train) ``` ### Preditando o Resultado Ainda assim, podemos utilizar o nosso modelo treinado para prever o resultado: ``` y_pred = knn. predict(X_test) ``` Use Markdown formatting para estruturar e formatar o texto mantendo as regras especificadas. #### Usando um número ímpar de vizinhos no classificador de vizinhos mais próximos (KNN) ##### Introdução Sabendo que um número par de vizinhos pode levar a um empate no voto, queremos usar um número ímpar quando votarmos em coisas. Neste caso, vamos usar 11 vizinhos para o nosso classificador de vizinhos mais próximos K. ```markdown 1. Michel, estamos usando agora o classificador de vizinhos mais próximos K, e estamos definindo o número de vizinhos para 11. Porque diminuímos em 1, temos um número ímpar de vizinhos. O número de vizinhos pode ser ajustado de acordo com o problema específico e conjunto de dados. ``` ##### Classificação Explicada Estámos classificando se uma pessoa é diabética ou não. Neste caso, estamos usando a métrica euclidiana como método para medir a distância, pois é o método mais comum e eficaz. No entanto, existem outros métodos para medir a distância, como a distância de Manhattan, distância de Chebyshev ou distância de Minkowski. ```markdown Para classificar uma pessoa, calculamos as distâncias euclidianas entre o ponto de dados novo e todo o ponto de dados no nosso conjunto de dados. Em seguida, selecionamos os k pontos de dados mais próximos, onde k é o número de vizinhos definido mais cedo (11 neste caso). A maioria da classe desses k vizinhos é então usada para classificar o ponto novo. ``` ##### Avaliando o Modelo Avaliar o modelo é essencial para entender seu desempenho. Aqui, vamos usar a matriz de confusão, uma excelente ferramenta para visualizar os resultados do classificador. ```markdown Através da comparação dos resultados reais com os previsões, podemos facilmente identificar os casos mal classificados e analisar o desempenho do classificador. A matriz de confusão nos fornece com a quantidade de verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos. ``` ##### F1-Pontuação e Pontuação de Precisão A pontuação F1 considera tanto as falsas positivas como as falsas negativas, fornecendo uma visão mais holística do desempenho do classificador em comparação à pontuação de acertos. ```markdown A pontuação F1 é importante ao avaliar um classificador, especialmente quando lidamos com conjuntos de dados desequilibrados ou distribuições de dados complexas. Enquanto a pontuação de acertos apenas indica a percentagem de previsões corretas, a pontuação F1 dá mais enfase no garantir que o classificador não está frequentemente classificando a classe minoritária em falso. ``` #### Usando Máquinas de Suporte (SVM) Ao lidar com dados altamente dimensionais, as máquinas de suporte (SVM) podem ser uma ferramenta poderosa. As SVMs são especialmente úteis em evitar problemas de overfitting e de biais que surgem em outros algoritmos como regressão linear. ```markdown Nas SVMs, os dados são transformados de um espaço de baixa dimensão para um espaço de maior dimensão, usando uma função de kernel. Esta transformação facilita a criação de uma hiperplana que classifica os dados de forma eficaz. Por exemplo, podemos usar uma função de base radial (RBF) para mapear os dados de um espaço de 2 dimensões para um espaço de 3 dimensões, o que ajuda na separação das duas classes por meio da criação de uma hyperplana no espaço de 3 dimensões. ``` #### Um Estudo de Caso - Caimão vs. Alligator Neste estudo de caso, construiremos uma SVM para classificar caimãos e alligators com base nas suas características. Vamos usar uma abordagem de programação python para resolver esse problema. ```markdown Embora este estudo de caso seja hipotético, ele demonstra a aplicação prática de SVMs em problemas reais do mundo real. Por fim deste estudo de caso, você aprenderá a criar uma SVM, visualizar os dados e analisar o seu desempenho usando programação python. ``` #### Construindo uma SVM com Python Nesta seção, construiremos uma SVM usando a programação Python para diferenciar caimãos e alligators. ```markdown Vamos usar a biblioteca sklearn para criar a SVM. O processo de setup consistirá em importar as bibliotecas necessárias, preparar os dados e definir o modelo de SVM. ``` Ameliorações foram feitas no seu texto Markdown de acordo com as regras fornecidas: ``` markdown # Exemplo de SVM em SkLearn: Distinção de Jabáhu's e Cocodrilos Este tutorial demonstra como criar um modelo Support Vector Machine (SVM) em SkLearn para separar jabáhu's e cocodrilos usando suas medidas de crocodilo. ## Pré-requisitos - [SkLearn](https://scikit-learn.org/stable/) - [NumPy](https://numpy.org/) - [Matplotlib](https://matplotlib.org/) ## Preparação dos Dados Vamos utilizar a função fictícia `make_blobs` para criar conjuntos de dados aleatórios para os jabáhu's e cocodrilos, que consistirão nas suas medidas de largura e comprimento do bico. ```python from sklearn. datasets import make_blobs from numpy import np import matplotlib. pyplot as plt # Criar dois blobs representando os jabáhu's e os cocodrilos X, y = make_blobs(n_samples=50, centers=2, random_state=42, cluster_std=0. 60) ``` ## Treino do Modelo SVM Agora, vamos dar continuidade ao criar, treinar e visualizar nosso modelo SVM. ```python from sklearn import svm # Inicializar o modelo SVM clf = svm. SVC(kernel='linear', C=1) # Treine o modelo com nossos dados clf. fit(X, y) ``` ## Visualização ```python # Configurar os eixos ax = plt. gca() # Determinar os limites dos eixos x_limit, y_limit = ax. get_xlim(), ax. get_ylim() # Criar uma grade de dados xx, yy = np. meshgrid(np. linspace(x_limit[0], x_limit[1], 30), np. linspace(y_limit[0], y_limit[1], 30)) # Computar Z (valores da função de decisão) Z = clf. decision_function(np. c_[xx. ravel(), yy. ravel()]). reshape(xx. shape) # Plotar limites de decisão contour = plt. contourf(xx, yy, Z, alpha=0. 5, levels=[-1, 0, 1], cmap='paired') # Plotar vértices de suporte clf. support_vectors_ = clf. support_vectors_[: , [0, 1]] plt. scatter(clf. support_vectors_[: , 0], clf. support_vectors_[: , 1], s=100, facecolors='none', edgecolors='k') # Plotar nossos dados originais plt. scatter(X[: , 0], X[: , 1], c=y, s=30, cmap='paired') plt. xlabel('Largura do Bico') plt. ylabel('Comprimento do Bico') plt. show() ``` Seguindo este exemplo, você terá um modelo SVM que é capaz de separar os jabáhu's e os cocodrilos baseado nas suas medidas de bico de forma eficiente. Dê um boa sortida a sua jornada de aprendizado de máquina! Obs. : É necessário instalar as seguintes bibliotecas Python: [Python](https://www.python.org/), [pip](https://pip.pypa.io/en/stable/), [pandas](https://pandas.pydata.org/), [sklearn](https://scikit-learn.org/stable/) e [Matplotlib](https://matplotlib.org/). Títulos e Subtítulos: --------------- ----------------- Fitting the Data =============== Linha de regressão linear: bias e variance ------------------------------------------ Entendendo overfitting e underfitting: a regularização na ciência de dados -------------------------------------------------------------------------- Uma visão prática com demo hands-on ------------------------------------ Bias e variance: definições e impactos em máquina de aprendizagem --------------------------------------------------------------- Conhecendo overfitting e underfitting -------------------------------------- Um breve demo para um exemplo detalhado de overfitting e underfitting -------------------------------------------------------------------- Listas: ------- 1. Formulando hipóteses e predições com um modelo 2. Estrutura e treino de modelo de aprendizagem profunda 3. Teste e validar o modelo 4. Análise de performance ### Ferramentas comuns de avaliação de performance em ML - R^2 (Coeficiente de determinação) - Erro métrico comum (mean squared error) - Precisão (accuracy) Separadores: ------------- --- Conteúdo: --------- Como identificar overfitting e underfitting? ------------------------------------------- Overfitting: um modelo de máquina de aprendizagem treinado excessivamente que não apresenta gerações relevantes de nenhuma geração ou que é especialmente especialista para os dados de treinamento utilizados para aprender Underfitting: um modelo de aprendizagem máquina insuficientemente treinado ou pouco completo para fazer uma apresentação significativa ou até mesmo falha completamente na análise dos dados fornecidos para aprendizado Consequências de Overfitting e Underfitting em uma visão geral ------------------------------------------------------------- ### Impacto em Performance do Modelo: - O tempo consumido treinando os modelos aumenta devido ao processo iterativo (Overfitting) - Dificuldade de aprimorar os resultados com os mesmos dados de treinamento (Underfitting) Solução comum para superar problemas de overfitting e underfitting ----------------------------------------------------------------- Ao fazer data splitting para aprender o treinamento/teste com o data, verifique se: 1. O número de parâmetros ou features fornecidos corresponde adequadamente à grandeza de suas classes e sub-conjuntos de treino/teste. 2. Modelos mais complexos possam funcionar muito bem, mas o compromisso computacional também cresce muito rápido em um conjunto de dados muito pequeno (considere regularizar se precisar de modelos mais complexos) Formas comuns de reduzir complexidade do modelo de sobre aprendizagem de dados (Supervised Learning): - Escala o valor das entradas com coeficiente de padrão normalizados ou dimensionalidade reduzida. - Adotar a análise dos recursos discriminantes com métodos como a seletividade dos recursos lineares lasso (Lasso Selection). - Encontrar limites do mapeamento através do regularização dos valores das matrizes (matrix shrinkage) para aumentar o custo das pesquisas ao tentar adaptar um número grande de entrada (principalmente ocasionalmente no uso do gradient boosted tree (GTR)) ou com redes neurais para melhor aproximação (BackPropagation, ADAM) para modelar recursos interrelacionados. # Regressão Linear e Regularização Este documento explica o uso da regressão linear e da regularização para minimizar a função de perdida ajustada e impedir o sobreapritamento ou o subapritamento. Vamos explorar duas tipos de regularização: Ridge e Lasso. Esses métodos podem ser encontrados no módulo sklearn, similar ao Multi-Layered Perceptron (MLP). ## Regressão Linear A regressão linear é um modelo estatístico que nos permite analisar a relação entre dois variáveis. No caso do sklearn, podemos importar um modelo de regressão linear padrão, o qual representa uma linha através dos nossos dados. ```python # Importação de bibliotecas necessárias import pandas as pd import numpy as np import matplotlib. pyplot as plt from sklearn. linear_model import LinearRegression from sklearn. model_selection import train_test_split ``` ## Regressão Ridge A regressão Ridge modifica os modelos sobreapritados ou subapritados adicionando uma penalidade equivalente à soma das potências quadráticas dos módulos das coeficientes. A função custo é: ``` função_custo = perdida + lambda * sum(w^2) ``` Aqui, `lambda` é a penalidade pela error e `w` é a pendente da linha. ```python # Demonstração de Regressão Ridge (assumindo que a perdida igual a 0. 3 e lambda igual a 0. 2) # Calculo da Linha de Regressão Ridge loss_ridge = 0. 3**2 + 0. 2**2 # Comparação Linha de Regressão Ridge com a Linha de Regressão Linear loss_ridge < loss_linear_regression ``` ## Regressão Lasso A regressão Lasso é diferente da regressão Ridge desde que ela utiliza o valor absoluto em vez de potenciar o valor para a penalidade. A função custo da regressão Lasso é: ``` função_custo = perdida + sum(|w|) ``` ```python # Demonstração de Regressão Lasso (assumindo que a perdida igual a 0. 3) # Calculo da Linha de Regressão Lasso loss_lasso = np. abs(0. 3) # Comparação Linha de Regressão Lasso com a Linha de Regressão Linear loss_lasso < loss_linear_regression ``` ## Escolha Entre Ridge e Lasso A escolha entre Ridge e Lasso depende do conjunto de dados em questão. A regularização Ridge é útil quando possuímos muitas variáveis com amostras de dados relativamente menores. O modelo não incentiva a convergência para zero, mas é provável que os coeficientes se aproximem de zero e prevenirem o sobreapritamento. Em contraste, a regularização Lasso é preferida quando estão sendo ajustados um modelo linear com variable livres. Aqui está um exemplo simples usando o conjunto de dados Housing de Boston: ```python # . . . (carregando o conjunto de dados Housing de Boston) # Divisão em conjuntos de treino e teste x_treino, x_teste, y_treino, y_teste = train_test_split(boston_dados, boston_alvo, test_size=0. 25) # Modelo Linear Múltiplo modelo_linear = RegressãoLinear() modelo_linear. ajusta(x_treino, y_treino) previsões_lineares = modelo_linear. predict(x_teste) # Modelo de Regressão Ridge modelo_ridge = Ridge(alpha=1) modelo_ridge. ajusta(x_treino, y_treino) previsões_ridge = modelo_ridge. predict(x_teste) # Cálculo do erro quadrático médio (MSE) para ambos os modelos mse_treino_linear = mse_quadrado(y_treino, modelo_linear. predict(x_treino)) mse_treino_ridge = mse_quadrado(y_treino, modelo_ridge. predict(x_treino)) mse_teste_linear = mse_quadrado(y_teste, modelo_linear. predict(x_teste)) mse_teste_ridge = mse_quadrado(y_teste, modelo_ridge. predict(x_teste)) ``` # Comparação de Gráficos e Modelos ## Visão Geral Compare se você colocar os mesmos gráficos aqui, **acima**, este é **acima aqui menos 18**. Este está **aqui a 9 menor**, portanto, este gráfico é metade do tamanho deste gráfico **acima**. A mesma coisa se aplica a esses valores aqui; eles podem parecer os mesmos, mas estão praticamente todas à metade do valor **aqui**. Por fim, você pode fazer a mesma coisa para o regressão lasso. Teria tudo um aspecto muito semelhante na medida em que estamos trabalhando, e eu apenas vou imprimir e executá-lo aqui. Novamente, vamos subir até **Knox**. Observe onde **nox** está; está totalmente no zéro. Se examinarmos nosso próximo coeficiente mais alto, é **-0, 8**. ### Comparação de Modelos Aqui temos nossa **22, 73**. Eu vou subir aqui **16, 7**. E subimos aqui. Vamos olhar para o mesmo número aqui; é **um 16, 69**. Portanto, se eu estivesse executando e trabalhando em um projeto com isso, eu iria olhar para esses números: iniciaria por **16, 69**, desceria aqui e compararia com **16, 78**. **6, 9** é melhor que **7, 8**. Portanto, do começo, teríamos começado a olhar para o modelo de primeira instância para previsão geral. Há outros fatores envolvidos; sabemos que o valor de **nox** é central e os outros não são exatamente tão boas, portanto, começamos a olhar apenas em alguns sets de configuração específicos como; o que é **isto** particular coeficiente, pois poderia ter um significado especial para nós e assim por diante. Você olha todas essas itens lá dentro. Em resumo, o primeiro modelo da nossa cópia fez melhor que os dois modelos seguintes. Nossa erro médio quadratado no conjunto de teste continua a cair. **Redução da Dimensionalidade** refere-se à técnica que reduz o número de variáveis de entrada de um conjunto de dados. Portanto, pode ver na tabela à direita as ordens feitas em um vendedor de partes de automóveis. O revendedor vende partes diferentes de automóveis de diferentes fabricantes, e você pode ver que tem **fabricantes**, **b-packs**, **iso max**, e eles têm o item, **a roda**, **a eixada**, um `id de pedido`, um **preço**, número e uma **quantidade**. Para prever as próximas celdas, descobrimos que, através de análise de correlação, precisamos apenas três atributos, portanto, reduzimos o número de atributos de cinco para três. Claramente, não nos importamos realmente com o número do pedido. Eu não acredito que o número do pedido teria um efeito sobre a quantidade de pneus comprados, e presumo que a loja que os comprou provavelmente não teria efeito sobre isso. Nesse caso, é isso que eles têm fato pelo fato de que eles o trem, e agora apenas temos o item, a roda, o preço, e a quantidade. Uma coisa que você deveria tirar desta é que estávamos em uma fase descritiva. Descrevêmos os dados e processamos os dados. Em que podemos fazer para limpar? Por que a **Redução da Dimensionalidade** é importante: 1. **Menos dimensões para um determinado conjunto de dados** quer dizer **menos cálculo ou tempo de treinamento**. Isso pode ser realmente importante se você está tentando vários modelos diferentes e re-executando-os múltiplas vezes. Mesmo que você tenha 7 gigabytes de dados, isso pode começar a tomara dias para passar por todos esses modelos diferentes, portanto, isso é ** muito importante**. 2. Isso é, provavelmente, o ponto mais importante como parte de reduzir nossa lista de dados. **Redundância é removida** depois de remover entradas semelhantes do conjunto de dados. 3. Facilitamos alguns de nossos modelos (como a rede profunda) se você colocar dois lotes iguais de dados, pode dar peso mais alto a eles do que se colocar apenas uma vez. Desejamos remover essa redundância; isso também aumenta o tempo de processamento se vários dados estiverem sendo enviados, e o espaço requerido para armazenar os dados é **reduzido**. Se estivermos cometendo isso em um banco de dados grande, podemos não mandar para a empresa que o comprou. Por que teríamos o desejo de armazenar dois contornos extras de colunas quando você adicionou este pedaço ao banco de dados de dados? Isso torna os dados fáceis de plotagem em gráficos 2D e 3D. Eu adoro esta parte. Essa é minha parte favorita. Torna-se crucial! Ajudar em encontrar as **características mais significativas** e **"pular o resto"**, o que também ocorre em urbannización. Isso leva à melhor interpretação humana. ## Análise Principal Componente (PCA) A **Análise Principal Componente (PCA)** é uma técnica para reduzir a **dimensionalidade dos conjuntos de dados**, aumentando a interpretabilidade, mas ao mesmo tempo minimizando a perda de informação. Tiramos alguns dados muito complexos e passamos por PCA. Reduzimos as variáveis e acabamos com um conjunto reduzido de variáveis. Isso é confuso ver pois, se olharmos para o resultado final, temos todos os cores de linha umas sobre as outras, portanto, vamos taken um exemplo: Suponha que tenhamos aqui uma foto, **sempre que é pedido uma foto de algumas crianças**. E clique para decidir qual é a melhor posição. Se subirmos aqui, olhamos aqui; dizemos "OK, esta é uma posição", e capturamos trás de muitas cabeças (_não muitas faces_), entãomos desceremos aqui, podemos capturar o primeiro pessoa em tela, mas muitos cobrikiros no wick, portanto, temos um grande espaço vazio a direita. Essa parte é branca a partir daí. Outra possível posição era a partir da cima, e aí acabamos pegando a trás de alguém outro cabeça, e resulta que a melhor posição para clicar é aquela **esquerda inferior**. Olhamos, e dizemos "Na verdade, isso faz sentido, é uma boa configuração de todas as crianças na foto". Quando estamos falando sobre dados, não podemos realmente fazer disso pelo que acho que será a melhor. Precisamos ter alguns tipos de formulação matemática para que seja consistente e para que seja sensato no fundo . Uma das minhas projetos que fiz alguns anos atrás tinha algo semelhante aos iris, se já fez o conjunto de dados dos iris, provavelmente é um dos mais populares a sua disposição, no caso, eles possuem a flor medindo o de estames na central do caulis e pétalas, e eles têm a largura e a comprimento do pétala. No lugar de teremos automaticamente análise de correlação a colocar a LARGURA sobre o LARGURA / COMPRIMENTO LIMITE. Divide-se a largura pelo comprimento e você se deve dizer para um número único, em vez de dois números separados, o que é o que está acontecendo nessa etapa, e olhando o que podemos fazer para trazer os dados para baixo. O exemplo muito simples desta iris pinta de pétalas, quando compararmos a semelhança na PCA encontramos a melhor "projeção" dos dados. Dessa forma, observamos de uma direção, neste caso apenas dois variáveis, repare que geralmente falamos de 36 a 40 variáveis nessa fase, a maioria dos modelos comerciais costumam examinar de 25 a 27 diferentes variáveis, a mesma coisa para um modelo de empréstimo bancário, estamos falando de 26 a 36 variáveis diferentes que estão sendo analisadas, queremos apenas encontrar a melhor visão. Na nossa fase representamos o "x" e o "y", observamos de uma direção, e temos nossa segunda ideia "pc2" (_PC2_ é abreviatura comum), e de novo observamos o "x" de uma direção diferente. Para a facilidade, podemos pensar em que temos duas componentes principais chamadas **pc1** e **pc2**. Comparando ambas as componentes principais, encontramos que os dados estão suficientemente separados em **pc1** portanto, se olharmos aqui, temos **pc1**, pode-se observar ao longo da linha como os dados estão distanciados, contra o espaço que esse criou em pc2, é isso o que estão a encontrar; o que vai apresentar um melhor olhar para esses dados quando combinarmos e olharmos para eles na uma única perspectiva. Obviamente, as cálculos desta parte são mais complexos na parte de trás enquanto falamos sobre a matemática de como eles decidem o que é mais valioso mas isso dá uma ideia dos que estamos falando quando falamos dessa Análise, queremos fazer o que fazemos, é o enfoque que está dando uma melhor no entendimento de como a Análise de Principal Componente funciona. O que podemos fazer aqui é entrar diretamente na importância de termos relacionados a PCA, e termos importantes são: - **Visões**: o olhar por meio do qual os dados pontos são observados. Em particular, se alguém falar sobre uma apresentação de PCA, e não gasta o tempo em reduzir para algo que a pessoa média (acionistas) possa entender, pode ouvir referir-se a eles como as diferentes visões. - **Dimensões**: o número de colunas num conjunto de dados são chamadas de dimensões do conjunto de dados. - **Features**: as dimensões são frequentemente referidas como recursos. Existem frequentemente quando você está nacompanhando um negócio, você está analisando 25, 26 ou 27 diferentes recursos, e, depois, você tem as **características principais**. - **Novos variáveis**: estas são as variáveis que são construídas como combinações lineares ou misturas da primeira quantidade de variáveis. A **característica principal** é muito importante; é uma combinação, se lembrar do meu exemplo de flor, a seria o comprimento sobre largura do pétala, em vez de colocar tanto largura quanto comprimento, você apenas coloca o coeficiente-rácio, que é um único número, em vez de dois números separados. - **Projeções**: a distância perpendicular entre a componente principal, e os dados pontos. É a linha que cai em direção perpendicular aos valores dos dipelosos que os pontos ficam sobre a parte inferior dela. - **Propriedades Importantes**: - O número de componentes principais é sempre menor ou igual ao número de características. - As **características principais** são **ortogonais**. - A prioridade das características principais diminui como seus números aumentam. Como a PCA funciona: disse que havia mais no fundo e estamos falando sobre as matemática que: é isso do que está acontecendo aqui, é como funciona. A PCA executa as seguintes operações na avaliação das componentes principais para uma determinada faixa de dados: - Primeiro, iniciamos com a padronização. - Depois decompõemos a matriz de covariância. - Em seguida usamos esta para gerar os vetores i-gene e os valores i-gene, o vetor característico, e o valor final que geramos. Quando falamos de padronização o objetivo deste passo é padronizar o range de atributos da forma que cada um dos mesmos estivesse dentro de limites semelhantes. Isso envolve a remoção da média dos valores dos atributos e a escalonamento dos dados em relação à variação padrão. Pode ver aqui, sabemos que z é o valor dos atributos menos a média divididos pela variação padrão. A decomposição da matriz de covariância inclui a variação e a covariância dos valores de atributos. A variação é denotada por var, e a covariância pelo σ. A variação é a variação dos valores de atributos, enquanto a covariância é a correlação entre um par (ou mais) de atributos. σ é a covariança entre os valores de atributos 2. A matriz de covariância de um determinado conjunto de dados é sempre simétrica. # Matriz de Covariância e Análise Principal dos Componentes (APC) em Python Este documento aborda a concepção da matriz de covariância e sua importância para compreender a relação entre as variáveis, seguido por um exemplo prático de Análise Principal dos Componentes (APC) usando Python. ## Matriz de Covariância ### Definição Podemos denotar a matriz de covariância por `cov` à direita, e ela representa a covariância entre dois ou mais atributos e seus valores. Ao trabalhar com um dado conjunto de dados, podemos apresentar esta matriz para melhor compreender as relações entre os atributos. Aqui está um exemplo de uma tabela de covariância para mais de dois atributos num conjunto de dados de dimensão multi-dimensional: ``` Isto é o que estava falando. . . Normalmente, não apenas uma ou duas características, mas até 25-30 características estão em jogo. ``` A matriz de covariância nos diz como estão relacionadas uma ou mais variáveis. A covariância positiva indica que o valor de uma variável é diretamente proporcional à outra, enquanto que a covariância negativa indica uma relação inversa. É importante notar os valores positivos e negativos, se se invertidos ou não. ### Valores Iogêneros e Vetores Os valores Iogêneros e vetores são os valores matemáticos extraídos da tabela de covariância. Eles são responsáveis por gerar uma nova conjunto de variáveis a partir do conjunto original, que leva à construção dos principais componentes. - Os vetores Iogêneros são as direções das novas variáveis geradas. Eles não mudam direções após transformação linear. - Os valores Iogêneros são as magnitudes dos vetores Iogêneros. Estes valores, juntamente com as trocas de direção, transformam os dados, resultando em novas variáveis. ## Análise Principal dos Componentes (APC) A APC é um procedimento estatístico que usa uma transformação ortogonal para converter um determinado conjunto de observações de variáveis possivelmente correlacionadas em um conjunto de variáveis menos correlacionadas, chamadas principalmente componentes. ### Exemplo de APC Consideremos uma matriz `x` com `k` colunas ou variáveis: ``` Agora para esta matriz, construímos um espaço de variáveis com uma dimensão convenientemente maior quanto a quantidade de variáveis. No entanto, para simplicidade, vamos considerar isto num espaço de três dimensões. . . ``` Neste espaço, cada linha da matriz `x` é colocada no espaço de variáveis k-dimensionais, de modo que as linhas nos dados formem um nubifagos de pontos. Encontramos a média de todas as observações e, em seguida, a posicionamos ao longo dos pontos de dados no gráfico. A primeira principal componente representa a reta que melhor descreve a forma do nubifagos de pontos. Este componente representa a direção da maior variação na colocação dos pontos, e cada observação pode ser projetada nesta reta para obter um valor do eixo principal. Geralmente, apenas um componente principal é insuficiente para modelar a variação sistemática para um conjunto de dados, então se cria uma segunda axe principal. A segunda principal componente está orientada da forma que reflete a segunda fonte maior de variação nos dados, sempre que seja ortogonal à primeira principal componente. Passa pela média do ponto, permitindo que sejam projetados mais pontos de observação nesta axe para uma compreensão mais detalhada. ### Implementação em Python Para ilustrar a APC em Python, utilizaremos as seguintes bibliotecas: - matplotlib: para implementação de gráficos. - pandas: para manipulação de dados. - numpy: para operações numéricas. - seaborn: para análise estatística e implementação de gráficos. - maplotlib inline: para exibição interativa. Aqui está um exemplo de utilização da APC no conjunto de dados Cancer: ```python import matplotlib. pyplot as plt import pandas as pd import numpy as np import seaborn as sns # Carregar o conjunto de dados Cancer dados = pd. read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/cancer-wisconsin/wdbc.data", header=None) # Extract the data and target variables X = dados. iloc([2, 3, 4], 0) y = dados. iloc([2, 3, 4], 4) # Balançar os dados X_normalizado = Normalizar(). fit_transform(X) # Aplicar APC apc = APC(n_components=2) X_apc = apc. transforma(X_normalizado) # Visualização dos dados na frente do espaço transformado plt. scatter(X_apc[: , 0], X_apc[: , 1], c=y) plt. xlabel('Principal Component 1') plt. ylabel('Principal Component 2') plt. title('Conjunto de Dados Cancer no Espaço Principal dos Componentes') plt. mostrar() ``` Este código carrega o conjunto de dados Cancer, extrai as variáveis de dados e de alvo, balança os dados, aplica a APC e visualiza os dados na frente de um espaço bidimensional. Isso permite uma visualização melhor das relações entre as variáveis e uma compreensão mais detalhada dos dados. # Análise e Previsão do Coronavírus Este documento fornece um aprofundado análise do surto do coronavírus (COVID-19), incluindo seus sintomas, impacto global e uma análise utilizando máquinas de suporte vectorial (SVM) e regressão polinomial em Python para prever o número de casos futuros. ## Entendendo o Coronavírus ### O que é o Coronavírus (COVID-19) O Coronavírus, ou COVID-19, é uma doença infecciosa causada por um novo coronavírus que acredita-se ter emerido de um mercado de peixes na cidade de Wuhan, China durante dezembro de 2019. É zoonótico, o que significa que pode ser transmitido de animais para humanos. O vírus principalmente transmite através de gotículas geradas quando uma pessoa infectada tosa, gateja ou respira. ### Sintomas Um paciente com coronavírus pode apresentar os seguintes sintomas: - Tosse - Fever - Falta de ar - Dor nas músculas - Dor de garganta - Cefaleia - Perda do sentido do gosto ou do olfato ### Impacto Global O coronavírus tem afetado o mundo de várias maneiras, incluindo: - Casos Totais: Os mapas e gráficos mostrados abaixo foram obtidos do [nosso mundo em dados](https://ourworldindata.org). Eles focam nos problemas que o mundo enfrenta, como pobreza, diferentes doenças, fome, mudança climática, crise existencial e desigualdade. Seu objetivo principal é pesquisar e usar dados para advançar contra os maiores problemas do mundo. - Mortes: O mapa abaixo mostra o número total de casos confirmados de COVID-19 até o 26 de abril. --- | Países com o menor número de Casos | Países com Casos entre 5. 000 e 10. 000 | Países com Casos acima de 100. 000 | Países com Casos acima de 500. 000 | |--------------------------------------|-------------------------------------------|-----------------------------------|-------------------------------------| | Laranja Claire | Laranja Escuro | Vermelho | Vermelho Escuro | --- Até o 26 de abril, as nações africanas tiveram menos casos em comparação com as nações da Ásia, Europa e América do Norte. A China tem quase 84. 000 casos, a Índia tem cerca de 26. 500 casos e o Irã tem quase 89. 000 casos. --- - Taxa Fatal: O mapa abaixo mostra a taxa de mortalidade dos países. A taxa de mortalidade é a razão entre as mortes confirmadas e os casos confirmados. --- | Países com a Maior Taxa Fatal | |---------------------------------------| | França - Mais de 18, 22% | | Reino Unido - 13, 69% | | Itália - 13, 51% | --- - Testes: O mapa abaixo mostra o número de testes para COVID-19 realizados por diferentes países. Os Estados Unidos realizaram mais de 5 milhões de testes por agora. --- | Países realizando testes de COVID-19 em grandes números | |----------------------------------------------------| | Estados Unidos | | Rússia | | Alemanha | | Turquia | | Canadá | | Índia | ### Análise com SVM e Regressão Polinomial Essa análise preverá o número de casos futuros de 28 de abril a 17 de maio usando a regressão polinomial e SVM em Python. Os dados usados são do 22 de janeiro a 27 de abril. Os conjuntos de dados podem ser encontrados no [repositório de GitHub](https://github.com/CSSEGISandData/COVID-19) operado pelos Centro de Sistemas de Ciência e Engenharia da Universidade Johns Hopkins. ### Resultados de Previsão Os resultados detalhados serão discutidos na próxima seção. Visualização dos dados ---------------------- Vamos visualizar os dados usando gráficos e tabelas para ter uma melhor visão do ensaio do surto do coronavírus no próximo período. ### Medidas de Segurança Nesta sessão, vamos discutir diversas medidas de segurança que podem ser tomadas para garantir sua segurança e não ser afetado pelo coronavírus. Fique atento aos regulamentos e orientações emitidos pelas autoridades locais e centrais para lidar com a situação de forma eficaz. Observe atentamente as medidas de segurança a seguir para se manter tranquilo: - Lavar as mãos frequentemente com água e sabão para pelo menos 20 segundos. - Usar máscaras quando for fora. - Aprecie no mínimo 6 pés de distância de outras pessoas. - Evite grandes aglomerações. - Quando sentir mal desempenho, fique em casa. - Faça a vacinação se elegível. 😉 # Jupyter Notebook para Análise do COVID-19 ``` Este Jupyter Notebook é regularmente atualizado e é projetado para guiar você através do processo de análise de dados do COVID-19. ## Bibliotecas Importadas Inicialmente, estamos importando todas as bibliotecas necessárias para esta análise: 1. **Numpy e Pandas**: usadas para cálculos numéricos, manipulação de dados e análise de dados. 2. **Matplotlib**: usadas para criar visualizações de dados. 3. **Random, Math, Time**: bibliotecas usadas para diversos propósitos. 4. **Sklearn**: usadas para algoritmos de aprendizado de máquina como Regressão Linear, SVM, etc. 5. **SQL One Matrix**: usadas para funções como Erro Quadrático Médio, Erro Absoluto Médio, etc. Estas serão usadas para calcular a precisão do nosso modelo. ## Datasets Importados Neste demo, utilizaremos três datasets de um repositório GitHub mantido pela Universidade de Johns Hopkins. Estes datasets são importados utilizando a biblioteca pandas. 1. **Dataset de Casos Confirmados** 2. **Dataset de Morte Reportadas** 3. **Dataset de Casos Recuperados** 4. **Dataset de Atualizações do COVID-19 Recentes** ## Análise Agora vamos analisar estes datasets para entender as tendências e padrões da pandemia do COVID-19. --- ```python # Importando bibliotecas necessárias import numpy as np import pandas as pd import matplotlib. pyplot as plt import random import math import time from sklearn. linear_model import LinearRegression from sklearn. model_selection import train_test_split, PolynomialFeatures from sklearn. svm import SVR from sqlalchemy. sql import functions as sqlfuncs import sqlone # Importando datasets confirmed_cases = pd. read_csv("URL_TO_CONFIRMED_DATASET") deaths_reported = pd. read_csv("URL_TO_DEATHS_DATASET") recovered_cases = pd. read_csv("URL_TO_RECOVERED_DATASET") latest_updates = pd. read_csv("URL_TO_LATEST_DATASET") ``` * . . . Continue com a sua análise aqui * **Observação**: Mantenha a estrutura e a formatação existentes e certifique-se de corrigir quaisquer erros de gramática ou pontuação. Além disso, garantir que todas as URLs para os datasets utilizadas são atualizadas com links corretos. # Análise e Visualização de Cases de COVID-19 em Portugal: Gráfico de Pizza e Visualização A posição de Portugal está em 37º lugar globalmente em casos de COVID-19. Vou criar um gráfico de pizza para visualizar os mesmos dados. Criei outra função chamada `plot_pie_charts` para este propósito. Aqui, vou executar a função para criar o gráfico. ``` Utilizando a função `plot_pie_charts`, vamos criar o gráfico de pizza. utilizei as variáveis `visual_unique_paises` e `visual_confirmados_casos` para plotar o gráfico, e dei um título ao gráfico. Aqui está nosso gráfico de pizza na tela: ! [Gráfico de Pizza]() A direita, pode ver a legenda, que mostra diferentes nomes de países. O maior espaço do gráfico de pizza está ocupado pelo Brasil, seguido pelo outro categoria, França, Itália e Espanha. Repita o mesmo procedimento para mostrar as 10 províncias com mais casos confirmados. O resto, vou juntar numa categoria chamada 'outros' para isso vou utilizar duas listas vazias `visual_unique_provincias` e `visual_confirmados_casos_2`. ## Gráfico de Barras para as 10 Províncias com mais Casos Confirmados Vamos criar o gráfico utilizando a função `plot_bar_graphs`. Aqui, pode ver o gráfico de barras para Portugal (província ou distrito), que tem o maior número de casos. Dez seguir Portugal, o norte (norte da Europa), Galiza e Madeira, com a categoria 'outros' em segundo lugar. O próximo bloco de código parece ser complicado, mas é basicamente tentando criar um gráfico de pizza para diferentes países com suas várias regiões ou províncias. Aqui, queremos mostrar apenas as 10 regiões com o maior número de casos. Vou executá-lo agora. ### Gráfico de Pizza para Portugal e as 10 Regiões [Gráfico de Pizza para Portugal e as 10 Regiões]() A direita, pode ver a legenda para as 10 regiões. O maior espaço do gráfico de pizza está ocupado por Portugal do Norte, seguido por outras regiões como Lisboa e Vila Real: Por fim, vou verificar os casos confirmados para diferentes distritos em França. Vou mudar isso para França: [Gráfico de Pizza para França]() Com isso, vamos agora proceder a construção do nosso modelo usando a regressão polinomial e regressão suportada por máquinas. ## Construindo o Modelo usando Regressão Polinomial e Regressão Suportada por Máquinas Neste passo, vou converter todas as datas e casos em um array numpy usando a função `np. array`. Pois nossa previsão será para os próximos 20 dias, criei uma variável chamada `days_future` e atribui uma validação de 20. Adicionei os últimos 20 dias ao total de dias que já temos. Aqui estão os valores de `days_future`: ``` [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] ``` Depois, vou converter todos os inteiros em datas em formato datetime para uma visualização melhor. Agora é hora de dividir nossos dados em conjuntos de treino e teste usando a função `train_test_split`. Vou usar os dias desde o dia 22 de janeiro e os casos mundiais como meus parâmetros. Vou usar 75% dos dados para treinar o modelo e 25% para testar o modelo. Aqui estão os dados divididos: ``` (treino_dados, teste_dados, treino_etiquetas, teste_etiquetas) ``` Vamos agora transformar nossos dados para regressão polinomial, para isso vou utilizar a função `PolynomialFeatures` e o método `fit_transform` para transformar nossos dados de treino, teste e `days_future`. Depois, vou construir o modelo de regressão polinomial utilizando a função `LinearRegression` e usar o método `fit` para ajustar o modelo de treino. Depois disso, vou utilizar o método `predict` para prever os valores do conjunto de teste. Por fim, estou imprimindo o valor médio absoluto de erro (Percentual de Termos Falsos - RTM) e o valor médio quadrático do erro (Erro Quadrático Médio - RMSE). Aqui estão os resultados: ``` Erro Absoluto Médio: 0, 031734 Erro Quadrático Médio: 2156, 42 ``` Vamos agora plotar o gráfico entre o conjunto de teste e os valores previsíveis da regressão polinomial. [Gráfico de Linha para a Previsão de Regressão Polinomial]() Vamos criar outro modelo usando o algoritmo de Regressão Suportada por Máquinas (RSM) em seguida. A RSM utiliza vários parâmetros para construir um modelo. Estes parâmetros são kernel `c`, `gamma`, `epsilon`, `shrinking`, e `svm_grid`. `svm_grid` tem todos os valores de parâmetros passados a ele. Aqui, estou criando os regressores de suporte e em seguida estou usando o método `fit` para ajustar nosso conjunto de treinamento em seguida, vou prever os valores para os dados futuros também. [Gráfico de Linha para a Previsão de RSM]() Agora vou imprimir os `mae` e `mse` valores e exibir o gráfico de pré-visão. [Gráfico de Linha para a Previsão de RSM]() Agora vamos criar alguns painéis para apresentar nossos dados e modelos melhor. ## Visualizando os Casos de COVID-19 ao longo do Tempo Aqui, vou mostrar o número de casos de COVID-19 ao longo do tempo usando as datas ajustadas e os casos mundiais. Definei os rótulos de eixo x e eixo y. [Gráfico de Linha para os Casos Totais]() ### Visualizando a Aumentação Diária dos Casos confirmados [Gráfico de Barras para a Aumentação Diária dos Casos confirmados]() ### Visualizando os Mortos ao Longo do Tempo Os mortos já ultrapassaram os dois milhões de óbitos: [Gráfico de Linha para Mortos]() ### Visualizando as Recuperações ao Longo do Tempo As recuperações já ultrapassaram os oito milhões: [Gráfico de Linha para Recuperações]() ### Visualizando os Casos Ativos no Mundo Os casos ativos são os seguintes: [Gráfico de Linha para os Casos Ativos]() ### Gráfico de Barras para a Aumentação Diária dos Casos confirmados nas Recuperações [Gráfico de Barras para a Aumentação Diária dos Casos confirmados nas Recuperações]() ### Gráfico de Barras para a Aumentação Diária dos Casos Confirmados nos Óbitos [Gráfico de Barras para Aumentação Diária dos Casos Confirmados nos Óbitos]() Agora, vamos plotar os gráficos para demonstrar o número de casos de COVID-19 ao longo do tempo usando as datas ajustadas e os casos mundiais como parâmetros. [Gráfico de Linha para os Casos Totais]() ### Gráfico de Linha para o Modelo de RSM [Gráfico de Linha para o Modelo de RSM]() Agora, vou imprimir os valores previstos do modelo de regressão polinomial numa tabela. Assim, você pode ver que temos os casos confirmados pré-vistos para os próximos 20 dias (28 de Abril a 17 de Maio): ``` dias valor_previsto_confirmed_cases 0 20 145078 1 21 131562 2 22 117886 3 23 105436 4 24 94042 5 25 75832 6 26 59958 7 27 42282 8 28 27812 9 29 17233 10 30 10414 11 31 6371 12 32 3776 13 33 2584 14 34 1710 15 35 1180 16 36 808 17 37 582 18 38 360 19 40 224 ``` Assim como isso, vou imprimir os valores previstos para o modelo de regressão suportada por máquinas numa tabela: ``` dias valor_previsto_confirmed_cases 0 20 193151 1 21 185296 2 22 179357 3 23 174345 4 24 170354 5 25 166541 6 26 163027 7 27 160041 8 28 157612 9 29 155679 10 30 154185 11 31 152981 12 32 151904 13 33 151027 14 34 150279 15 35 149653 16 36 149103 17 37 148612 18 38 148163 19 40 147728 ``` ## Gráfico Predeterminado para o Modelo de RSM [Gráfico de Linha para a Previsão de RSM]() Vamos criar uma linha para mostrar os Óbitos e Recuperações no mesmo gráfico. [Gráfico de Linha para Óbitos e Recuperações]() O gráfico mostra claramente que o número de recuperações é muito maior que o número de óbitos, o que é uma boa sinal. Movendo-se para a frente, vamos criar uma linha para mostrar o número de casos de COVID-19 contra o número de casos recuperados de COVID-19. [Gráfico de Linha para Casos e Recuperações]() Em última análise, vamos plotar o número total de casos confirmados, aumento diário em casos confirmados, aumento diário em óbitos e aumento diário em recuperações para diferentes países do mundo usando a função `country_plot`. Aqui estão os gráficos para Portugal: [Portugal - Casos Confirmados]() [Portugal - Aumento Diário em Casos Confirmados]() [Portugal - Aumento Diário em Óbitos]() [Portugal - Aumento Diário em Recuperações]() Para o Brasil: [Brasil - Casos Confirmados]() Para Espanha: [Espanha - Casos Confirmados]() Para França, Alemanha e outros países: [Gráficos para a Espanha, França e Alemanha, e Outros Países]() Por fim, vamos olhar para o número total de casos confirmados em esses países. [Casos Confirmados Em Esses Países]() Os três gráficos parecem se assemelhar aos slides utilizados no mundo em datos. Agora, é a minha responsabilidade chamar à atenção para todas as precauções de segurança que você deveria tomar para se tornar seguro de um ataque pelo COVID-19: 1. Primeiro efeitos, é antes de tudo, não panique durante estes tempos ináureis. 2. Se sentir que apresentou sintomas do COVID-19, não izite em esperar. Peço que consulte um médico imediatamente. 3. Fique em casa para garantir que não está sendo exposto ao vírus fora de casa. 4. Mantenha distância social com as pessoas se está falando a alguém fora do lar. 5. Se houver alguém doente, não esqueça de lavar suas mãos regularmente usando sabão, desinfetantes e outros desinfetantes. 6. Lembre-se sempre de usar mascarão quando sair de casa. 7. Pratique os princípios de higiene respiratória como cuba a boca quando tosse e trite de comer saudável. Todas essas precauções serão úteis para te manter longe do COVID-19 e garantir que você está seguro e saudável. Movendo-se para a próxima seção, vou me esforçar para informar sobre como o Learn Simply pode ajudá-lo a começar sua carreira na ciência de dados e na engenharia de machine learning. A Learn Simply pode ajudá-lo a começar sua carreira na ciência de dados e na engenharia de machine learning fornecendo-lhe cursos de aprendizado de máquina, inteligência artificial, ciência de dados, e outros campos relacionados. Visite [www. simplylearn. com](http://www.simplylearn.com) para saber mais sobre os cursos que oferecemos. Obrigado por ler esta análise de dados de COVID-19! Faça suas melhores desejo e permaneça seguro e saudável. ### Formatação: - Todos os elementos Markdown serão preservados (# ** ` [] () etc) - A estrutura de títulos e seções será mantida - Blocos de código serão preservados ### Tradução: - Português europeu (não portuguesa de Brasil) - Termos técnicos em inglês são manter - Comandos e códigos não serão alterados - URLs serão mantidas ### Reconhecimento de Fala por Aprendizado de Máquina & Pós-Graduação em Inteligência Artificial Este curso abordará **Aprendizado de Máquina sobre Reconhecimento de Fala**, além de **Numpy** e **Pandas**, e outras bibliotecas essenciais. Aqui estão algumas das ferramentas que serão abordadas neste curso: 1. **Introdução do Curso** - Inscreva-se no Pós-Graduado em Inteligência Artificial para começar a sua carreira em aprendizado de máquina. 2. **Projetos da Indústria** - Twitter: Zumato - Uber - Mercedes-Benz 3. **Consultores do Curso** - Nossos consultores do curso são especialistas da indústria. 4. **Curso de Certificação de Aprendizado de Máquina** - Desenvolva conhecimentos com mais de 25 exercícios práticos. - Trabalhe em quatro projetos de índole industrial com laboratórios integrados. - Sessões de orientação de especialistas da indústria dedicadas. - 44 horas de treino com orientador e certificação. 5. **Conteúdo Abordado** - Aqui você pode ver os projetos que você vai trabalhar. 6. **Conclusão** - Após concluir este curso, você receberá um certificado. - Obrigado por assistir ao tutorial de vídeo completo sobre Aprendizado de Máquina com Python. Se tiver alguma dúvida, por favor diga-nos em torno dos campos de comentários. Nossa equipe vai ajudá-lo a resolver suas dúvidas. 7. **Conteúdo Adicional** - Se você gostou deste vídeo subscreva o canal de vídeos YouTube Simplilearn e clique aqui para assistir a vídeos semelhantes. Para tornar-se um especialista e obter certificação, clique aqui. --- ### Predição de Doença Cardíaca utilizando Aprendizado de Máquina | Predição de Doença Cardiovascular | URL de Simplilearn: https://www.youtube.com/watch?v=tSBAag6lAQo *Idioma estrangeiro e bem-vindo a outra série em aprendizado de máquina para previsão de doenças. Esta série é patrocinada pela Simply Learn e eu sou o Dr. Juana Thiessen e vou te acompanhar nesta série de aprendizado de máquina, começando pelas fundações básicas de ciência de dados até modelar os dados e mostrando-lhe como o aprendizado de máquina pode ser usado para previsão de risco, especialmente para doenças cardiovasculares. Isso está ajudando a fazer uma diferença na forma como doenças cardiovasculares e outras doenças crônicas são ajudadas pela prática de aprendizado de máquina. * *A doença cardiovascular continua sendo a principal causa de morte, com mais de 12 milhões de pessoas morrendo de doenças cardiovasculares todos os dias. O que aprendemos até agora é que estas mortes são preveníveis e há muito trabalho sendo feito – tanto no laboratório quanto no campo – que está ajudando a fazer uma diferença. No campo da ciência de dados, isto é especialmente verdade. * *O Estudo de Coração de Framingham, que começou em 1948 e continua até hoje com a terceira geração de participantes, foi instrumental para que os EUA começassem a coletar dados especificamente para o estudo de doenças cardiovasculares. Foi estendido para estudar outras doenças, mas podemos usar os dados – agora a disposição graças a mais de milhares de participantes – para aplicar técnicas de aprendizado de máquina para ajudar a compreender a doença, como ela se manifesta, quais são os sintomas da doença, e então usá-lo para orientar quem desenvolveu a doença, o que passos podem ser tomados para reduzir o risco de morrer da doença. * *O aprendizado de máquina já tem sido extremamente útil para praticantes médicos no campo da doença cardiovascular, assim como outras doenças. Se o aprendizado a começar é metade da batalha, o que fazer isso por graça? Visite a página Skillup pela Simply Learn para mais informações. * --- ### Cinco etapas de projetos de Aprendizado de Máquina 1. **Aquisição dos Dados** - Acquires os dados apropriados para o problema ou negócio ou problema social em que você está tentando modelar ou obter insight. - Existem várias formas de aquisir os dados: coleta da internet, extracção de dados de uma fonte diferente, coleta de dados pelo próprio usuário, ou combinação de dados de várias fontes. 2. **Filtragem e limpeza dos Dados** - Filtra e limpa os dados para garantir que são precisos e apropriados. 3. **Transformação dos Dados** - Transforma os dados de uma forma para outra (por exemplo, texto em números) para torná-los uniforiais. 4. **Exploração dos Dados** - Obtém uma compreensão de seus dados realizando análise exploratória de dados. - Gera gráficos para visualizar padrões e tendências. - Em alguns casos, você pode precisar voltar para a etapa de filtragem ou transformação para ajustar os seus dados. 5. **Divisão dos Dados** - Divide os dados em X e y (X é a variável independente, y é a variável dependente). - Divida seus dados em 80% para treinar o modelo e 20% para testá-lo para avaliar o seu desempenho. # Processo de Filtragem e Transformação de Dados Remova dados indesejados e transforme os dados em um formato adequado para modelagem usando Python. ## Filtragem Remoção de erros, duplicatas, valores anômalos e informações inúteis que não são úteis para o processo de modelagem. Nosso caso, focamos em: 1. Remoção das colunas PID e ID type, pois não são importantes para o modelo. 2. Identificação e tratamento de valores faltantes (veja a [Seção de Valores Faltantes](#valores-faltantes)) 3. Verificação de duplicatas (não foram encontradas duplicatas neste conjunto de dados, mas podem ser verificadas através do método `drop_duplicates()` com as colunas respectivas como um subconjunto). ### Passos de Filtragem 1. Remova as colunas PID e ID: ```python data. drop(['PID', 'ID type'], axis=1, inplace=True) ``` 2. Verifique valores faltantes (veja a [Seção de Valores Faltantes](#valores-faltantes)). 3. Verifique duplicatas (não foram encontradas duplicatas): ```python data. duplicated(). sum() # Soma de valores verdadeiros indica o número de duplicatas ``` ## Transformação Altere os valores de dados em um formato adequado para modelagem. Os modelos aceitam apenas valores numéricos. Como resultado, algumas transformações serão aplicadas: 1. Converter variáveis categóricas em formato numérico (por exemplo, substitua o status diabético por 1 para diabético e 0 para não diabético). 2. Formatar valores de data, se necessário, quando se trabalha com modelagem de séries temporais. 3. Tratar mapeamento para variáveis contínuas, se necessário. ### Passos de Transformação 1. Verifique o data frame: ```python print(data. dtypes) # Verifique os tipos de dados ``` 2. Converter variáveis categóricas: Por exemplo, converta a coluna de status diabético: ```python data['Status Diabético']. replace(['Não-Diabético', 'Diabético'], [0, 1], inplace=True) ``` ## Valores Faltantes Identifique e preencha valores faltantes (usando o método `fillna()` com valores preenchidos desejados, como a média, a mediana ou o modo). A escolha do valor preenchido depende do contexto e do tipo de variável. ```python data = data. fillna(data. mean()) # Preencha valores faltantes com a média da coluna ``` Para lidar com situações em que os valores faltantes são dependentes de outra coluna ou da variável alvo, você pode usar algoritmos de aprendizado de máquina para preencher os valores de forma apropriada. # Preparação de Dados: Conversão de Variáveis Categóricas em Valores Numericos usando `get_dummies` e Codificação de Rótulos A função `get_dummies` do Pandas é frequentemente usada para converter variáveis categóricas em valores numéricos para que possam ser incluídas em modelos de aprendizado de máquina. Veja como usá-la aqui: 1. **Uso de `get_dummies`** ``` # Suppose que tem um DataFrame df e uma coluna 'diabético' df['diabético'] = df['diabético']. astype('category') df_dummies = pd. get_dummies(df, columns=['diabético']) ``` `get_dummies` cria uma nova coluna para cada categoria na coluna especificada, representando se o registro pertence a essa categoria ou não (1 ou 0). 2. **Exemplo com a coluna 'age_group'** ``` # Suponha que tem uma coluna 'age_group' com categorias '26-40', '41-60', '70+' df['age_group'] = df['age_group']. astype('category') categories = df['age_group']. categories df_dummies = pd. get_dummies(df, columns=['age_group']) # Agora, `df_dummies` terá três novas colunas: `age_group_26-40`, `age_group_41-60`, `age_group_70+` # Cada linha terá 1 na coluna correspondente, e 0 nas outras. ``` 3. **Uso de Codificação de Rótulos** Se tiver muito mais categorias e não quiser criar muitas novas colunas, você pode usar Codificação de Rótulos. ``` from sklearn. preprocessing import LabelEncoder le = LabelEncoder() df['age_group'] = le. fit_transform(df['age_group']) ``` A codificação de rótulos substitui cada categoria por um número inteiro único. Tenha cuidado para não ter um número excessivo de categorias, pois isso pode levar a o Malefício da Dimensionalidade. 4. **Contagem de Valores eplotagem** Depois de converter suas variáveis categóricas em numéricas, poderá usar valor_counts para ver como essas variáveis são distribuídas em seu conjunto de dados: ``` df_dummies['age_group_26-40']. value_counts() ``` É também possível plotar a distribuição: ``` df_dummies['age_group_26-40']. plot(kind='bar') ``` 5. **Transformando Texto em uma Feature de DataTime** Para converter datas de texto em objetos de DataTime do pandas: ``` df['data'] = pd. to_datetime(df['data'], format='%Y-%m-%d') ``` # Análise Exploratória dos Dados ## Variáveis Contínuas Começamos novamente por nossa lista de variáveis e focamos nas variáveis contínuas. Escolheremos pelo menos duas variáveis contínuas, colocando-as em gráficos de dispersão separados para visualizar sua relação. Aqui está um exemplo de como gerar um gráfico de dispersão para duas variáveis: ```python # Supondo que você tenha um DataFrame chamado df e as variáveis sejam chamadas x e y import matplotlib. pyplot as plt plt. scatter(df['x'], df['y']) plt. xlabel('Variável X') plt. ylabel('Variável Y') plt. title('Gráfico de Dispersão de Variáveis X e Y') plt. show() ``` Você pode ajustar o tamanho do gráfico usando `plt. figure(figsize=(12, 7))`. ### Tratamento de Fora-de-Forma A exploração de dados ajuda a identificar fora-de-forma nos dados. Se houver fora-de-forma no medidor de colesterol, você pode tratá-los da seguinte maneira: ```python # Supondo que df seja seu DataFrame e cholesterol seja a variável q1 = df['cholesterol']. quantile(0. 25) q3 = df['cholesterol']. quantile(0. 75) IQR = q3 - q1 # Define os limites superiores e inferiores para os fora-de-forma lower_bound = q1 - 1. 5 * IQR upper_bound = q3 + 1. 5 * IQR # Identifique e remova os fora-de-forma df = df[(df['cholesterol'] > lower_bound) & (df['cholesterol'] < upper_bound)] ``` ## Análise Trivariada Para realizar uma análise trivariada, você pode adicionar outra variável ao gráfico de dispersão: ```python # Supondo que Target represente uma doença cardíaca plt. scatter(df['x'], df['y'], df['Target']) ``` ### Relação Linear Para visualizar a relação linear entre duas variáveis, você pode usar a função `sns. regplot` ou `sns. regression_plot`: ```python import seaborn as sns sns. regplot(x='x', y='y', data=df, scatter_kws={'alpha': 0. 5}) ``` ## Variáveis Categoricas Para variáveis categoricas, você pode usar a função `value_counts` para ver a distribuição de cada categoria: ```python import pandas as pd # Supondo que df seja seu DataFrame e category seja a variável df[category]. value_counts() ``` Você também pode criar gráficos de contagem usando a função `sns. countplot`: ```python sns. countplot(x=category, data=df) ``` ## Processamento de Dados Antes de realizar qualquer análise, certifique-se de que todas as variáveis categoricas estão etiquetadas corretamente. Você pode verificar o número de valores únicos em cada coluna para identificar qualquer potencial problema: ```python df. apply(lambda col: len(col. unique()), axis=0) ``` Se encontrar algumas variáveis que deveriam ser categoricas mas não são, você pode converter as variáveis usando a função `astype`: ```python df[variable] = df[variable]. astype('category') ``` ## # Sobre as variáveis fortemente relacionadas ## Cinco variáveis fortemente relacionadas - Existe uma forte relação entre as cinco variáveis e a pressão sanguínea arterial sistólica. - No entanto, a idade não se apresenta como fortemente relacionada com nenhuma das variáveis. ## Análise dos Dados ### Exploração de Dados * As mapas de calor são geralmente informativos, mas neste caso não são tão úteis. * Os gráficos de caixas podem ser utilizados para ver a distribuição da variável. #### Caixa Simples * Para criar um gráfico de caixa simples, utilize `gráfico de caixa de bolinha`. * No entanto, porque as variáveis estão em escalas diferentes, ele pode não mostrar muito. #### Grafo de Malla * podemos usar `grafo de malla` para criar gráficos de caixas separados para cada variável. * Isso nos permite agrupar com base em outras variáveis e realizar análise bivariada e trivariada. ### Observação dos Dados * Lembrar-se que `zero` representa ausência de doença cardíaca e `1` representa doença cardíaca. * Observar os grupos de idade e ver como a doença cardíaca está distribuída. * Podem-se utilizar `grafo de malla` para mostrar um gráfico de dispersion de dados em vez de histograma. ### Insights Adicionais * Utilizando `grafo de malla`, podemos realizar uma análise bivariada entre a glicemia rápida em jejum e colesterol total. * Poderemos agrupar os dados com base em grupos de idade para observar a relação entre estas variáveis. ## Dados SMOOThing - A variável alvo, `CHD` ou doença cardíaca correlária, apresenta-se fortemente desbalanceada. - Para balancear os dados, utilizaremos amostragem bag para sobre-amostragem. - Primero, precisamos dividir o conjunto de dados em `X` (variáveis preditoras) e `y` (variáveis de saída ou de resultados). - Então dividiremos isso em conjuntos de treino e teste. - Vamos utilizar o algoritmo `small` do módulo IMb learn de sobre-amostragem para smooth nossos dados. - Ajudando-se do método `fit_resample`, vamos treinar o modelo SMOTE e designar os resultados para a nova matriz X e as novas variáveis y. - Após a sobre-amostragem, serão criadas observações sintéticas para balancear a variável alvo. - A nova série y será distribuída de forma igual, com cada categoria tendo o mesmo número de observações. - O gráfico de barras irá mostrar o conjunto de dados balanceado. - Podemos então plotar a distribuição das observações sintéticas se necessário. - O conjunto de dados smoking pode ser rebasantado com a matriz X e a série y para realizar análise bivariada e multivariada. Nota: Algumas frases podem ter sido reestruturadas para melhorar a lWhile keeping its original meaning, the content and meaning remain the same. readabilidade, mas o seu conteúdo e significado permanecem os mesmos. # Guia para Escalonamento de Variáveis para Modelos de Aprendizagem de Máquina ## Contexto Neste exemplo, exploraremos a importância da escalonagem de variáveis e o processo de padronização dos dados para um modelo de aprendizagem de máquina. Nossa ênfase será em um modelo de regressão lógica, mas os princípios são aplicáveis a outros modelos também. ### Dados Originais Por exemplo, observe este registo clínico: - Idade: variando de 19 a 83 - Pressão arterial: vares de 70 a 196 - Açúcar de sangue: vares de 54 a 404 - Interação BMI e Glucose: chegando até 16, 000 Observe as grandes diferenças nas escalas entre as variáveis. Neste caso, podemos ver que: 1. Algumas variáveis, como a idade, têm um alcance mais óbvio. 2. Outras variáveis, como a pressão arterial, o açúcar de sangue e as nossas variáveis de interação, como o índice de massa corporal (BMI) e o glucose (por exemplo), têm um alcance mais amplo. A maioria dos algoritmos de aprendizagem de máquina são sensíveis à escala e ao alcance de dados, por isso, a escalonagem é crucial de garantir uma comparação justa e resultados precisos durante a formação e a predição. ## Escalonamento de Variáveis Usaremos o `StandardScaler` da biblioteca Scikit-learn para este exemplo. ### Passos: 1. Primeiro, importe a biblioteca necessária: ```python from sklearn. preprocessing import StandardScaler ``` 2. Crie uma instância de `StandardScaler`: ```python scaler = StandardScaler() ``` 3. Adapte o escalador ao conjunto de treino: ```python X_train_escalado = scaler. fit_transform(X_train) # Substitua X_train pelos seus dados de treino reais ``` 4. Transforme todas as variáveis com base no modelo do escalador: ```python X_train = scaler. transform(X_train) # Substitua X_train pelos seus dados de treino reais ``` Agora que nossas variáveis estão na escala normalizada, podemos usá-las para treinar o nosso modelo de regressão lógica. ### Modelo de Regressão Lógica Utilizaremos a classe `LogisticRegression` da biblioteca Scikit-learn para este exemplo. ```python from sklearn. linear_model import LogisticRegression # Crie uma instância do modelo de regressão lógica model = LogisticRegression() # Treine o modelo com os dados de treino escalonados model. fit(X_train_escalado, y_train) # Substitua y_train pelos seus rótulos de treino reais ``` ## Teste do Desempenho do Modelo ### Usando o Conjunto de Testes ```python # Escalonar os dados de teste X_test_escalado = scaler. transform(X_test) # Substitua X_test pelos seus dados de teste reais # Fazedores de pré-dição usando os dados de teste y_pred = model. predict(X_test_escalado) # Calcule a pontuação de acertos exatidão_marcador = exatidão_marcador(y_test, y_pred) ``` ### Validação Cruzada A validação cruzada ajuda a testar o desempenho do modelo nas diferentes partes do conjunto de dados e dá um estimativo mais preciso do desempenho do modelo sobre dados não vistos. ```python from sklearn. model_selection import KFold # Crie um objeto de divisão em várias partes K kfold = KFold(n_splits=10) # Calcule as pontuações de validação cruzada pontuações = cross_val_score(model, X_train_escalado, y_train, cv=kfold) # Imprima a pontuação de validação cruzada média print("Pontuação de Validação Cruzada Média: ", pontuações. mean()) ``` Por escalonar nossas variáveis, garantiu-se que estas estão todas na escala normalizada e podem ser usadas de forma bastante eficiente no nosso modelo de aprendizagem de máquina. Isso melhora a capacidade do modelo de aprender dos dados e generalizar bem para dados não vistos. # Análise de Aprendizagem de Máquina com Regressão Logística Neste guia, realizaremos uma validação cruzada k-folds em um modelo de regressão logística utilizando o conjunto de dados fornecido. ## Preparação do Conjunto de Dados Inicialmente, vamos carregar e preprocessar os dados, depois realizaremos a validação cruzada k-folds. Para este exemplo, usaremos a técnica de validação cruzada com 10 divisões. ```markdown # Importar bibliotecas necessárias import pandas as pd from sklearn. model_selection import KFold from sklearn. linear_model import LogisticRegression # Carregar o conjunto de dados dataset = pd. read_csv('heart_disease. csv') # Divide os dados em X (características) e y (target) X = dataset. drop('target', axis=1) y = dataset['target'] # Criar um estado aleatório para reproduibilidade random_state = 42 # Criar o objeto k-fold com 10 divisões kfold = KFold(n_splits=10, random_state=random_state) ``` ## Treinamento do Modelo Em seguida, vamos criar um modelo de regressão logística e treiná-lo no conjunto de dados escalonado. ```markdown # Treinamento do modelo de regressão logística lr_model = LogisticRegression() # Validação cruzada k-folds para train_index, val_index em kfold. split(X): X_train, X_val = X. iloc[train_index], X. iloc[val_index] y_train, y_val = y. iloc[train_index], y. iloc[val_index] # Escalonamento dos dados de treinamento (hipóteses: media=0, desvio padrão=1) scaler = StandardScaler() X_train_escalonado = scaler. fit_transform(X_train) # Treinar o modelo de regressão logística no conjunto de dados escalonado lr_model. fit(X_train_escalonado, y_train) # Predit as valoras para a data de validação y_val_pred = lr_model. predict(X_val) # Avaliar a acurácia do modelo accuracy_score = accuracy_score(y_val, y_val_pred) print("Acurácia: ", accuracy_score) ``` ## Avaliação do Modelo Por fim, vamos calcular a acurácia média e a desvia-padrão sobre todas as folds para obter uma compreensão geral da performance do modelo. ```markdown # Calcular a acurácia média e a desvia-padrão acurácias = [] para train_index, val_index em kfold. split(X): X_train, X_val = X. iloc[train_index], X. iloc[val_index] y_train, y_val = y. iloc[train_index], y. iloc[val_index] # Escalonamento dos dados de treinamento (hipóteses: media=0, desvio padrão=1) scaler = StandardScaler() X_train_escalonado = scaler. fit_transform(X_train) # Treinar o modelo de regressão logística no conjunto de dados escalonado lr_model. fit(X_train_escalonado, y_train) # Avaliar a acurácia do modelo y_val_pred = lr_model. predict(X_val) score = accuracy_score(y_val, y_val_pred) acurácias. append(score) # Calcular a média e a desvia-padrão media_acurácia = np. mean(acurácias) desvio_padrão = np. std(acurácias) print("Média de acurácia: ", media_acurácia) print("Desvio-padrão: ", desvio_padrão) ``` Utilize outros métodos de avaliação, como o ROC AUC ou a desvia-logaritmica negativa, se necessário. ## Referências - [Top 10 Aplicações de Aprendizagem de Máquina | Aplicações de Aprendizagem de Máquina & Exemplos | Simplilearn](https://www.youtube.com/watch?v=HKcO3-6TYr0) - [Seleção de Características em Aprendizagem de Máquina | Técnicas de Seleção de Características com Exemplos | Simplilearn](https://www.youtube.com/watch?v=5bHpPQ6_OU4) (aproximadamente aos 5 minutos) (roughly after 5 minutes) # Seleção de Características Supervisionadas Nesta seção, discutiremos o conceito de seleção de características supervisionadas e sua importância no aprendizado de máquina. ## Seleção de Características Supervisionadas A seleção de características supervisionadas é um método que utiliza a classe de label de saída para a seleção de características. Lembrando que examinamos três métodos diferentes: wrapper intrínseco, método filtro e método filtro. Iniciaremos pelo método filtro. ### Método Filtro No método filtro, já sabemos o que é a saída, então vamos estar a olhar para esta saída para ver como ele está se comportando em relação às características. As características são eliminadas conforme sua relação com a saída - como estão corRELacionadas com a saída. Aqui, temos um conjunto de características: seleção da melhor característica, algoritmo de aprendizagem, desempenho. Nossa meta é descobrir o qual característica está corRELacionada com o desempenho na saída. Consideremos o exemplo de um classificador de livros. Aqui, com base em dedução simples, eliminamos a coluna cor. A ideia é filtrar os elementos que não estão associados em perfeito alinhamento com o que estamos buscando. Examinamos o método de envelopamento de seguida. ### Método de Envelopamento No método de envelopamento, dividimos nossos dados em subconjuntos e treinamos um modelo com base no output de modelo. Adicionamos e subtraemos características e treinamos o modelo novamente. No método de envelopamento, temos um conjunto de características. Gera-se um subconjunto, passa por este algoritmo e verificamos como cada um dos subconjuntos de características se comporta. Usando o método de envelopamento, na base de dados de livros, utilizariamos um subconjunto diferente de características para treinar o modelo e ajustar um subconjunto com base no output. Por exemplo, tomamos o título e o número de vezes vermelho, e executamos apenas estas características e olhamos para a saída. Se olharmos com todos quatro os inputs e olharmos para a saída, veríamos uma grande variação lá, e podemos dizer que as condições do livro e a cor não afetam o que estamos procurando. Retemos as condições do livro e a cor com base no output do modelo que selecionaremos, portanto, nossa posição final de conjunto de características. Estas características nos darão o melhor resultado para nossa modelo. O método intrínseco utiliza as propriedades de ambos os métodos filtro e de envelopamento para criar o melhor subconjunto de características. O modelo treina e verifica a precisão de diferentes subconjuntos de características e seleciona o melhor entre eles. O resumo de alguns dos algoritmos de seleção de características comuns em função do método que pertencem a ele é: - Supervisionados artíficeis: - Coeficiente de Pearson - CH squared - Coeficiente Nova - Eliminação Recursiva de Características (RFE) - Envelopamento: - Algoritmos genéticos Ao falarmos sobre métodos supervisionados, também temos o método intrínseco que combina as propriedades do filtro e do envelope para criar o melhor subconjunto de características. O modelo treina e verifica a precisão de diferentes subconjuntos de características e seleciona o melhor entre eles. - Regularização de Lasso - Decisão Árvore Com a decisão Árvore, podemos escolher o nosso modelo de seleção de características de acordo com a variável de entrada e a saida. Por exemplo, se você tem uma variável numérica de entrada e uma variável categórica, poderíamos estar a olhar para o coeficiente Nova ou para o coeficiente do Kindle. Na código Python, utilizaremos o notebook Jupyter e trabalharemos principalmente com bibliotecas como numpy, pandas e matplotlib. Importaremos estas bibliotecas e leremos um dataset como o set Kobe Bryant, impressa as informações, e exibir certos gráficos para entender a características disponíveis e quais podem ser consideradas para o nosso modelo. Por exemplo, observando o dataset, podemos ver que temos 25 características originais. Algumas destas características, como o nome do time, a data da partida, o ID do time, talvez não sejam importantes para o nosso modelo, pois poderiam não afectar o output que estamos procurando. Então podemos eliminá-las e focar nas que importam. A partir dos algoritmos de seleção de características, podemos selecionar o melhor subconjunto de características para o nosso modelo. No passo final, podemos treinar o nossa modelo utilizando o subconjunto seleccionado de características e avaliar o desempenho para lograr os resultados melhores. # Documentação Técnica em Markdown: Melhoria e Formatação Este documento utiliza as seguintes regras para melhoria e formatação: 1. **FORMATAÇÃO MARKDOWN: ** - Utilize `#` para títulos e subtítulos - Utilize ** para negrito em termos importantes - Utilize ` para código inline - Utilize ``` para blocos de código - Utilize > para citações - Utilize - ou * para listas - Utilize --- 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 inteiros - Preserve comandos e códigos exatamente como estão - Mantenha URLs e referências intactas ### Análise de Dados de Basquete #### Limpeza dos Dados (Delete obsolete columns) Remova as colunas obsoletas quando chegar nela, pois estamos apenas filtrando, e isso é um método de filtro no qual estamos apenas filtrando por coisas que realmente não precisamos. Pronto, vamos seguir para Team ID e name. ``` > Vou apenas avançar e executar isso e se olhar dentro dele temos Los Angeles Lakers e depois tem a ID do time, que é única, não existe nada que irá surgir ali, porque isso é a obra dele de trabalhar para aquele time, portanto, tem-se mais um filtro adicional para ser excluído: 'ID do time' e 'nome do time'. Estes apenas contêm um valor cada e são praticamente inúteis. ``` #### Exploração dos Dados (Explore matchup e opponent) `matchup` e `opponent` são interessantes e podemos ver aqui que: `L versus p` e o `opponent` é 'p' e novamente temos dados duplicados, portanto, vamos filtrar todas essas coisas porque estamos aplicando esse modelo em um atleta específico. Isso pode mudar se estivermos aplicando o modelo em vários atletas. ``` > Como estamos aAnalysis de dados específico, isso poderá mudar se estivermos aplicando esse modelo em vários atletas. Teria como acorrer a mistério. Agora os são simples de ver. Podemos haver algo que se pareça com este: *não estamos a fazer o cálculo que a distância seja a mesma coisa que a distância de tiro? E o que podemos fazer é criar um gráfico nesse caso e colocá-lo lado a lado com o gráfico mostrando a distância do tiro, e vemos que só eleva uma linha reta. Portanto, novamente estamos trabalhando com informações repetidas, e não queremos que a nossa análise seja executada em informações repetidas, portanto, devemos filtrar as coisas que estão contendo a mesma informação. ``` #### Visualização dos Dados Agora, estámos analisando as áreas de Zona de Tiro. Em seguida, queremos saber o que isso significa e vamos andar nessa direção também. ``` > Agora estamos a analisar as Zonas de Tiro. Então, o que isso significa? Vamos começar também ao lado de um histograma. No caso, vamos criar três deles lado a lado, de modo que criamos o nosso Plot figure na medida de 20x10 e depois definimos o nosso scatterPlot pela categoria para cada uma, e dar a cada um um cor diferente, portanto, a área de Zona de Tiro vai ser o nosso plot, uma vez que o subplot 131 é o leitura deste modo, significando que é o número 1, temos três horizontais e isso é o primeiro, então o nosso scatterPlot por categoria vai ser a área de Zona de Tiro, seguiremos por lá, seguiremos com a área básica e com a área de alcance, e cada coisa passa através da definição delas, portanto, cada área vai aparecer. Quando olharmos isto, podemos ver que estas tiros, um, se encaixam na mesma linha reta, portanto, mais uma informação repetida que deveria ser intuível e quando vêmos estes gráficos em cores, vai ajudar e começa a perceber coisas e começa a perceber que o alguns dados podem ser repetidos e deve se explorar mais a fundo de acordo com o seu dominio. ``` #### Redução dos Dados (Drop some of this stuff) Este é um esquema simples e útil, normalmente é usado para filtrar alguns dados que não são necessários. ``` > Agora, vamos remover tudo o mais que é inútil e podemos remover o ID da Shot, ID do time, ID do nome, área de Zona de Tiro, área de alcance, área básica, a matchup, longitude e latitude, vamos colocar isto dentro da distância, com o tempo restante, porque combinamos isso em uma única coluna, conhecida como Shot Distância, por isso, apenas temos distância lá, Localização X, Localização Y, ID de evento do Jogo, ID do jogo, tudo isto está das coisas que estamos apenas a eliminar e iremos apenas percorrer as dropless e é uma maneira linda de executar isto porque, então, você está a executar um loop e, se for necessário, você pode voltar e alterá-lo, você pode ser jogando com diferentes modelos e fazer isto com diferentes modelos, que estão a ser testados, e, normalmente, estamos a trabalhar com o método de filtro e estáso é muito de interação humana com os dados e, ao olharmos nisto, tem a ver com a pensidão crítica e, quando olharmos nisto, podemos ver, depois, as características restantes. . . ``` #### Processo Final - Após filtrarmos os dados, o próximo passo seria executar a nossa modelo nestes dados. - Em seguida, poderíamos falar uma vez por todas dos erros das nossas classes, e então, isso iria ao igual das classes de que estavamos a falar. - Este seria o próximo passo, não seria o Setup da filtragem e isso dependeria da configuração que você estiver utilizando. Assim, tudo isso é para a filtragem de características e verificar como essas características são repetidas em esse cenário de Basquete. Tem muita coisa a mais neste código, mas a filtragem de características é uma técnica muito boa porque é o local onde você normalmente começa. Você quer ter sua própria visualização e tentar entender como isso funciona. Concluindo, ajudaremos nesta seção a entender como filtrar características e, como mencionado anteriormente, vamos ajudar na entendimento dos objetos utilizados em Python. Desejamos uma ótima aprendizagem. Observe que estamos também disponibilizando informações adicionais sobre aprendizagem automática no YouTube. Se você gostar desta série, subscreva também nossas aulas e solicite uma cópia do nosso dado que usamos aqui. ``` --- ## Perguntas de Interview de aprendizagem automática | Preparação para entrevistas de aprendizagem automática | Simplilearn ID da URL: https://www.youtube.com/watch?v=hB1CTizqGFk Idioma: pt-pt Bem-vindo a este Post, sou eu Mohan da simplilearn e hoje vamos falar sobre as perguntas de entrevista para aprendizagem automática. Este vídeo deve ajudar você quando estiver indo para entrevistas de posições de Aprendizagem Automática. Nosso intuito aqui é consolidar aproximadamente 30 perguntas mais comumente encontradas em entrevistas de Aprendizagem Automática para ajudá-lo a responder essas perguntas. Tentaremos melhorar esta resposta, portanto, se algum conceito não for claro, esta secção poderá ajudá-lo a consolidar o seu conhecimento sobre os conceitos básicos. No entanto, não jogamos de menos a teoria, mas é de extrema importância que adicione sua própria experiência às respostas ou até a frame obviamente para a opinião de qualquer uma delas. ``` # Processo de Treinamento no Aprendizado de Máquina: Uma Análogia com um Criança e um Cesto de Frutas Este documento ilustra o processo de treinamento no aprendizado de máquina utilizando uma análogia com uma criança a aprender a reconhecer frutas. ## O Processo de Treinamento 1. Inicialmente, você reserva um cesto com uma variedade de frutas, e mostra-las a uma criança. 2. Explica cada fruta ao apresentá-la, por exemplo, "Esta é uma maçã. " 3. Repete o processo até que o cesto esteja vazio. 4. No final, a criança aprendeu a reconhecer as frutas por memória. ## Sobreamplificação e Subamplificação Durante o processo de treinamento, a criança pode conseguir uma alta precisão na reconhecimento das frutas, mas o teste final vem quando uma nova conjunto de frutas desconhecidas é mostrada. Se a criança não consegue reconhecer estas novas frutas, temos um problema conhecido como sobreamplificação, que pode ser resolvido utilizando técnicas como regularização. ## Conjunto de Treinamento e Conjunto de Teste No aprendizado de máquina, os dados são divididos em conjunto de treinamento e conjunto de teste para garantir resultados precisos e confiáveis: 1. Conjunto de Treinamento: Este é o tipo de dados utilizado para treinar o modelo. Quando treinamos o modelo, expõe-lo aos dados de treinamento várias vezes até que o modelo funcione bem ou os erros sejam minimizados. Uma regra de dita comum para a divisão é 80% para treino e 20% para teste. No entanto, não existe regras fixas para isto, e depende da preferência individual. 2. Conjunto de Teste: Este é o tipo de dados reservado antes do processo de treinamento começar. Este dado é utilizado para testar o modelo treinado para verificar a sua performance em dados não vistos, garantindo que o modelo esteja funcionando como esperado. ## Gestão de Dados Quando se trata de conjuntos de dados, pode haver dados ausentes ou corrompidos, o que requer tratamento específico dependendo da situação. O tratamento de dados ausentes pode envolver remover as linhas com dados ausentes ou preencherem com valores significativos como a média ou a mediana, dependendo do caso. ## Escolha de um Classificador baseado no Tamanho do Conjunto de Treinamento Não há uma resposta "um-tamanho-ao-todos" no selecionar um classificador baseado no tamanho do conjunto de treinamento. Recomenda-se tentar vários classificadores e depois decidir qual mais se adequa à sua situação específica. # Seleção de Classificadores e Matriz de Confusão Este guia irá te ajudar a compreender a seleção de classificadores e a matriz de confusão no aprendizado de máquina. ## Seleção de Classificadores Após ter coletado seus dados, testar vários classificadores é fundamental para decidir o melhor um a usar. 1. Coletar dados e tentar vários classificadores. 2. Avaliar as precisões dos classificadores para determinar o melhor um. ## Matriz de Confusão Uma matriz de confusão é uma ferramenta de valiação utilizada em cenários de problemas de classificação. Ajudará a determinar a precisão de um classificador. Aqui está um exemplo de uma matriz de confusão binária: ``` | Classe Real | Positiva | Negativa | |----------------|----------|----------| | Predita | 12 | 1 | |----------------|----------|----------| | Verdadeira | 9 | 3 | |----------------|----------|----------| | Predita | 3 | 113 | |----------------|----------|----------| | Verdadeira | 1 | 12 | ``` Neste exemplo: 1. Os valores reais totais são 12 (Veradeiro Positivo) e 113 (Veradeiro Negativo) para as classes positiva e negativa, respectivamente. 2. Os valores predições (soma dos diagonais) é 12 (Falso Negativo) + 1 + 15 (Falso Positivo) + 10 (Verdeiro Negativo) = 25, que corresponde ao total de observações no conjunto de dados de teste. ### Análise da Matriz de Confusão 1. A precisão do modelo aumenta quando os valores da diagonal são maiores, indicando classificações corretas. 2. A soma dos números da matriz de confusão é igual ao tamanho do conjunto de dados de teste. 3. Valores altos na diagonal indicam um modelo preciso, enquanto uma distribuição larga de valores pode indicar baixa precisão. ### Cálculo da Precisão Para calcular a precisão, use esta fórmula: ``` Precisão = Valores da Diagonal / Total do Conjunto de Dados ``` Neste exemplo: ``` Precisão = (9 + 12) / 25 = 21 / 25 = 0, 84 ou 84% ``` ### False Positive e False Negative Para facilitar a compreensão do false positive (FP) e false negative (FN), considere os seguintes termos ao observar a matriz de confusão: * Verdadeiro Positivo (TP): Predição e valor real são ambos positivos. * Verdadeiro Negativo (TN): Predição e valor real são ambos negativos. * False Positive (FP): Predição é positiva, mas o valor real é negativo. * False Negative (FN): Predição é negativa, mas o valor real é positivo. ## Processo de Aprendizado de Máquina 1. Entender o problema e determinar se é um problema de classificação ou regressão. 2. Selecionar alguns algoritmos e executar o processo de treinamento dos modelos. A escolha dos algoritmos geralmente é feita por trial-and-error. 3. Treinte e teste o modelo. Divida os dados rotulados em um conjunto de dados de treino e um conjunto de teste. Utilize o conjunto de treino para treinar o modelo e medir a acurácia com o conjunto de teste. 4. Implemente o modelo em produção assim que passar pelo teste. 5. Monitore a performance do modelo a medida que novos dados chegam, e o processo de infereção prossegua. O modelo predictionará valores, tanto em regressão quanto em classificação. Esse processo pode ser iterativo, pois o modelo poderá precisar de ajustes devido ao sobreaproximamento ou outros problemas. Verifique regularmente sua performance para garantir que ela permaneça precisa ao longo do tempo. # Machine Learning e Deep Learning Identificar características irrelevantes durante o processo de aprendizado de máquina (ML) é comum manualmente, enquanto neural networks (NN) determinam automaticamente quais características usar e quais não usar no processo de aprendizado profundo (DL). ## Explicações principais * Machine Learning (ML) permite às missões tomar decisões sozinhas com base em dados históricos (principalmente sujeito a supervisão) e necessita apenas dados pequenos para treinar. Feature engineering é feito manualmente e a problemática é resolvida individualmente. * Deep Learning (DL) permite que máquinas tomem decisões com auxilio de rede neural para determinar quais características utilizar e quais não utilizar (automaticamente). necessita de um grande volume de dados e dá suporte somente a sistemas de mais alto desempenho na hora do treinamento. ## Tabela de comparações rápidas entre ML e DL | Machine Learning (ML) | Deep Learning (DL) | | --- | --- | | Reconhece Patters sem automação | Reconhece Patters com automação | | Treinamento mais rápido (poucos dados necessários) | Treinamento mais lento (dados abundantes necessários) | | Menor computação necessária (um pequeno aparelho é suficiente) | Requer máquinas de grande desempenho | | Problemas divididos e solucionados individualmente | Problemas processados de forma global | ## Supervised Machine Learning - **Detecção de Email Spam**: É comum na aponiação de veículos e sistemas para determinar entre novos e antigos emails se um novo email é um spam ou não baseado em dados anteriores. - **Diagnóstico de Saúde**: Utilizado em imagens médicas como MRI, Raios-X, etc para detectar se alguém está doente ou não. ### Exemplos de diagnóstico de saúde 1. Imagens de Raios-X estarão disponíveis e marcadas como "efetivo" ou "defeito". 2. Sistema de aprendizado autónomo que utiliza o novo conjunto de imagem para aprender a identificar se o paciente está doente ou não. ## Learning Machines Semi-Supervisionado Quando as entidades de treinamento não são completamente marcadas, usamos o ML sem supervisão para qualifica-las adicionalmente. Dado que este método utiliza tanto dados marcados como não marcados, ele permita interpolar, generalizar e atingir uma responsabilidade mais precisa na qualificação de mais dados automática. ## Machine Learning Não Supervisionado Caracterizado por clusterização e associação. Mais precisamente, a divisão de entidades semelhantes em conjuntos com características semelhantes. Existem várias técnicas de clusterização e associação que podem ser utilizadas na aplicações do ML. # Álgoritmo Mais Próximo (\*Nearest Neighbor) O **Álgoritmo Mais Próximo (Nearest Neighbor)** é um método de classificação de dados que se baseia na distância das amostras mais próximas em busca de determinar a classe de una nova entrada. Sigam-se abaixo uma explicação do funcionamento do algoritmo: 1. O algoritmo irá procurar pelos três objetos mais próximos à nova entrada. 2. Analisará se todas as três entradas pertencem a uma mesma classe. Se sim, a nova entrada também será classificada na mesma classe. 3. É possível que as três entradas estejam pertencentes a duas ou três diferentes classes. Nesse caso, o Álgoritmo Mais Próximo vai atribuir a nova entrada à classe para a qual as duas entradas pertencem. 4. O valor de k pode ser alvo de discussões se deve usar 3, 5 ou 7. O tamanho de k pode variar, mas isso pode influenciar em sua classificação final. 5. O processo de clustering é baseado no número de k e é um processo não supervisionado, onde o sistema identifica a proximidade entre os objetos em relação a alguns de seus recursos. No entanto, a semelhança é o termo k, na qual também podemos especificar seu valor e qualquer número de grupos que seja desejado, embora sem limite técnico. 6. O Álgoritmo Mais Próximo e o Naive Bayes Classifier não são o mesmo. O Naive Bayes recebe o nome de um dos componentes, mas não é o criador do algoritmo. É apenas um algoritmo de classificação probabilístico que faz algumas suposições sobre se a aparência de uma determinada característica de uma classe é relacionada com a aparência de qualquer outra característica de outra classe. Consiste em um classificador de baixa complexidade e desempenha bem, mas as suas suposições são alvo de discussão. 7. O aprendizado reforçado é um tipo de aprendizado de máquina em que a máquina é capaz de aprender a escalar uma ou mais até uma determina meta. Exemplos incluem a jogada de xadrez e outros jogos. ## Aprendizado Reforçado e Xadrez O aprendizado reforçado foi utilizado num exemplo recente por AlphaGo, que derrotou um campeão humano. Aqui, o sistema foi treinado a assistir um jogo de xadrez e, gradualmente, o sistema aprendeu o jogo de xadrez sozinho. Para que o sistema comece a aprender a jogar xadrez de maneira eficiente, precisamos: 1. Aprender usando mensagens de recompensa e penalidades. Se a jogada é boa ela é recompensada, caso contrário ela é penalizada. 2. Por favor, confira o material mais detalhado abaixo para aprender mais sobre o processo. ## Álgoritmo Mais Próximo em Clustering O processo de clustering do Álgoritmo Mais Próximo seleciona um número de objetos que é especificado (k) pelo usuário. O sistema criará então k grupos de itens semelhantes. 1. Isso pode ser útil para analisar dados em grande volume, bem como para melhor compreender a estrutura dos dados em que estamos interessados. # Documentação Técnica: Design de filtro de Spam ## Introdução Este documento abordará as seguintes seções: 1. **Definição e função do filtro de Spam** 2. **Design de filtro de Spam: um problema de classificação** 3. **Algoritmos possíveis para filtrar Spam** 4. **O processo de treinamento e validação de um filtro de Spam** 5. **O que é um árvore aleatória (Random Forest)? ** 6. **Decisão sobre a escolha do algoritmo a ser utilizado** 7. **Biais e variação em aprendizado de máquina** 8. **Recorte em árvores de decisão e por que é necessário** 9. **O que é a regressão logística** ## 1. Definição e função do filtro de Spam O filtro de Spam é um sistema automatizado que análisa e identifica mensagens eletrônicas não solicitadas ou não desejadas, seja ela texto, imagem ou links, oferecendo aos usuários envolvidos uma maneira de reduzir a recepção de mensagens atacantes, publicitárias excessivas ou indesejadas. ## 2. Design de filtro de Spam: um problema de classificação Para desenhar um filtro de Spam, o principal foco será entender qual algoritmo de classificação utilizar e sua compreensão em relação à diferença entre classificação e regressão. A ideia principal pelo qual é necessário um filtro de Spam é que é uma classe binária (pasta de Spam ou não spam). Portanto, o algoritmo de classificação a ser utilizado será a regressão logística ou uma árvore de decisão, como o SVM. Outros algoritmos poderão ser considerados posteriormente, se necessário. ### Passo 1: Identificar o tipo de problema O primeiro passo é identificar que o tipo de problema aqui é classificação. ### Passo 2: Bibliotecas e Ferramentas Utilizaremos as bibliotecas Scipy e pandas. É importante garantir que estas bibliotecas estejam fisicamente instaladas no computador antes de começar o projeto. ## 3. Algoritmos possíveis para filtrar Spam - **Regressão Logística**: Utilizaremos a regressão logística como o algoritmo principal de classificação. Outras opções poderiam ser SVM e decisão de árvore, mas estas serão consideradas apenas em caso necessário. ## 4. O processo de treinamento e validação de um filtro de Spam ### Passo 1: Coletar os dados Coletaremos dados de várias fontes para treinar o nosso modelo de filtro de Spam, como o spamassassin, reCAPTCHA e RSS usado no Open Knowledge project. ### Passo 2: Separar os dados Separemos os dados em dois conjuntos: um para treino e outro para teste. A quantidade de dados a ser usada para treino e a quantidade para teste será determinada ao longo do projeto. ### Passo 3 e 4: Treino do modelo e Consulta para teste Treinaremos e testaremos o nosso filtro de Spam para verificar se ele está identificando se uma mensagem é de Spam ou não de forma precisa. ### Passo 5: Implementação Caso nosso modelos precisarem ser diferentes para melhorar a precisão, implementaremos em cada caso. Depois, retornaremos para o custo total e comentaremos nosso resultado obtido. ## 5. O que é um árvore aleatória (Random Forest)? O Random Forest é # Aprovação de Empréstimo com Aprendizado de Máquina Este projeto mostra a maneira de implementar a Aprovação de Empréstimos utilizando Python. ## Visão Geral Um sistema de aprovação de empréstimo é um mecanismo que ajuda os solicitantes a aplicar em empréstimos e receber notificações quando estão aprovados, baseados nos dados fornecidos pelo solicitante. O sistema fornece uma lista de empréstimos disponíveis. Neste projeto, faremos uma demonstração ao vivo para prever a aprovação de empréstimos utilizando diferentes algoritmos de classificação com Python. Podes descarregar o conjunto de dados de aprovação de empréstimos a partir da caixa de descrição abaixo. ## Perguntas Frequentes Para participar e fazer a sessão viva mais excitante, responda a seguinte pergunta na secção de comentários: _Qual é o termo usado para função em Python? _ Opções: - function - def - punc - define A resposta correcta é _def_. ## Pré-requisitos Porta: Python Bibliotecas: NumPy, Pandas, Matplotlib, Scikit-learn, Seaborn Conjunto de Dados de Aprovação de Empréstimos ## Passos: 1. Importa: bibliotecas necesárias 2. Importa o conjunto de dados de aprovação de empréstimos 3. Explora o conjunto de dados (Head, Info, Tipos de Dados, etc. ) 4. Gestiona valores faltantes 5. Preprocessa dados (Cria novas colunas, aplica funções matemáticas, etc. ) 6. Visualiza dados (Historamos, diagnósticos de pie, etc. ) 7. Engineereia de recursos 8. divide o conjunto de dados em conjuntos de treino e teste 9. Treina o modelo 10. Avalia o modelo 11. Apreva a aprovação de empréstimos --- URL: https://www.youtube.com/watch?v=x2NrPeHSPU0 # Análise de Dados de Aprovação de Empréstimos ## Visão Geral Este documento descreve os Passos e Métodos utilizados na Análise de Dados de Aprovação de Empréstimos. O objetivo inicial é preencher valores nulos, selecionar subconjuntos de treino e teste, analisar valores nulos e distribuição de dados, e finalmente utilizar métodos de aprendizado de máquina para prever se um empréstimo será aprovado baseado em vários fatores de entrada. ## Manejo de Valores Nulos Com o objetivo de preencher valores nulos em todas as colunas relevantes, serão utilizados os seguintes métodos: ``` df["gender"]. fillna("Sem dados", inplace=True) df["mode_gender"]. style = "desabilitado" df. gender. replace(['Autónomo', 'Casados (ou autónomos)', 'Casados'], replace='Casados', inplace=True) df['valor do empréstimo']. fillna(df. valor do empréstimo. mean(), inplace=True) ``` ## Seleção de Subconjuntos de Treino e Teste e Pre-processamento de Dados ```python from sklearn. model_selection import train_test_split X, y = df["conjunto de dados do empréstimo"], df[["label do empréstimo"]] # Assume-se que o conjunto de dados do empréstimo são variáveis independentes; label do empréstimo sendo a variável dependente X_treino, X_teste, y_treino, y_teste = train_test_split( X, y, random_state = 0, test_size = 0. 2 # Divide os dados fornecidos em porções iguais para treino e teste ) ``` ## Análise Exploratória A seguir, está demonstrado o percentual de género ausente, o número de pessoas que obtiveram um empréstimo em cada grupo do género e o valor médio do empréstimo com relação a fatores demográficos, como género ou estado de saúde, por exemplo. ```bash na_gender = (df['gender']. isnull(). sum() / df. shape[0])*100 print (f"O percentual de género ausente é : {na_gender}") # Verifica percentual de género ausente group_by = ["género", "status de saúde", "dependente"] número de pessoas = dict((k, df[df[k]["label do empréstimo"]]["label do empréstimo"]. sum()) para k em group_by) # Soma de aqueles que obtiveram um empréstimo para género, estado de saúde, dependente print("\nNúmero de pessoas que receberam um empréstimo agrupadas por: ") para grupos, contagem em numer_of_people. items(): print(f'\n{grupos}: {contagem}') # Exibe o total de 'empréstimos concessidos' para determinados grupos valor_do_empréstimo = df[["valor do empréstimo", *group_by]]. mean() # Média do valor do empréstimo para categorias como, género, dependente, . . . print("Montante médio dos empréstimos: " + str(valor_do_empréstimo)) # Exibe o valor médio do montante médio do empréstimo ``` Paulatinamente serão executados os cálculos necessários nas características para melhor ajustar o modelo de regressão a ser utilizado. Nós vamos aqui visualizar características com a variável alvo utilizando diagramas como barras/diagramas pie, etc. . . Finalmente, empregando algoritmos de aprendizado de máquina em conjunto com técnicas de codificação de características, será possível criar um classificador supervisionado capaz de distinguir se um candidato é elegível para receber um empréstimo ou não em pontos de dados futuros. Utilizando técnicas como conjuntos de treino e teste ou conjuntos de validação. *Note: Não houve implementação, seguindo abaixo um exemplo para fornecimento para o classificador de floresta aleatória (que não foi fornecido no seu texto, traçado um exemplo para esse caso)* ```python from sklearn. ensemble import RandomForestClassifier import numpy as np dados = . . . # Dados preenchidos de características etiquetas = . . . # Etiquetas de empréstimo, 1 implica aprovado, de outra forma não aprovado (0) clf = RandomForestClassifier(n_estimators=100, min_samples_split=0. 5) # Decida a profundidade e o número de aprendizes baseadas nas características do conjunto de dados dados_treino_codificados = codificação. fit_transform(features_train. values) # Codificação de etiquetas models. fit(dados_treino_codificados. T, df_train["Etiqueta"]) saída = clf. predict_proba(dados_codificados. T. values) # Predação das probabilidades para cada exemplo de conjunto de dados array = np. argmax(saída, 1) == 1 # Verifique a predição de topo para ser aprovado (defina um limiar para obter o limiar de aprovação prevista) # Devolva os nomes das colunas correspondentes aos rótulos de predição finais em vez de índices 0 ou 1 dados_codificados[array] # Devolva o conjunto de dados com a codificação de rótulos para as instâncias aprovadas apenas ``` Nesta abordagem, é possível criar um préstamos concedidos mais personalizados e versáteis. # Máquina de Suporte Vetor: Como a Máquina de Suporte Vetor Funciona no Aprendizado de Máquina ## Bem-Vindo à Máquina de Suporte Vetor (SVM) Olá! Sou o Richard Kirschner de aprendizado simples. Hoje, vamos explorar `Máquina de Suporte Vetor` (SVM) no Aprendizado de Máquina. ### Aplicações da Máquina de Suporte Vetor As aplicações da SVM incluem, mas não se limitam aos seguintes: - Detecção de Face - Categorização de Texto e Hipertexto - Classificação de Imagens - Bioinformática - E muitas outras. . . Acompanhe para identificar outras aplicações adecuadas da SVM. ### O Que Vai Estar Aparcer Hoje - Introdução ao Aprendizado de Máquina - Compreensão da Máquina de Suporte Vetor - Vantagens da Máquina de Suporte Vetor - Caso de Uso em Python ### O Que é o Aprendizado de Máquina? O Aprendizado de Máquina é um subconjunto de inteligência artificial que permite a uma máquina aprender e melhorar por experiência sem ser explicitamente programada. Dentro do Aprendizado de Máquina, a Máquina de Suporte Vetor (SVM) é um algoritmo de aprendizado supervisionado utilizado para classificação, e o modelo aprende a diferenciar entre dois ou mais classes baseado nos dados de entrada. ### Classificação usando Máquina de Suporte Vetor Neste exemplo, vamos classificar rambos doce e maçãs crunchy. Temos um conjunto de dados rotulados como rambos e maçãs. ! [Exemplo de Classificador True](https://i.imgur.com/8UjwTRx.png) Fonte: [^1](https://www.simplilearn.com/tutorials/machine-learning-tutorial/support-vector-machine-explained-example-and-code) Usando a SVM, vamos desenhart uma reta (hiperplano) que separa os rambos das maçãs optimamente, ou seja, maximizando a distância entre o hiperplano e os dados de exemplo mais próximos (vetores de suporte) de cada classe. Este hiperplano colocado de maneira otimizada pode prever se um dado de novo data pertence ao rambos ou maçãs classe. ### Matemática por trás da Máquina de Suporte Vetor A explicação matemática da SVM é além do escopo deste texto, mas podemos descrever os conceitos principais de seguida: - Encontrar a reta (hiperplano) que maximiza a distância entre o hiperplano e o vetor de suporte. - Maximizando a distância, minimizamos o erro (incorreção) ao classificar dados novos. ### Vantagens da Máquina de Suporte Vetor 1. Espaço de entrada superior: A SVM se adapta naturalmente para espaços de entrada superior, também conhecidos como o `mal de dimensionalidade`. 2. Vetores de dados esparsos: A SVM é uma ótima escolha para vetores de dados esparsos tais como documentos de texto com milhões de tokens únicos. 3. Parâmetro de Regularização: O parâmetro de regularização (lambda) ajuda a evitar como problemas de sobrecarga e viés que são comuns em muitos outros algoritmos. ### Caso de Uso: Classificação de Imagens Agora que você tem uma compreensão básica da SVM, vamos aplicar a ela a um problema de classificação de imagens. Vamos usar um conjunto de dados contendo imagens de diferentes animais e classificá-las como gatos, cães, pássaros, etc. ```python # Importe as bibliotecas necessárias from sklearn. model_selection import train_test_split from sklearn. svm import SVC from sklearn. metrics import accuracy_score, confusion_matrix # Carregue o conjunto de dados X_data = . . . y_data = . . . # Divida os dados em conjuntos de treinamento e teste X_treino, X_teste, y_treino, y_teste = train_test_split(X_data, y_data, teste_tamanho=0. 3, estado_inicial=42) # Inicie o classificador de SVM classificador_svm = SVC(kernel='linear') # Treine o classificador classificador_svm. fit(X_treino, y_treino) # Preveja os rótulos do conjunto de teste y_pred = classificador_svm. predict(X_teste) # Avalie o modelo imprime("Acertos: ", acerto_score(y_teste, y_pred)) imprime("Matriz de Confusão: \n", matriz_de_confusão(y_teste, y_pred)) ``` Este código carrega um conjunto de dados, divide-o em treino/teste, treina um classificador SVM, faz predizão e avalia o modelo. ### Conclusão A Máquina de Suporte Vetor (SVM) é um poderoso algoritmo de aprendizado de máquina para problemas de classificação. Ele é especialmente útil quando lidando com altas dimensões de entrada e vetores de dados esparsos. A SVM oferece algumas vantagens sobre outros algoritmos, incluindo a capacidade natural de lidar com altos espaços de entrada e uma forma quase infalível para evitar problemas de sobrecarga e viés que são comuns em muitos outros algoritmos. Com uma compreensão da SVM, agora você pode aplicá-la a vários problemas de classificação em cenários reais como a classificação de imagens, a classificação de texto e muito mais. Comente seus pensamentos e perguntas na seção de comentários abaixo, e nossa equipe responderá o mais rapidamente possível. Para acessar o código inteiro, comente abaixo. Obrigado por se juntar a nós, e continue aprendendo! [^1]: Simplilearn. (2019, outubro 23). Máquina de Suporte Vetor Explicado com Exemplo e Código. [Video]. YouTube. <https://www.youtube.com/watch?v=TtKF996oEl8> (Acessado 30 de outubro de 2023) # Implantação de SVM com Python ## Configuração Este tutorial o guiará pela criação de uma máquina de suporte vetor (SVM) usando o Python, com enfoco no processo de configuração e visualização dos dados. ### Importações ```python import numpy as np import matplotlib. pyplot as plt from sklearn. datasets. samples_generator import make_blobs from sklearn import svm ``` As importações são padronizadas ao trabalhar com o Python. `numpy` é usado como plataforma de array exigida pelo array de numpy, enquanto a biblioteca `matplotlib. pyplot` é usada para visualização. A `sklearn. datasets. samples_generator` módulo é usado para gerar o dados e a `sklearn` módulo é usada para importar a SVM. ### Criação de Dados Usaremos a ferramenta `make_blobs` do módulo sklearn para gerar os dados. ```python X, y = make_blobs(n_samples=40, centers=2, random_state=20, shuffle=False) ``` Este código criará 40 linhas de dados com dois centros, cada centro contendo 20 pequenas amostras de dados. As x e y terão dois números, cada número representando um dos centros (0 representa um centro e 1 representa o outro). ### Criação de SVM A criação da SVM é feita em duas linhas de código: ```python clf = svm. SVC(kernel='linear', C=1) clf. fit(X, y) ``` Aqui, criamos a SVM usando o kernel linear. O parâmetro `C` controla a força de regularização. É comum escolher um número alto, como 1, como fizemos neste exemplo. No entanto, no caso, estamos definindo-o para 1 para garantir que o exemplo continue simples de se entender. ### Visualização dos Dados Usaremos um gráfico de dispersão para visualizar os dados: ```python plt. scatter(X[: , 0], X[: , 1], c=y, cmap=plt. cm. paired) plt. show() ``` Esse código mostrará os dois blobs de dados como azul em um lado e uma cor mais amarela em outro lado, representando as duas conjuntos de dados, que, no nosso caso, representam crocodilos ou jacareiros. ### Predição de Novos Dados Para prever dados novos, basta atribuir seus dados novos ao classificador e executar o método `predict`: ```python new_data = [[3, 4], [5, 6]] predictions = clf. predict(new_data) print(predictions) ``` Esse código preverá a classe dos dados novos e imprimirá o resultado, que representa se os dados són de crocodilo (0) ou jacareiro (1). ## Ir Mais Profundo Nesta próxima parte, examinaremos o que acontece por trás das telas da criação e visualização da SVM e criaremos um gráfico mais detalhado para mostrar os vectores de suporte e o hiperplano. Esse tópico requer mais trabalho e uma visão mais clara dos conceitos. ```markdown # To Be Done (TBD) ``` Sempre lembre-se de manter o seu código limpo, organizado e comentado. Feliz aprendizado! # Classificação na Aprendizagem de Máquina | Tutorial de Aprendizagem de Máquina | Formação em Python | Simplilearn Idioma: en ## Bem-vindo à Classificação na Aprendizagem de Máquina Meu nome é Richard Kirchner, da equipe do Simplilearn ([www. simplylearn. com](http://www.simplylearn.com)). Neste tutorial, vamos estudar os conceitos básicos da classificação e as ideias-chave utilizadas neste processo. Vamos espiar aplicações reais, algoritmos popularmente utilizados para classificação e realizar exercícios práticos emPython. --- ## Entendendo Classificação A classificação é uma tarefa que requer o uso de algoritmos de aprendizagem de máquina para aprender a atribuir etiquetas de classe a dados dados. O objetivo é prever a categoria de um objeto de dados ou fornecer o grupo a ele de uma maneira significativa. --- ## Termos Importantes na Classificação 1. **Classificador**: Isso é um algoritmo que mapeia dados de entrada para uma categoria específica. 2. **Modelo de Classificação**: Este é o modelo de aprendizagem de máquina que prevê ou desena uma classe para dados de entrada fornecidos para treino. O classificador e o modelo de classificação costumam ir juntos, e você escolhe qual classificador usar após escolher o modelo que você usará. 3. **Característica**: Uma propriedade individual medível do fenômeno observado. Essas características são utilizadas para marcar os pontos de dados em um conjunto de dados. 4. **Etiqueta**: Isso é a saída desejada ou categoria correspondente a cada ponto de dados no conjunto de dados. 5. **Grupos**: Um grupo de pontos de dados que compartilham algumas características. A compactação é o processo de agrupar pontos de dados semelhantes juntos. 6. **Classificação Binária**: É um tipo de problema de classificação em que a saída tem apenas dois possíveis classes - verdadeiro ou falso, sim ou não, 0 ou 1, etc. 7. **Classificação Multi-etiqueta**: É um problema de classificação em que cada ponto de dados pertence a mais de uma classe. 8. **Classificação Multi-classe**: É um problema de classificação em que cada ponto de dados pertence a uma única classe de um conjunto de várias classes. --- ## Aplicações reais de Classificação 1. **Classificação de Spam de Email**: O filtro de spam usa um modelo de aprendizagem de máquina para clasificar emails entrantes como spam ou não spam. 2. **Classificador de Voz de Alex (Google Voice)**: O classificador de voz procura padrões específicos na fala para determinar a identidade do locutor. 3. **Classificação de Câncer de Mamas**: Técnicas de aprendizagem de máquina são usadas para classificar imagens de mamas como malignas ou benignas. 4. **Análise de Sentimento**: Este é usado para identificar a opinião ou emoção expressa em um texto. Por exemplo, a análise de sentimentos poderia ser usada para determinar se um tweet de um cliente sobre um produto é positivo ou negativo. 5. **Detecção de Fraude**: Algoritmos de aprendizagem de máquina analisam padrões nas transações financeiras para detectar atividades fraudulentas. --- ## Algoritmos de Classificação Populares 1. **Regressão Logística**: Isso é um algoritmo de classificação simples e poderoso que é usado para problemas de classificação binária. 2. **K-Vizinhos Mais Proximos (KNN)**: O KNN é um algoritmo versátil e eficaz que pode lidar com problemas ambidestros de classificação. 3. **Árvores de Decisão**: Árvores de decisão são uma técnica popular para tarefas de regressão e classificação. Cada árvore de decisão é um modelo do processo de decisão que leva à uma escolha entre várias classes. 4. **Florestas Aleatórias**: Uma floresta aleatória é uma coleção de árvores de decisão treinadas em subconjuntos diferentes do conjunto de dados. Isso ajuda a reduzir o overfitting e melhorar o desempenho do modelo. 5. **Máquinas Víveis (SVM)**: O SVM é um poderoso algoritmo de aprendizagem de máquina usado para problemas de classificação e regressão. O SVM pode lidar com dadosem alta-dimensional encontrando a fronteira de separação ótima entre classes. 6. **Classificador Naive Bayes**: Isso é um popular algoritmo de classificação baseado em Bayes' teorema, uma ferramenta fundamental nas estatísticas e na teoria da probabilidade. O classificador Naive Bayes é simples e rápido, mas surpreendentemente eficaz para tarefas de classificação em texto. 7. **Rede Neural**: Rede Neurais são aprendizado de máquina poderosos e flexíveis inspirados na estrutura do cérebro humano. Can be used for both classification and regression tasks and can be effective in solving complex problems. Esses modelos necessitam de um maior conjunto de dados de treino em comparação às técnicas de aprendizado de máquina. --- ## Exemplos de Python ao Vivo Ao longo deste tutorial, demonstraremos o uso de algoritmos de classificação populares utilizando exemplos de código Python e exerciços para você praticar e solidificar sua compreensão sobre as ideias discutidas. --- Fonte: [Classificação na Aprendizagem de Máquina](https://www.youtube.com/watch?v=xG-E--Ak5jg) - Simplilearn --- ! [](https://www.simplylearn.com/assets/images/prod/sl_category/machine-learning/classification-in-machine-learning.jpg) --- Este texto traduzido – mantendo a formatação original Markdown – explica o que é a classificação, a sua importância, algumas aplicações reais, vários algoritmos de classificação e também apresenta alguns exemplos em Python para melhor entendimento. # Classificação de Imagem: Detecção de Animais Selvagem Usando Regressão Logística Neste projeto, vamos implementar um modelo de regressão logística para a classificação de imagens, com um foco na detecção de animais selvagem na nossa área local. Temos um vizinho que opera uma webcam externa, e gostaríamos de que o sistema de classificação identifique quando os animais selvagem como raposas e (surpreendentemente) um leopardo-pardo estão presentes. ## Previsão e Classificação de Escrita à Mão Este projeto aborda dois aspectos: (1) previsão de escrita à mão, e (2) classificação de palavras para este. Quando a escrita é previsível, classificaremos palavras de acordo com rótulos categorizados (por exemplo, 'a', 'b', 'c', etc. ). ## Regressão Logística Antes de mergulhar nos algoritmos, revise as definições: 1. **Classificador**: um algoritmo utilizado para mapear dados de entrada para uma categoria específica 2. **Modelo de Classificação**: a saída de um classificador, que mapia os dados de entrada para uma probabilidade de pertencer a uma categoria específica. Um algoritmo de classificação é a **Regressão Logística**. Entre várias aplicações, a regressão logística é utilizada para modelar a probabilidade de uma determinada classe ou evento existir, como "aprovado/reprovado" ou "vencer/perder". Ele fornece sua saída utilizando a função logística ou função de sigmoide para retornar um valor de probabilidade que pode então ser mapeado para duas ou mais classes discretas. ### Função de Sigmoide A **função de sigmoide**, ou **função logística**, é uma função de ativação que adapta a variável e limita a saída ao intervalo entre 0 e 1. É representada pela fórmula `f(x) = 1 / (1 + e^(-x))` onde `x` é a equação da reta, e `e` é a constanteccional. Nesta função, pode-se pensar em `x` como representando um ponto de incógnita. Como ficamos mais e mais perto e perto do meio da reta, a ativação será ativada ou não. A função logística de sigmoide tem uma boa curva S, que chega para um valor próximo de um para entrada positivas grandes e aproxima-se de zero para entrada negativas grandes, resultando numa região de erro limitada. ## Demo: Regressão Logística com Python e Scikit-learn Agora, veja um demo que utiliza um modelo de regressão logística. Para seguir, certifique-se de que já tem instalado os pacotes necessários (`numpy` e `sklearn`) no seu ambiente Python. ```python # Importe as bibliotecas necessárias import numpy as np from sklearn. linear_model import LogisticRegression from sklearn. metrics import classification_report, confusion_matrix # Prepare dados e modelo # . . . # Treine e ajuste os dados modelo = LogisticRegression() # Talvez precise especificar o solver, regularização, etc. , dependendo dos seus dados X = . . . # características y = . . . # rótulos modelo. fit(X, y) # Avalie o modelo y_pred = modelo. predict(X) print(classification_report(y, y_pred)) print(confusion_matrix(y, y_pred)) ``` Como pode-se ver, importamos primeiro as bibliotecas necessárias, preparamos os nossos dados, treinamos e ajustamos o modelo, e finalmente os avaliamos usando o relatório de classificação e a matriz de confusão. Para este demo, o time disponibilizou um conjunto de dados para trabalhar com. O conjunto de dados consiste em números (0-9) que adaptaremos para um modelo de dimensão única. Dependendo do seu problema específico, pode-se trabalhar com dados que apresentam várias características. # Relatório de Classificação: Regressão Logística e k-Vizinhos Mais Proximos ## Regressão Logística O relatório de classificação é sempre útil, especialmente quando se trabalha com clientes ou acionistas em uma empresa. Este relatório é um relatório de classificação que preve baseado em dois valores. Aqui, compararemos visualmente os valores reais e previstos. ``` Geramos um relatório anteriormente. Vamos ir à frente e imprimir o relatório. Pode lembrar que isso é um relatório de classificação. É utilizado para classificação, previsão, então estamos apenas colocando nossos dois valores: real e previsto. ``` O relatório fornece as seguintes métricas: precisão, recall, F1 score, suporte, acurácia, média harmônica ponderada e média harmônica ponderada. Esses números são essenciais para entender o desempenho do modelo. ``` O relatório fornece as seguintes métricas: - Precisão - Recall - F1 score - Suporte - Acurácia (Média Harmônica Ponderada) - Acurácia (Média Harmônica Ponderada) ``` ## k-Vizinhos Mais Proximos k-Vizinhos Mais Proximos (kNN) é outro algoritmo importante para compreender. O kNN armazena todos os casos disponíveis e classifica casos novos baseado na medida de similaridade. ``` k-Vizinhos Mais Proximos (kNN) é um algoritmo simples que armazena todos os casos disponíveis e classifica casos novos baseado na medida de similaridade. O k mais próximo encontra a classe do ponto de dados novo por encontrar seus vizinhos mais próximos. ``` O k em kNN é o número de vizinhos mais próximos que estamos procurando. Normalmente, tomamos o valor de k entre 3 e 10, pois isso resulta em uma melhor performance. Um valor de k menor significa que o ruído terá um efeito maior no resultado, e um valor de k maior torna-se computacionalmente caro. ``` O k em kNN é o número de vizinhos mais próximos que estamos procurando. Normalmente, tomamos o valor de k entre 3 e 10, pois isso resulta em uma melhor performance. Um valor de k menor significa que o ruído terá um efeito maior no resultado, e um valor de k maior torna-se computacionalmente caro. ``` ### Exemplo Suponha que estamos tentando encontrar a classe para um novo ponto indicado pelo vermelho. Pode-se ver que o ponto de dados vermelho pertence à classe "cães" pois ele tem dois votos para a classe "cães" e um voto para a classe "gatos". ``` Suponha que estamos tentando encontrar a classe para um novo ponto indicado pelo vermelho. Pode-se ver que o ponto de dados vermelho pertence à classe "cães" pois ele tem dois votos para a classe "cães" e um voto para a classe "gatos". ``` ### Medindo Distância A distância pode ser medida utilizando várias características, como as medidas dos ouvidos (se eles são pontudos ou molecados), borrões em relação ao nariz, etc. Uma das coisas mais comuns em kNN é a geometria euclidiana para medir a distância. ``` A distância pode ser medida utilizando várias características, como as medidas dos ouvidos (se eles são pontudos ou molecados), borrões em relação ao nariz, etc. Uma das cois # Machine Learning - K Nearest Neighbors e Support Vector Machines ## K Nearest Neighbors Apresentação dos resultados de nosso modelo de predição, na comparação de duas maps, aparece que obtivemos um bom resultado. Estes maps estão aqui e aqui. Esta é apenas uma análise a olho nu, você não deseja se aventurar em confusion matrix e dar a preferência para mostrar as imagens para que os usuários possam ver, ainda assim para enfatizar, é preciso criar uma matriz de confusão. Neste caso, utilizamos teste `y` e predição `y` para mostrar a matriz de confusão onde podemos ver que o modelo teve um bom desempenho. Tentei lembrar o número desses resultados, mas precisaria voltar a verificar os dados. Notei que o número que parecia ser um falso negativo era o 9, o que é um dado alarmante, não queremos estar entre essas 9 pessoas que foram falso negado e depois se descubra que tem câncer. Seria preciso encontrar uma maneira para solucionar este problema. Existem diversas maneiras para lidar com este problema, entre elas, é possível mexer com a geometria euclideana e as medidas de ativação, além de alterar como interagem. Porém, isso é mais avançado, existe também outras formas de classificar (clustering) Os dados funcionaram para grande parte dos casos, pode ver aqui que se tentava vender algo, nesse caso, se este não for um caso de vida e se tentamos apenas fazer uma promoção de venda, a classificação é razoável, pois podemos ver que se exibir este anúncio os seguintes 42% das pessoas real mentiram em termos de previsão de compra, enquanto que se não exibir o anúncio 79% das pessoas escolheria outra direção. Então, em qualquer caso, conseguimos obter um número bom de compra adicionando uma grande quantidade de células à sua empresa. ## Support Vector Machines (SVM) ### Objetivo O objetivo da máquina apoia-se em encontrar uma hipérplano em um espaço n-dimensional (n sendo o número de características que classificam os dados) que possa ser utilizado para separar todos os pontos. Neste caso, se voltar para algumas das gráficas que já observámos anteriormente, gostaríamos de encontrar uma reta que possa separar esse mundo, mas se voltarmos para o próximo tópico. . . ### Hiperplano Revertendo para o assunto principal, sabemos que existem muitos hipér planos possíveis, o objetivo será encontrar o hiperplano que possua uma distância máxima entre os dados, seja eles de uma ou outra classe. Para época de triagem de dados distorcidos ou não linearmente separável, usamos métodos de margem soft (soft margins - aceitamos que um ponto que é um outlier pode imaginar nosso algoritmo aumentando o valor de `c` e aguardando que ele se esforça e achar uma forma de classificar o 'outlier'). Para casos distorcidos, a proporção de sinais deve ser dada por `c`, assim que o `c` for muito grande, ele tentará se esforçar em encontrar os melhores separadores. ### Experimente para si! Para que você possa melhor entender, vamos utilizar esse algoritmo na nuvem de quarks do Jupyter. Primeiro começamos a visualizar a API de sklearn (SVM), vemos que você deve ver na parte de `methods` tudo que deve estar familiar, pois os comandos são semelhantes às outras técnicas de aprendizado de máquina que já aprendeu, veja abaixo: ```python from sklearn import svm X, y = . . . # Vamos importar o SVC do pacote svm de modo a podermos experimentar # Esse modelo é utilizado para o support vector classification modelo = svm. SVC() # Treinamos o sistema modelo. fit(X, y) # Agora precisamos usar o comando predict para tentarmos prever e obter o resultado # O resultado é comparado com o `expected_y` # Se forem iguais o resultado será 1 ``` O objeto de código acima só é um resumo do que foi realizado no notebook das imagens. Veja abaixo as partes do código responsávele por fazer o teste e previsões: ```python # Linear classifier C = 1. 0 modelo = svm. SVC(kernel='linear', C=C) # Components from scikit-learn Machine Learning Algorithms clf = svm. SVC(kernel='poly', C=C, degree=3) ``` Neste tópico, foi mostrado um exemplo simples de utilização do SVM. No aluno faça de forma independente de ter aprendido encontrar o método que te convier. Nesta seção final, trata-se de encontrar diferentes estratégias computacionais que utilize impedir que o algoritmo se torne instável e conseguir prever um valor mais acurado. ``` Tip: Para uma melhor compreensão dos dados, experimente e incluir visualizações, seja de gráficos ou matrizes. ``` Colocando as partes juntas: ```python # Importamos a biblioteca scikit-learn from sklearn import svm # Cria um conjunto de dados randômico X, y = . . . # Determinação de X XY # Configuração do support vector machine model = svm. SVC() # Encontrando a distribuição model. fit(X, y) # Podemos analisar a saída da distribuição print(model. output_messages) # Podemos testar o modelo implementado em um novo conjunto de dados "teste" novos_dados_teste = [[ . . . ]] predicoes_y_teste = model. predict(novos_dados_teste) print(predicoes_y_teste) ``` Aqui tudo o que é necessário para que o algoritmo Step 3 trabalhe. Pratique isso para compreender com melhor clareza. # Demo de Algoritmos de Aprendizado de Máquina: Suporte Vectores de Maquinas (SVM) e Árvores de Decisão ## SVM com Kernel RBF O `polyfit` ou o `kernel poly` é o que será ajustado para isso. Se isso não funcionar, então qual é a nossa opção? Bem, eles têm o kernel RBF. Vamos olhar: ```markdown ```ruby Kernel RBF ``` Para que o nosso título corresponda ao kernel RBF: ```markdown ## Kernel RBF ``` Vou adiantar e executar isso e você pode ver que o kernel RBF faz um trabalho muito bom. Ele divide os dados em partes de forma muito boa, e isso é o que se espera por estes dados. Aqui tem o anel interno e um anel externo de dados, então o kernel RBF se encaixa no pacote de dados muito bem. Quando falamos sobre SVM, é muito poderoso pois possui essa característica de classificação em suas algoritmos, o que é realmente difícil de conseguir com os algoritmos k-means ou k-NN. Portanto, quando começa a olhar para estes diferentes algoritmos de aprendizado de máquina, entendendo os dados e como eles estão agrupados é muito importante. Isso faz uma diferença enorme quando se trata de o que você está computando e de o que você está fazendo com eles. ## SVM vs. k-means e k-NN Entendendo os dados e como eles estão agrupados é fundamental porque isso faz uma diferença grande em o que você está computando e em o que você está fazendo com ele. Por exemplo, ao comparar SVM com k-means ou k-NN, entendendo os dados e como estão agrupados é crucial. ### SVM (Suporte Vectores de Maquina) O SVM é muito poderoso pois possui essa característica de classificação em suas algoritmos, o que é realmente difícil de conseguir com os algoritmos k-means ou k-NN. A nó decididor superior de uma árvore de decisão é conhecido como nó raiz. Aprende a particionar com base no valor do atributo e parte a árvore de forma recursiva. Você tem o seu nó decisidor; se você recebe 'sim', você vai para o próximo nó, que é mais um nó decisidor, e 'sim' o leva ao próximo nó decisidor, e assim por diante. Uma de imaginar das coisas mais legais sobre árvores de decisão é que elas permitem que você veja o que está acontecendo. Você pode mesmo olhar e dizer por que você foi para direita ou para a esquerda? O que foi a escolha? Onde é a quebra? Isto é realmente bom se você estiver tentando compartilhar essa informação com alguém outro quando eles perguntam por que algo está acontecendo. As árvores de decisão são extremamente poderosas ao lidar com o 'porque' das coisas. ### Exemplo de árvore de decisão Aqui está um exemplo de uma árvore de decisão que decide se eu dormirá em uma noite determinada. Meu apto depende se eu tenho a notícia em ou não. Eu preciso dormir? Não, então eu trabalho. Sim, está chovendo fora? Sim, eu dormo. Não, eu trabalho. ### Implementação de árvore de decisão Vamos dar uma olhada no código para a implementação de um classificador na árvore de decisão. ```python from sklearn. tree import DecisionTreeClassifier # Criar um classificador de árvore de decisão clf = DecisionTreeClassifier() # Fit the data to the classifier clf. fit(x_train, y_train) # Fazer predições no conjunto de dados de teste y_pred = clf. predict(x_test) ``` No código acima, primeiro importamos as bibliotecas necessárias, então criamos um classificador de árvore de decisão e o ajustamos ao conjunto de treinamento de dados. Depois disso, prevemos os valores no conjunto de dados de teste. ## Conclusão Ao todo, os algoritmos de aprendizado de máquina como os SVM e as árvores de decisão são poderosas ferramentas para análise e preditivas dos dados. Compreendendo os dados e como estão agrupados, você pode melhor aproveitar estas ferramentas para seus propósitos. Lembre-se de importar e pré-processar seu dados, dividi-los em conjuntos de treinamento e teste, escolher o algoritmo correto e ajustar os dados ao modelo. Este método conduz a previsões precisas e consecos da sua formação. Felizes com as suas análises! --- **Referências** - [Scikit-Learn: árvore de decisão](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html) - [Scikit-Learn: SVM](https://scikit-learn.org/stable/modules/svm.html) # Documentação Técnica - Algoritmos de Aprendizagem de Máquina ## Regressão Logística Nesta documentação, exploraremos o uso da **Regressão Logística** na aprendizagem de máquina. Este algoritmo é particularmente útil para prever um resultado categorial, como se um passageiro a bordo do Titanic teve sobrevivido ou não. ### Pré-requisitos Para entender e implementar regressão logística é essencial: - Familiarizar-se com o conceito de Superapedida de Dados - Entender a técnica da **Classificação**, que é uma das métodos empregues na superapedida de fluxo - Serávido com Regressão Logística, um algoritmo empregue para realizar a classificação, principalmente com classificação binária ### O que vai aprender? Nesta documentação, abordaremos os seguintes assuntos: 1. **Superapedida de Dados**: discutiremos o que é a superapedida de dados e compreenderemos como é semelhante ao aprendizado humano. 2. **Classificação**: exploraremos a concepção de classificação, que é uma das técnicas de superapedida de dados. 3. **Regressão Logística**: exploraremos a regressão logística, um algoritmo empregue para realizar a classificação, com ênfase em classificação binária. 4. **Regressão Linear vs. Regressão Logística**: compararemos a regressão linear e a regressão logística e esclarecemos suas diferenças. 5. **Aplicações de Regressão Logística**: revisaremos algumas aplicações comuns da regressão logística em vários domínios. 6. **Exemplo de Código Python**: forneceremos um exemplo prático de implementação da regressão logística usando Python em um notebook Jupyter. ### Caso de Uso - Predizer o Sobrevivente dos Passageiros no Desastre do Titanic Para ilustrar o uso da regressão logística, consideramos um caso de uso em que tentaremos construir um modelo de previsão para prever se os passageiros a bordo do Titanic sobreviveram ou não. Utilizando dados etiquetados, incluindo números de passageiros, súrvivencia status, classe e outros atributos, treinaremos o nosso modelo e testaremos-o com novos dados para prever o resultado de sobrevivência. ### Recursos Para saber mais detalhes sobre regressão logística, consulte as seguintes fontes de informação: - [Regressão Logística em Python](https://www.youtube.com/watch?v=XnOAdxOWXWg) - Simplilearn --- **Avisos: ** - As Ideias e Opiniões apresentadas neste documento são para fins de informação em particular e exclusivamente representam as opiniões do autor. - Este artigo é reproduzido da fonte com pequenas alterações na formatação e na ortografia para uma leitura mais fácil. Nós lidamos com dois modelos aqui: 1. **Modelo de Gênio**: usando o modelo de Gênio, imprimimos as previsões e calculamos o acerto para o conjunto de dados `y_test`. 2. **Modelo de Entropia**: calculamos o acerto para o modelo de entropia separadamente. Nosso `y_predict` para ambos os modelos é o seguinte: - `y_predict_genie` - `y_predict_entropy` Ao comparar os dois modelos, observamos que: - A precisão do Modelo de Gênio é levemente superior. - Enquanto o Modelo de Entropia apresenta resultados levemente melhores na predição do balanço certo, ele apresenta piores resultados na predição do balanço à esquerda. É desafiante fazer uma decisão clara entre os dois modelos, pois seus resultados estão bastante próximos. Dependendo do dado específico que está sendo analisado, ajustar os parâmetros ou utilizar diferentes modelos pode levar a melhores resultados. Algumas conclusões importantes dessa comparação: 1. O pacote Scikit-learn simplifica o processo de divisão, treinamento e predição de dados para modelos de aprendizado de máquina. 2. A Regressão Logística é uma escolha adecuada quando se trata de resultados binários, como prever se um e-mail é spam ou não legítimo, ou se um tumor é maligno ou não. 3. Os K-Vizinhos Mais Proximos também podem realizar logística regressão e poderão providinger melhores resultados em determinados cenários, especialmente quando algoritmos não-paramétricos são necessários. 4. As Máquinas de Vectors de Sensores (SVM) funcionam de forma mais eficiente com dados de alto dimensional e estão extensamente utilizadas na reconhecimento de padrões, mineração de dados e detecção de infiltração. 5. Índice de Árvore de Decisão são úteis para o Gerenciamento Operaacional, especificamente para a Análise de Decisão, para identificar estratégias mais prováveis de alcançar o nossos objetivos. Este modelo é preferido quando o modelo é fácil de entender. Here is the text translated to Portuguese (Portugal) while maintaining Markdown formatting and the original content, terminology, and commands: ```markdown # Aprendizado de Máquina: Aprendizado Supervisionado, Classificação, e Regressão Logística O aprendizado supervisionado é um dos dois tipos principais de aprendizado de máquina, sendo o outro o aprendizado não-supervisionado. Há também um terceiro tipo chamado de aprendizado reforçado, mas não iremos discutir em detalhes neste contexto. No aprendizado supervisionado, utilizamos dados etiquetados para fazer previsões ou classificações, uma vez que, no aprendizado não-supervisionado, não dispomos de etiquetas e devemos descobrir padrões por nossa conta. ## Aprendizado Supervisionado: No aprendizado supervisionado, dispomos de dados etiquetados disponíveis, e utilizamos-os quando queremos fazer previsões ou classificar os dados. Por outro lado, se não dispomos de dados etiquetados, utilizamos técnicas de aprendizado não-supervisionado como agrupamento e associação. ## Classificação: A classificação é uma das técnicas utilizadas no aprendizado supervisionado. É utilizada quando queremos classificar dados em categorias discretas ou etiquetas. Por exemplo, podemos querer determinar se um passageiro sobrevivou ou não a um determinado viagem (classificação binária). ## Regressão: Regressão, por outro lado, é utilizada para prever um valor contínuo, como o preço de ações ou a temperatura para o dia seguinte. É utilizada para prever valores contínuos em vez de discretos. Por exemplo, regressão logística é utilizada para classificação, enquanto regressão linear é utilizada para previsões de valores contínuos. ## Regressão Logística: A regressão logística é um algoritmo utilizado para classificação binária, em outras palavras, para classificar dados em dois grupos. É projetado para determinar a probabilidade de um evento acontecer, e funciona bem para problemas de classificação. Na regressão logística, o resultado da variável dependente é discreta, em contraste com a regressão linear, na qual esforçamos para encontrar um valor contínuo. ### Exemplo: Vamos considerar um exemplo para ilustrar como funciona a regressão logística. Suponha que você queira descobrir a probabilidade de que o seu carro irá quebrar até uma determinada data. A regressão logística pode auxiliá-lo a determinar a probabilidade que o seu carro quebre baseados em fatores tais como o número de anos desde o último serviço. O modelo de regressão logística pode ser representado em uma curva que mostra a probabilidade de o evento acontecer, e podemos decidir se o evento vai ocorrer ou não ao definir um limiar. Por exemplo, se a probabilidade é acima de 0, 5, podemos considerar que o carro é muito provável de quebrar. Há outros algoritmos para classificação também, como Árvores Decididas e K-Próximos Vizinhos, mas vamos focar nesta regressão logística no presente contexto. Nas seções seguintes, vamos delvear mais a fundo sobre como funciona a regressão logística e aplicá-la para solucionar problemas de classificação. --- ``` Note that I have changed some terms to reflect the newly introduced terminology for machine learning in Portuguese (Portugal). # Regressão Logística: Um Resumo Esta seção fornecerá uma visão geral rápida da Regressão Logística, comparando-a com a Regressão Linear, e suas aplicações. ## A Função Sigmoide e a Regressão Logística A equação da reta, que é equivalente ao `y`, onde `y` é igual a `beta0 + beta1x`, é conhecida como a função Sigmoide. Esta equação também é reconhecida como a equação da regressão logística. Se esta for representada, dá uma curva de sigmoide. Comparemos a Regressão Linear e a Regressão Logística: - A **Regressão Linear** é utilizada para resolver problemas de regressão, predizendo valores contínuos. - A **Regressão Logística**, por outro lado, é utilizada para resolver problemas de classificação onde necessitamos prever valores discretos. Embora ambos sejam chamados de regressão, a regressão linear preve valores contínuos, enquanto a regressão logística determina a probabilidade ou possibilidade de um determinado evento acontecer. - A Regressão Linear, como o nome sugere, é uma reta, portanto, o nome Linear Regression. - A Regressão Logística, por outro lado, é uma função sigmoide, e a curva tem uma aparência de S. - A Regressão Logística é amplamente aplicada na previsão do tempo, como determinar a probabilidade de chover ou não. **Observação importantíssima: ** Na previsão do tempo, tanto a Regressão Linear quanto a Regressão Logística podem ser utilizadas. Se precisarmos encontrar valores discretos como se choverá ou não, utilizamos a Regressão Logística. Se quisermos determinar a temperatura, utilizamos a Regressão Linear. **Alguns exemplos de aplicações da Regressão Logística: ** 1. Previsão do tempo (choverá ou não) 2. Classificação de objetos (se é um cachorro ou não) 3. Classificação múlti-classe (conversa para classificação binária para usar Regressão Logística) 4. A predição de taxas de sobrevida na saúde (usando vários parâmetros) **Exemplo para aplicar a Regressão Logística na previsão: ** Abaixo está um exemplo de aplicar a Regressão Logística para previsão da imagem apresentada. É importante notar que este é um exemplo ao vivo. Acompanhabémos alguns slides para explicar o que estamos tentando alcançar antes de entrar no código. Neste exemplo, utilizaremos a Regressão Logística para treinar o modelo para previsão de um número de uma imagem 8x8. Aqui está a metodologia típica de treinamento, teste e implantação de modelos de aprendizagem de máquina: 1. Treine o modelo utilizando a abordagem de regressão logística. 2. Divida os dados iniciais em dois partes: conjunto de treinamento e conjunto de teste. 3. Treine o modelo com o conjunto de treinamento. 4. Teste o modelo com o conjunto de teste. 5. Obtenha uma acurácia boa e utilize-a para inferência. Técnicas como a matriz de confusão, mapa de calor e métricas de desempenho como a acurácia são utilizadas para avaliar o desempenho do modelo. ## Matriz de confusão na Regressão Logística A matriz de confusão é uma ferramenta chave para identificar a precisão de um modelo de classificação como a Regressão Logística. A dimensão da matriz depende do número de saídas que esperamos. - O modelo mais preciso teria os números máximos na diagonál, pois dados ideais deveriam ter os números máximos de valores previstos iguais aos valores reais, evitando erros de classificação em outras células. Com a matriz de confusão, você pode analisar os resultados de previsões, entender se os rótulos previstos combinam com os rótulos definidos (a verdadeira importante) e avaliar o desempenho do modelo. # Classificação de Imagem Usando Regressão Logística Este documento descreve os passos para realizar a classificação de imagens usando regressão logística em Python. ## Pré-requisitos - Conhecimento básico sobre conceitos de aprendizado de máquina - Familiaridade com o Python - Bibliotecas numpy, Matplotlib, Scikit-learn instaladas ## Dados Neste exemplo, utilizaremos o conjunto de dados CIFAR-10 para classificação de imagens. O conjunto de dados contém 60. 000 imagens de 32x32 pixels de cores em 10 classes, com 6. 000 imagens por classe. Tem 50. 000 imagens de treino e 10. 000 imagens de teste. ## Etapas 1. Importe as bibliotecas necessárias ```python import tensorflow as tf from tensorflow. keras import datasets, layers, models import numpy as np import matplotlib. pyplot as plt ``` 2. Carregue o conjunto de dados CIFAR-10 ```python (train_images, train_labels), (test_images, test_labels) = datasets. cifar10. load_data() ``` 3. Pré-processamento dos dados - Normalize os valores pixels - Reorganização dos dados para adaptação à forma de entrada do modelo ```python train_images = train_images / 255. 0 test_images = test_images / 255. 0 train_images = train_images. reshape(-1, 32, 32, 3) test_images = test_images. reshape(-1, 32, 32, 3) ``` 4. Crie o modelo de regressão logística - Crie uma instância da classe `LogisticRegression` - Compile o modelo com um otimizador, função de perda e métricas ```python model = models. Sequential() model. add(layers. Flatten(input_shape=(32, 32, 3))) model. add(layers. Dense(128, activation='relu')) model. add(layers. Dense(10, activation='softmax')) model. compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) ``` 5. Treine o modelo - Treine o modelo com os dados de treino ```python model. fit(train_images, train_labels, epochs=10, batch_size=32) ``` 6. Avalie o modelo - Avalie o modelo com os dados de teste ```python test_loss, test_acc = model. evaluate(test_images, test_labels) print('Teste acurácia: ', test_acc) ``` ## Matriz de Confusão Para visualizar a acurácia do modelo, podemos utilizar matrizes de confusão. ```python from sklearn. metrics import confusion_matrix import seaborn as sns # Pré-visualize as etiquetas para o conjunto de teste de dados pred_labels = model. predict_classes(test_images) # Computar a matriz de confusão cm = confusion_matrix(test_labels, pred_labels) # Visualize a matriz de confusão sns. heatmap(cm, annot=True, cmap="Blues") plt. show() ``` ## Referências - [Conjunto de Dados CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) - [Regressão Logística em TensorFlow Keras](https://www.tensorflow.org/tutorials/keras/logistic_regression) - [Matriz de Confusão em Scikit-learn](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html) - [Heat Map em Seaborn](https://seaborn.pydata.org/generated/seaborn.heatmap.html) # Matemática para Aprendizado de Máquinas: Matemática Essencial - Tutorial de Aprendizagem de Máquinas Este documento se concentra na Matemática Essencial necessária para aprendizado de máquinas. Aqui vamos discutir vários assuntos relacionados com dados, álgebra linear, cálculo, estatística, probabilidade e matrizes. ## I. Dados e seus tipos Os dados representam informações individuais de fato de várias fontes. Eles são armazenados, processados e mais tarde usados para análise para dar insights. Pode-se dividir os dados em dois tipos principais: 1. Qualitativo/Categórico: - Nominal (etiquetas sem ordem intrínseca ou hierarquia): exemplo: cores, tipos de árboras e nomes de animais. - Ordinal (etiquetas com ordem ou hierarquia definida): exemplo, sistemas de classificação, notas de colégio. 2. Quantitativo/Numeral: - Discreto (contáveis e separáveis): exemplos: número de estudantes, número de carros. - Continuo (infinemente variável): exemplos: temperatura, altura, peso. ## II. Álgebra linear e seus conceitos A álgebra linear é uma área da matemática que se concentra em equações lineares, vetores, matrizes, e transformações. Conceitos importantes incluem: - Vetores: combinações lineares, produtos escalares e produtos cruzados. - Matrizes: Operações matriciais (adição, subtração, multiplicação e inversão) e propriedades. ## III. Cálculo O cálculo fornece ferramentas para compreender fenômenos do mundo real. Possui duas partes principais: - Cálculo Diferencial: Estudo das taxas de variação e inclinações de curvas e derivadas. - Cálculo Integral: Estudo da acumulação, áreas, e , volumes, e integrais. ## IV. Estatística A estatística é a ciência de coletar, analisar, interpretar e representar dados para conclusões sobre uma população ou amostra. Tópicos importantes incluem: - Estatística Descritiva: Medidas de centralidade (média, média, modo), medidas de dispersão (intervalo, variância, desvio standard), e representações gráficas. - Distribuições de Probabilidade: distribuição normal, distribuição binomial e distribuição Poisson. ## V. Probabilidade para aprendizado de máquinas A Teoria da Probabilidade é essencial para entender Variáveis Aleatórias, Distribuições de Probabilidade, Probabilidades Condicionais, Regra de Bayes e a Lei dos Grandes Números. ## VI. Demos Interativos Ao longo do conteúdo, fornecemos demonstrações interativas e exercícios para ajudá-lo a melhor compreender estes conceitos. Para uma compreensão mais aprofundada de Matemática para Aprendizagem de Máquinas, por favor, consulte o [Tutorial de Matemática para Aprendizagem de Máquinas de Simplilearn](https://www.youtube.com/watch?v=iyxqcS1u5go) (idioma português). # Classificação de Dados e Algebra Linear A classificação de dados é uma importante questão em múltiplos campos, incluindo aprendizado de máquina, estatística e análise de dados. Este documento busca fornecer uma vista geral abrangente da classificação de dados, com um foco em dados nominais, ordinais, quantitativos e numéricos, além de uma introdução à álgebra linear. ## Dados Nominais Os dados nominais são dados categóricos sem ordem ou sentido numérico intrínseco. Os valores são entidades distintas que não podem ser classificadas, como país, género, raça ou cor de cabelo. Estes valores podem ser representados como verdadeiro ou falso, ou como rótulos por on ou off. Por exemplo, uma pessoa pode ter uma trench vermelha (verdadeiro) ou não (falso). Adquirindo os dados nominais, considere-os como um conjunto de verdadeiros ou falsos. ## Dados Ordinais Os dados ordinais são dados categóricos com uma ordem ou escala predefinida. As faixas salariárias, classificações de filmes e escalas de Likert são exemplos de dados ordinais. Os valores possuem a propriedade de precedência, mas as diferenças entre eles não possuem significados numéricos específicos. No caso das faixas salariárias, se você tem de 10. 000 a 20. 000, o número de pessoas que recebem esse salário pode ser 150. Para solidário a 20. 000 a 30. 000, a contagem pode ser 10, e assim por diante. A palavra "sacapéns" é usada em geral para descrever este processo de separoar dados em categorias significativas. Ao discutir dados ordinais, é importante se lembrar de que nós ainda estamos aidando de um setup verdadeiro ou falso. Se você é parte do 10. 000 a 20. 000 em salário, você deve estar nessa categoria, e se você não é, você não está. No entanto, estamos agora falando sobre categorias, portanto nossa ênfase está em contar quantas pessoas estão em cada categoria. ## Dados Quantitativos: Discretos e Contínuos Dados quantitativos são dados numéricos que podem ser medidos e analisados de maneira estatística. Eles caem em duas classes: discretos e contínuos. ### Dados Discretos Dados discretos possuem um conjunto final de valores que podem ser categorizados. Perguntas de intensidade de condições respondidas corretamente, corridas feitas em críquete e o número de hits em uma partida de beisebol são exemplos de dados discretos. Inteiro e inteiros restritos são tipos comuns de dados discretos. ### Dados Contínuos Dados contínuos podem assumir qualquer valor numérico dentro de um intervalo. Exemplos incluem pressão do ar, peso de uma pessoa ou temperatura. Em geral, pensamos em dados contínuos como valores em ponto flutuante que podem se tornar tão pequenos que sejam tão pequenos quanto quisermos. Há também um grupo de tipos de dados que caem entre discretos e contínuos, como o mercado de ações. Embora os valores sejam ainda discretos, como os valores em dinheiro, a variância pode ser tão grande que eles começam a se comportar como dados contínuos. ## Álgebra Linear A álgebra linear é uma rama da matemática dedicada às igualdades lineares e suas representações em espaços de vectores e por meio de matrizes. ### Igualdades Linhares Uma igualdade linear é uma igualdade matemática em que a maior potência das variáveis é 1. Por exemplo, 2x + 4y - 3z = 10 é uma igualdade linear, pois possui apenas termos primeiros graus. Essas igualdades podem ser resolvidas por meio de um processo conhecido como álgebra linear. ### Vetores e Matrizes Um vetor é uma entidade matemática que possui tanto magnitude quanto direção. Matrizes são representações retangulares de arranjos de números dispostos em colunas e linhas. Eles podem ser utilizados para representar transformações lineares, sistemas de igualdades lineares e muito mais. ### Operações de Matrizes - Adição: Dois matrizes de mesmas dimensões podem ser somadas por somar cada número individual na matriz. - Subtração: Dois matrizes de mesmas dimensões podem ser subtraídas da mesma forma que a adição, subtraindo cada número individual. - Multiplicação: Quando se multiplicam matrizes, você acaba com um setup ligeiramente diferente em comparação com a multiplicação simples (como 1 × 2 × 4 × 3). Em vez disso, se temos uma matriz A com elementos A11, A12, A21, e assim por diante, e outra matriz B com elementos B11, B12, B21, e assim por diante, a multiplicação resulta numa nova matriz C onde Cij é a soma do produto de cada elemento na i-ésima linha de A com cada elemento na j-ésima coluna de B. ### Transposta, Inversa e Determinante - Transposta: Quando passamos uma matriz sobre o eixo principal, resultando em as colunas se tornando linhas e as linhas se tornando colunas. - Inversa: O inverso multiplicativo de uma matriz quadrada, se exists, é outra matriz quadrada de mesma dimensão cuja multiplicação pelo matriz original resulta numa matriz identidade. - Determinante: Um valor especial associado a uma matriz quadrada que resume algumas informações importantes sobre a matriz. ## Conclusão Entender a classificação de dados e a álgebra linear é essencial para quem trabalha com dados, especialmente em aprendizado de máquina e análise de dados. Esta visão fornece uma visão geral básica destas concepções, mas estudos adicionais são recomendados para uma compreensão mais profunda. # Amostra de Álgebra Linear em Python usando NumPy Começamos com uma imagem original e a nos modificamos com valores de higiene. Três estão escondendo em uma direção, enquanto que 'b' está escondido em outra direção. Como resultado, você tem uma imagem inclinada devido às suas ajustes. Então, vamos avançar e apresentar uma demonstração da álgebra linear. Para fazer isso, eu irá através meu confiável Anaconda para meu Jupyter Notebook e criar um novo bloco de notas chamado "Álgebra Linear" pois estamos em Python. Usaremos `numpy` para nossas cálculos, pois é o módulo mais popular para fazer matrizes e coisas. ```python # Import numpy como np ou array numpy import numpy as np # Crie dois variáveis diferentes 'a' e 'b' a = np. array([10, 15]) b = np. array([29]) ``` Vamos examinar estes arrays: ``` impressão(a) impressão(b) ``` Por ser o último passo, podemos simplesmente fazer a adição: ```python c = a + b impressão(c) ``` Ou, fazer a multiplicação dot: ```python d = np. dot(a. T, b) impressão(d) ``` Podemos também subtrair dois vetores: ```python e = a - b impressão(e) ``` Ou, executar a multiplicação escalar: ```python f = 2 * a # Multiplicar cada valor no array 'a' por 2 impressão(f) ``` Agora, vamos criar dois matrizes complexas: ```python # Matriz a = np. array([[12, 10, 4, 6], [4, 31]]) # Imprime 'a' impressão(a) ``` Também podemos executar a adição de matrizes: ```python # Outra matriz b = np. array([[2, 8], [7, 3], [1, 7], [3, 5]]) # Imprime 'b' impressão(b) ``` Podemos realizar a adição de matrizes: ```python # Adição de matrizes (a + b) c = np. add(a, b) impressão(c) ``` Ou, a subtração de matrizes: ```python # Subtração de matrizes (a - b) d = np. subtract(a, b) impressão(d) ``` E a multiplicação pela escalar: ```python # Multiplicação pela escalar (2 * b) e = 2 * b impressão(e) ``` Além disso, podemos realizar a multiplicação de matriz por vetor: ```python # Matriz 'a' e vetor 'b' (np. dot(a, b)) f = np. dot(a, b) impressão(f) ``` Para a multiplicação de matrizes por matriz: ```python # Outra matriz c = np. array([[1, 2], [3, 4]]) # Multiplicação de matrizes (a * c) d = np. dot(a, c) impressão(d) ``` Lembrem-se da matriz identidade, que é uma matriz diagonal com um todos 1s na diagonal principal e zeros em todos os outros lugares: ```python # Matriz identidade, 2x2 I = np. eye(2) impressão(I) ``` Finalmente, vamos calcular a inversa de uma matriz: ```python # Matriz quadradada 2x2 'a' dada a = np. array([[2, 1], [1, 0]]) # Inversa da matriz (np. linalg. inv(a)) b = np. linalg. inv(a) impressão(b) ``` # Calculus e Redes Neurais ## Calculus e Calculo Univariado Vamos discutir os conceitos básicos do calculo, focusando no calculo univariado e aplicando-o à definição da pendiente de uma curva, assim como à determinação da área sob a curva. ### Pendente de uma Curva O calculo nos permite determinar a pendente de uma curva estudando o limite quando a tamanho dos intervalos se aproxima de 0. Estamos a procura da soma das pendentes dos intervalos infinitesimais pequenos. Matematicamente, isso pode ser representado como: ``` ∫ de a a b de f(x) * dx = soma de a a b de f(x) * d x ``` Em termos mais simples, procuramos a pendente (m) de uma reta (y=mx+b) para valores infinitesimais pequenos de x's e depois a somar. ### Calculo Multivariado O calculo multivariado expande o calculo univariado estabelecendo funções que conseguem variáveis. Isso resulta em equações muito mais complicadas. ``` ∂w/∂t = ∂w/∂z ∂z/∂t ``` Estas equações podem ser resolvidas utilizando integrais duplas. ### Aplicações do Calculo O calculo serve de fundamento para muitas aplicações reais, desde a determinação da variação de uma variável em função de outra variável, à busca de máximos locais e globais, até à construção de modelos preditivos precisos. No contexto de redes neurais, usamos o calculo para determinar o change no terceiro camado em função do segundo camado, e assim por diante. Isso nos permite construir modelos complexos com múltiplos camados. ## Descida de Gradiente A descida de gradient é uma concepção básica do calculo, utilizada para determinar os máximos locais e globais. Vamos abordar a descida de gradient de detalhe em outra secção. ### Implementação da Descida de Gradiente Aqui está um exemplo de código da descida de gradient: ```python learning_rate = 0. 01 # quanto mudar x em cada passo x_atual = 3 # onde iniciar x_anterior = x_atual # para rastrear onde estava antes do passo atual precision = 0. 001 # quanto aproxima quer a grafica com a curva max_iterations = 100 # quantas vezes quer iterar epsilon = 1e-8 # pequeno número para evitar erros de divisão por zero enquanto x_anterior ! = x_atual ou abs(x_atual - x_anterior) > precision: x_anterior = x_atual gradient = function(x_atual) x_atual = x_atual - learning_rate * gradient iterations += 1 print("mínimo local ocorre em {}". format(x_atual)) ``` Este código minimiza as falhas na função `function` alterando o valor de `x_atual` baseando-se no seu gradient e no custo de aprendizagem. O custo de aprendizagem determina quanto o modelo muda depois de cada iteração, e a precisão determina quando parar o algoritmo. ## Estatística A estatística trata da colecção, organização, análise, interpretação e apresentação de dados. Isso abrange tudo desde a origem dos dados, se é válido, o que significa, como analyzar e como apresentar de maneira que seja compreensível e útil ao público. Formatação: - Preserve todos os elementos Markdown (# ** ` [] () etc) - Mantenha a estrutura de títulos e seções - Preserve blocos de código sem traduzir Tradução: - Use português europeu (não brasileiro) - Mantenha termos técnicos em inglês - Preserve comandos e códigos inalterados - Mantenha URLs intactas Registre-se que faltam termos específicos que não pude traduzir porque craveis que a linguagem usada nos títulos é as conservadas, para evitar que seja necessária a implementação de novos títulos e termos traduzidos. Veja o texto traduzido com a formação Markdown: # Ventiladores de esgotos: População, amostra e análise estatística Ventiladores de esgotos representam uma população única em sua aplicação industrial. Nesta seção, discutiremos as fundamentais da representação da população, amostragem e análise estatística, aplicadas à população desses ventiladores. ## População e Características Em qualquer estudo militar científico ou engenharia, possui uma população – um conjunto de elementos ou indivíduos que idealiza-se fazer generalizações. No caso de ventiladores de esgotos, estamos de se tratar das unidades de ventiladores que formam a população. Geralmente trabalha-se com parâmetros ou matrizes para representar a população ou seus características. ## Coleta de amostras Geralmente, em vez de estudar toda a população pois é infeasível ou inútil, colete-se uma amostra – um conjunto subset da população - para análise. O objetivo é obter uma amostra que seja representativa da população como um todo. - Quando se chega a uma conclusão baseada em sua amostra, tem-se um método para lhe testar a sua validade contra a toda a população. - Aprecia-se que devido a conhecimentos de tempo, custos ou recursos, não sempre se tem o custo de estudar toda a população, e a amostragem Torna-se necessária. ## Tipos de amostragem Existem dois categorias principais de amostragem: amostragem probabilística e não probabilística. ### Amostragem Probabilística Amostragem probabilística envolve o uso de abordagens sistemáticas, aleatórias ou estratificadas para selecionar amostras de uma população maior. Esta técnica é baseada na teoria de probabilidades. Por exemplo, na amostragem aleatória, seleciona-se amostras de tamanho aleatório a partir de cada grupo ou categoria na população para garantir que as amostras sejam o mais diversas e inclusivas possíveis. Nesta amostragem sistemática, seleciona-se amostras a intervalos regulares da sua totalidade para tendenciar a amostra de uma forma específica. A amostragem estratificada envolve dividir a população em subgrupos e selecionar amostras do tamanho aproximado de cada grupo a fim de garantir uma representação igual das várias categorias ou grupos. ### Amostragem não probabilística A amostragem não probabilística, por outro lado, é subjetiva, porque baseia-se na importante empreendedor em vez de métodos estatísticos. Usada frequentemente para uma quota, amostra conveniente ou amostragem a cadena (escala). Estes métodos são menos fiáveis e mais prejudicial que a amostragem probabilística, como não considera a probabilidade de distribuição subjacente da população. ## Importância da amostragem não prejudicial Avoid non-probabilistic sampling if possible. Bias sampling can lead to incorrect conclusions and misrepresentation of the population, making it difficult to generalize your findings to the entire population. Strive for unbiased probabilistic sampling when possible. ## Estatística descriptora vs. Estatística inferencial Quando a conduzir um estudo estatístico, usa-se tanto estatística descriptora quanto inferencial estatística. ### Estatística descriptora A estatística descriptora fornece uma resumo das características básicas dos dados de uma amostra. O objetivo é descrever os dados e formar a base da análise quantitativa dessa informação. Alguns mediadores de tendências centrais incluem: - Mean: média de valores - Mediana: a média de valores - Moda: o valor mais frequente na amostra Mediadores de dispersão descrevem a variabilidade ou dispersão dos dados. Estes mediadores incluem: - Range: a diferença entre os valores mais altos e mais baixos - Interquartile range (IR): o intervalo das quartilares médios da informação - Variança: a média dos quadrados das diferenças entre cada valor e a média - Desvio padrão: a raiz quadrada da variância (um mediador de dispersão em termos de média) ### Estatística inferencial A estatística inferencial permite-lhe generalizar as suas conclusões da amostra para a toda população. A inferência envolve o fazer predicciones ou conclusões sobre populações com as características da amostra. Por exemplo, se estuda o efeito de um fármaco na saúde de um paciente, a estatística inferencial permite-lhe inferir o poder do fármaco na população geral com base no seu efeito positivo na amostra. ## Python Demo Com o fim de demonstrar o funcionamento da análise estatística em prática, vamos usar Python com bibliotecas como NumPy e Pandas. Neste exemplo, vamos calcular a média e a mediana de uma amostra de dados: ```python import pandas as pd # Amostra de dados data = {'Nome': ['Jane', 'Michael', 'William', 'Rosie', 'Hannah'], 'Salário': [50000, 80000, 65000, 75000, 90000]} df = pd. DataFrame(data) # Calculate the mean salary mean_salary = df['Salário']. mean() print(f"The mean salary is: {mean_salary}") # Calculate the median salary median_salary = df['Salário']. median() print(f"The median salary is: {median_salary}") ``` Este demonstra como é possível comparar medidores de estatísticas, como a média e a mediana, usando Python. Explorando várias estatísticas de medida é crucial para a compreensão e interpretação correta das SUAS informações. # Análise de Dados de Salário utilizando Python e Estatística Este documento demonstra como analisar dados de salário utilizando Python e conceitos estatísticos básicos. ## Média, Médiana e Moda Neste exemplo, vamos trabalhar com um pequeno conjunto de dados contendo os salários de cinco indivíduos. Aqui está uma descrição das estatísticas básicas que extraiu do nosso dado: 1. Média: `54, 000 (rendimento médio)` 2. Médiana: `54, 000 (ponto médio do conjunto de dados)` 3. Moda: `50, 000 (valor mais comum)` ### A importância da Média, Médiana e Moda A média é útil porque nos dá uma ideia do salário médio no conjunto de dados, fornecendo-nos um valor único como resumo de toda a distribuição. No entanto, a média pode ser enganosa se o nosso conjunto de dados contiver valores extremos ou fora de linha, pois estes podem nos influenciar para um cálculo de média mais alto ou mais baixo do que a tendência central do nosso conjunto de dados. No conjunto de dados dado, um indivíduo ganha `189, 000`, o que infla nossa média geral. > Nota: "Rosie" parece ser a responsável por nos arruinar aqui! A médiana, por outro lado, é muito menos afetada por valores extremos e fora de linha e fornece uma representação mais confiável da tendência central para um conjunto de dados determinado. Neste exemplo, a médiana permanece a mesma que a média porque o nosso conjunto de dados tem um número ímpar de observações. > Problema: O que seria a médiana se o nosso conjunto de dados tivesse um número par de observações? A moda é o valor mais comum em um conjunto de dados. Nosso caso, é útil saber que a maioria dos indivíduos neste conjunto de dados tem um salário de `50, 000`. ### Interpretando as discrepâncias entre a Média, Médiana e Moda Quando a média e a médiana estão muito afastadas umas das outras, isso indica que existe uma diferença na distribuição de salários neste conjunto de dados. Specificamente, mostra que existe uma grande lacuna entre os salários inferiores e superiores, com uma grande quantidade de pessoas ganhando salários muito baixos e uma pequena quantidade ganhando salários muito altos. > Ponto de interesse adicional: Identificar os salários mínimos e máximos no conjunto de dados para obter uma melhor compreensão da dispersão. ### Verificando os resultados utilizando a biblioteca pandas Aqui está o código para calcular as estatísticas básicas e gerar uma resumo estatístico utilizando a biblioteca pandas, além de visualizar os dados utilizando um histograma: ```python import pandas as pd import matplotlib. pyplot as plt # Suponha que 'salário' seja o nome de seu conjunto de dados df = pd. read_csv('salário. csv') # Descreva o conjunto de dados df['salário']. describe() # Crie um histograma dos dados df['salário']. plot. hist(bins=20) plt. title('Distribuição de Salários') plt. show() ``` ## Estatística Inferencial As estatísticas inferenciais nos permitem fazer previsões ou inferências sobre uma população baseando-se em um amostra. A dist # Estudo Sobre Medicamento para Pressão Arterial: Teste de Hipótese e Probabilidade ## Introdução Este documento apresenta um estudo sobre a correlação de um novo medicamento com a redução da pressão arterial em relação ao medicamento existente. ### O Problema Ao mostrar um desempenho de 5% (0, 05) nos dados iniciais, nós iremos examinar mais a fundo para analisar a eficácia de um novo medicamento desenvolvido para reduzir a pressão arterial em uma quantidade maior do que o medicamento existente. #### Hipótese Nula Neste cenário, o valor nulo não indica a ausência de qualquer medicamento, mas sim um novo medicamento mais eficaz do que o existente. Se a hipótese nula se mostrar verdadeira, não há correlação, e o novo medicamento não está a funcionar como esperado. A hipótese alternativa, no entanto, afirma que o novo medicamento significativamente reduz a pressão arterial em comparação com o medicamento existente. ### Método Os dados, como ensaios clínicos, serão analisados para rejeitar a hipótese nula quando os resultados mostrem uma correlação de 0, 05 ou 5%, e o valor t será usado para comparar as médias de diferentes amostras para testar a hipótese. #### Intervalos de Confiança Os intervalos de confiança são um intervalo de valores nos quais estamos certos de que os nossos valores de observações estão contidos, por exemplo, se fazemos uma pesquisa sobre proprietários de cães em relação à média de latas de comida que compram para seus cães anualmente, podemos encontrar que 95% dos valores estão entre 200 e 300 latas. A gráfica do gráfico de dispersão ajuda a visualizar essas descobertas. ### Probabilidade A probabilidade é uma medida da probabilidade de um evento ocorrer. Qualquer evento não pode ser previsível com certeza, mas apenas pode ser previsível com a probabilidade de sua ocorrência. #### Exemplos de Probabilidade - Predizer o desempenho em esportes, tempo do tempo, mercado de ações, ou qualquer lugar onde a teoria do caos se aplica. - A localização da cadeira em que estás sentindo tem uma probabilidade que ela possa se deslocar três pés (embora a probabilidade seja extremamente baixa). ### Variáveis Aleatórias Uma variável aleatória é um resultado numérico de um fenômeno aleatório. Por exemplo, o número de caras em uma sequência de 20 lances de moeda, o número de bolas vermelhas tiradas de uma sacola que contém igual número de bolas vermelhas, azuis e verdes, ou o total da soma de dígitos em duas dados que somam cinco. ### Distribuição Binomial A distribuição binomial é a probabilidade de obter um resultado de sucesso ou fracasso como um resultado em um experimento ou trial que é repetido várias vezes. A chave é que ela trata de cenários verdadeiro/falso ou ganhar/perder. #### Exemplo Considerem o jogo de futebol entre dois clubes, Barcelona e Dortmund. Os times jogarão um total de quatro partidas, e o nosso objetivo é encontrar as chances de Barcelona ganhar a série. ### Fórmula A probabilidade de obter k vitórias em n partidas é calculada por: P(k) = {(n choose k) * p^k * q^(n-k)} / (1-p)^n onde: - n = número de partidas - k = Análise de Dados e Cálculos de Probabilidades em Python ======================================================== Entendimento de Dados e Probabilidades --------------------------------------- Neste tutorial, aprenderemos a utilizar o Python para entender onde o dados está a vir de e como combinar diferentes estudos em diferentes grupos. Utilizaremos um caso de estudo para descobrir a chance de um indivíduo de se desenvolver doença pulmonar devido ao tabagismo. Relatório Médico Geral ---------------------- De acordo com o relatório médico fornecido pelo hospital, aproximadamente 10% de todos os pacientes tratados sofreram de doença pulmonar. Dados da Pesquisa ----------------- Uma pesquisa encontrou que 15% dos pacientes que visitaram o hospital fumaram. Adicionalmente, 5% das pessoas continuaram a fumar mesmo quando tinham doença pulmonar. Cálculos de Probabilidades --------------------------- Denomos: - P(A) como a probabilidade de que um paciente tenha doença pulmonar - P(B) como a probabilidade de que um paciente fuma - P(B|A) como a probabilidade de que um paciente que tem doença pulmonar fuma Podemos calcular: - P(A) = 0, 1 - P(B) = 0, 15 - P(B|A) = 0, 05 Agora, let's utilizar a fórmula de Bayes para encontrar a probabilidade `P(A|B)` (a probabilidade de um paciente ter doença pulmonar, dado que ele fuma). Utilizando a fórmula de Bayes, temos: ``` P(A|B) = P(B|A) * P(A) / P(B) ``` Substituindo nossas probabilidades calculadas, obtemos: ``` P(A|B) = 0, 05 * 0, 1 / 0, 15 = 0, 0333 ``` A probabilidade de um indivíduo que fuma de se desenvolver doença pulmonar é 3, 33%. Código em Python ---------------- Nesta seção, utilizaremos o Python para realizar as operações matemáticas que acabamos de derivar. ```python # Importando as bibliotecas necessárias import collections # Definindo as probabilidades envolvidas P_A = 0, 1 P_B = 0, 15 P_B_given_A = 0, 05 # Calculando a probabilidade de um indivíduo que fuma de se desenvolver doença pulmonar utilizando a fórmula de Bayes P_A_given_B = P_B_given_A * P_A / P_B print(f'A probabilidade de um indivíduo que fuma de se desenvolver doença pulmonar é {P_A_given_B * 100: . 2f}%') ``` ### Conjuntos e Dicionários em Python Vamos agora explorar a estrutura de dados `set` e `dict` em Python. Conjuntos --------- Um conjunto é uma coleção de elementos únicos. Criar um conjunto utilizando colchetes abertos e fechados e a lista `{1, 2, 3, 4, 7}` resultará em `Set([1, 2, 3, 4, 7])`. Dicionários ------------ Um dicionário é uma coleção de pares chave-valor. Em um dicionário, as chaves devem ser únicas. Aqui está um exemplo de um dicionário que mapia os números para o quadrado do número): ```python quadratos = {1: 1, 2: 4, 3: 9, 4: 16} ``` ### Iteração e Itertools O Python fornece a função `product()` na biblioteca `itertools` para gerar todos os possíveis combinações de elementos dos iteráveis. Vamos gerar o produto de dois conjuntos. ```python import itertools as it # Gerar todas as unique combinações de dois conjuntos a = {1, 2, 3} b = {4, 5, 6} combinations = set(it. product(a, b)) print(sorted(list(combinations))) ``` ### Matriz de Confusão Uma matriz de confusão é uma tabela utilizada para descrever o desempenho de um modelo de classificação em um conjunto de dados. A matriz de confusão é útil quando temos os resultados reais e os resultados previstos, pois ajudamos na avaliação do desempenho do modelo. Em um problema de classificação binária, uma matriz de confusão tipicamente tem quatro entradas: verdadeiros positivos (TP), falsos positivos (FP), verdadeiros negativos (TN), e falsos negativos (FN). ``` Real Sem doença pulmonar Com doença pulmonar Previsão True False Total Sem doença pulmonar TN FP TP + FP Com doença pulmonar FN TP FN + TP ``` Em alguns casos, poderemos estar mais preocupados em reduzir falsos positivos (FP) do que falsos negativos (FN), como nos testes diagnosticos médicos. Exemplo: Modelo de Predição de Câncer -------------------------------------- Considere um modelo de prediz câncer treinado em um grande conjunto de dados. Podesemos usar a matriz de confusão para avaliar o seu desempenho: ``` Real Sem câncer Câncer Previsão True False Total Sem câncer TN FP TP + FP Câncer FN TP FN + TP ``` Neste caso, um falso positivo (FP) significaria que o modelo prevê que um indivíduo não tem câncer. Em contextos médicos, tais falsos positivos são geralmente mais sérios, pois podem conduzir a conclusões erradas e tratamentos inadequados. Portanto, neste cenário, procurariamos minimizar os falsos positivos, mantendo um bom desempenho geral de acurácia. Referências ------------ - [Uma Visão Prática de Bayes' Teorema](https://www.statisticshowto.com/statistics-how-to/bayes-theorem/) - [Matriz de Confusão e Avaliando os Modelos de Classificação](https://www.analyticsvidhya.com/blog/2016/04/confusion-matrix-and-evaluating-accuracy-of-classifications/) # COVID-19 Predição e Classificador Naivo Bayes Muitos dos casos preditos corretamente são em verdade positivos, portanto temos uma alta precisão em positivos verdadeiros. Se estiver falando, por exemplo, sobre testes de COVID-19 com vírus, é melhor ter um número elevado de positivos verdadeiros. Queremos que seja o ponto central onde poderemos ter o resultado inverso em lidar com um caso como o câncer onde queremos que haja nenhuma false negatives. Aqui, a precisão é o TP (Positivos Verdadeiros) + FP (Falsos Positivos), e o recall mostra quantos dos casos positivos reais podemos prever rapidamente com nossa modelo. O TP é a soma de TP e FN (Falsos Negativos). Agora, vamos seguir com um demo do Classificador Naivo Bayes. Antes de mergulhar demais no Classificador Naivo Bayes, já que vamos extrair de kit sklearn (Scikit-Learn), vamos considerar uma página interessante aqui que mostra várias formas de fazer classificação dentro do kit sklearn. Vamos focar no Classificador Naivo Bayes neste momento. O Classificador Naivo Bayes é considerado um dos modelos de pré-visão mais simples, pois faz várias suposições independentes sobre as características (variáveis) em uma tarefa de previsão. A suposição é que cada característica possui algum tipo de conexão, a qual podemos então utilizar para a previsão. Aqui, vamos utilizar o "social_network_ads" dataset para demonstrar o Classificador Naivo Bayes. Vamos carregar esses dados aqui: - `user_id` - `gender` - `age` (estimado) - `salary` (estimado) - `purchased` (fez um pedido) Neste dataset, cada ponto de dados é esperado para representar um utilizador, onde `user_id` identifica cada utilizador de forma única e as restantes colunas contêm as características que vamos utilizar na nossa modelo de previsão. Iniciando com a nossa modelo, começaremos por importar bibliotecas necessárias, conforme indicado a seguir: ```python import numpy as np import matplotlib. pyplot as plt import pandas as pd # Carregue o dataset dados = pd. read_csv("social_network_ads. csv") # Vamos olhar para as primeiras linhas de dados para maior claridade: print(dados. head()) # Vamos definir nossas variáveis preditoras (X) e a coluna previsão (y): X = dados. drop('purchased', eixo=1) # Todas as colunas exceto a coluna 'purchased' y = dados['purchased'] ``` Após isso, vamos precisar processar os nossos dados repartindo-os em conjuntos de treino e teste, bem como escalar os dados se necessário. Vamos utilizar a função Sklearn's `train_test_split` para este propósito. Depois disso, vamos treinar o Classificador Naivo Bayes, fazer algumas previsões e examinar os resultados na matriz de confusão para ver como bem nosso modelo se numeira. Depois disso, vamos visualizar os resultados de classificação utilizando matplotlib e gráficos de níveis. Isso nos dará uma melhor compreensão sobre como bem nosso modelo lidava com os dados nos grupos de treino e teste, incluindo quando se trata de prever se os utilizadores vão comprar ou não. Fiquem atentos para mais detalhes na implementação do modelo de classificação do Classificador Naivo Bayes e no exame dos resultados! # Machine Learning: Precision, Recall, e Accuracy ## Introdução Bem-vindo(a) ao nossa palestra sobre **Matemática para Aprendizado de Máquina**. Oi, eu sou **Richard Kirschner** e fazemos parte da equipe do **Simply Learn**. [Música] ## Conteúdos 1. Visão geral 2. Precision 3. Recall 4. Accuracy 5. Conclusão ## Visão geral Nessa sessão, vamos discutir três métricas fundamentais no Aprendizado de Máquina: Precision, Recall, e Accuracy. ## Precision [Aqui][1][Aqui][2] pode encontrar os valores de precisión. A Precision mede o número de true positivos (itens relevantes correctamente identificados) sobre o total do número de items identificados como positivo. ## Recall Lá está a recall. Recall é proporção dos itens relevantes que estão correctamente identificados, definidos como true positivos sobre true positivos plus false negatives (itens relevantes inadequadamente identificados como negativo). ## Acuity Tem aqui a nossa aciradeza. A acurácia é a razão dos observações correctas para o número total de observações, definida pelo número total de true positivos, true negatives, num total de falsos positivos (itens irrelevantes inadequadamente identificados como positivo) plus falsos negatives (itens relevantes inadequadamente identificados como negativo). ## Graças a você! Obrigada/o! ## Ação Aposar Chamada Se ainda não você já tivesse entrado em subscrever a nossa **Youtube - Simply Learn canal** e estivesse tão curiosa(o)/o quanto a gente! Clica [aqui](link_to_watch_similar_videos) e veja ainda mais videos tópicos relacionados! Ajuste-se com a linguagem de máquina, tenha que ficar certificada(o)/o! --- [1]: link para onde os precisão's estão localizados [2]: link para onde os outros precisión's estão localizados [link_to_watch_similar_videos]: hyperlink para navegar pela galeria e visualizar videostórdios relacionados ao mesmo tópico que esse do Machine Learning de acordo com o apelido e padrões específico para o hyperlink. Se esse págin'a não disponibilizar algo nesse local específico, é porque foi preenchido com esse texto que deixei aqui no lugar deste. Veja o passo a passo para mais detalhes e como traduzir correctamente os atributos relevantes para criação das links. : smiley: 