├── Figures ├── ClassificationRegressionBreastCancer2.png ├── ClassificationRegressionBreastCancer2.pptx ├── ML │ ├── Slide1.PNG │ ├── Slide2.PNG │ ├── Slide3.PNG │ ├── Slide4.PNG │ └── Slide5.PNG ├── MLLogistic.png ├── MLLogistic.pptx ├── MLparadigmas.pptx ├── MLparadigmas │ ├── Slide1.PNG │ └── Slide2.PNG ├── SUPERVISIONADO_E_REFORCO.png ├── SUPERVISIONADO_E_REFORCO.pptx ├── SupervisionadoVSNaoSupervisionado.png ├── crisp_visualguide.webp ├── matriz_de_confusao.png ├── matriz_de_confusao.pptx ├── spurious1.png └── spurious2.png ├── LICENSE ├── ML0_Apresentacao.ipynb ├── ML0_videos.ipynb ├── ML1_introducao.ipynb ├── ML1_ponto_de_partida.ipynb ├── ML1_professor_resolve.ipynb ├── ML2_Regressao.ipynb ├── ML2_Regressao_ex.ipynb ├── ML2_ponto_de_partida.ipynb ├── ML2_professor_resolve.ipynb ├── ML3_RegressaoLogistica.ipynb ├── ML3_RegressaoLogistica_ex.ipynb ├── ML3_ponto_de_partida.ipynb ├── ML3_professor_resolve.ipynb ├── ML4_Knn.ipynb ├── ML4_Knn_ex.ipynb ├── ML4_ponto_de_partida.ipynb ├── ML4_professor_resolve.ipynb ├── ML5_DecisionTrees.ipynb ├── ML5_DecisionTrees_ex.ipynb ├── ML5_ponto_de_partida.ipynb ├── ML5_professor_resolve.ipynb ├── ML6_CV_GridSearch.ipynb ├── ML6_CV_GridSearch_ex.ipynb ├── ML6_ponto_de_partida.ipynb ├── ML6_professor_resolve.ipynb ├── ML7_SelecaoDeModelos.ipynb ├── ML7_ex_projeto.ipynb ├── ML7_ponto_de_partida.ipynb ├── ML7_professor_resolve.ipynb ├── ML8_R.ipynb ├── ML8_R_ex.ipynb ├── ML8_ponto_de_partida.ipynb ├── ML8_professor_resolve.ipynb ├── README.md ├── data ├── ageandheight.xls ├── ageandheight.xlsx ├── breast.csv ├── comics.xlsx ├── glasses.csv └── pressure.xlsx ├── erratas.md ├── formularios ├── ML1_1_formulario.docx ├── ML1_2_formulario.docx ├── ML1_3_formulario.docx ├── ML1_4_formulario.docx ├── ML1_5_formulario.docx ├── ML1_6_formulario.docx ├── ML1_7_formulario.docx ├── ML1_8_formulario.docx ├── ML1_Plano de Ensino.docx └── ~$1_Plano de Ensino.docx ├── gift ├── ML1_gift.txt ├── ML2_gift.txt ├── ML3_gift.txt ├── ML4_gift.txt ├── ML5_gift.txt ├── ML6_gift.txt └── ML8_gift.txt ├── videos ├── Ponto de Partida e Professor Resolve - Videos e Complementos.md └── Resumo_N1_show.ppsx └── word ├── ML1_introducao.docx ├── ML2_regressao.docx ├── ML3_RegressaoLogistica.docx ├── ML4_Knn.docx ├── ML5_DecisionTrees.docx ├── ML6_CV_GridSearch.docx ├── ML7_SelecaoDeModelos.docx └── ML8_R.docx /Figures/ClassificationRegressionBreastCancer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ClassificationRegressionBreastCancer2.png -------------------------------------------------------------------------------- /Figures/ClassificationRegressionBreastCancer2.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ClassificationRegressionBreastCancer2.pptx -------------------------------------------------------------------------------- /Figures/ML/Slide1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ML/Slide1.PNG -------------------------------------------------------------------------------- /Figures/ML/Slide2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ML/Slide2.PNG -------------------------------------------------------------------------------- /Figures/ML/Slide3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ML/Slide3.PNG -------------------------------------------------------------------------------- /Figures/ML/Slide4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ML/Slide4.PNG -------------------------------------------------------------------------------- /Figures/ML/Slide5.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/ML/Slide5.PNG -------------------------------------------------------------------------------- /Figures/MLLogistic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/MLLogistic.png -------------------------------------------------------------------------------- /Figures/MLLogistic.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/MLLogistic.pptx -------------------------------------------------------------------------------- /Figures/MLparadigmas.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/MLparadigmas.pptx -------------------------------------------------------------------------------- /Figures/MLparadigmas/Slide1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/MLparadigmas/Slide1.PNG -------------------------------------------------------------------------------- /Figures/MLparadigmas/Slide2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/MLparadigmas/Slide2.PNG -------------------------------------------------------------------------------- /Figures/SUPERVISIONADO_E_REFORCO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/SUPERVISIONADO_E_REFORCO.png -------------------------------------------------------------------------------- /Figures/SUPERVISIONADO_E_REFORCO.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/SUPERVISIONADO_E_REFORCO.pptx -------------------------------------------------------------------------------- /Figures/SupervisionadoVSNaoSupervisionado.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/SupervisionadoVSNaoSupervisionado.png -------------------------------------------------------------------------------- /Figures/crisp_visualguide.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/crisp_visualguide.webp -------------------------------------------------------------------------------- /Figures/matriz_de_confusao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/matriz_de_confusao.png -------------------------------------------------------------------------------- /Figures/matriz_de_confusao.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/matriz_de_confusao.pptx -------------------------------------------------------------------------------- /Figures/spurious1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/spurious1.png -------------------------------------------------------------------------------- /Figures/spurious2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/Figures/spurious2.png -------------------------------------------------------------------------------- /ML0_Apresentacao.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML0_Apresentacao.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **Aprendizado de Máquina I**\n", 62 | "---\n", 63 | "\n", 64 | "Este é um primeiro curso de introdução do aprendizado de máquina através dos modelos de aprendizado supervisionado. O material foi desenhado como material de apoio para a disciplina de Aprendizado de Máquina I do curso de tecnologia em Ciência de Dados, mas pode ser igualmente empregado em cursos introdutórios do Aprendizado de Máquina Supervisionado, de graduação ou pós-graduação. \n", 65 | "\n", 66 | "Aqui são apresentados os principais conceitos de modelos supervisionados de regressão e classificação, como empregar os estimadores do `scikit-learn python` para esses modelos, e técnicas de seleção de hiperparâmetros e modelos. Ao final há uma introdução dessas aplicações também para linguagem `R`. \n", 67 | "\n", 68 | "Em cada um os oito capítulos (8 aulas) há questões de fixação (Moodle) e laboratórios práticos (também com questões no Moodle sobre o resultados dos programas), havendo ainda um projeto em grupo na penúltima aula.\n" 69 | ] 70 | }, 71 | { 72 | "cell_type": "markdown", 73 | "source": [ 74 | "# Sumário\n", 75 | "\n", 76 | "[**Apresentação do Curso**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML0_Apresentacao.ipynb) \n", 77 | "\n", 78 | "1. [**Introdução ao Aprendizado de Máquina**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML1_introducao.ipynb)\n", 79 | "\n", 80 | "\n", 81 | "2. [**Aprendizado Supervisionado e Regressão Linear**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao.ipynb)\n", 82 | "\n", 83 | ">> [Lab Caso: **Estimando a emissão de gases CO2 de veículos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb)\n", 84 | "\n", 85 | "3. [**Classificação: Regressão Logística**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica.ipynb)\n", 86 | "\n", 87 | ">> [Lab Caso: **Consumo de combustível em veículos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb)\n", 88 | "\n", 89 | "4. [**Classificação: Knn**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn.ipynb)\n", 90 | "\n", 91 | ">> [Lab Caso: **Predição de Diagnósticos a partir de Dados de Imagens**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb)\n", 92 | "\n", 93 | "5. [**Árvores de Decisão e Seleção de Atributos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees.ipynb)\n", 94 | "\n", 95 | ">> [Lab Caso: **Propensão de Compra de Clientes por Telemarketing**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb)\n", 96 | "\n", 97 | "6. [**Validação Cruzada e GridSearch**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch.ipynb)\n", 98 | "\n", 99 | ">> [Lab Caso: **Propensão de Compra de Clientes por Telemarketing**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb)\n", 100 | "\n", 101 | "7. [**Seleção de Modelos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_SelecaoDeModelos.ipynb)\n", 102 | "\n", 103 | ">> [**Projeto em Grupo**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_ex_projeto.ipynb)\n", 104 | "\n", 105 | "8. [**Aprendizado Supervisionado com R**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R.ipynb)\n", 106 | "\n", 107 | ">> [Lab Caso: **Controle de Qualidade de Peças**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb)\n", 108 | "\n", 109 | "# Vídeos e Complementos\n", 110 | "\n", 111 | "*Acesse* [aqui](https://github.com/Rogerio-mack/Machine-Learning-I/tree/main/videos).\n", 112 | "\n", 113 | "# Cases e Funções\n", 114 | "\n", 115 | "| Aula | Casos Práticos | Principais Funções |\n", 116 | "|--------|-------------------------------------------------------------------------|--------------------------------|\n", 117 | "| 1. | - | - |\n", 118 | "| 2. | CASO: Estimando o Preço de Veículos | `statsmodel`, `sm.ols` |\n", 119 | "| 3. | CASO: Estimando Tumores Malignos ou Benignos | `sklearn` , `LogisticRegression` |\n", 120 | "| | CASO: 10 year risk of coronary heart disease CHD | `train_test_split` |\n", 121 | "| 4. | CASO: 10 year risk of coronary heart disease CHD | `KNeighborsClassifier`,`sklearn.preprocessing`, `minmax_scale` |\n", 122 | "| 5. | CASO: Classifying Political Parties Based on Congressional Votes | `DecisionTreeClassifier`, `sklearn.feature_selection`, `mutual_info_classif`, `SelectKBest`, `StandardScaler`, `LabelEncoder` |\n", 123 | "| 6. | CASO: Breast Cancer biopsy | `KFold`, `LabelEncoder`, `GridSearchCV`, `RandomForestClassifier`, `OneHotEncoder`|\n", 124 | "| 7. | CASO: Classificando Imagens de Dígitos ( 8×8 ) | `MLPClassifier`, `SVC`, `GridSearchCV` |\n", 125 | "| | CASO: Classificando o MNIST (28×28) | `DecisionTreeRegressor`, `SVR`, `XGBRegressor` |\n", 126 | "| | CASO: Um Conjunto não Linear, Potencial de Ação de um Neurônio | |\n", 127 | "| | CASO: Bike Sharing Prediction | |\n", 128 | "| 8. | CASO: Iris Data Set | `lm`, `Caret`, `rpart` |\n", 129 | "| | CASO: Biopsy, Câncer de Mama | `naivebayes`, `glm`, `knn` |\n", 130 | "| | CASO: Classificando o MNIST (28×28) | |\n", 131 | "\n", 132 | "\n", 133 | "# Atividades\n", 134 | "\n", 135 | "| Aula | Atividade |Nota |\n", 136 | "|--------|-----------------------------------------------------------------|--------|\n", 137 | "| 1. | Exercícios Moodle | 1.0 | \n", 138 | "| 2. | Exercícios Moodle & Lab | 1.0 | \n", 139 | "| 3. | Exercícios Moodle & Lab | 1.0 | \n", 140 | "| 4. | Exercícios Moodle & Lab + Fórum Regressão Linear X Logística para Classificação | 1.5 | \n", 141 | "| 5. | Exercícios Moodle & Lab + Fórum Outros critérios de Seleção de Atributos | 1.5 | \n", 142 | "| 6. | Exercícios Moodle & Lab | 1.0 | \n", 143 | "| 7. | **Projeto de Aprendizado de Máquina em Grupo** | **2.0** | \n", 144 | "| 8. | Exercícios Moodle & Lab | 1.0 | \n", 145 | "| | **Total do Curso** | **10.0** | \n", 146 | "\n", 147 | "\n", 148 | "\n", 149 | "# Principais Referências \n", 150 | "\n", 151 | "Jake VanderPlas. **Python Data Science Handbook** O'Reilly Media, Inc. (2016). ISBN: 9781491912058. Disponível em: https://jakevdp.github.io/PythonDataScienceHandbook/. Acesso: 06 de Novembro de 2021. \n", 152 | "\n", 153 | "Kotu, Vijay; Deshpande, Balachandre **Data Science: concepts and practice**. 2nd ed. Cambridge, [England]: Morgan Kaufmann, c2019. E-book (570 p.) ISBN 9780128147627 (electronic bk.). Disponível em: http://pergamum.mackenzie.br:8080/pergamumweb/vinculos/00003c/00003cef.jpg.\n", 154 | "\n", 155 | "Larose, Chantal D.; Larose, Daniel T. **Data Science Using Python and R** Hoboken: Wiley, c2019. E-book (259 p.) (Wiley Series on Methods and Applications in Data Mining Ser.). ISBN 9781119526834 (electronic bk.). Disponível em: https://www3.mackenzie.br/biblioteca_virtual/index.php?tipoBiblio=ebookcentral&flashObg=n\n", 156 | "\n", 157 | "Géron, A. **Hands-on machine learning with Scikit-Learn, Keras and TensorFlow: concepts, tools, and techniques to build intelligent systems**, 2nd ed. (2019) O'Reilly\n", 158 | "\n", 159 | "Alpaydin, E. **Machine Learning** (The MIT Press Essential Knowledge). The MIT Press. 2019.\n", 160 | "\n", 161 | "Kelleher, J. D.; Tierney, Brendan. **Data Science** (The MIT Press Essential Knowledge). The MIT Press. 2018.\n", 162 | "\n", 163 | "Manapat, Michael. **Introduction to Machine Learning with Python**. Em An Introduction to Machine Learning. EMag Edição 50 (Abr 2017)\n", 164 | "\n", 165 | "\n", 166 | "\n", 167 | "# Cite \n", 168 | "\n", 169 | "Oliveira, R. (2022). **Aprendizado de Máquina I**. (pp. 1–227). eBook. https://doi.org/10.5281/zenodo.6702272. \n", 170 | "\n" 171 | ], 172 | "metadata": { 173 | "id": "okCFdjXBhKc3" 174 | } 175 | } 176 | ] 177 | } -------------------------------------------------------------------------------- /ML0_videos.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML0_videos.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **Vídeos**\n", 62 | "---\n", 63 | "\n", 64 | "*Acesse aqui os vídeos do Ponto de Partida e Professor Resolve, e os notebooks empregados nos vídeos, para cada aula*.\n", 65 | "\n", 66 | "
\n", 67 | "\n", 68 | "
\n", 69 | "\n", 70 | "> [*Download todos os vídeos (650MB)*](https://meusite.mackenzie.br/rogerio/ML1/videos.zip)\n", 71 | "\n", 72 | "
\n", 73 | "\n", 74 | "
\n", 75 | "\n", 76 | "> [Apresentação](https://meusite.mackenzie.br/rogerio/ML1/ML0_apresentacao.mp4)\n", 77 | "\n", 78 | "#### **1. Introdução ao Aprendizado de Máquina**\n", 79 | "\n", 80 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML1_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML1_ponto_de_partida.ipynb)\n", 81 | "\n", 82 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML1_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML1_professor_resolve.ipynb)\n", 83 | "\n", 84 | "#### **2. Aprendizado Supervisionado e Regressão Linear**\n", 85 | "\n", 86 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML2_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_ponto_de_partida.ipynb)\n", 87 | "\n", 88 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML2_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_professor_resolve.ipynb)\n", 89 | "\n", 90 | "#### **3. Classificação: Regressão Logística**\n", 91 | "\n", 92 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML3_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_ponto_de_partida.ipynb)\n", 93 | "\n", 94 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML3_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_professor_resolve.ipynb)\n", 95 | "\n", 96 | "#### **4. Classificação: Knn**\n", 97 | "\n", 98 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML4_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_ponto_de_partida.ipynb)\n", 99 | "\n", 100 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML4_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_professor_resolve.ipynb)\n", 101 | "\n", 102 | "#### **5. Árvores de Decisão e Seleção de Atributos**\n", 103 | "\n", 104 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML5_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_ponto_de_partida.ipynb)\n", 105 | "\n", 106 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML5_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_professor_resolve.ipynb)\n", 107 | "\n", 108 | "#### **6. Validação Cruzada e GridSearch**\n", 109 | "\n", 110 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML6_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_ponto_de_partida.ipynb)\n", 111 | "\n", 112 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML6_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_professor_resolve.ipynb)\n", 113 | "\n", 114 | "#### **7. Seleção de Modelos**\n", 115 | "\n", 116 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML7_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_ponto_de_partida.ipynb)\n", 117 | "\n", 118 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML7_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_professor_resolve.ipynb)\n", 119 | "\n", 120 | "#### **8. Aprendizado Supervisionado com R**\n", 121 | "\n", 122 | "> [Ponto de Partida](https://meusite.mackenzie.br/rogerio/ML1/ML8_ponto_de_partida.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_ponto_de_partida.ipynb)\n", 123 | "\n", 124 | "> [Professor Resolve](https://meusite.mackenzie.br/rogerio/ML1/ML8_professor_resolve.mp4) | [Notebook](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_professor_resolve.ipynb)" 125 | ] 126 | } 127 | ] 128 | } -------------------------------------------------------------------------------- /ML1_ponto_de_partida.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML1_ponto_de_partida.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **O que é o Aprendizado de Máquina?**\n", 62 | "---\n", 63 | "\n", 64 | "\n", 65 | "\n" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "source": [ 71 | "\n", 72 | "\n", 73 | " " 74 | ], 75 | "metadata": { 76 | "id": "5pzakzl9QHjh" 77 | } 78 | }, 79 | { 80 | "cell_type": "markdown", 81 | "source": [ 82 | "\n", 83 | "\n", 84 | "\n", 85 | "Figura 1. Diferentes Áreas relacionadas ao Aprendizado de Máquina." 86 | ], 87 | "metadata": { 88 | "id": "ywLjaa08Q0kR" 89 | } 90 | }, 91 | { 92 | "cell_type": "markdown", 93 | "source": [ 94 | "" 95 | ], 96 | "metadata": { 97 | "id": "MRxxgtljRy3Z" 98 | } 99 | }, 100 | { 101 | "cell_type": "markdown", 102 | "source": [ 103 | "\n", 104 | "\n", 105 | "\n", 106 | "Figura 2. O Aprendizado de Máquina: cria um novo paradigma de como programamos os computadores." 107 | ], 108 | "metadata": { 109 | "id": "_pjVoNXeR5bB" 110 | } 111 | }, 112 | { 113 | "cell_type": "markdown", 114 | "source": [ 115 | "
\n", 116 | "\n", 117 | "
\n", 118 | "\n", 119 | "
\n", 120 | "\n", 121 | "
\n", 122 | "\n", 123 | "## **O Aprendizado de Máquina se aplica a problemas em que não conhecemos as regras explícitas que mapeam as entradas e saídas desejadas. Se a regra é conhecida o modelo explícito será sempre será mais simples e terá melhores resultados.**\n", 124 | "\n", 125 | "
\n", 126 | "\n", 127 | "
\n", 128 | "\n", 129 | "
\n", 130 | "\n", 131 | "
" 132 | ], 133 | "metadata": { 134 | "id": "XNoftPApgmg3" 135 | } 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "source": [ 140 | "\n", 141 | "\n", 142 | "" 143 | ], 144 | "metadata": { 145 | "id": "Qu0yB4NQEcpb" 146 | } 147 | }, 148 | { 149 | "cell_type": "markdown", 150 | "source": [ 151 | "\n", 152 | "\n", 153 | "\n", 154 | "Figura 3. Aprendizado de Máquina: Tipos, Tarefas e alguns algoritmos." 155 | ], 156 | "metadata": { 157 | "id": "BgCq7bGYJbTx" 158 | } 159 | }, 160 | { 161 | "cell_type": "markdown", 162 | "metadata": { 163 | "id": "bfzvWl9sFX8m" 164 | }, 165 | "source": [ 166 | "# Aprendizado Supervisionado \n", 167 | "\n", 168 | "* **Regressão**\n", 169 | "* **Classificação**\n" 170 | ] 171 | }, 172 | { 173 | "cell_type": "markdown", 174 | "metadata": { 175 | "id": "NNDHUXAjO52R" 176 | }, 177 | "source": [ 178 | "\n", 179 | "\n", 180 | "\n", 181 | " Figura 4. Acima um mesmo conjunto de dados empregado para o aprendizado supervisionado em problemas de classificação e regressão. $y$ são os rótulos associados a cada instância de dados com variáveis preditoras $X$. Os modelos supervisionados criam, a partir dos exemplos do conjunto de treinamento, uma função que reproduz do mesmo padrão de mapeamento das entradas e saídas do conjunto de treinamento. A classificação trata da predição de valores discretos (as classes diagnosis à esquerda, com valores M(aligno) ou B(enigno)). A regressão trata da predição de valores contínuos, como a área média do tumor (à direita). " 182 | ] 183 | }, 184 | { 185 | "cell_type": "markdown", 186 | "source": [ 187 | "# Um pouco de Terminologia\n", 188 | "\n", 189 | "* Rótulos ou Variável Objetivo, $y$ \n", 190 | "\n", 191 | "* Recursos, Features ou Atributos, $X$ \n", 192 | "\n", 193 | "* Conjunto de Treinamento\n", 194 | "\n", 195 | "* Modelos\n", 196 | "\n", 197 | "> $ \\text{Model 1:} \\space \\space \\space y = a_0 + a_1 x_1 + a_2 x_2 + ...$\n", 198 | "\n", 199 | "> $ \\text{Model 2:} \\space \\space \\space y = \\text{DecisionTree}(x_0, x_1, ...)$\n", 200 | "\n", 201 | "> $ \\text{Model 3:} \\space \\space \\space y = \\text{ANN}(x_0, x_1, ...)$\n" 202 | ], 203 | "metadata": { 204 | "id": "SKfrmGLYZE2K" 205 | } 206 | } 207 | ] 208 | } -------------------------------------------------------------------------------- /ML1_professor_resolve.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML1_professor_resolve.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **Explorando Cases de Aprendizado de Máquina**\n", 62 | "---\n", 63 | "\n", 64 | "\n", 65 | "\n" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "metadata": { 71 | "id": "8dJiYIuTHTwn" 72 | }, 73 | "source": [ 74 | "# Usos do Aprendizado de Máquina \n", 75 | "\n", 76 | "* **Sistemas de recomendação**\n", 77 | "\n", 78 | "* **Detecção de fraude**\n", 79 | "\n", 80 | "* **Chatbots**\n", 81 | "\n", 82 | "* **Diagnóstico médico**\n", 83 | "\n", 84 | "* **Veículos Autônomos**\n", 85 | "\n", 86 | "* **Análise e Classificação de Risco**.\n", 87 | "\n" 88 | ] 89 | }, 90 | { 91 | "cell_type": "markdown", 92 | "metadata": { 93 | "id": "p2TOw658HZa-" 94 | }, 95 | "source": [ 96 | "
\n", 97 | "
\n", 98 | "\n", 99 | "\n", 100 | "\n", 101 | "[Machine Learning and Data Science Applications in Industry](https://github.com/ashishpatel26/Real-time-ML-Project) | https://github.com/ashishpatel26/Real-time-ML-Project\n", 102 | "\n", 103 | "| | | |\n", 104 | "| -------------------------------- | -------------------------------- | --------------------------------- |\n", 105 | "| [Accommodation & Food](#accommodation) | [Agriculture](#agriculture) | [Banking & Insurance](#bankfin) |\n", 106 | "| [Biotechnological & Life Sciences](#biotech) | [Construction & Engineering](#construction) | [Education & Research](#education) |\n", 107 | "| [Emergency & Relief](#emergency) | [Finance](#finance) | [Manufacturing](#manufacturing) |\n", 108 | "| [Government and Public Works](#public) | [Healthcare](#healthcare) | [Media & Publishing](#media) |\n", 109 | "| [Justice, Law and Regulations](#legal) | [Miscellaneous](#miscellaneous) | [Accounting](#accounting) |\n", 110 | "| [Real Estate, Rental & Leasing](#realestate) | [Utilities](#utilities) | [Wholesale & Retail](#wholesale) |\n", 111 | "\n", 112 | "
\n", 113 | "
\n", 114 | "\n", 115 | "\n", 116 | "\n", 117 | "\n", 118 | "\n", 119 | "\n", 120 | "\n" 121 | ] 122 | }, 123 | { 124 | "cell_type": "markdown", 125 | "source": [ 126 | "\n", 127 | "\n", 128 | "\n", 129 | "\n", 130 | "Figura 6. Carro Autônomo com Tecnologia Nacional. Fonte: https://revistapesquisa.fapesp.br/o-futuro-sem-motorista/\n", 131 | "\n" 132 | ], 133 | "metadata": { 134 | "id": "OCG7eg-KB6QA" 135 | } 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": { 140 | "id": "PeyoHA6qHTw_" 141 | }, 142 | "source": [ 143 | "\n", 144 | "\n", 145 | "\n", 146 | "\n", 147 | "Figura 7. eVTOL aeronave elétrica de decolagem e pouso vertical sendo desenvolvido pela EMBRAER-UBER. Fonte: https://revistapesquisa.fapesp.br/2019/12/03/a-chegada-dos-carros-voadores/" 148 | ] 149 | }, 150 | { 151 | "cell_type": "markdown", 152 | "metadata": { 153 | "id": "XlK3CFlPHTw_" 154 | }, 155 | "source": [ 156 | "\n", 157 | "\n", 158 | "\n", 159 | "\n", 160 | "Figura 8. Sistema Automático de identificação de lâminas de madeira para uso industrial. Fonte: https://revistapesquisa.fapesp.br/2017/07/18/identificacao-de-madeiras/\n" 161 | ] 162 | }, 163 | { 164 | "cell_type": "markdown", 165 | "metadata": { 166 | "id": "9VoqvkU2RWei" 167 | }, 168 | "source": [ 169 | "\n", 170 | "\n", 171 | "\n", 172 | "\n", 173 | "Figura 9. Sistema Híbrido combina Mecânica dos Fluídos e Aprendizado de Máquina para exploração mais eficaz do Pré-Sal pela Petrobrás. Fonte: https://revistapesquisa.fapesp.br/producao-mais-eficaz-no-pre-sal/\n" 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "metadata": { 179 | "id": "0NmSzFrRSaDf" 180 | }, 181 | "source": [ 182 | "\n", 183 | "\n", 184 | "\n", 185 | "\n", 186 | "Figura 10. Mina de alumínio usa sistema automatizado para tratar água de rejeito. Fonte: https://revistapesquisa.fapesp.br/mineracao-digital/ \n" 187 | ] 188 | }, 189 | { 190 | "cell_type": "markdown", 191 | "source": [ 192 | "\n", 193 | "\n", 194 | "\n", 195 | "Figura 11. Aplicações em Astronomia e Astrofísica: Ciência no Aprendizado de Máquina. Fonte: https://amazon.com/.\n" 196 | ], 197 | "metadata": { 198 | "id": "Kri3DVSrU1pE" 199 | } 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": { 204 | "id": "npaLwEVBG0w8" 205 | }, 206 | "source": [ 207 | "# Processo de Ciência de Dados X Aprendizado de Máquina\n", 208 | "\n", 209 | "* **CRISP-DM, Cross Industry Standard Process for Data Mining** \n", 210 | "\n", 211 | " \n", 212 | "\n" 213 | ] 214 | }, 215 | { 216 | "cell_type": "markdown", 217 | "metadata": { 218 | "id": "mkikcHbi26Uo" 219 | }, 220 | "source": [ 221 | "
\n", 222 | "
\n", 223 | "\n", 224 | "
\n", 225 | "
\n", 226 | "\n", 227 | "\n", 228 | "Figura 12. As Fases do Processo CRISP-DM. Fonte: http://meusite.mackenzie.br/rogerio/TIC2021S1/T1/crisp_visualguide.pdf\n", 229 | "\n", 230 | "\n", 231 | "
\n", 232 | "
\n", 233 | "\n" 234 | ] 235 | } 236 | ] 237 | } -------------------------------------------------------------------------------- /ML3_RegressaoLogistica_ex.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "anaconda-cloud": {}, 6 | "kernelspec": { 7 | "display_name": "Python 3", 8 | "language": "python", 9 | "name": "python3" 10 | }, 11 | "language_info": { 12 | "codemirror_mode": { 13 | "name": "ipython", 14 | "version": 3 15 | }, 16 | "file_extension": ".py", 17 | "mimetype": "text/x-python", 18 | "name": "python", 19 | "nbconvert_exporter": "python", 20 | "pygments_lexer": "ipython3", 21 | "version": "3.7.4" 22 | }, 23 | "colab": { 24 | "name": "ML3_RegressaoLogistica_ex.ipynb", 25 | "provenance": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "80CF3Eq9EXDW" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "g1Hap25KEXDX" 59 | }, 60 | "source": [ 61 | "# **3. Classificação: Regressão Logística**\n", 62 | "---\n", 63 | "\n", 64 | "Após fazer os exercícios deste laboratório responda ao **questionário correspondente da aula no Moodle**.\n", 65 | "\n" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "source": [ 71 | "## Relembrando aqui...\n", 72 | "\n", 73 | "Abaixo você pode rever o esquema geral de aplicação do modelo logístico." 74 | ], 75 | "metadata": { 76 | "id": "9898hEksOPD_" 77 | } 78 | }, 79 | { 80 | "cell_type": "code", 81 | "metadata": { 82 | "id": "9_7mcJXbFnyU" 83 | }, 84 | "source": [ 85 | "%%script false\n", 86 | "from sklearn.model_selection import train_test_split \n", 87 | "from sklearn.linear_model import LogisticRegression \n", 88 | "\n", 89 | "# separando variável dependente e independentes \n", 90 | "x = df.drop('y',axis=1)\n", 91 | "y = df['y']\n", 92 | "\n", 93 | "# separando conjuntos de treinamento e teste\n", 94 | "X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, stratify=y, random_state=1)\n", 95 | "\n", 96 | "# selecionando o modelo\n", 97 | "clf = LogisticRegression()\n", 98 | "\n", 99 | "# treinando o modelo\n", 100 | "clf.fit(X_train,y_train)\n", 101 | "\n", 102 | "# utilizando o modelo\n", 103 | "y_pred = clf.predict(X_test)\n", 104 | "\n", 105 | "# verificando o resultado \n", 106 | "print( clf.score(X_test,y_test) )" 107 | ], 108 | "execution_count": null, 109 | "outputs": [] 110 | }, 111 | { 112 | "cell_type": "markdown", 113 | "metadata": { 114 | "_uuid": "9dd9e07c590ca22f0c525222f60f0ebff4e092c6", 115 | "id": "SLTshJXLA4LT" 116 | }, 117 | "source": [ 118 | "# Caso: **Origem dos veículos** \n", 119 | "\n", 120 | "Neste Lab você vai empregar o modelo de Regressão Logística para classificar a origem de veículos a partir de dados de consumo de combustível em veículos (milhas por galão, mpg) e outras informações.\n", 121 | "\n", 122 | "Dados (originais): https://archive.ics.uci.edu/ml/datasets/auto+mpg" 123 | ] 124 | }, 125 | { 126 | "cell_type": "markdown", 127 | "source": [ 128 | "## Seus imports" 129 | ], 130 | "metadata": { 131 | "id": "ufen9jyZN7Kr" 132 | } 133 | }, 134 | { 135 | "cell_type": "code", 136 | "metadata": { 137 | "id": "UPVeFK3a5i6d" 138 | }, 139 | "source": [ 140 | "# seu código\n", 141 | " \n" 142 | ], 143 | "execution_count": null, 144 | "outputs": [] 145 | }, 146 | { 147 | "cell_type": "markdown", 148 | "source": [ 149 | "## Load data set" 150 | ], 151 | "metadata": { 152 | "id": "-xbHxSQ8Px1-" 153 | } 154 | }, 155 | { 156 | "cell_type": "code", 157 | "metadata": { 158 | "id": "S4n19clB0fvg", 159 | "colab": { 160 | "base_uri": "https://localhost:8080/", 161 | "height": 206 162 | }, 163 | "outputId": "f671cc58-92e5-4ca8-8ce5-f04712f0fc2d" 164 | }, 165 | "source": [ 166 | "mpg = sns.load_dataset('mpg')\n", 167 | "mpg.head()" 168 | ], 169 | "execution_count": null, 170 | "outputs": [ 171 | { 172 | "output_type": "execute_result", 173 | "data": { 174 | "text/plain": [ 175 | " mpg cylinders displacement horsepower weight acceleration \\\n", 176 | "0 18.0 8 307.0 130.0 3504 12.0 \n", 177 | "1 15.0 8 350.0 165.0 3693 11.5 \n", 178 | "2 18.0 8 318.0 150.0 3436 11.0 \n", 179 | "3 16.0 8 304.0 150.0 3433 12.0 \n", 180 | "4 17.0 8 302.0 140.0 3449 10.5 \n", 181 | "\n", 182 | " model_year origin name \n", 183 | "0 70 usa chevrolet chevelle malibu \n", 184 | "1 70 usa buick skylark 320 \n", 185 | "2 70 usa plymouth satellite \n", 186 | "3 70 usa amc rebel sst \n", 187 | "4 70 usa ford torino " 188 | ], 189 | "text/html": [ 190 | "\n", 191 | "
\n", 192 | "
\n", 193 | "
\n", 194 | "\n", 207 | "\n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | "
mpgcylindersdisplacementhorsepowerweightaccelerationmodel_yearoriginname
018.08307.0130.0350412.070usachevrolet chevelle malibu
115.08350.0165.0369311.570usabuick skylark 320
218.08318.0150.0343611.070usaplymouth satellite
316.08304.0150.0343312.070usaamc rebel sst
417.08302.0140.0344910.570usaford torino
\n", 285 | "
\n", 286 | " \n", 296 | " \n", 297 | " \n", 334 | "\n", 335 | " \n", 359 | "
\n", 360 | "
\n", 361 | " " 362 | ] 363 | }, 364 | "metadata": {}, 365 | "execution_count": 22 366 | } 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "source": [ 372 | "# Exercício. Exclua os valores ausentes\n", 373 | "\n", 374 | "Valores ausentes não podem ser empregados no cálculo dos coeficientes da regressão logística, e são um problema para muitos outros modelos. Existem várias formas de se tratar dados ausentes. Aqui vamos, por simplicidade, simplesmente excluir as linhas com dados ausentes. \n", 375 | "\n", 376 | "> Qual atributo apresenta valores ausentes e quantas linhas foram excluídas dos dados?\n", 377 | "\n", 378 | "**Dica:** Empregue `df.isna().sum()` para identificar dados ausentes e `df.dropna()` para excluir as linhas.\n", 379 | "\n" 380 | ], 381 | "metadata": { 382 | "id": "A08qG6zaQi6t" 383 | } 384 | }, 385 | { 386 | "cell_type": "code", 387 | "source": [ 388 | "# seu código\n" 389 | ], 390 | "metadata": { 391 | "id": "B4CVYeZbQUVc" 392 | }, 393 | "execution_count": null, 394 | "outputs": [] 395 | }, 396 | { 397 | "cell_type": "markdown", 398 | "source": [ 399 | "# Exercício. Altere os valores do campo `origin`\n", 400 | "\n", 401 | "A Regressão Logística é um classificador binário. Altere os valores do campo `origin`:" 402 | ], 403 | "metadata": { 404 | "id": "fMajp0a6SAqS" 405 | } 406 | }, 407 | { 408 | "cell_type": "code", 409 | "metadata": { 410 | "id": "ca-1fpjAEhQG" 411 | }, 412 | "source": [ 413 | "# seu código" 414 | ], 415 | "execution_count": null, 416 | "outputs": [] 417 | }, 418 | { 419 | "cell_type": "markdown", 420 | "source": [ 421 | "para os valores `usa` e `non-usa` para podermos classificar a origem dos veículos como sendo dos Estados Unidos ou não.\n", 422 | "\n", 423 | "> Quantos veículos `usa` e `non-usa` foram obtidos?\n", 424 | "\n", 425 | "**Dica:** Empregue `df.campo.replace('old','new')`" 426 | ], 427 | "metadata": { 428 | "id": "yN84HQeOSd62" 429 | } 430 | }, 431 | { 432 | "cell_type": "code", 433 | "metadata": { 434 | "id": "m6Mj132ha8dJ" 435 | }, 436 | "source": [ 437 | "# seu código\n" 438 | ], 439 | "execution_count": null, 440 | "outputs": [] 441 | }, 442 | { 443 | "cell_type": "markdown", 444 | "source": [ 445 | "# Exercício. Classifique a `origin` dos veículos a partir dos valores de `mpg` e `cylinders`\n", 446 | "\n", 447 | "Empregue o modelo de Regressão Logística para classificar a `origin` dos veículos a partir somente dos valores de `mpg` e `cylinders`.\n", 448 | "\n", 449 | "Empregue $30$% para dados de teste, estratificados pelo atributo de classe e a semente de geração aleatória (`random_state=1`).\n", 450 | "\n", 451 | "> Qual a acuracidade (*score*) obtido pelo modelo?\n", 452 | "\n", 453 | "**Dica:** *Muito Cuidado*. Se você não empregar exatamente as configurações acima você vai criar conjuntos de treinamento e testes diferentes e não vai chegar às respostas que encontra nos testes!" 454 | ], 455 | "metadata": { 456 | "id": "AIKiwRtxT114" 457 | } 458 | }, 459 | { 460 | "cell_type": "code", 461 | "metadata": { 462 | "id": "570uz7Mk26jy" 463 | }, 464 | "source": [ 465 | "# seu código\n" 466 | ], 467 | "execution_count": null, 468 | "outputs": [] 469 | }, 470 | { 471 | "cell_type": "markdown", 472 | "source": [ 473 | "# Exercício. Classifique os veículos com valores `mpg` e `cylinders` igual aos valores máximos e mínimos dos dados\n", 474 | "\n", 475 | "Você não vai ter nenhuma surpresa aqui com o resultado :-)\n", 476 | "\n", 477 | "> Qual o resultado da classificação?\n", 478 | "\n", 479 | "**Dica:** Crie um dataframe exatamente com esses atributos e os valores minímo e máximos encontrados no dataframe original para sua entrada no `predict()`.\n" 480 | ], 481 | "metadata": { 482 | "id": "NevXaFi5VFLB" 483 | } 484 | }, 485 | { 486 | "cell_type": "code", 487 | "source": [ 488 | "# seu código\n" 489 | ], 490 | "metadata": { 491 | "id": "7vRGQx-9VjSN" 492 | }, 493 | "execution_count": null, 494 | "outputs": [] 495 | }, 496 | { 497 | "cell_type": "markdown", 498 | "source": [ 499 | "# Exercício. Classifique a `origin` dos veículos a partir de todos os preditores válidos\n", 500 | "\n", 501 | "Empregue agora o modelo de Regressão Logística para classificar a `origin` dos veículos a partir de todos os preditores válidos\n", 502 | "\n", 503 | "Empregue $30$% para dados de teste, estratificados pelo atributo de classe e a semente de geração aleatória (`random_state=1`).\n", 504 | "\n", 505 | "> Qual a acuracidade (*score*) obtido pelo modelo?\n", 506 | "\n", 507 | "**Dica:** *Muito Cuidado*. Se você não empregar exatamente as configurações acima você vai criar conjuntos de treinamento e testes diferentes e não vai chegar às respostas que encontra nos testes!\n", 508 | "\n", 509 | "**Dica:** Existe um atributo que não faz sentido ser empregado como preditor e precisa ser excluído das variáveis de entrada. Qual?" 510 | ], 511 | "metadata": { 512 | "id": "OkKRssUpXK4t" 513 | } 514 | }, 515 | { 516 | "cell_type": "code", 517 | "metadata": { 518 | "id": "WG8usyodXHrP" 519 | }, 520 | "source": [ 521 | "# seu código\n" 522 | ], 523 | "execution_count": null, 524 | "outputs": [] 525 | } 526 | ] 527 | } -------------------------------------------------------------------------------- /ML6_CV_GridSearch_ex.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML6_CV_GridSearch_ex.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "Bh3XQyK-0stm" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **6. Validação Cruzada e *GridSearch***\n", 62 | "\n", 63 | "---\n", 64 | "\n" 65 | ] 66 | }, 67 | { 68 | "cell_type": "markdown", 69 | "source": [ 70 | "Após fazer os exercícios deste laboratório responda ao **questionário correspondente da aula no Moodle**.\n", 71 | "\n" 72 | ], 73 | "metadata": { 74 | "id": "-vEjCE_y-MFT" 75 | } 76 | }, 77 | { 78 | "cell_type": "markdown", 79 | "metadata": { 80 | "_uuid": "9dd9e07c590ca22f0c525222f60f0ebff4e092c6", 81 | "id": "kIr_4QzOlOOo" 82 | }, 83 | "source": [ 84 | "# Caso: **Propensão de Compra de Clientes por Telemarketing** \n", 85 | "\n", 86 | "https://archive.ics.uci.edu/ml/datasets/Bank+Marketing\n", 87 | "\n", 88 | "Os dados acima estão relacionados com campanhas de marketing direto de uma instituição bancária portuguesa. As campanhas de marketing foram baseadas em telefonemas. Freqüentemente, era necessário mais de um contato para o mesmo cliente, para acessar se o produto (depósito bancário) seria ('yes') ou não ('no') assinado.\n", 89 | "\n", 90 | "Os dados estão na URL: http://meusite.mackenzie.br/rogerio/TIC/bank-full.csv\n", 91 | "\n", 92 | "\n" 93 | ] 94 | }, 95 | { 96 | "cell_type": "markdown", 97 | "source": [ 98 | "# Caso: **Classificação de Tipos de Vidro para Reciclagem**\n", 99 | "\n", 100 | "Nossa base de dados classifica vidros industrializados em 7 categorias conforme suas características químicas:\n", 101 | "\n", 102 | "* Classe 1: janelas de construção (processadas com flutuação)\n", 103 | "* Classe 2: janelas de construção (processadas sem flutuação)\n", 104 | "* Classe 3: janelas do veículo (processadas com flutuação)\n", 105 | "* Classe 4: janelas do veículo (processadas sem flutuação)\n", 106 | "* Classe 5: recipientes\n", 107 | "* Classe 6: talheres\n", 108 | "* Classe 7: faróis\n", 109 | "\n", 110 | "(*algumas dessas classes podem não estar presentes no data-set*).\n", 111 | "\n", 112 | "Os dados estão na URL: https://github.com/Rogerio-mack/Machine-Learning-I/raw/main/data/glasses.csv\n", 113 | "\n", 114 | "Aqui vai nos interessar classificar os vidros para efeito de reciclagem em 3 categorias:\n", 115 | "\n", 116 | "* **C = Vidros de Construção**\n", 117 | "* **V = Vidros de Veículos**\n", 118 | "* **O = Outros**\n", 119 | "\n", 120 | "E para isso vamos empregar uma seleção de hiperparâmetros de modelos com o GridSearch que você aprendeu na aula teórica.\n", 121 | "\n", 122 | "\n" 123 | ], 124 | "metadata": { 125 | "id": "QU8GDCtoeOYH" 126 | } 127 | }, 128 | { 129 | "cell_type": "markdown", 130 | "metadata": { 131 | "id": "YeiT9oXumyn8" 132 | }, 133 | "source": [ 134 | "# Exercício. Acesse e Explore os dados \n", 135 | "\n", 136 | "Qual o atributo classe e quantos casos de cada classe? " 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "source": [ 142 | "# Seu código aqui\n" 143 | ], 144 | "metadata": { 145 | "id": "pL7ye2mQYl9i" 146 | }, 147 | "execution_count": 1, 148 | "outputs": [] 149 | }, 150 | { 151 | "cell_type": "markdown", 152 | "metadata": { 153 | "id": "i-L4D2vgoJ9R" 154 | }, 155 | "source": [ 156 | "# Exercício. Preparando os dados \n", 157 | "\n", 158 | "Atribua os valores `X` e `y` que serão empregados para construção dos modelos.\n", 159 | "\n", 160 | "Aqui um pequeno checklist...\n", 161 | "\n", 162 | "1. Verifique a presença de valores nulos, se houverem exclua os registros com valores nulos\n", 163 | "2. Note que antes de prosseguir você precisa criar um atributo com as classes `C`, `V` e `O` de reciclagem ou alterar o atributo classe atual.\n", 164 | "3. Parece haver necessidade de encode dos dados. Empregue o hot-encode.\n", 165 | "4. Há a necessidade de exclusão de atributos para o treinamento? Você vai empregar todos os atributos cabíveis para a tarefa\n", 166 | "5. Os dados precisam ser normalizados? Empregue o `StandardScaler`\n", 167 | " " 168 | ] 169 | }, 170 | { 171 | "cell_type": "markdown", 172 | "source": [ 173 | "**1. Verifique a presença de valores nulos, se houverem exclua os registros com valores nulos.**" 174 | ], 175 | "metadata": { 176 | "id": "xg0K2v-zL_tO" 177 | } 178 | }, 179 | { 180 | "cell_type": "code", 181 | "source": [ 182 | "# Seu código aqui\n" 183 | ], 184 | "metadata": { 185 | "id": "TE4L74O5L-rZ" 186 | }, 187 | "execution_count": null, 188 | "outputs": [] 189 | }, 190 | { 191 | "cell_type": "markdown", 192 | "source": [ 193 | "**2. Note que antes de prosseguir você precisa criar um atributo com as classes `C`, `V` e `O` de reciclagem ou alterar o atributo classe atual.**" 194 | ], 195 | "metadata": { 196 | "id": "VmZXhWz2MonQ" 197 | } 198 | }, 199 | { 200 | "cell_type": "code", 201 | "source": [ 202 | "# Seu código aqui\n" 203 | ], 204 | "metadata": { 205 | "id": "3EgpntumMqMP" 206 | }, 207 | "execution_count": null, 208 | "outputs": [] 209 | }, 210 | { 211 | "cell_type": "markdown", 212 | "source": [ 213 | "**3. Parece haver necessidade de encode dos dados. Empregue o hot-encode.**\n", 214 | "\n", 215 | "Se necessário, pesquise aqui a função `OneHotEncoder` do scikit-learn o a função `pd.get_dummies` do Pandas." 216 | ], 217 | "metadata": { 218 | "id": "9uAs_e6qNclZ" 219 | } 220 | }, 221 | { 222 | "cell_type": "code", 223 | "source": [ 224 | "# Seu código aqui\n" 225 | ], 226 | "metadata": { 227 | "id": "ZNs9VJUXNbrw" 228 | }, 229 | "execution_count": null, 230 | "outputs": [] 231 | }, 232 | { 233 | "cell_type": "markdown", 234 | "source": [ 235 | "**4 Há a necessidade de exclusão de atributos para o treinamento? Você vai empregar todos os atributos cabíveis para a tarefa**" 236 | ], 237 | "metadata": { 238 | "id": "VJrwtKBiMNng" 239 | } 240 | }, 241 | { 242 | "cell_type": "code", 243 | "source": [ 244 | "# Seu código aqui\n" 245 | ], 246 | "metadata": { 247 | "id": "bTgWU1giMTg_" 248 | }, 249 | "execution_count": 10, 250 | "outputs": [] 251 | }, 252 | { 253 | "cell_type": "markdown", 254 | "source": [ 255 | "**5. Os dados precisam ser normalizados? Empregue o `StandardScaler`**" 256 | ], 257 | "metadata": { 258 | "id": "dnerVYgzR4ng" 259 | } 260 | }, 261 | { 262 | "cell_type": "code", 263 | "metadata": { 264 | "id": "pblTEHuSbGAE" 265 | }, 266 | "source": [ 267 | "# Seu código aqui\n" 268 | ], 269 | "execution_count": 11, 270 | "outputs": [] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "source": [ 275 | "print( X[0], len(X[0]) )" 276 | ], 277 | "metadata": { 278 | "id": "lKzhO9o1aWqB" 279 | }, 280 | "execution_count": null, 281 | "outputs": [] 282 | }, 283 | { 284 | "cell_type": "markdown", 285 | "source": [ 286 | "# Exercício. Treinando o Modelo\n", 287 | "\n", 288 | "Você vai treinar um modelo de Árvore de Decisão buscando os melhores hiperparâmetros de 'max_depth' e 'criterion' (pesquise os possíveis valores na documentação do scikit-learn). Entretanto, no lugar da acuracidade, você empregar o F1 score (`f1_macro`) que é uma métrica que balanceia os resultados de precisão e recall. Você pode empregar como modelo os códigos do notebook de teoria.\n", 289 | "\n", 290 | "Aqui um checklist do que precisa ser feito...\n", 291 | "\n", 292 | "1. Separe os dados de Treinamento e Teste \n", 293 | "> Empregue 0.3 dos dados para teste, estratificados e não deixe de empregar o seed 123.\n", 294 | "\n", 295 | "2. Defina uma DecisionTree como Estimador Base.\n", 296 | "> Não deixe de empregar o parâmetro `random_state=123` no estimador base para a reprodutibilidade dos resultados. \n", 297 | "\n", 298 | "3. Especifique o range dos valores 'max_depth' e 'criterion' que você deseja empregar\n", 299 | "> Você pode ter que pesquisar isso na documentação do scikit-learn.\n", 300 | "\n", 301 | "4. Configure o `GridSearchCV`\n", 302 | "> Você deve empregar 5 partições e empregar o score de `f1_macro` para a seleção dos melhores hiperparâmetros.\n", 303 | "\n", 304 | "5. Verifique os Resultados\n", 305 | "> Verifique os hiperparâmetros selecionados e gere um classification report para ver as métricas do modelo.\n", 306 | "\n", 307 | "\n", 308 | "**Nota**: você pode ignorar FitFailedWarning que podem ocorrer ao longo do treinamento. Esse warning é mesmo esperado aqui." 309 | ], 310 | "metadata": { 311 | "id": "cuDbMW0bUjDJ" 312 | } 313 | }, 314 | { 315 | "cell_type": "code", 316 | "source": [ 317 | "# seu código aqui \n", 318 | "from sklearn.model_selection import train_test_split\n", 319 | "from sklearn.model_selection import GridSearchCV\n", 320 | "from sklearn.tree import DecisionTreeClassifier\n", 321 | "from sklearn.metrics import classification_report\n", 322 | "\n" 323 | ], 324 | "metadata": { 325 | "id": "iOI79lDqSxsp" 326 | }, 327 | "execution_count": null, 328 | "outputs": [] 329 | } 330 | ] 331 | } -------------------------------------------------------------------------------- /ML6_ponto_de_partida.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML6_ponto_de_partida.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **Validação Cruzada**\n", 62 | "---\n", 63 | "\n" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "metadata": { 69 | "id": "xyywcuI7p1kG" 70 | }, 71 | "source": [ 72 | "import numpy as np\n", 73 | "import pandas as pd\n", 74 | "import matplotlib.pyplot as plt\n", 75 | "%matplotlib inline\n", 76 | "from matplotlib.lines import Line2D\n", 77 | "import seaborn as sns" 78 | ], 79 | "execution_count": 1, 80 | "outputs": [] 81 | }, 82 | { 83 | "cell_type": "markdown", 84 | "metadata": { 85 | "id": "zH-kFjI8TIUe" 86 | }, 87 | "source": [ 88 | "## Analogias Úteis\n", 89 | "\n", 90 | "> * **Sem conjuntos de Treinamento/Teste**\n", 91 | "\n", 92 | ">> *É como ensinar um aluno apresentando nas aulas todas e as mesmas questões que irão surgir cair na prova*\n", 93 | "\n", 94 | "> * **Somente conjuntos de Treinamento/Teste, mas conjuntos de Validação**\n", 95 | "\n", 96 | ">> *É como dar a nota para o aluno sem indicar as respostas, mas permitindo que ele faça novas tentativas da prova até obter o resultado que deseja.* \n", 97 | "\n", 98 | "> * **Conjuntos de Validação Únicos**\n", 99 | "\n", 100 | ">> *É como empregar uma única nota para avaliar um aluno! E se ele recebeu uma prova somente com exercícios dos tópicos que estudou?* \n", 101 | " \n", 102 | "\n", 103 | "## Validação Cruzada \n", 104 | "\n", 105 | "> * Conjuntos de Treinamento/Teste/Validação \n", 106 | "\n", 107 | "> * Evita overfitting \n", 108 | "\n", 109 | "> * Média de vários resultados\n", 110 | "\n", 111 | "> * Todos os dados são testados: Cada instância de dados é empregada ao menos uma vez como teste\n", 112 | "\n", 113 | "> * Sem necessidade de separar um novo conjunto de dados \n", 114 | "\n" 115 | ] 116 | }, 117 | { 118 | "cell_type": "markdown", 119 | "metadata": { 120 | "id": "giVfh3l1QuIb" 121 | }, 122 | "source": [ 123 | "# Cross Validation\n", 124 | "\n", 125 | "
\n", 126 | "\n", 127 | "
\n", 128 | "\n", 129 | "![imagem](https://scikit-learn.org/stable/_images/grid_search_cross_validation.png)\n", 130 | "\n", 131 | "\n", 132 | "\n", 133 | "Figura 1. Esquema de Cross-Validation.
(Fonte: https://scikit-learn.org)" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "metadata": { 139 | "colab": { 140 | "base_uri": "https://localhost:8080/" 141 | }, 142 | "id": "KaTQuNdq_6ob", 143 | "outputId": "50787003-2f07-44bc-f03e-3a07fd8250b2" 144 | }, 145 | "source": [ 146 | "from sklearn.neighbors import KNeighborsClassifier \n", 147 | "from sklearn.model_selection import train_test_split\n", 148 | "from sklearn.preprocessing import MinMaxScaler\n", 149 | "from sklearn.model_selection import cross_val_score\n", 150 | "\n", 151 | "df = pd.read_csv('https://vincentarelbundock.github.io/Rdatasets/csv/MASS/biopsy.csv',index_col=0)\n", 152 | "df['V6'] = df[['V6']].fillna(df['V6'].mean())\n", 153 | "\n", 154 | "X = df.drop(columns=['ID','class'])\n", 155 | "y = df['class']\n", 156 | "\n", 157 | "scaler = MinMaxScaler()\n", 158 | "scaler.fit(X)\n", 159 | "X = scaler.transform(X) \n", 160 | "\n", 161 | "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.3, random_state=123)\n", 162 | "\n", 163 | "clf = KNeighborsClassifier(n_neighbors = 3, metric= 'euclidean' )\n", 164 | "\n", 165 | "acc_scores = cross_val_score(clf, X_train, y_train, cv = 10)\n", 166 | "\n", 167 | "print(acc_scores, '\\n')\n", 168 | "print(\"accuracy: %0.3f +/- %0.3f\" % (acc_scores.mean(), acc_scores.std() * 2),'\\n')\n", 169 | "\n", 170 | "for metric in ['accuracy','f1_macro','precision_macro','recall_macro']:\n", 171 | " scores = cross_val_score(clf, X_train, y_train, cv = 4, scoring=metric)\n", 172 | " print(metric + \": %0.3f +/- %0.3f\" % (scores.mean(), scores.std() * 2))\n", 173 | "\n", 174 | "\n" 175 | ], 176 | "execution_count": 3, 177 | "outputs": [ 178 | { 179 | "output_type": "stream", 180 | "name": "stdout", 181 | "text": [ 182 | "[0.97959184 0.93877551 1. 0.97959184 0.95918367 0.95918367\n", 183 | " 1. 0.93877551 0.97959184 0.95833333] \n", 184 | "\n", 185 | "accuracy: 0.969 +/- 0.042 \n", 186 | "\n", 187 | "accuracy: 0.971 +/- 0.008\n", 188 | "f1_macro: 0.968 +/- 0.009\n", 189 | "precision_macro: 0.970 +/- 0.009\n", 190 | "recall_macro: 0.967 +/- 0.018\n" 191 | ] 192 | } 193 | ] 194 | }, 195 | { 196 | "cell_type": "markdown", 197 | "metadata": { 198 | "id": "sVRo61k090Px" 199 | }, 200 | "source": [ 201 | " \n", 202 | "\n", 203 | "
\n", 204 | "\n", 205 | "
\n", 206 | "\n", 207 | "\n", 208 | "\n", 209 | "
\n", 210 | "\n", 211 | "
\n", 212 | "\n", 213 | "\n", 214 | "\n", 215 | "Figura 2. Esquema Geral da Avaliação de Modelos.
(Fonte: https://scikit-learn.org)\n", 216 | "\n" 217 | ] 218 | } 219 | ] 220 | } -------------------------------------------------------------------------------- /ML7_ex_projeto.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML7_ex_projeto.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "40b90843" 44 | }, 45 | "source": [ 46 | "\n", 47 | "
\n", 48 | "
\n", 49 | "
\n", 50 | "
\n", 51 | "
\n", 52 | "\n", 53 | "# ***Título do seu projeto***\n", 54 | "---" 55 | ] 56 | }, 57 | { 58 | "cell_type": "markdown", 59 | "source": [ 60 | "$\\rightarrow$ **esta célula deve ser removida na entrega do projeto** \n", 61 | "\n", 62 | "# Objetivo\n", 63 | "\n", 64 | "Neste trabalho você deve obrigatoriamente trabalhar em grupo de 2-4 alunos e desenvolver uma solução de aprendizado supervisionado para algum problema de interesse do grupo. Os problemas poderão ser de classificação ou de regressão. \n", 65 | "\n", 66 | "## Descrição do Projeto\n", 67 | "\n", 68 | "O trabalho deve ser original e desenvolvido em R ou Python notebook com um conjunto de dados próprios e originais definidos. Entendam como dados próprios e originais dados que são originais de empresas ou entidades, podendo ser bases públicas. Dados de ONGs, empresas privadas ou governo, são exemplos de bases válidas. Bases de repositórios públicos como Kaggle e UCI, que fornecem bases prontas não são originais. Tenha em mente: você deve construir uma base de dados nova para o seu problema, é essa a ideia de dados originais. Se tiver dúvidas consulte o professor antes de empregar uma base.\n", 69 | "\n", 70 | "Os dados devem suportar um problema relevante e adequado para o aprendizado supervisionado. Assim, não podem ser empregadas bases artificiais e problemas muito simples. Devem ser evitadas também Séries Temporais como séries financeiras (como ações) e de dados climáticos que requerem outras técnicas não detalhadas aqui.\n", 71 | "\n", 72 | "As bases devem conter um mínimo de 1000 instâncias. Consulte o professor para uso de um número menor de instâncias para dados próprios de uma empresa por exemplo.\n", 73 | "\n", 74 | "Você deve implementar ao menos dois modelos, comparar e discutir os seus resultados. Seu notebook deve ser 100% executável e incluir todo necessário para construção dos dados, entendimento do problema e da solução. \n", 75 | "\n", 76 | "Deve ainda ser entregue uma apresentação em **vídeo (até 5min)** dos resultados. \n", 77 | "\n" 78 | ], 79 | "metadata": { 80 | "id": "ZSUH3FNWWOsh" 81 | } 82 | }, 83 | { 84 | "cell_type": "markdown", 85 | "source": [ 86 | "$\\rightarrow$ **esta célula deve ser removida na entrega do projeto** \n", 87 | "\n", 88 | "Siga este template para entrega do seu projeto. O código deste notebook precisa ser 100% executável, sem a necessidade de qualquer operação adicional como por exemplo a download, cópia ou alteração de arquivos. Crie assim repositórios públicos para suas bases de dados, por exemplo, disponibilizando-as no GitHub.\n", 89 | "\n", 90 | "## Entregas na Tarefa do Moodle\n", 91 | "\n", 92 | "1. Poste este Python notebook (.ipynb) modificado com o seu projeto.\n", 93 | "2. Poste o endereço (link) do Python notebook do seu projeto compartilhado (público para leitura) nos comentários da tarefa\n", 94 | "3. Um vídeo de até 5min com a apresentação do seu projeto em formato .mp4\n", 95 | "4. Opcional, poste o .pptx da apresentação\n", 96 | "\n", 97 | "## Vídeo\n", 98 | "\n", 99 | "O vídeo deve contemplar:\n", 100 | "\n", 101 | "1. Apresentação e Justificativa do seu problema\n", 102 | "2. A abordagem dada ao problema (fonte dos dados, transformações, modelos avaliados)\n", 103 | "3. A solução e seus resultados\n", 104 | "4. Diferenciais e Melhorias Futuras do trabalho (modelos e técnicas diferenciadas que foram empregadas, limitações do modelo atual e como melhora-las etc.)\n", 105 | "\n", 106 | "\n", 107 | "\n", 108 | "\n", 109 | "\n" 110 | ], 111 | "metadata": { 112 | "id": "Ikv-pBzr9bNu" 113 | } 114 | }, 115 | { 116 | "cell_type": "code", 117 | "metadata": { 118 | "id": "rYx9D4GZA5o9" 119 | }, 120 | "source": [ 121 | "#@title Identificação do Grupo\n", 122 | "\n", 123 | "#@markdown Integrantes do Grupo (*informe \\,\\*)\n", 124 | "Aluno1 = '1115665, Adriana Fujita' #@param {type:\"string\"} \n", 125 | "Aluno2 = '1115677, Daniel Henrique' #@param {type:\"string\"}\n", 126 | "Aluno3 = 'None' #@param {type:\"string\"}\n", 127 | "Aluno4 = 'None' #@param {type:\"string\"}\n", 128 | "Aluno5 = 'None' #@param {type:\"string\"}\n", 129 | "\n" 130 | ], 131 | "execution_count": null, 132 | "outputs": [] 133 | }, 134 | { 135 | "cell_type": "markdown", 136 | "source": [ 137 | "# **Apresentação**" 138 | ], 139 | "metadata": { 140 | "id": "JlCIc2YooBW7" 141 | } 142 | }, 143 | { 144 | "cell_type": "markdown", 145 | "metadata": { 146 | "id": "A4-f8AtfKAn2" 147 | }, 148 | "source": [ 149 | "# Problema\n", 150 | "\n", 151 | "*Apresente resumidamente o trabalho justificando a escolha e a relevância do problema.*\n", 152 | "\n" 153 | ] 154 | }, 155 | { 156 | "cell_type": "markdown", 157 | "source": [ 158 | "# Referencial Teórico\n", 159 | "\n", 160 | "*Apresente aqui o referencial teórico empregado. Empregue as referências empregadas que devem aparecer no final do trabalho. Lembre-se, existem referências técnicas do domínio da solução, mas também referências do domínio do problema (por exemplo, se estiver classificando reclamações de clientes, existem inúmeras referências sobre o problema de negócio em si).* " 161 | ], 162 | "metadata": { 163 | "id": "7LtXrRFr4hg3" 164 | } 165 | }, 166 | { 167 | "cell_type": "markdown", 168 | "metadata": { 169 | "id": "7-pdJIiunIWL" 170 | }, 171 | "source": [ 172 | "# Metodologia \n", 173 | "\n", 174 | "*Apresente e discuta a abordagem de solução empregada. Discuta os dados empregados, tratamento efetuados, variáveis preditoras e objetivo, técnicas empregadas.*\n", 175 | "\n" 176 | ] 177 | }, 178 | { 179 | "cell_type": "markdown", 180 | "source": [ 181 | "# Resultados\n", 182 | "\n", 183 | "*Resuma aqui os resultados, principalmente incluindo tabelas e esquemas necessários.* " 184 | ], 185 | "metadata": { 186 | "id": "ZGpU-v6CnTaG" 187 | } 188 | }, 189 | { 190 | "cell_type": "markdown", 191 | "source": [ 192 | "# **Implementação**" 193 | ], 194 | "metadata": { 195 | "id": "caAD2jBEn0KM" 196 | } 197 | }, 198 | { 199 | "cell_type": "markdown", 200 | "metadata": { 201 | "id": "xGFJyOm1Kdtd" 202 | }, 203 | "source": [ 204 | "# Base de Dados \n", 205 | "\n", 206 | "*Descreva aqui os dados utilizados, discuta eventuais transformações e/ou seleções dos dados e preparações nos dados.* \n", 207 | "\n", 208 | "\n" 209 | ] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "source": [ 214 | "# seu código" 215 | ], 216 | "metadata": { 217 | "id": "V_X2jqpl3UWA" 218 | }, 219 | "execution_count": null, 220 | "outputs": [] 221 | }, 222 | { 223 | "cell_type": "markdown", 224 | "source": [ 225 | "## **Modelo 1**\n", 226 | "\n", 227 | "*Descreva resumidamente o modelo empregado.*\n" 228 | ], 229 | "metadata": { 230 | "id": "FGwyFHwtoO5m" 231 | } 232 | }, 233 | { 234 | "cell_type": "markdown", 235 | "source": [ 236 | "### **Modelo 1:** Preparação dos Dados\n" 237 | ], 238 | "metadata": { 239 | "id": "hXaglI6JoaJO" 240 | } 241 | }, 242 | { 243 | "cell_type": "code", 244 | "source": [ 245 | "# seu código" 246 | ], 247 | "metadata": { 248 | "id": "-8gSVEHyoeLK" 249 | }, 250 | "execution_count": null, 251 | "outputs": [] 252 | }, 253 | { 254 | "cell_type": "markdown", 255 | "source": [ 256 | "### **Modelo 1:** Modelo\n" 257 | ], 258 | "metadata": { 259 | "id": "VyE3YKdQotLc" 260 | } 261 | }, 262 | { 263 | "cell_type": "code", 264 | "source": [ 265 | "# seu código" 266 | ], 267 | "metadata": { 268 | "id": "a5YneTsaotLc" 269 | }, 270 | "execution_count": null, 271 | "outputs": [] 272 | }, 273 | { 274 | "cell_type": "markdown", 275 | "source": [ 276 | "### **Modelo 1:** Resultados\n" 277 | ], 278 | "metadata": { 279 | "id": "SRw3t2NnotVI" 280 | } 281 | }, 282 | { 283 | "cell_type": "code", 284 | "source": [ 285 | "# seu código" 286 | ], 287 | "metadata": { 288 | "id": "kvwQvGDOotVI" 289 | }, 290 | "execution_count": null, 291 | "outputs": [] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "source": [ 296 | "## **Modelo 2**\n", 297 | "\n", 298 | "*Descreva resumidamente o modelo empregado.*\n" 299 | ], 300 | "metadata": { 301 | "id": "n6sOVE9jo_jq" 302 | } 303 | }, 304 | { 305 | "cell_type": "markdown", 306 | "source": [ 307 | "### **Modelo 2:** Preparação dos Dados\n" 308 | ], 309 | "metadata": { 310 | "id": "lBW3929po_jr" 311 | } 312 | }, 313 | { 314 | "cell_type": "code", 315 | "source": [ 316 | "# seu código" 317 | ], 318 | "metadata": { 319 | "id": "VfJUfM16o_jr" 320 | }, 321 | "execution_count": null, 322 | "outputs": [] 323 | }, 324 | { 325 | "cell_type": "markdown", 326 | "source": [ 327 | "### **Modelo 2:** Modelo\n" 328 | ], 329 | "metadata": { 330 | "id": "z60H0esCo_jr" 331 | } 332 | }, 333 | { 334 | "cell_type": "code", 335 | "source": [ 336 | "# seu código" 337 | ], 338 | "metadata": { 339 | "id": "GzbajY4fo_jr" 340 | }, 341 | "execution_count": null, 342 | "outputs": [] 343 | }, 344 | { 345 | "cell_type": "markdown", 346 | "source": [ 347 | "### **Modelo 2:** Resultados\n" 348 | ], 349 | "metadata": { 350 | "id": "f66UTm3So_js" 351 | } 352 | }, 353 | { 354 | "cell_type": "code", 355 | "source": [ 356 | "# seu código" 357 | ], 358 | "metadata": { 359 | "id": "PJGbWBofo_jt" 360 | }, 361 | "execution_count": null, 362 | "outputs": [] 363 | }, 364 | { 365 | "cell_type": "markdown", 366 | "metadata": { 367 | "id": "9kwoGZeSLRsX" 368 | }, 369 | "source": [ 370 | "# **Conclusão** \n", 371 | "\n", 372 | "*Apresente a conclusão do seu estudo comparando ainda os resultados obtidos com o referencial teórico apresentado.*\n", 373 | "\n" 374 | ] 375 | }, 376 | { 377 | "cell_type": "markdown", 378 | "source": [ 379 | "# **Referências** \n", 380 | "\n", 381 | "*Indique as referências empregadas, incluindo as fontes de dados.*" 382 | ], 383 | "metadata": { 384 | "id": "hc0rg9YSzRz9" 385 | } 386 | }, 387 | { 388 | "cell_type": "markdown", 389 | "metadata": { 390 | "id": "8crUBC3IQ3U_" 391 | }, 392 | "source": [ 393 | "---" 394 | ] 395 | }, 396 | { 397 | "cell_type": "code", 398 | "metadata": { 399 | "id": "BluFtfHuCGzm", 400 | "cellView": "form" 401 | }, 402 | "source": [ 403 | "#@title Avaliação\n", 404 | "Completo = 10 #@param {type:\"slider\", min:0, max:10, step:1}\n", 405 | "#@markdown Projeto cumpre todos os itens pedidos. \n", 406 | "Relevancia = 9 #@param {type:\"slider\", min:0, max:10, step:1}\n", 407 | "#@markdown As seleções de dados e eventos para análise são relevantes e justificados. \n", 408 | "Tecnicas = 6 #@param {type:\"slider\", min:0, max:10, step:1}\n", 409 | "#@markdown As técnicas de empregadas são adequadas e corretamente aplicadas.\n", 410 | "Apresentacao = 7 #@param {type:\"slider\", min:0, max:10, step:1}\n", 411 | "#@markdown A apresentação dos resultados é clara e objetiva.\n", 412 | "Analise = 8 #@param {type:\"slider\", min:0, max:10, step:1}\n", 413 | "#@markdown As premissas de análise se justificam e a analise é correta. \n", 414 | "Conclusao = 7 #@param {type:\"slider\", min:0, max:10, step:1}\n", 415 | "#@markdown As conclusões são justificadas e relevantes\n", 416 | "Bonus = 0.5 #@param {type:\"slider\", min:0, max:1, step:0.5}\n", 417 | "#@markdown A critério do professor por inovações na abordagem e no uso de técnicas de Análise de Dados\n", 418 | "\n", 419 | "\n", 420 | "\n", 421 | "\n", 422 | "\n", 423 | "\n" 424 | ], 425 | "execution_count": null, 426 | "outputs": [] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "metadata": { 431 | "colab": { 432 | "base_uri": "https://localhost:8080/", 433 | "height": 148 434 | }, 435 | "id": "2Gqw7hUZHyle", 436 | "cellView": "form", 437 | "outputId": "17dc9379-224b-4a07-e5c3-aa059ba434d8" 438 | }, 439 | "source": [ 440 | "#@markdown ### Nota Final\n", 441 | "nota = Completo + Relevancia + Tecnicas + Apresentacao + Analise + Conclusao \n", 442 | "\n", 443 | "nota = nota / 6 + Bonus\n", 444 | "\n", 445 | "print(f'Nota final do trabalho {nota :.1f}')\n", 446 | "\n", 447 | "import numpy as np\n", 448 | "import pandas as pd\n", 449 | "\n", 450 | "alunos = pd.DataFrame()\n", 451 | "\n", 452 | "lista_tia = []\n", 453 | "lista_nome = []\n", 454 | "\n", 455 | "for i in range(1,6):\n", 456 | " exec(\"if Aluno\" + str(i) + \" !='None': lista = Aluno\" + str(i) + \".split(','); lista_tia.append(lista[0]); lista_nome.append(lista[1].upper())\")\n", 457 | "\n", 458 | "alunos['tia'] = lista_tia\n", 459 | "alunos['nome'] = lista_nome\n", 460 | "alunos['nota'] = np.round(nota,1)\n", 461 | "print()\n", 462 | "alunos" 463 | ], 464 | "execution_count": null, 465 | "outputs": [ 466 | { 467 | "output_type": "stream", 468 | "name": "stdout", 469 | "text": [ 470 | "Nota final do trabalho 8.3\n", 471 | "\n" 472 | ] 473 | }, 474 | { 475 | "output_type": "execute_result", 476 | "data": { 477 | "text/plain": [ 478 | " tia nome nota\n", 479 | "0 1115665 ADRIANA FUJITA 8.3\n", 480 | "1 1115677 DANIEL HENRIQUE 8.3" 481 | ], 482 | "text/html": [ 483 | "\n", 484 | "
\n", 485 | "
\n", 486 | "
\n", 487 | "\n", 500 | "\n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | "
tianomenota
01115665ADRIANA FUJITA8.3
11115677DANIEL HENRIQUE8.3
\n", 524 | "
\n", 525 | " \n", 535 | " \n", 536 | " \n", 573 | "\n", 574 | " \n", 598 | "
\n", 599 | "
\n", 600 | " " 601 | ] 602 | }, 603 | "metadata": {}, 604 | "execution_count": 23 605 | } 606 | ] 607 | } 608 | ] 609 | } -------------------------------------------------------------------------------- /ML7_professor_resolve.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "kernelspec": { 6 | "display_name": "Python 3", 7 | "language": "python", 8 | "name": "python3" 9 | }, 10 | "language_info": { 11 | "codemirror_mode": { 12 | "name": "ipython", 13 | "version": 3 14 | }, 15 | "file_extension": ".py", 16 | "mimetype": "text/x-python", 17 | "name": "python", 18 | "nbconvert_exporter": "python", 19 | "pygments_lexer": "ipython3", 20 | "version": "3.7.4" 21 | }, 22 | "colab": { 23 | "name": "ML7_professor_resolve.ipynb", 24 | "provenance": [], 25 | "collapsed_sections": [], 26 | "include_colab_link": true 27 | } 28 | }, 29 | "cells": [ 30 | { 31 | "cell_type": "markdown", 32 | "metadata": { 33 | "id": "view-in-github", 34 | "colab_type": "text" 35 | }, 36 | "source": [ 37 | "\"Open" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": { 43 | "id": "J3LMBfpeHTwb" 44 | }, 45 | "source": [ 46 | "\n", 47 | " \n", 48 | " \n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | "\n" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": { 58 | "id": "zQX8WQPeHTwc" 59 | }, 60 | "source": [ 61 | "# **Na prática: vamos criar modelos diferentes e selecionar um melhor modelos dentre eles?**\n", 62 | "---\n", 63 | "\n" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "metadata": { 69 | "id": "xyywcuI7p1kG" 70 | }, 71 | "source": [ 72 | "import numpy as np\n", 73 | "import pandas as pd\n", 74 | "import matplotlib.pyplot as plt\n", 75 | "%matplotlib inline\n", 76 | "from matplotlib.lines import Line2D\n", 77 | "import seaborn as sns" 78 | ], 79 | "execution_count": null, 80 | "outputs": [] 81 | }, 82 | { 83 | "cell_type": "markdown", 84 | "source": [ 85 | "# Penguins Class\n", 86 | "\n", 87 | "* Plus: Hot Encode!" 88 | ], 89 | "metadata": { 90 | "id": "im_6Ei70B76A" 91 | } 92 | }, 93 | { 94 | "cell_type": "code", 95 | "source": [ 96 | "from seaborn import load_dataset\n", 97 | "\n", 98 | "df = load_dataset('penguins')\n", 99 | "display(df.head())" 100 | ], 101 | "metadata": { 102 | "colab": { 103 | "base_uri": "https://localhost:8080/", 104 | "height": 206 105 | }, 106 | "id": "O6BeolGG8jUg", 107 | "outputId": "3e1bc50d-d367-4c8e-dd24-90fdd0390d23" 108 | }, 109 | "execution_count": null, 110 | "outputs": [ 111 | { 112 | "output_type": "display_data", 113 | "data": { 114 | "text/plain": [ 115 | " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", 116 | "0 Adelie Torgersen 39.1 18.7 181.0 \n", 117 | "1 Adelie Torgersen 39.5 17.4 186.0 \n", 118 | "2 Adelie Torgersen 40.3 18.0 195.0 \n", 119 | "3 Adelie Torgersen NaN NaN NaN \n", 120 | "4 Adelie Torgersen 36.7 19.3 193.0 \n", 121 | "\n", 122 | " body_mass_g sex \n", 123 | "0 3750.0 Male \n", 124 | "1 3800.0 Female \n", 125 | "2 3250.0 Female \n", 126 | "3 NaN NaN \n", 127 | "4 3450.0 Female " 128 | ], 129 | "text/html": [ 130 | "\n", 131 | "
\n", 132 | "
\n", 133 | "
\n", 134 | "\n", 147 | "\n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | "
speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
0AdelieTorgersen39.118.7181.03750.0Male
1AdelieTorgersen39.517.4186.03800.0Female
2AdelieTorgersen40.318.0195.03250.0Female
3AdelieTorgersenNaNNaNNaNNaNNaN
4AdelieTorgersen36.719.3193.03450.0Female
\n", 213 | "
\n", 214 | " \n", 224 | " \n", 225 | " \n", 262 | "\n", 263 | " \n", 287 | "
\n", 288 | "
\n", 289 | " " 290 | ] 291 | }, 292 | "metadata": {} 293 | } 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "source": [ 299 | "df.isna().sum()" 300 | ], 301 | "metadata": { 302 | "colab": { 303 | "base_uri": "https://localhost:8080/" 304 | }, 305 | "id": "HqwWC31N-gUu", 306 | "outputId": "0f9994b0-35a3-4825-8d80-7f7b2497ae09" 307 | }, 308 | "execution_count": null, 309 | "outputs": [ 310 | { 311 | "output_type": "execute_result", 312 | "data": { 313 | "text/plain": [ 314 | "species 0\n", 315 | "island 0\n", 316 | "bill_length_mm 2\n", 317 | "bill_depth_mm 2\n", 318 | "flipper_length_mm 2\n", 319 | "body_mass_g 2\n", 320 | "sex 11\n", 321 | "dtype: int64" 322 | ] 323 | }, 324 | "metadata": {}, 325 | "execution_count": 27 326 | } 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "source": [ 332 | "df = df.dropna(subset=['sex'])\n", 333 | "df.isna().sum()" 334 | ], 335 | "metadata": { 336 | "colab": { 337 | "base_uri": "https://localhost:8080/" 338 | }, 339 | "id": "2AZULpce-mqY", 340 | "outputId": "452a2e94-bc31-48d2-a48e-0a4fd8bd4b85" 341 | }, 342 | "execution_count": null, 343 | "outputs": [ 344 | { 345 | "output_type": "execute_result", 346 | "data": { 347 | "text/plain": [ 348 | "species 0\n", 349 | "island 0\n", 350 | "bill_length_mm 0\n", 351 | "bill_depth_mm 0\n", 352 | "flipper_length_mm 0\n", 353 | "body_mass_g 0\n", 354 | "sex 0\n", 355 | "dtype: int64" 356 | ] 357 | }, 358 | "metadata": {}, 359 | "execution_count": 28 360 | } 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "source": [ 366 | "# Veja aqui para uma solução com `make_column_transformer()` : https://datagy.io/sklearn-one-hot-encode/\n", 367 | "\n", 368 | "from sklearn.preprocessing import OneHotEncoder\n", 369 | "\n", 370 | "ohe = OneHotEncoder()\n", 371 | "\n", 372 | "for cat_atributte in ['island','sex']:\n", 373 | " hot_values = ohe.fit_transform(df[[cat_atributte]])\n", 374 | " df[ohe.categories_[0]] = hot_values.toarray()\n", 375 | " df = df.drop(columns = [cat_atributte])\n", 376 | "\n", 377 | "display(df.head())\n" 378 | ], 379 | "metadata": { 380 | "colab": { 381 | "base_uri": "https://localhost:8080/", 382 | "height": 206 383 | }, 384 | "id": "-_spqRSK80Q3", 385 | "outputId": "ee143dd6-dfff-4b79-ef5e-600686756b59" 386 | }, 387 | "execution_count": null, 388 | "outputs": [ 389 | { 390 | "output_type": "display_data", 391 | "data": { 392 | "text/plain": [ 393 | " species bill_length_mm bill_depth_mm flipper_length_mm body_mass_g \\\n", 394 | "0 Adelie 39.1 18.7 181.0 3750.0 \n", 395 | "1 Adelie 39.5 17.4 186.0 3800.0 \n", 396 | "2 Adelie 40.3 18.0 195.0 3250.0 \n", 397 | "4 Adelie 36.7 19.3 193.0 3450.0 \n", 398 | "5 Adelie 39.3 20.6 190.0 3650.0 \n", 399 | "\n", 400 | " Biscoe Dream Torgersen Female Male \n", 401 | "0 0.0 0.0 1.0 0.0 1.0 \n", 402 | "1 0.0 0.0 1.0 1.0 0.0 \n", 403 | "2 0.0 0.0 1.0 1.0 0.0 \n", 404 | "4 0.0 0.0 1.0 1.0 0.0 \n", 405 | "5 0.0 0.0 1.0 0.0 1.0 " 406 | ], 407 | "text/html": [ 408 | "\n", 409 | "
\n", 410 | "
\n", 411 | "
\n", 412 | "\n", 425 | "\n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | "
speciesbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gBiscoeDreamTorgersenFemaleMale
0Adelie39.118.7181.03750.00.00.01.00.01.0
1Adelie39.517.4186.03800.00.00.01.01.00.0
2Adelie40.318.0195.03250.00.00.01.01.00.0
4Adelie36.719.3193.03450.00.00.01.01.00.0
5Adelie39.320.6190.03650.00.00.01.00.01.0
\n", 509 | "
\n", 510 | " \n", 520 | " \n", 521 | " \n", 558 | "\n", 559 | " \n", 583 | "
\n", 584 | "
\n", 585 | " " 586 | ] 587 | }, 588 | "metadata": {} 589 | } 590 | ] 591 | }, 592 | { 593 | "cell_type": "markdown", 594 | "source": [ 595 | "# Selecionando Classificadores\n", 596 | "\n" 597 | ], 598 | "metadata": { 599 | "id": "daE6p4Ea-zMO" 600 | } 601 | }, 602 | { 603 | "cell_type": "code", 604 | "metadata": { 605 | "colab": { 606 | "base_uri": "https://localhost:8080/" 607 | }, 608 | "id": "dTA8XNWRFn8F", 609 | "outputId": "533fbd0d-9a6a-4458-d3f3-626896ab35a3" 610 | }, 611 | "source": [ 612 | "from sklearn.linear_model import LogisticRegression\n", 613 | "from sklearn.neighbors import KNeighborsClassifier\n", 614 | "from sklearn.tree import DecisionTreeClassifier\n", 615 | "from sklearn.model_selection import KFold\n", 616 | "from sklearn.model_selection import cross_val_score\n", 617 | "from sklearn.naive_bayes import GaussianNB\n", 618 | "from sklearn.tree import DecisionTreeClassifier\n", 619 | "from sklearn.svm import SVC\n", 620 | "from sklearn.neural_network import MLPClassifier\n", 621 | "from sklearn.ensemble import RandomForestClassifier\n", 622 | "from sklearn.ensemble import AdaBoostClassifier\n", 623 | "from sklearn.ensemble import GradientBoostingClassifier\n", 624 | "\n", 625 | "from sklearn.model_selection import train_test_split\n", 626 | "from sklearn import neighbors\n", 627 | "from sklearn.preprocessing import MinMaxScaler\n", 628 | "from sklearn.preprocessing import OneHotEncoder, LabelEncoder\n", 629 | "from sklearn.model_selection import GridSearchCV\n", 630 | "from sklearn.metrics import classification_report\n", 631 | "\n", 632 | "X = df.drop(columns='species')\n", 633 | "y = df.species\n", 634 | "\n", 635 | "# Normalização\n", 636 | "scaler = MinMaxScaler()\n", 637 | "scaler.fit(X)\n", 638 | "X = scaler.transform(X) \n", 639 | "\n", 640 | "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.3, random_state=123)\n", 641 | "\n", 642 | "save_estimators = []\n", 643 | "\n", 644 | "base_estimators = [ LogisticRegression(),\n", 645 | " neighbors.KNeighborsClassifier(),\n", 646 | " DecisionTreeClassifier(),\n", 647 | " RandomForestClassifier(),\n", 648 | " GradientBoostingClassifier()]\n", 649 | " \n", 650 | " \n", 651 | "param_grids = [ {},\n", 652 | " {'n_neighbors': [3,4,5], 'metric': ['euclidean','manhattan']},\n", 653 | " {'max_depth': [2,3,4,5]},\n", 654 | " {'n_estimators':[3,4,5,6]}, \n", 655 | " {'n_estimators':[3,4,5,6]}] \n", 656 | " \n", 657 | "for i in range(len(base_estimators)):\n", 658 | " clf = GridSearchCV(base_estimators[i], param_grids[i], cv=5, scoring='accuracy')\n", 659 | " clf.fit(X_train, y_train)\n", 660 | " # print(clf.cv_results_)\n", 661 | " print(clf.best_estimator_)\n", 662 | " save_estimators.append(clf.best_estimator_)\n", 663 | " print()\n", 664 | " print(\"Detailed classification report:\")\n", 665 | " print()\n", 666 | " y_pred = clf.predict(X_test)\n", 667 | " print(classification_report(y_test, y_pred))\n", 668 | " print()\n" 669 | ], 670 | "execution_count": null, 671 | "outputs": [ 672 | { 673 | "output_type": "stream", 674 | "name": "stdout", 675 | "text": [ 676 | "LogisticRegression()\n", 677 | "\n", 678 | "Detailed classification report:\n", 679 | "\n", 680 | " precision recall f1-score support\n", 681 | "\n", 682 | " Adelie 0.98 1.00 0.99 44\n", 683 | " Chinstrap 1.00 0.95 0.97 20\n", 684 | " Gentoo 1.00 1.00 1.00 36\n", 685 | "\n", 686 | " accuracy 0.99 100\n", 687 | " macro avg 0.99 0.98 0.99 100\n", 688 | "weighted avg 0.99 0.99 0.99 100\n", 689 | "\n", 690 | "\n", 691 | "KNeighborsClassifier(metric='euclidean')\n", 692 | "\n", 693 | "Detailed classification report:\n", 694 | "\n", 695 | " precision recall f1-score support\n", 696 | "\n", 697 | " Adelie 1.00 0.98 0.99 44\n", 698 | " Chinstrap 0.95 1.00 0.98 20\n", 699 | " Gentoo 1.00 1.00 1.00 36\n", 700 | "\n", 701 | " accuracy 0.99 100\n", 702 | " macro avg 0.98 0.99 0.99 100\n", 703 | "weighted avg 0.99 0.99 0.99 100\n", 704 | "\n", 705 | "\n", 706 | "DecisionTreeClassifier(max_depth=5)\n", 707 | "\n", 708 | "Detailed classification report:\n", 709 | "\n", 710 | " precision recall f1-score support\n", 711 | "\n", 712 | " Adelie 0.96 0.98 0.97 44\n", 713 | " Chinstrap 1.00 0.95 0.97 20\n", 714 | " Gentoo 0.97 0.97 0.97 36\n", 715 | "\n", 716 | " accuracy 0.97 100\n", 717 | " macro avg 0.98 0.97 0.97 100\n", 718 | "weighted avg 0.97 0.97 0.97 100\n", 719 | "\n", 720 | "\n", 721 | "RandomForestClassifier(n_estimators=5)\n", 722 | "\n", 723 | "Detailed classification report:\n", 724 | "\n", 725 | " precision recall f1-score support\n", 726 | "\n", 727 | " Adelie 0.98 1.00 0.99 44\n", 728 | " Chinstrap 1.00 0.95 0.97 20\n", 729 | " Gentoo 1.00 1.00 1.00 36\n", 730 | "\n", 731 | " accuracy 0.99 100\n", 732 | " macro avg 0.99 0.98 0.99 100\n", 733 | "weighted avg 0.99 0.99 0.99 100\n", 734 | "\n", 735 | "\n", 736 | "GradientBoostingClassifier(n_estimators=6)\n", 737 | "\n", 738 | "Detailed classification report:\n", 739 | "\n", 740 | " precision recall f1-score support\n", 741 | "\n", 742 | " Adelie 0.96 1.00 0.98 44\n", 743 | " Chinstrap 1.00 0.95 0.97 20\n", 744 | " Gentoo 1.00 0.97 0.99 36\n", 745 | "\n", 746 | " accuracy 0.98 100\n", 747 | " macro avg 0.99 0.97 0.98 100\n", 748 | "weighted avg 0.98 0.98 0.98 100\n", 749 | "\n", 750 | "\n" 751 | ] 752 | } 753 | ] 754 | }, 755 | { 756 | "cell_type": "code", 757 | "source": [ 758 | "[x.score(X_test, y_test) for x in save_estimators]" 759 | ], 760 | "metadata": { 761 | "colab": { 762 | "base_uri": "https://localhost:8080/" 763 | }, 764 | "id": "6Y8KmsXBBlp7", 765 | "outputId": "89b8b68e-b524-4060-8fe4-06248ae6cbfb" 766 | }, 767 | "execution_count": null, 768 | "outputs": [ 769 | { 770 | "output_type": "execute_result", 771 | "data": { 772 | "text/plain": [ 773 | "[0.99, 0.99, 0.97, 0.99, 0.98]" 774 | ] 775 | }, 776 | "metadata": {}, 777 | "execution_count": 37 778 | } 779 | ] 780 | }, 781 | { 782 | "cell_type": "code", 783 | "source": [ 784 | "best = np.array( [x.score(X_test, y_test) for x in save_estimators] ).argmax()\n", 785 | "save_estimators[best]" 786 | ], 787 | "metadata": { 788 | "colab": { 789 | "base_uri": "https://localhost:8080/" 790 | }, 791 | "id": "gkfIKCwwBqxb", 792 | "outputId": "4fc1032f-12fc-4f50-88dd-dcee001dccaa" 793 | }, 794 | "execution_count": null, 795 | "outputs": [ 796 | { 797 | "output_type": "execute_result", 798 | "data": { 799 | "text/plain": [ 800 | "LogisticRegression()" 801 | ] 802 | }, 803 | "metadata": {}, 804 | "execution_count": 38 805 | } 806 | ] 807 | } 808 | ] 809 | } -------------------------------------------------------------------------------- /ML8_R_ex.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "ML8_R_ex.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "authorship_tag": "ABX9TyMHF0Smdu66xW8flgZWFRGf", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "ir", 14 | "display_name": "R" 15 | }, 16 | "language_info": { 17 | "name": "R" 18 | } 19 | }, 20 | "cells": [ 21 | { 22 | "cell_type": "markdown", 23 | "metadata": { 24 | "id": "view-in-github", 25 | "colab_type": "text" 26 | }, 27 | "source": [ 28 | "\"Open" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": { 34 | "id": "Bh3XQyK-0stm" 35 | }, 36 | "source": [ 37 | "\n", 38 | " \n", 39 | " \n", 40 | "\n", 41 | "\n", 42 | "\n", 43 | "" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": { 49 | "id": "zQX8WQPeHTwc" 50 | }, 51 | "source": [ 52 | "# **8. Aprendizado Supervisionado com R**\n", 53 | "\n", 54 | "---\n", 55 | "\n" 56 | ] 57 | }, 58 | { 59 | "cell_type": "markdown", 60 | "source": [ 61 | "Após fazer os exercícios deste laboratório responda ao **questionário correspondente da aula no Moodle**.\n", 62 | "\n" 63 | ], 64 | "metadata": { 65 | "id": "-vEjCE_y-MFT" 66 | } 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "metadata": { 71 | "_uuid": "9dd9e07c590ca22f0c525222f60f0ebff4e092c6", 72 | "id": "kIr_4QzOlOOo" 73 | }, 74 | "source": [ 75 | "# Caso: **Controle de Qualidade de Peças** \n", 76 | "\n", 77 | "\n", 78 | "\n" 79 | ] 80 | }, 81 | { 82 | "cell_type": "markdown", 83 | "metadata": { 84 | "id": "ZOkn7SvMHTOp" 85 | }, 86 | "source": [ 87 | "**Pieces** é um data set para o controle de qualidade de peças produzidas por uma indústria. São empregadas quatro medidas (A, B, C e D) para o controle da qualidade das peças. As peças são então *Accept, Refurbish* ou *Reject* segundo o controle de qualidade (atributo `Quality`). A indústria ainda conta com 3 unidades para a produção dessas peças (atributo `Unit`). \n", 88 | "\n", 89 | "Seu trabalho é criar modelos supervisionados de classificação para predição da qualidade das peças e empregar o melhor modelo obtido (maior acuracidade) na predição da qualidade de novos casos. \n", 90 | "\n", 91 | "> Arquivo de Exemplos: http://meusite.mackenzie.br/rogerio/TIC/pieces1.csv\n", 92 | "\n", 93 | "> Arquivo de Novos Casos: http://meusite.mackenzie.br/rogerio/TIC/pieces1_new.csv\n", 94 | "\n", 95 | "Nos modelos não empregue nenhum parâmetro além dos informados.\n", 96 | "\n", 97 | "**Consultando a Documentação do R**: Ao longo do exercício daremos dicas de que funções empregar em R, mas certamente você deverá consultar a documentação para poder empregar apropriadamente as funções. Isso faz parte da atividade e do seu aprendizado!!!\n", 98 | "\n", 99 | "**Pacotes**: Em R pode haver mais de um pacote para uma mesma funcionalidade. Vamos indicar os pacotes a serem empregados abaixo e, no caso de dúvidas, consulte a documentação dos pacotes.\n", 100 | "\n" 101 | ] 102 | }, 103 | { 104 | "cell_type": "markdown", 105 | "metadata": { 106 | "id": "YeiT9oXumyn8" 107 | }, 108 | "source": [ 109 | "# Exercício. Acesse e Explore os dados \n", 110 | "\n", 111 | "Inspecione os dados. Qual o atributo classe e quantos registros de cada classe? Existem valores nulos (ausentes) a serem tratados? Algum atributo não será empregado no treinamento? \n" 112 | ] 113 | }, 114 | { 115 | "cell_type": "markdown", 116 | "source": [ 117 | "## Leia e inspecione os dados de treinamento e os novos casos" 118 | ], 119 | "metadata": { 120 | "id": "OLUGylpUnPob" 121 | } 122 | }, 123 | { 124 | "cell_type": "code", 125 | "metadata": { 126 | "id": "iY3TLR1KyRz8", 127 | "colab": { 128 | "base_uri": "https://localhost:8080/", 129 | "height": 524 130 | }, 131 | "outputId": "dc26f994-58a0-4c79-8cd7-44b562ddffa1" 132 | }, 133 | "source": [ 134 | "# Seu código aqui" 135 | ], 136 | "execution_count": 1, 137 | "outputs": [ 138 | { 139 | "output_type": "display_data", 140 | "data": { 141 | "text/html": [ 142 | "\n", 143 | "\n", 144 | "\n", 145 | "\t\n", 146 | "\t\n", 147 | "\n", 148 | "\n", 149 | "\t\n", 150 | "\t\n", 151 | "\t\n", 152 | "\t\n", 153 | "\t\n", 154 | "\t\n", 155 | "\n", 156 | "
A data.frame: 6 × 7
idABCDQualityUnit
<int><dbl><dbl><dbl><dbl><chr><chr>
15594.93.11.50.1Reject SP
26294.83.41.60.2Reject SP
31926.72.55.81.8RefurbishRJ
43597.63.06.62.1RefurbishRJ
5 94.93.11.50.1Reject RJ
62777.23.66.12.5RefurbishSP
\n" 157 | ], 158 | "text/markdown": "\nA data.frame: 6 × 7\n\n| | id <int> | A <dbl> | B <dbl> | C <dbl> | D <dbl> | Quality <chr> | Unit <chr> |\n|---|---|---|---|---|---|---|---|\n| 1 | 559 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | SP |\n| 2 | 629 | 4.8 | 3.4 | 1.6 | 0.2 | Reject | SP |\n| 3 | 192 | 6.7 | 2.5 | 5.8 | 1.8 | Refurbish | RJ |\n| 4 | 359 | 7.6 | 3.0 | 6.6 | 2.1 | Refurbish | RJ |\n| 5 | 9 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | RJ |\n| 6 | 277 | 7.2 | 3.6 | 6.1 | 2.5 | Refurbish | SP |\n\n", 159 | "text/latex": "A data.frame: 6 × 7\n\\begin{tabular}{r|lllllll}\n & id & A & B & C & D & Quality & Unit\\\\\n & & & & & & & \\\\\n\\hline\n\t1 & 559 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & SP\\\\\n\t2 & 629 & 4.8 & 3.4 & 1.6 & 0.2 & Reject & SP\\\\\n\t3 & 192 & 6.7 & 2.5 & 5.8 & 1.8 & Refurbish & RJ\\\\\n\t4 & 359 & 7.6 & 3.0 & 6.6 & 2.1 & Refurbish & RJ\\\\\n\t5 & 9 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & RJ\\\\\n\t6 & 277 & 7.2 & 3.6 & 6.1 & 2.5 & Refurbish & SP\\\\\n\\end{tabular}\n", 160 | "text/plain": [ 161 | " id A B C D Quality Unit\n", 162 | "1 559 4.9 3.1 1.5 0.1 Reject SP \n", 163 | "2 629 4.8 3.4 1.6 0.2 Reject SP \n", 164 | "3 192 6.7 2.5 5.8 1.8 Refurbish RJ \n", 165 | "4 359 7.6 3.0 6.6 2.1 Refurbish RJ \n", 166 | "5 9 4.9 3.1 1.5 0.1 Reject RJ \n", 167 | "6 277 7.2 3.6 6.1 2.5 Refurbish SP " 168 | ] 169 | }, 170 | "metadata": {} 171 | }, 172 | { 173 | "output_type": "display_data", 174 | "data": { 175 | "text/html": [ 176 | "\n", 177 | "\n", 178 | "\n", 179 | "\t\n", 180 | "\t\n", 181 | "\n", 182 | "\n", 183 | "\t\n", 184 | "\t\n", 185 | "\t\n", 186 | "\t\n", 187 | "\t\n", 188 | "\n", 189 | "
A data.frame: 5 × 5
ABCDUnit
<dbl><dbl><dbl><dbl><chr>
16.33.45.62.4SP
26.72.55.81.8RJ
35.24.11.50.1BH
46.12.94.71.4SP
54.83.41.90.2BH
\n" 190 | ], 191 | "text/markdown": "\nA data.frame: 5 × 5\n\n| | A <dbl> | B <dbl> | C <dbl> | D <dbl> | Unit <chr> |\n|---|---|---|---|---|---|\n| 1 | 6.3 | 3.4 | 5.6 | 2.4 | SP |\n| 2 | 6.7 | 2.5 | 5.8 | 1.8 | RJ |\n| 3 | 5.2 | 4.1 | 1.5 | 0.1 | BH |\n| 4 | 6.1 | 2.9 | 4.7 | 1.4 | SP |\n| 5 | 4.8 | 3.4 | 1.9 | 0.2 | BH |\n\n", 192 | "text/latex": "A data.frame: 5 × 5\n\\begin{tabular}{r|lllll}\n & A & B & C & D & Unit\\\\\n & & & & & \\\\\n\\hline\n\t1 & 6.3 & 3.4 & 5.6 & 2.4 & SP\\\\\n\t2 & 6.7 & 2.5 & 5.8 & 1.8 & RJ\\\\\n\t3 & 5.2 & 4.1 & 1.5 & 0.1 & BH\\\\\n\t4 & 6.1 & 2.9 & 4.7 & 1.4 & SP\\\\\n\t5 & 4.8 & 3.4 & 1.9 & 0.2 & BH\\\\\n\\end{tabular}\n", 193 | "text/plain": [ 194 | " A B C D Unit\n", 195 | "1 6.3 3.4 5.6 2.4 SP \n", 196 | "2 6.7 2.5 5.8 1.8 RJ \n", 197 | "3 5.2 4.1 1.5 0.1 BH \n", 198 | "4 6.1 2.9 4.7 1.4 SP \n", 199 | "5 4.8 3.4 1.9 0.2 BH " 200 | ] 201 | }, 202 | "metadata": {} 203 | } 204 | ] 205 | }, 206 | { 207 | "cell_type": "markdown", 208 | "source": [ 209 | "## Elimine o atributo identificador dos dados \n", 210 | "\n", 211 | "Você não irá empregá-lo no treinamento!" 212 | ], 213 | "metadata": { 214 | "id": "sQjjEs0inBWc" 215 | } 216 | }, 217 | { 218 | "cell_type": "code", 219 | "metadata": { 220 | "id": "iYEySGnKIJNI", 221 | "colab": { 222 | "base_uri": "https://localhost:8080/", 223 | "height": 286 224 | }, 225 | "outputId": "a77af21f-916b-47e0-8925-157227873830" 226 | }, 227 | "source": [ 228 | "# Seu código aqui\n" 229 | ], 230 | "execution_count": 2, 231 | "outputs": [ 232 | { 233 | "output_type": "display_data", 234 | "data": { 235 | "text/html": [ 236 | "\n", 237 | "\n", 238 | "\n", 239 | "\t\n", 240 | "\t\n", 241 | "\n", 242 | "\n", 243 | "\t\n", 244 | "\t\n", 245 | "\t\n", 246 | "\t\n", 247 | "\t\n", 248 | "\t\n", 249 | "\n", 250 | "
A data.frame: 6 × 6
ABCDQualityUnit
<dbl><dbl><dbl><dbl><chr><chr>
14.93.11.50.1Reject SP
24.83.41.60.2Reject SP
36.72.55.81.8RefurbishRJ
47.63.06.62.1RefurbishRJ
54.93.11.50.1Reject RJ
67.23.66.12.5RefurbishSP
\n" 251 | ], 252 | "text/markdown": "\nA data.frame: 6 × 6\n\n| | A <dbl> | B <dbl> | C <dbl> | D <dbl> | Quality <chr> | Unit <chr> |\n|---|---|---|---|---|---|---|\n| 1 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | SP |\n| 2 | 4.8 | 3.4 | 1.6 | 0.2 | Reject | SP |\n| 3 | 6.7 | 2.5 | 5.8 | 1.8 | Refurbish | RJ |\n| 4 | 7.6 | 3.0 | 6.6 | 2.1 | Refurbish | RJ |\n| 5 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | RJ |\n| 6 | 7.2 | 3.6 | 6.1 | 2.5 | Refurbish | SP |\n\n", 253 | "text/latex": "A data.frame: 6 × 6\n\\begin{tabular}{r|llllll}\n & A & B & C & D & Quality & Unit\\\\\n & & & & & & \\\\\n\\hline\n\t1 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & SP\\\\\n\t2 & 4.8 & 3.4 & 1.6 & 0.2 & Reject & SP\\\\\n\t3 & 6.7 & 2.5 & 5.8 & 1.8 & Refurbish & RJ\\\\\n\t4 & 7.6 & 3.0 & 6.6 & 2.1 & Refurbish & RJ\\\\\n\t5 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & RJ\\\\\n\t6 & 7.2 & 3.6 & 6.1 & 2.5 & Refurbish & SP\\\\\n\\end{tabular}\n", 254 | "text/plain": [ 255 | " A B C D Quality Unit\n", 256 | "1 4.9 3.1 1.5 0.1 Reject SP \n", 257 | "2 4.8 3.4 1.6 0.2 Reject SP \n", 258 | "3 6.7 2.5 5.8 1.8 Refurbish RJ \n", 259 | "4 7.6 3.0 6.6 2.1 Refurbish RJ \n", 260 | "5 4.9 3.1 1.5 0.1 Reject RJ \n", 261 | "6 7.2 3.6 6.1 2.5 Refurbish SP " 262 | ] 263 | }, 264 | "metadata": {} 265 | } 266 | ] 267 | }, 268 | { 269 | "cell_type": "markdown", 270 | "source": [ 271 | "## Verifique e exclua as linhas com valores nulos\n", 272 | "\n", 273 | "Empregue a função `is.na()` e faça uma soma dos valores True. Para excluir as linhas empregue, por exemplo, a função `na.omit()`." 274 | ], 275 | "metadata": { 276 | "id": "04ZtPu4lnoTq" 277 | } 278 | }, 279 | { 280 | "cell_type": "code", 281 | "metadata": { 282 | "id": "Ve1-6f4uM3bg" 283 | }, 284 | "source": [ 285 | "# Seu código aqui" 286 | ], 287 | "execution_count": null, 288 | "outputs": [] 289 | }, 290 | { 291 | "cell_type": "markdown", 292 | "source": [ 293 | "## Faça o Hot Encode dos Dados\n", 294 | "\n", 295 | "Alguns pacotes de aprendizado em R empregam diretamente atributos categóricos sem a necessidade de encode dos dados. De qualquer modo vamos optar aqui por fazer o hot encode dos dados preditores não numéricos. Empregue para isso o pacote abaixo." 296 | ], 297 | "metadata": { 298 | "id": "TSG4wY_VoA0S" 299 | } 300 | }, 301 | { 302 | "cell_type": "code", 303 | "source": [ 304 | "install.packages(\"fastDummies\")\n", 305 | "library(fastDummies)" 306 | ], 307 | "metadata": { 308 | "colab": { 309 | "base_uri": "https://localhost:8080/" 310 | }, 311 | "id": "gs9ejWntkeVa", 312 | "outputId": "79c4239a-5e95-4421-b3fb-bb9b2565e9c2" 313 | }, 314 | "execution_count": 5, 315 | "outputs": [ 316 | { 317 | "output_type": "stream", 318 | "name": "stderr", 319 | "text": [ 320 | "Installing package into ‘/usr/local/lib/R/site-library’\n", 321 | "(as ‘lib’ is unspecified)\n", 322 | "\n" 323 | ] 324 | } 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "metadata": { 330 | "colab": { 331 | "base_uri": "https://localhost:8080/", 332 | "height": 286 333 | }, 334 | "id": "yXfgRyl2TOc6", 335 | "outputId": "9c666dfe-abb8-4928-d68d-2c286035b6d4" 336 | }, 337 | "source": [ 338 | "# Seu código aqui" 339 | ], 340 | "execution_count": 6, 341 | "outputs": [ 342 | { 343 | "output_type": "display_data", 344 | "data": { 345 | "text/html": [ 346 | "\n", 347 | "\n", 348 | "\n", 349 | "\t\n", 350 | "\t\n", 351 | "\n", 352 | "\n", 353 | "\t\n", 354 | "\t\n", 355 | "\t\n", 356 | "\t\n", 357 | "\t\n", 358 | "\t\n", 359 | "\n", 360 | "
A data.frame: 6 × 9
ABCDQualityUnitUnit_BHUnit_RJUnit_SP
<dbl><dbl><dbl><dbl><chr><chr><int><int><int>
14.93.11.50.1Reject SP001
24.83.41.60.2Reject SP001
36.72.55.81.8RefurbishRJ010
47.63.06.62.1RefurbishRJ010
54.93.11.50.1Reject RJ010
67.23.66.12.5RefurbishSP001
\n" 361 | ], 362 | "text/markdown": "\nA data.frame: 6 × 9\n\n| | A <dbl> | B <dbl> | C <dbl> | D <dbl> | Quality <chr> | Unit <chr> | Unit_BH <int> | Unit_RJ <int> | Unit_SP <int> |\n|---|---|---|---|---|---|---|---|---|---|\n| 1 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | SP | 0 | 0 | 1 |\n| 2 | 4.8 | 3.4 | 1.6 | 0.2 | Reject | SP | 0 | 0 | 1 |\n| 3 | 6.7 | 2.5 | 5.8 | 1.8 | Refurbish | RJ | 0 | 1 | 0 |\n| 4 | 7.6 | 3.0 | 6.6 | 2.1 | Refurbish | RJ | 0 | 1 | 0 |\n| 5 | 4.9 | 3.1 | 1.5 | 0.1 | Reject | RJ | 0 | 1 | 0 |\n| 6 | 7.2 | 3.6 | 6.1 | 2.5 | Refurbish | SP | 0 | 0 | 1 |\n\n", 363 | "text/latex": "A data.frame: 6 × 9\n\\begin{tabular}{r|lllllllll}\n & A & B & C & D & Quality & Unit & Unit\\_BH & Unit\\_RJ & Unit\\_SP\\\\\n & & & & & & & & & \\\\\n\\hline\n\t1 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & SP & 0 & 0 & 1\\\\\n\t2 & 4.8 & 3.4 & 1.6 & 0.2 & Reject & SP & 0 & 0 & 1\\\\\n\t3 & 6.7 & 2.5 & 5.8 & 1.8 & Refurbish & RJ & 0 & 1 & 0\\\\\n\t4 & 7.6 & 3.0 & 6.6 & 2.1 & Refurbish & RJ & 0 & 1 & 0\\\\\n\t5 & 4.9 & 3.1 & 1.5 & 0.1 & Reject & RJ & 0 & 1 & 0\\\\\n\t6 & 7.2 & 3.6 & 6.1 & 2.5 & Refurbish & SP & 0 & 0 & 1\\\\\n\\end{tabular}\n", 364 | "text/plain": [ 365 | " A B C D Quality Unit Unit_BH Unit_RJ Unit_SP\n", 366 | "1 4.9 3.1 1.5 0.1 Reject SP 0 0 1 \n", 367 | "2 4.8 3.4 1.6 0.2 Reject SP 0 0 1 \n", 368 | "3 6.7 2.5 5.8 1.8 Refurbish RJ 0 1 0 \n", 369 | "4 7.6 3.0 6.6 2.1 Refurbish RJ 0 1 0 \n", 370 | "5 4.9 3.1 1.5 0.1 Reject RJ 0 1 0 \n", 371 | "6 7.2 3.6 6.1 2.5 Refurbish SP 0 0 1 " 372 | ] 373 | }, 374 | "metadata": {} 375 | } 376 | ] 377 | }, 378 | { 379 | "cell_type": "markdown", 380 | "source": [ 381 | "## Vamos verificar os resultados?\n", 382 | "\n", 383 | "Essa é uma questão apenas de verificação... cheque no Moodle as possíveis respostas para verificar se você está no caminho certo." 384 | ], 385 | "metadata": { 386 | "id": "ToCNBiguoj7y" 387 | } 388 | }, 389 | { 390 | "cell_type": "code", 391 | "metadata": { 392 | "id": "kufV8m77TT_5", 393 | "colab": { 394 | "base_uri": "https://localhost:8080/" 395 | }, 396 | "outputId": "3eb6b09c-2bda-4fb7-a55e-a3b0fbfef2f7" 397 | }, 398 | "source": [ 399 | "cat('Nr de linhas e colunas após as transformações: ', nrow(df), ncol(df))" 400 | ], 401 | "execution_count": 7, 402 | "outputs": [ 403 | { 404 | "output_type": "stream", 405 | "name": "stdout", 406 | "text": [ 407 | "Nr de linhas e colunas após as transformações: 481 9" 408 | ] 409 | } 410 | ] 411 | }, 412 | { 413 | "cell_type": "code", 414 | "metadata": { 415 | "id": "2G8YonR7YYn6", 416 | "colab": { 417 | "base_uri": "https://localhost:8080/", 418 | "height": 86 419 | }, 420 | "outputId": "24a5db67-0cac-4463-d871-a36f280b54e9" 421 | }, 422 | "source": [ 423 | "cat('Frequencias do atributo Quality:\\n')\n", 424 | "table(df$Quality)" 425 | ], 426 | "execution_count": 8, 427 | "outputs": [ 428 | { 429 | "output_type": "stream", 430 | "name": "stdout", 431 | "text": [ 432 | "Frequencias do atributo Quality:\n" 433 | ] 434 | }, 435 | { 436 | "output_type": "display_data", 437 | "data": { 438 | "text/plain": [ 439 | "\n", 440 | " Accept Refurbish Reject \n", 441 | " 149 176 156 " 442 | ] 443 | }, 444 | "metadata": {} 445 | } 446 | ] 447 | }, 448 | { 449 | "cell_type": "code", 450 | "source": [ 451 | "cat('Número de Unidades de São Paulo a partir do hotencode:\\n')\n", 452 | "sum(df$Unit_SP)" 453 | ], 454 | "metadata": { 455 | "colab": { 456 | "base_uri": "https://localhost:8080/", 457 | "height": 52 458 | }, 459 | "id": "B9dPYPNzpCH7", 460 | "outputId": "df7d8b2e-bd26-447c-e001-ff16160447d5" 461 | }, 462 | "execution_count": 9, 463 | "outputs": [ 464 | { 465 | "output_type": "stream", 466 | "name": "stdout", 467 | "text": [ 468 | "Número de Unidades de São Paulo a partir do hotencode:\n" 469 | ] 470 | }, 471 | { 472 | "output_type": "display_data", 473 | "data": { 474 | "text/html": [ 475 | "223" 476 | ], 477 | "text/markdown": "223", 478 | "text/latex": "223", 479 | "text/plain": [ 480 | "[1] 223" 481 | ] 482 | }, 483 | "metadata": {} 484 | } 485 | ] 486 | }, 487 | { 488 | "cell_type": "markdown", 489 | "metadata": { 490 | "id": "hFxyggo552J7" 491 | }, 492 | "source": [ 493 | "# Exercício. Conjuntos de Treinamento e Teste\n", 494 | "\n", 495 | "1. **sample**. Como você viu no material de teoria da aula você deve empregar a função `sample` do R para construir os conjuntos de treinamento e teste. Use para as quantidades de teste `round(0.3*nrow(df))`.\n", 496 | "\n", 497 | "2. **seed**. Empregue `set.seed(123)` para produzir os conjuntos de treinamento e teste e garantir a reprodutibilidade dos resultados\n", 498 | "\n", 499 | "3. **Train e Test**.Em R não existe em geral a necessidade de separarmos as entradas `X` e as saídas `y`. Defina apenas um conjunto de treinamento (tanto com o atributos preditores como objetivo) e teste. A identificação das variáveis preditoras e objetivo será indicada na *formula* empregada como parâmetro do classificador." 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "metadata": { 505 | "id": "4bPrOL8RUTrc" 506 | }, 507 | "source": [ 508 | "# Seu código aqui" 509 | ], 510 | "execution_count": null, 511 | "outputs": [] 512 | }, 513 | { 514 | "cell_type": "markdown", 515 | "metadata": { 516 | "id": "EkVuaMQbewju" 517 | }, 518 | "source": [ 519 | "# Exercício. Modelo Árvore de Decisão\n", 520 | "\n", 521 | "Empregue o pacote abaixo para construir um modelo de Árvore de Decisão. Em seguida construa a Matriz de Confusão e obtenha a acuracidade do modelo.\n", 522 | "\n", 523 | "1. `rpart()`. Informe somente a *formula* do modelo e o conjunto de dados.\n", 524 | "2. `predict()`. Empregue o parâmetro `type = \"class\"`." 525 | ] 526 | }, 527 | { 528 | "cell_type": "code", 529 | "source": [ 530 | "install.packages('rpart') # rpart (Árvore de Decisão)\n", 531 | "library(rpart)" 532 | ], 533 | "metadata": { 534 | "colab": { 535 | "base_uri": "https://localhost:8080/" 536 | }, 537 | "id": "IHFrTBHHncME", 538 | "outputId": "1b97850f-cf20-4fa8-e025-68aa6d7d5b21" 539 | }, 540 | "execution_count": 11, 541 | "outputs": [ 542 | { 543 | "output_type": "stream", 544 | "name": "stderr", 545 | "text": [ 546 | "Installing package into ‘/usr/local/lib/R/site-library’\n", 547 | "(as ‘lib’ is unspecified)\n", 548 | "\n" 549 | ] 550 | } 551 | ] 552 | }, 553 | { 554 | "cell_type": "code", 555 | "metadata": { 556 | "id": "aUA6CsWHWFAO" 557 | }, 558 | "source": [ 559 | "# Seu código aqui" 560 | ], 561 | "execution_count": null, 562 | "outputs": [] 563 | }, 564 | { 565 | "cell_type": "markdown", 566 | "metadata": { 567 | "id": "BV3bGDWMBslr" 568 | }, 569 | "source": [ 570 | "# Exercício. Modelo Naive Bayes\n", 571 | "\n", 572 | "Empregue o pacote abaixo para construir um modelo Naive Bayes. Esse é um modelo também baseado na probabilidade dos valores dos atributos (como em uma Árvore de Decisão), mas que emprega probabilidades condicionais (Teorema de Bayes). Sua implementação de qualquer modo é bastante simples e segue de perto a forma de implementação de uma Árvore de Decisão. Esse modelo está disponível também no scikit-learn e você pode achar interessante pesquisar mais sobre ele.\n", 573 | "\n", 574 | "Depois de construir o modelo construa a Matriz de Confusão e obtenha a acuracidade do modelo.\n", 575 | "\n", 576 | "1. `naive_bayes()`. Informe somente a *formula* do modelo e o conjunto de dados. Note, é `naive_bayes()` e não `naivebayes()`.\n", 577 | "2. `predict()`. Empregue o parâmetro `type = \"class\"`." 578 | ] 579 | }, 580 | { 581 | "cell_type": "code", 582 | "source": [ 583 | "install.packages('naivebayes')\n", 584 | "library(naivebayes)" 585 | ], 586 | "metadata": { 587 | "colab": { 588 | "base_uri": "https://localhost:8080/" 589 | }, 590 | "id": "t5-EQ6Xlmi8r", 591 | "outputId": "ac598120-7008-431e-ab32-b7ae6c37e097" 592 | }, 593 | "execution_count": 13, 594 | "outputs": [ 595 | { 596 | "output_type": "stream", 597 | "name": "stderr", 598 | "text": [ 599 | "Installing package into ‘/usr/local/lib/R/site-library’\n", 600 | "(as ‘lib’ is unspecified)\n", 601 | "\n", 602 | "naivebayes 0.9.7 loaded\n", 603 | "\n" 604 | ] 605 | } 606 | ] 607 | }, 608 | { 609 | "cell_type": "code", 610 | "source": [ 611 | "# Seu código aqui" 612 | ], 613 | "metadata": { 614 | "id": "ay98iQthmXjK" 615 | }, 616 | "execution_count": null, 617 | "outputs": [] 618 | }, 619 | { 620 | "cell_type": "markdown", 621 | "metadata": { 622 | "id": "O5QSZQjaQT-t" 623 | }, 624 | "source": [ 625 | "# Exercício. Predição com o Melhor Modelo \n", 626 | "\n", 627 | "Verifique a acuracidade dos dois modelos acima e empregue o melhor deles para fazer a predição dos novos casos. \n", 628 | "\n", 629 | "**Atenção**. Este é um exercício e vamos tomar como base uma única execução com o mesmo conjunto de treinamento e teste criados acima. Idealmente, precisaríamos vários conjuntos diferentes ou, melhor, empregar uma validação cruzada. Pacotes de R como `Caret` podem ser empregados para isso. Aqui a acuracidade pode ser muito próxima e diferir a partir da terceira casa decimal. De qualquer modo, temos um modelo melhor que outro." 630 | ] 631 | }, 632 | { 633 | "cell_type": "markdown", 634 | "metadata": { 635 | "id": "tE3jF6DRVqMJ" 636 | }, 637 | "source": [ 638 | "## Preparação dos Novos Dados\n", 639 | "\n", 640 | "Lembre-se os dados têm de estar no formato que empregamos no treinamento. Faça o hot encode também dos novos dados." 641 | ] 642 | }, 643 | { 644 | "cell_type": "code", 645 | "metadata": { 646 | "id": "dnjG8Z5YVczB" 647 | }, 648 | "source": [ 649 | "# Seu código aqui" 650 | ], 651 | "execution_count": null, 652 | "outputs": [] 653 | }, 654 | { 655 | "cell_type": "markdown", 656 | "metadata": { 657 | "id": "UCniX4O5kIRV" 658 | }, 659 | "source": [ 660 | "## Predição" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "metadata": { 666 | "id": "W2NmSJKLaOVf" 667 | }, 668 | "source": [ 669 | "# Seu código aqui" 670 | ], 671 | "execution_count": null, 672 | "outputs": [] 673 | } 674 | ] 675 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6702272.svg)](https://doi.org/10.5281/zenodo.6702272) 2 | 3 | 4 | 5 |
6 | 7 |
8 | 9 | # [Aprendizado de Máquina I](https://github.com/Rogerio-mack/Machine-Learning-I) 10 | 11 | Oliveira, R. (2022). **Aprendizado de Máquina I**. (pp. 1–227). eBook. https://doi.org/10.5281/zenodo.6702272. 12 | 13 | *Para acesso ao conteúdo clique nos Capítulos, no Título, ou acesse* [aqui](https://github.com/Rogerio-mack/Machine-Learning-I). 14 | 15 |
16 | 17 |
18 | 19 | [**Apresentação do Curso**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML0_Apresentacao.ipynb) 20 | 21 | 1. [**Introdução ao Aprendizado de Máquina**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML1_introducao.ipynb) 22 | 23 | 24 | 2. [**Aprendizado Supervisionado e Regressão Linear**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao.ipynb) 25 | 26 | >> [Lab Caso: **Estimando a emissão de gases CO2 de veículos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb) 27 | 28 | 3. [**Classificação: Regressão Logística**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica.ipynb) 29 | 30 | >> [Lab Caso: **Origem dos veículos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb) 31 | 32 | 4. [**Classificação: Knn**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn.ipynb) 33 | 34 | >> [Lab Caso: **Predição de Diagnósticos a partir de Dados de Imagens**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb) 35 | 36 | 5. [**Árvores de Decisão e Seleção de Atributos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees.ipynb) 37 | 38 | >> [Lab Caso: **Propensão de Compra de Clientes por Telemarketing**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb) 39 | 40 | 6. [**Validação Cruzada e GridSearch**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch.ipynb) 41 | 42 | >> [Lab Caso: **Propensão de Compra de Clientes por Telemarketing**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb) 43 | 44 | 7. [**Seleção de Modelos**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_SelecaoDeModelos.ipynb) 45 | 46 | >> [**Projeto em Grupo**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML7_ex_projeto.ipynb) 47 | 48 | 8. [**Aprendizado Supervisionado com R**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R.ipynb) 49 | 50 | >> [Lab Caso: **Controle de Qualidade de Peças**](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb) 51 | 52 |
53 | 54 |
55 | 56 | # Vídeos e Complementos 57 | 58 | *Acesse* [aqui](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML0_videos.ipynb). 59 | 60 |
61 | 62 |
63 | 64 | # Cases e Funções 65 | 66 | | Aula | Casos Práticos | Principais Funções | 67 | |--------|-------------------------------------------------------------------------|--------------------------------| 68 | | 1. | - | - | 69 | | 2. | CASO: Estimando o Preço de Veículos | `statsmodel`, `sm.ols` | 70 | | 3. | CASO: Estimando Tumores Malignos ou Benignos | `sklearn` , `LogisticRegression` | 71 | | | CASO: 10 year risk of coronary heart disease CHD | `train_test_split` | 72 | | 4. | CASO: 10 year risk of coronary heart disease CHD | `KNeighborsClassifier`,`sklearn.preprocessing`, `minmax_scale` | 73 | | 5. | CASO: Classifying Political Parties Based on Congressional Votes | `DecisionTreeClassifier`, `sklearn.feature_selection`, `mutual_info_classif`, `SelectKBest`, `StandardScaler`, `LabelEncoder` | 74 | | 6. | CASO: Breast Cancer biopsy | `KFold`, `LabelEncoder`, `GridSearchCV`, `RandomForestClassifier`, `OneHotEncoder`| 75 | | 7. | CASO: Classificando Imagens de Dígitos ( 8×8 ) | `MLPClassifier`, `SVC`, `GridSearchCV` | 76 | | | CASO: Classificando o MNIST (28×28) | `DecisionTreeRegressor`, `SVR`, `XGBRegressor` | 77 | | | CASO: Um Conjunto não Linear, Potencial de Ação de um Neurônio | | 78 | | | CASO: Bike Sharing Prediction | | 79 | | 8. | CASO: Iris Data Set | `lm`, `Caret`, `rpart` | 80 | | | CASO: Biopsy, Câncer de Mama | `naivebayes`, `glm`, `knn` | 81 | | | CASO: Classificando o MNIST (28×28) | | 82 |
83 | 84 |
85 | 86 | # Atividades 87 | 88 | | Aula | Atividade |Nota | 89 | |--------|-----------------------------------------------------------------|--------| 90 | | 1. | Exercícios Moodle | 1.0 | 91 | | 2. | Exercícios Moodle & Lab | 1.0 | 92 | | 3. | Exercícios Moodle & Lab | 1.0 | 93 | | 4. | Exercícios Moodle & Lab + Fórum Regressão Linear X Logística para Classificação | 1.5 | 94 | | 5. | Exercícios Moodle & Lab + Fórum Outros critérios de Seleção de Atributos | 1.5 | 95 | | 6. | Exercícios Moodle & Lab | 1.0 | 96 | | 7. | **Projeto de Aprendizado de Máquina em Grupo** | **2.0** | 97 | | 8. | Exercícios Moodle & Lab | 1.0 | 98 | | | **Total do Curso** | **10.0** | 99 | 100 | 101 | 102 |
103 | 104 |
105 | 106 | # Principais Referências 107 | 108 | Jake VanderPlas. **Python Data Science Handbook** O'Reilly Media, Inc. (2016). ISBN: 9781491912058. Disponível em: https://jakevdp.github.io/PythonDataScienceHandbook/. Acesso: 06 de Novembro de 2021. 109 | 110 | Kotu, Vijay; Deshpande, Balachandre **Data Science: concepts and practice**. 2nd ed. Cambridge, [England]: Morgan Kaufmann, c2019. E-book (570 p.) ISBN 9780128147627 (electronic bk.). Disponível em: http://pergamum.mackenzie.br:8080/pergamumweb/vinculos/00003c/00003cef.jpg. 111 | 112 | Larose, Chantal D.; Larose, Daniel T. **Data Science Using Python and R** Hoboken: Wiley, c2019. E-book (259 p.) (Wiley Series on Methods and Applications in Data Mining Ser.). ISBN 9781119526834 (electronic bk.). Disponível em: https://www3.mackenzie.br/biblioteca_virtual/index.php?tipoBiblio=ebookcentral&flashObg=n 113 | 114 | Géron, A. **Hands-on machine learning with Scikit-Learn, Keras and TensorFlow: concepts, tools, and techniques to build intelligent systems**, 2nd ed. (2019) O'Reilly 115 | 116 | Alpaydin, E. **Machine Learning** (The MIT Press Essential Knowledge). The MIT Press. 2019. 117 | 118 | Kelleher, J. D.; Tierney, Brendan. **Data Science** (The MIT Press Essential Knowledge). The MIT Press. 2018. 119 | 120 | Manapat, Michael. **Introduction to Machine Learning with Python**. Em An Introduction to Machine Learning. EMag Edição 50 (Abr 2017) 121 | 122 | 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /data/ageandheight.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/data/ageandheight.xls -------------------------------------------------------------------------------- /data/ageandheight.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/data/ageandheight.xlsx -------------------------------------------------------------------------------- /data/comics.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/data/comics.xlsx -------------------------------------------------------------------------------- /data/glasses.csv: -------------------------------------------------------------------------------- 1 | Id number,RI,Na,Mg,Al,Si,K,Ca,Ba,Fe,Type of glass 2 | 1,1.52101,13.64,D,1.1,71.78,0.06,8.75,0.0,0.0,1 3 | 2,1.51761,13.89,D,1.36,72.73,0.48,7.83,0.0,0.0,1 4 | 3,1.51618,13.53,C,1.54,72.99,0.39,7.78,0.0,0.0,1 5 | 4,1.51766,13.21,D,1.29,72.61,0.57,8.22,0.0,0.0,1 6 | 5,1.51742,13.27,D,1.24,73.08,0.55,8.07,0.0,0.0,1 7 | 6,1.51596,12.79,D,1.62,72.97,0.64,8.07,0.0,0.26,1 8 | 7,1.51743,13.3,D,1.14,73.09,0.58,8.17,0.0,0.0,1 9 | 8,1.51756,13.15,D,1.05,73.24,0.57,8.24,0.0,0.0,1 10 | 9,1.51918,14.04,C,1.37,72.08,0.56,8.3,0.0,0.0,1 11 | 10,1.51755,13.0,D,1.36,72.99,0.57,8.4,0.0,0.11,1 12 | 11,1.51571,12.72,B,1.56,73.2,0.67,8.09,0.0,0.24,1 13 | 12,1.51763,12.8,D,1.27,73.01,0.6,8.56,0.0,0.0,1 14 | 13,1.51589,12.88,B,1.4,73.28,0.69,8.05,0.0,0.24,1 15 | 14,1.51748,12.86,C,1.27,73.21,0.54,8.38,0.0,0.17,1 16 | 15,1.51763,12.61,C,1.31,73.29,0.58,8.5,0.0,0.0,1 17 | 16,1.51761,12.81,C,1.23,73.24,0.58,8.39,0.0,0.0,1 18 | 17,1.51784,12.68,D,1.16,73.11,0.61,8.7,0.0,0.0,1 19 | 18,1.52196,14.36,D,0.89,71.36,0.15,9.15,0.0,0.0,1 20 | 19,1.51911,13.9,D,1.18,72.12,0.06,8.89,0.0,0.0,1 21 | 20,1.51735,13.02,C,1.69,72.73,0.54,8.44,0.0,0.07,1 22 | 21,1.5175,12.82,C,1.49,72.75,0.54,8.52,0.0,0.19,1 23 | 22,1.51966,14.77,D,0.29,72.02,0.03,9.0,0.0,0.0,1 24 | 23,1.51736,12.78,D,1.29,72.79,0.59,8.7,0.0,0.0,1 25 | 24,1.51751,12.81,C,1.35,73.02,0.62,8.59,0.0,0.0,1 26 | 25,1.5172,13.38,C,1.15,72.85,0.5,8.43,0.0,0.0,1 27 | 26,1.51764,12.98,C,1.21,73.0,0.65,8.53,0.0,0.0,1 28 | 27,1.51793,13.21,C,1.41,72.64,0.59,8.43,0.0,0.0,1 29 | 28,1.51721,12.87,C,1.33,73.04,0.56,8.43,0.0,0.0,1 30 | 29,1.51768,12.56,C,1.43,73.15,0.57,8.54,0.0,0.0,1 31 | 30,1.51784,13.08,C,1.28,72.86,0.6,8.49,0.0,0.0,1 32 | 31,1.51768,12.65,C,1.3,73.08,0.61,8.69,0.0,0.14,1 33 | 32,1.51747,12.84,C,1.14,73.27,0.56,8.55,0.0,0.0,1 34 | 33,1.51775,12.85,C,1.23,72.97,0.61,8.56,0.09,0.22,1 35 | 34,1.51753,12.57,B,1.38,73.39,0.6,8.55,0.0,0.06,1 36 | 35,1.51783,12.69,C,1.34,72.95,0.57,8.75,0.0,0.0,1 37 | 36,1.51567,13.29,B,1.21,72.74,0.56,8.57,0.0,0.0,1 38 | 37,1.51909,13.89,C,1.32,71.81,0.51,8.78,0.11,0.0,1 39 | 38,1.51797,12.74,C,1.35,72.96,0.64,8.68,0.0,0.0,1 40 | 39,1.52213,14.21,D,0.47,71.77,0.11,9.57,0.0,0.0,1 41 | 40,1.52213,14.21,D,0.47,71.77,0.11,9.57,0.0,0.0,1 42 | 41,1.51793,12.79,C,1.12,73.03,0.64,8.77,0.0,0.0,1 43 | 42,1.51755,12.71,B,1.2,73.2,0.59,8.64,0.0,0.0,1 44 | 43,1.51779,13.21,B,1.33,72.76,0.59,8.59,0.0,0.0,1 45 | 44,1.5221,13.73,D,0.72,71.76,0.17,9.74,0.0,0.0,1 46 | 45,1.51786,12.73,B,1.19,72.95,0.62,8.76,0.0,0.3,1 47 | 46,1.519,13.49,C,1.35,71.95,0.55,9.0,0.0,0.0,1 48 | 47,1.51869,13.19,B,1.18,72.72,0.57,8.83,0.0,0.16,1 49 | 48,1.52667,13.99,D,0.71,71.57,0.02,9.82,0.0,0.1,1 50 | 49,1.52223,13.21,D,0.79,71.99,0.13,10.02,0.0,0.0,1 51 | 50,1.51898,13.58,B,1.23,72.08,0.59,8.91,0.0,0.0,1 52 | 51,1.5232,13.72,D,0.51,71.75,0.09,10.06,0.0,0.16,1 53 | 52,1.51926,13.2,B,1.28,72.36,0.6,9.14,0.0,0.11,1 54 | 53,1.51808,13.43,B,1.19,72.84,0.55,9.03,0.0,0.0,1 55 | 54,1.51837,13.14,B,1.28,72.85,0.55,9.07,0.0,0.0,1 56 | 55,1.51778,13.21,B,1.29,72.98,0.51,9.02,0.0,0.09,1 57 | 56,1.51769,12.45,B,1.29,73.7,0.56,9.06,0.0,0.24,1 58 | 57,1.51215,12.99,B,1.12,72.98,0.62,8.35,0.0,0.31,1 59 | 58,1.51824,12.87,C,1.29,72.95,0.6,8.43,0.0,0.0,1 60 | 59,1.51754,13.48,D,1.17,72.99,0.59,8.03,0.0,0.0,1 61 | 60,1.51754,13.39,D,1.19,72.79,0.57,8.27,0.0,0.11,1 62 | 61,1.51905,13.6,D,1.11,72.64,0.14,8.76,0.0,0.0,1 63 | 62,1.51977,13.81,C,1.32,71.72,0.12,8.67,0.69,0.0,1 64 | 63,1.52172,13.51,D,0.88,71.79,0.23,9.54,0.0,0.11,1 65 | 64,1.52227,14.17,D,0.78,71.35,0.0,9.69,0.0,0.0,1 66 | 65,1.52172,13.48,D,0.9,72.01,0.18,9.61,0.0,0.07,1 67 | 66,1.52099,13.69,C,1.12,71.96,0.09,9.4,0.0,0.0,1 68 | 67,1.52152,13.05,D,0.87,72.22,0.19,9.85,0.0,0.17,1 69 | 68,1.52152,13.05,D,0.87,72.32,0.19,9.85,0.0,0.17,1 70 | 69,1.52152,13.12,C,0.9,72.2,0.23,9.82,0.0,0.16,1 71 | 70,1.523,13.31,C,0.82,71.99,0.12,10.17,0.0,0.03,1 72 | 71,1.51574,14.86,D,1.74,71.87,0.16,7.36,0.0,0.12,2 73 | 72,1.51848,13.64,D,1.27,71.96,0.54,8.32,0.0,0.32,2 74 | 73,1.51593,13.09,C,1.52,73.1,0.67,7.83,0.0,0.0,2 75 | 74,1.51631,13.34,C,1.57,72.87,0.61,7.89,0.0,0.0,2 76 | 75,1.51596,13.02,C,1.54,73.11,0.72,7.9,0.0,0.0,2 77 | 76,1.5159,13.02,C,1.51,73.12,0.69,7.96,0.0,0.0,2 78 | 77,1.51645,13.44,D,1.54,72.39,0.66,8.03,0.0,0.0,2 79 | 78,1.51627,13.0,C,1.54,72.83,0.61,8.04,0.0,0.0,2 80 | 79,1.51613,13.92,C,1.25,72.88,0.37,7.94,0.0,0.14,2 81 | 80,1.5159,12.82,C,1.9,72.86,0.69,7.97,0.0,0.0,2 82 | 81,1.51592,12.86,C,2.12,72.66,0.69,7.97,0.0,0.0,2 83 | 82,1.51593,13.25,B,1.43,73.17,0.61,7.86,0.0,0.0,2 84 | 83,1.51646,13.41,C,1.25,72.81,0.68,8.1,0.0,0.0,2 85 | 84,1.51594,13.09,C,1.55,72.87,0.68,8.05,0.0,0.09,2 86 | 85,1.51409,14.25,B,2.08,72.28,1.1,7.08,0.0,0.0,2 87 | 86,1.51625,13.36,C,1.49,72.72,0.45,8.21,0.0,0.0,2 88 | 87,1.51569,13.24,C,1.47,73.25,0.38,8.03,0.0,0.0,2 89 | 88,1.51645,13.4,C,1.52,72.65,0.67,8.08,0.0,0.1,2 90 | 89,1.51618,13.01,C,1.48,72.89,0.6,8.12,0.0,0.0,2 91 | 90,1.5164,12.55,C,1.87,73.23,0.63,8.08,0.0,0.09,2 92 | 91,1.51841,12.93,D,1.11,72.28,0.64,8.96,0.0,0.22,2 93 | 92,1.51605,12.9,B,1.45,73.06,0.44,8.27,0.0,0.0,2 94 | 93,1.51588,13.12,B,1.58,73.26,0.07,8.39,0.0,0.19,2 95 | 94,1.5159,13.24,B,1.47,73.1,0.39,8.22,0.0,0.0,2 96 | 95,1.51629,12.71,B,1.49,73.28,0.67,8.24,0.0,0.0,2 97 | 96,1.5186,13.36,B,1.43,72.26,0.51,8.6,0.0,0.0,2 98 | 97,1.51841,13.02,D,1.06,72.34,0.64,9.13,0.0,0.15,2 99 | 98,1.51743,12.2,B,1.16,73.55,0.62,8.9,0.0,0.24,2 100 | 99,1.51689,12.67,B,1.71,73.21,0.73,8.54,0.0,0.0,2 101 | 100,1.51811,12.96,B,1.43,72.92,0.6,8.79,0.14,0.0,2 102 | 101,1.51655,12.75,B,1.44,73.27,0.57,8.79,0.11,0.22,2 103 | 102,1.5173,12.35,B,1.63,72.87,0.7,9.23,0.0,0.0,2 104 | 103,1.5182,12.62,B,0.83,73.81,0.35,9.42,0.0,0.2,2 105 | 104,1.52725,13.8,B,0.66,70.57,0.08,11.64,0.0,0.0,2 106 | 105,1.5241,13.83,B,1.17,71.15,0.08,10.79,0.0,0.0,2 107 | 106,1.52475,11.45,A,1.88,72.19,0.81,13.24,0.0,0.34,2 108 | 107,1.53125,10.73,A,2.1,69.81,0.58,13.3,3.15,0.28,2 109 | 108,1.53393,12.3,A,1.0,70.16,0.12,16.19,0.0,0.24,2 110 | 109,1.52222,14.43,A,1.0,72.67,0.1,11.52,0.0,0.08,2 111 | 110,1.51818,13.72,A,0.56,74.45,0.0,10.99,0.0,0.0,2 112 | 111,1.52664,11.23,A,0.77,73.21,0.0,14.68,0.0,0.0,2 113 | 112,1.52739,11.02,A,0.75,73.08,0.0,14.96,0.0,0.0,2 114 | 113,1.52777,12.64,A,0.67,72.02,0.06,14.4,0.0,0.0,2 115 | 114,1.51892,13.46,D,1.26,72.55,0.57,8.21,0.0,0.14,2 116 | 115,1.51847,13.1,D,1.19,72.44,0.6,8.43,0.0,0.0,2 117 | 116,1.51846,13.41,D,1.33,72.38,0.51,8.28,0.0,0.0,2 118 | 117,1.51829,13.24,D,1.41,72.33,0.55,8.31,0.0,0.1,2 119 | 118,1.51708,13.72,D,1.81,72.06,0.64,7.88,0.0,0.0,2 120 | 119,1.51673,13.3,D,1.53,72.53,0.65,8.03,0.0,0.29,2 121 | 120,1.51652,13.56,C,1.47,72.45,0.64,7.96,0.0,0.0,2 122 | 121,1.51844,13.25,D,1.32,72.4,0.58,8.42,0.0,0.0,2 123 | 122,1.51663,12.93,C,1.62,72.96,0.64,8.03,0.0,0.21,2 124 | 123,1.51687,13.23,C,1.48,72.84,0.56,8.1,0.0,0.0,2 125 | 124,1.51707,13.48,C,1.71,72.52,0.62,7.99,0.0,0.0,2 126 | 125,1.52177,13.2,D,1.15,72.75,0.54,8.52,0.0,0.0,2 127 | 126,1.51872,12.93,D,1.56,72.51,0.58,8.55,0.0,0.12,2 128 | 127,1.51667,12.94,D,1.26,72.75,0.56,8.6,0.0,0.0,2 129 | 128,1.52081,13.78,B,1.43,71.99,0.49,9.85,0.0,0.17,2 130 | 129,1.52068,13.55,A,1.67,72.18,0.53,9.57,0.27,0.17,2 131 | 130,1.5202,13.98,A,1.63,71.76,0.39,10.56,0.0,0.18,2 132 | 131,1.52177,13.75,A,1.36,72.19,0.33,11.14,0.0,0.0,2 133 | 132,1.52614,13.7,A,1.36,71.24,0.19,13.44,0.0,0.1,2 134 | 133,1.51813,13.43,D,1.18,72.49,0.58,8.15,0.0,0.0,2 135 | 134,1.518,13.71,D,1.54,71.81,0.54,8.21,0.0,0.15,2 136 | 135,1.51811,13.33,D,1.25,72.78,0.52,8.12,0.0,0.0,2 137 | 136,1.51789,13.19,D,1.3,72.33,0.55,8.44,0.0,0.28,2 138 | 137,1.51806,13.0,D,1.08,73.07,0.56,8.38,0.0,0.12,2 139 | 138,1.51711,12.89,D,1.57,72.96,0.61,8.11,0.0,0.0,2 140 | 139,1.51674,12.79,C,1.54,73.36,0.66,7.9,0.0,0.0,2 141 | 140,1.51674,12.87,C,1.64,73.14,0.65,7.99,0.0,0.0,2 142 | 141,1.5169,13.33,C,1.61,72.54,0.68,8.11,0.0,0.0,2 143 | 142,1.51851,13.2,D,1.07,72.83,0.57,8.41,0.09,0.17,2 144 | 143,1.51662,12.85,C,1.44,73.01,0.68,8.23,0.06,0.25,2 145 | 144,1.51709,13.0,B,1.79,72.72,0.66,8.18,0.0,0.0,2 146 | 145,1.5166,12.99,B,1.23,72.97,0.58,8.81,0.0,0.24,2 147 | 146,1.51839,12.85,D,1.24,72.57,0.62,8.68,0.0,0.35,2 148 | 147,1.51769,13.65,D,1.11,72.77,0.11,8.6,0.0,0.0,3 149 | 148,1.5161,13.33,C,1.34,72.67,0.56,8.33,0.0,0.0,3 150 | 149,1.5167,13.24,C,1.38,72.7,0.56,8.44,0.0,0.1,3 151 | 150,1.51643,12.16,C,1.35,72.89,0.57,8.53,0.0,0.0,3 152 | 151,1.51665,13.14,B,1.76,72.48,0.6,8.38,0.0,0.17,3 153 | 152,1.52127,14.32,D,0.83,71.5,0.0,9.49,0.0,0.0,3 154 | 153,1.51779,13.64,D,0.65,73.0,0.06,8.93,0.0,0.0,3 155 | 154,1.5161,13.42,B,1.22,72.69,0.59,8.32,0.0,0.0,3 156 | 155,1.51694,12.86,C,1.31,72.61,0.61,8.79,0.0,0.0,3 157 | 156,1.51646,13.04,B,1.26,73.01,0.52,8.58,0.0,0.0,3 158 | 157,1.51655,13.41,B,1.28,72.64,0.52,8.65,0.0,0.0,3 159 | 158,1.52121,14.03,D,0.58,71.79,0.11,9.65,0.0,0.0,3 160 | 159,1.51776,13.53,B,1.52,72.04,0.58,8.79,0.0,0.0,3 161 | 160,1.51796,13.5,B,1.63,71.94,0.57,8.81,0.0,0.09,3 162 | 161,1.51832,13.33,B,1.54,72.14,0.56,8.99,0.0,0.0,3 163 | 162,1.51934,13.64,C,0.75,72.65,0.16,8.89,0.15,0.24,3 164 | 163,1.52211,14.19,D,0.91,71.36,0.23,9.14,0.0,0.37,3 165 | 164,1.51514,14.01,B,3.5,69.89,1.68,5.87,2.2,0.0,5 166 | 165,1.51915,12.73,A,1.86,72.69,0.6,10.09,0.0,0.0,5 167 | 166,1.52171,11.56,A,1.56,72.86,0.47,11.41,0.0,0.0,5 168 | 167,1.52151,11.03,A,1.56,73.44,0.58,11.62,0.0,0.0,5 169 | 168,1.51969,12.64,A,1.65,73.75,0.38,11.53,0.0,0.0,5 170 | 169,1.51666,12.86,A,1.83,73.88,0.97,10.17,0.0,0.0,5 171 | 170,1.51994,13.27,A,1.76,73.03,0.47,11.32,0.0,0.0,5 172 | 171,1.52369,13.44,A,1.58,72.22,0.32,12.24,0.0,0.0,5 173 | 172,1.51316,13.02,A,3.04,70.48,6.21,6.96,0.0,0.0,5 174 | 173,1.51321,13.0,A,3.02,70.7,6.21,6.93,0.0,0.0,5 175 | 174,1.52043,13.38,A,1.4,72.25,0.33,12.5,0.0,0.0,5 176 | 175,1.52058,12.85,A,2.17,72.18,0.76,9.7,0.24,0.51,5 177 | 176,1.52119,12.97,A,1.51,73.39,0.13,11.27,0.0,0.28,5 178 | 186,1.51131,13.69,B,1.81,72.81,1.76,5.43,1.19,0.0,7 179 | 187,1.51838,14.32,B,2.22,71.25,1.46,5.79,1.63,0.0,7 180 | 188,1.52315,13.44,B,1.23,72.38,0.6,8.83,0.0,0.0,7 181 | 189,1.52247,14.86,B,2.06,70.26,0.76,9.76,0.0,0.0,7 182 | 190,1.52365,15.79,A,1.31,70.43,0.31,8.61,1.68,0.0,7 183 | 191,1.51613,13.88,A,1.79,73.1,0.0,8.67,0.76,0.0,7 184 | 192,1.51602,14.85,A,2.38,73.28,0.0,8.76,0.64,0.09,7 185 | 193,1.51623,14.2,A,2.79,73.46,0.04,9.04,0.4,0.09,7 186 | 194,1.51719,14.75,A,2.0,73.02,0.0,8.53,1.59,0.08,7 187 | 195,1.51683,14.56,A,1.98,73.29,0.0,8.52,1.57,0.07,7 188 | 196,1.51545,14.14,A,2.68,73.39,0.08,9.07,0.61,0.05,7 189 | 197,1.51556,13.87,A,2.54,73.23,0.14,9.41,0.81,0.01,7 190 | 198,1.51727,14.7,A,2.34,73.28,0.0,8.95,0.66,0.0,7 191 | 199,1.51531,14.38,A,2.66,73.1,0.04,9.08,0.64,0.0,7 192 | 200,1.51609,15.01,A,2.51,73.05,0.05,8.83,0.53,0.0,7 193 | 201,1.51508,15.15,A,2.25,73.5,0.0,8.34,0.63,0.0,7 194 | 202,1.51653,11.95,A,1.19,75.18,2.7,8.93,0.0,0.0,7 195 | 203,1.51514,14.85,A,2.42,73.72,0.0,8.39,0.56,0.0,7 196 | 204,1.51658,14.8,A,1.99,73.11,0.0,8.28,1.71,0.0,7 197 | 205,1.51617,14.95,A,2.27,73.3,0.0,8.71,0.67,0.0,7 198 | 206,1.51732,14.95,A,1.8,72.99,0.0,8.61,1.55,0.0,7 199 | 207,1.51645,14.94,A,1.87,73.11,0.0,8.67,1.38,0.0,7 200 | 208,1.51831,14.39,A,1.82,72.86,1.41,6.47,2.88,0.0,7 201 | 209,1.5164,14.37,A,2.74,72.85,0.0,9.45,0.54,0.0,7 202 | 210,1.51623,14.14,A,2.88,72.61,0.08,9.18,1.06,0.0,7 203 | 211,1.51685,14.92,A,1.99,73.06,0.0,8.4,1.59,0.0,7 204 | 212,1.52065,14.36,A,2.02,73.42,0.0,8.44,1.64,0.0,7 205 | 213,1.51651,14.38,A,1.94,73.61,0.0,8.48,1.57,0.0,7 206 | 214,1.51711,14.23,A,2.08,73.36,0.0,8.62,1.67,0.0,7 207 | -------------------------------------------------------------------------------- /data/pressure.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/data/pressure.xlsx -------------------------------------------------------------------------------- /erratas.md: -------------------------------------------------------------------------------- 1 | 2 | ### Capítulo: ML2_Regressão 3 | 4 | * Na seção de Predição de novos valores, `predict()` 5 | 6 | > No lugar de: Podemos, agora, empregar nosso modelo para estimar o consumo desconhecido de um novo veículo na cidade, mas para o qual conhecemos sua potência. 7 | 8 | > Substituído por: Podemos agora empregar nosso modelo para estimar o **preço** de um novo veículo para o qual conhecemos a potência. 9 | 10 | > Corrigido: 2023.03.07 Indicado por: **Amanda Noronha Cohen** 11 | 12 | ### Capítulo: ML_Regressão_Logística 13 | 14 | > Ajuste do título do case do exercício, trocando **Consumo dos Veículos** por **Origem dos Veículos**. Apenas o título, o enunciado já estava correto. 15 | 16 | > Corrigido: 2023.03.17 17 | -------------------------------------------------------------------------------- /formularios/ML1_1_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_1_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_2_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_2_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_3_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_3_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_4_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_4_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_5_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_5_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_6_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_6_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_7_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_7_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_8_formulario.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_8_formulario.docx -------------------------------------------------------------------------------- /formularios/ML1_Plano de Ensino.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/ML1_Plano de Ensino.docx -------------------------------------------------------------------------------- /formularios/~$1_Plano de Ensino.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/formularios/~$1_Plano de Ensino.docx -------------------------------------------------------------------------------- /gift/ML1_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML1_gift 2 | 3 | Considere as seguintes fases do processo de Ciência de Dados (CRISP-DM)\: 4 | \n 1. Modelagem 5 | \n 2. Preparação dos Dados 6 | \n 3. Entendimento dos Dados 7 | \n 4. Avaliação 8 | \n 5. Distribuição 9 | \n 6. Entendimento do Negócio 10 | \n A ordem correta dessas fases é dada por\: 11 | { 12 | = 6,3,2,1,4,5 13 | ~ 6,4,2,3,1,5 14 | ~ 6,4,3,2,1,5 15 | ~ 6,1,3,2,4,5 16 | ~ 1,6,3,2,5,4 17 | } 18 | 19 | Associe corretamente as tarefas e a fase do processo de Ciência de Dados (CRISP-DM) mais comumente associada\: 20 | { 21 | = Seleção de Data Cleaning -> Preparação dos Dados 22 | = Verificar a Qualidade dos Dados -> Entendimento dos Dados 23 | = Selecionar o Modelo a ser empregado -> Modelagem 24 | } 25 | 26 | Associe corretamente os modelos de Aprendizado\: 27 | { 28 | = Aprendizado Não Supervisionado -> Descritivo 29 | = Aprendizado Supervisionado -> Preditivo 30 | = Aprendizado de Reforço -> Prescritivo 31 | } 32 | 33 | Associe corretamente as tarefas e o modelo de Aprendizado mais comumente associado\: 34 | { 35 | = Clusterização (agrupamentos) -> Aprendizado Não Supervisionado 36 | = Classificação -> Aprendizado Supervisionado 37 | = Jogos com Interação -> Aprendizado de Reforço 38 | } 39 | 40 | Na prática, 80% do esforço de se criar modelos de Aprendizado de Máquina nas empresas 41 | envolve atividades preliminares de Análise, Exploração e Preparação dos Dados. {T} 42 | 43 | O Aprendizado de Máquina envolve a busca de um padrão nos dados trazendo um novo paradigma de programação. 44 | \n Considere as seguintes potenciais aplicações do Aprendizado de Máquina\: 45 | \n i) Determinar através de uma vasta coleta de dados de órbitas de satélites o local de queda de um satélite no final de sua vida útil 46 | \n ii) Determinar por inspecção visual chapas de aço tratadas com baixa qualidade para rejeito com base em dados históricos 47 | \n iii) Identificar o perfil de desistência de alunos matriculados em cursos de graduação para planejar ações de redução de evasão 48 | \n 49 | São aplicações mais corretas do Aprendizado de Máquina\: 50 | { 51 | ~ Todas 52 | ~ Somente i 53 | ~ Somente i, ii 54 | = Somente ii, iii 55 | ~ Somente ii 56 | #### Órbitas de satélites seguem modelos físicos conhecidos, eles serão melhores que modelos obtidos por dados 57 | } 58 | 59 | Os Rótulos dos dados em um conjunto de treinamento não podem ser valores numéricos, eles devem ser categorias como 60 | Benigno/Maligno ou Spam/NotSpam. {F} 61 | 62 | A Classificação nos modelos de Aprendizado Supervisionado só permitem a classificação de valores binários como 63 | Benigno/Maligno, True/False, 0/1 ou Spam/NotSpam. {F} 64 | 65 | Considere as seguintes afirmativas sobre os modelos de Aprendizado Máquina Supervisionados\: 66 | \n i. Requerem um conjunto de dados de treinamento, isto é, um conjunto de exemplos com dados rotulados 67 | \n ii. São modelos que empregamos para inferência de novos casos 68 | \n iii. Podem ser divididos em modelos de Classificação ou Regressão, conforme os dados que desejamos prever sejam 69 | valores contínuos ou discretos 70 | \n Estão corretas\: 71 | { 72 | = Somente ii 73 | ~ Somente i, ii 74 | ~ Somente i, iii 75 | ~ Somente ii, iii 76 | ~ Somente i 77 | } 78 | 79 | O Aprendizado de Máquina é uma subárea da IA e ambos são cobertos completamente por um campo maior que é a Ciência de Dados {F}. 80 | 81 | -------------------------------------------------------------------------------- /gift/ML2_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML2_gift 2 | 3 | Considere as seguintes afirmativas sobre modelos de Aprendizado Supervisionado\: 4 | \n i. O conjunto de Treinamento no Aprendizado Supervisionado é um conjunto em que cada amostra possuí um rótulo com 5 | um número discreto de valores 6 | \n ii. O Aprendizado ou Treinamento consiste basicamente no ajuste dos parâmetros de uma classe de modelos aos dados 7 | \n iii. Os modelos de regressão tratam de estimar quantidades enquanto os modelos de classificação estimam categorias, ou 8 | valores discretos, associados aos dados 9 | \n Estão corretas\: 10 | { 11 | = Somente ii 12 | ~ Somente i, ii 13 | ~ Somente i, iii 14 | ~ Somente ii, iii 15 | ~ Somente i 16 | } 17 | 18 | Em uma regressão linear simples os coeficientes de um modelo de regressão linear dependem unicamente da covariância, 19 | variância e média dos valores das variáveis dependente e independente. Podem, portanto, serem aplicados a qualquer 20 | conjuntos dados numéricos, independente de terem ou não uma relação linear entre eles. {T} 21 | 22 | Se coeficiente de determinação R2 for próximo de 1, certamente os valores da variável dependente tem como causa os 23 | valores das variáveis independentes do modelo. {F} 24 | 25 | Se coeficiente de determinação R2 for próximo de 0, isso indicará não haver qualquer relação entre a variável dependente 26 | e as variáveis preditoras (independentes) do modelo. {F} 27 | 28 | Considere as seguintes afirmativas sobre os modelos de Regressão Linear\: 29 | \n i. Os modelos lineares não podem ser aplicados à transformações à variável dependente y, como Log(y), 30 | pois neste caso não teremos um modelo linear 31 | \n ii. Para um mesmo conjunto de dados (X,y) pode-se avaliar diferentes modelos de regressão linear 32 | empregando-se diferentes subconjuntos de X 33 | \n iii. Modelos de regressão linear com mais variáveis preditoras são sempre melhores modelos 34 | \n Estão corretas\: 35 | { 36 | = Somente ii 37 | ~ Somente i, ii 38 | ~ Somente i, iii 39 | ~ Somente ii, iii 40 | ~ Somente i 41 | } 42 | 43 | Por padrão, os p-values dos coeficientes de uma regressão linear, para que sejam significativos devem ser\: 44 | { 45 | = Menores que 0.05 46 | ~ Maiores que 0.05 47 | ~ Menores que 0.01 48 | ~ Próximos de 1 49 | ~ Maiores que 0 50 | } 51 | 52 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb 53 | Quais os coeficientes obtidos na regressão CO2EMISSIONS \= A + B × FUELCONSUMPTION_COMB? 54 | { 55 | = 68.38 e 16.22 56 | ~ 64.38 e 18.22 57 | ~ 63.38 e 17.22 58 | ~ 61.38 e 19.22 59 | ~ 60.38 e 21.22 60 | } 61 | 62 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb 63 | Qual a predição, a partir do modelo linear CO2EMISSIONS \= A + B × FUELCONSUMPTION_COMB 64 | para os valores FUELCONSUMPTION_COMB \= 4 e 28? 65 | { 66 | = 133.26 e 522.54 67 | ~ 143.26 e 512.54 68 | ~ 153.26 e 524.54 69 | ~ 183.26 e 542.54 70 | ~ 132.26 e 522.54 71 | } 72 | 73 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb 74 | Qual o R-Squared para o modelo linear CO2EMISSIONS \= A + B × FUELCONSUMPTION_COMB + C × ENGINESIZE? 75 | { 76 | ~ 0.764 77 | ~ 0.799 78 | ~ 0.754 79 | ~ 0.734 80 | = 0.858 81 | } 82 | 83 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML2_Regressao_ex.ipynb 84 | Qual a predição, a partir do modelo linear CO2EMISSIONS \= A + B × FUELCONSUMPTION_COMB + C × ENGINESIZE 85 | para um veículo com FUELCONSUMPTION_COMB \= 10 e ENGINESIZE \= 2? 86 | { 87 | = 214.59 88 | ~ 213.59 89 | ~ 211.59 90 | ~ 222.59 91 | ~ 200.59 92 | } 93 | 94 | -------------------------------------------------------------------------------- /gift/ML3_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML3_gift 2 | 3 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 4 | \n Qual atributo apresenta valores ausentes e quantas linhas foram excluídas dos dados? 5 | { 6 | = horsepower, 6 7 | ~ horsepower, 9 8 | ~ mpg, 6 9 | ~ mpg, 9 10 | ~ mpg, 12 11 | } 12 | 13 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 14 | \n Quantos veículos usa e non-usa foram obtidos? 15 | { 16 | = 245, 147 17 | ~ 244, 148 18 | ~ 243, 149 19 | ~ 242, 150 20 | ~ 241, 151 21 | } 22 | 23 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 24 | \n Qual a acuracidade (score) obtido pelo primeiro modelo com entradas (mpg e cylinders) sobre o conjunto de teste? 25 | { 26 | = 0.805 27 | ~ 0.85 28 | ~ 0.905 29 | ~ 0.95 30 | ~ 0.59 31 | } 32 | 33 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 34 | \n Qual o resultado da classificação do modelo para carros com valorses mínimos e máximos de mpg e cylinders? 35 | { 36 | = 'non-usa', 'usa' 37 | ~ 'non-usa', 'non-usa' 38 | ~ 'usa', 'usa' 39 | ~ 'usa', 'non-usa' 40 | } 41 | 42 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 43 | \n Qual atributo não é um preditor e precisa, em conjunto com a variável dependente, ser excluída das entradas do treinamento? 44 | { 45 | = name, pois é um identificador único 46 | ~ model-year, pois é uma data 47 | ~ cylinders, pois já foi usado no modelo anterior 48 | ~ displacement, pois não é significativo 49 | ~ acceleration, pois contém outliers 50 | } 51 | 52 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML3_RegressaoLogistica_ex.ipynb 53 | \n Qual a acuracidade (score) obtido pelo segundo modelo com todas entradas válidas sobre o conjunto de teste? 54 | { 55 | = 0.881 56 | ~ 0.781 57 | ~ 0.681 58 | ~ 0.981 59 | ~ 0.581 60 | } 61 | 62 | Os modelos de regressão logistica, \n 63 | \n i. Podem considerar qualquer número de variáveis independentes 64 | \n ii. Podem considerar qualquer número de variáveis dependentes 65 | \n iii. Podem ser utilizados para determinação de classes 66 | \n Quais afirmações estão corretas? 67 | { 68 | = Somente i., iii 69 | ~ Somente i. 70 | ~ Somente ii., iii. 71 | ~ Somente ii. 72 | ~ Todas estão corretas. 73 | } 74 | 75 | Os modelos de regressão logistica, \n 76 | \n i. Consideram sempre a variável dependente como sendo discreta 77 | \n ii. Podem considerar variáveis independentes não numéricas 78 | \n iii. Consideram sempre a variável independente como sendo dicotômica, isto é, assume somente um valor ou outro 79 | \n Quais afirmações estão corretas? 80 | { 81 | = Somente i., iii. 82 | ~ Somente i. 83 | ~ Somente ii., iii. 84 | ~ Todas estão erradas. 85 | ~ Todas estão corretas. 86 | } 87 | 88 | Aqui, se necessário, pesquise. O Erro do Tipo-1 em tarefas de Classificação pode ser definido como\: 89 | { 90 | = considerar uma afirmação falsa como sendo verdadeira 91 | ~ utilizar um número muito elevado de dados para construir o modelo 92 | ~ não considerar todos os dados do modelo 93 | ~ utilizar um modelo cujas variáveis não tem relação com o que se deseja explicar 94 | ~ utilizar um número muito baixo de dados para construir o modelo 95 | } 96 | 97 | Aqui, se necessário, pesquise. O cálculo da Eficiência de um modelo de Classificação (acuracidade) pode, dentre outros, ser medido como\: 98 | { 99 | = dividindo o número de acertos pelo número total de dados 100 | ~ dividindo o número de acertos pelo número de erros tipo-1 101 | ~ dividindo o número de acertos pelo número de erros tipo-2 102 | ~ dividindo o número de acertos pelo número de erros tipo-3 103 | ~ dividindo o número de acertos pela soma dos erros 104 | } -------------------------------------------------------------------------------- /gift/ML4_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML4_gift 2 | 3 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 4 | \n Qual o número de casos benignos e malignos na base de dados breast? 5 | { 6 | = 322, 191 7 | ~ 321, 192 8 | ~ 320, 193 9 | ~ 323 190 10 | ~ 324, 189 11 | } 12 | 13 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 14 | \n Qual atributo não faz sentido fazer parte do treinamento? 15 | { 16 | = id, é um identificador 17 | ~ perimeter_mean, pois possui valores muito destoantes dos demais 18 | ~ area_mean, pois possui valores muito destoantes dos demais 19 | ~ diagnosis 20 | ~ nenhum, como não há valores ausentes todos os atributos serão empregados 21 | } 22 | 23 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 24 | \n Qual a média dos valores de X_train após a normalização dos dados e a separação dos conjuntos de dados de teste? 25 | \n (essa é uma questão importante de verificação, se você não encontrar o valor aqui você deve revisar o seu código) 26 | { 27 | = 0.2389 28 | ~ 0.1389 29 | ~ 0.5389 30 | ~ 0.7389 31 | ~ 0.9389 32 | } 33 | 34 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 35 | \n Qual modelo Knn apresentou maior acuracidade? 36 | { 37 | = K\=11, 0.95 38 | ~ K\=3, 0.94 39 | ~ K\=11, 0.94 40 | ~ K\=3, 0.95 41 | ~ K\=11, 0.98 42 | } 43 | 44 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 45 | \n Qual valor no Classification Report corresponde à quantidade de acertos da classe Benignos no conjunto de teste? 46 | { 47 | = 0.97 48 | ~ 0.95 49 | ~ 0.96 50 | ~ 0.93 51 | ~ 0.94 52 | } 53 | 54 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML4_Knn_ex.ipynb 55 | \n Qual o número de instâncias de new_breast foram classificadas como benigno e qual a classificação dos 4 primeiros casos? 56 | { 57 | = 17, 'B' 'M' 'B' 'B' 58 | ~ 21, 'B' 'M' 'B' 'B' 59 | ~ 17, 'B' 'M' 'M' 'B' 60 | ~ 18, 'B' 'M' 'M' 'B' 61 | ~ 21, 'M' 'M' 'M' 'B' 62 | } 63 | 64 | Considere as seguintes afirmativas sobre o modelo k-vizinhos mais próximos. 65 | \n 66 | \ni. O modelo fornece o melhor valor de k para classificação 67 | \nii. O modelo emprega uma função distância para classificação 68 | \niii. As variáveis preditoras precisam ser numéricas (ou transformadas para numéricas) mas a variável objetivo não necessariamente 69 | \n 70 | São corretas\:\n 71 | { 72 | ~ Somente i, ii, iii 73 | ~ Somente i 74 | = Somente ii, iii 75 | ~ Somente i, iii 76 | ~ Somente i, ii 77 | } 78 | 79 | Um modelo relacionado a saúde de bebês de um Laboratório de Exames cria uma classificação A, B ou C para os bebês. 80 | O Seguinte conjunto de dados associa a idade em meses dos bebês e as classes obtidas\: 81 | \n 82 | \n Idade em meses \=(6,7,7,5,8,4,4,3,1,1) 83 | \n Classe \=(A,B,B,A,A,A,C,C,B,A) 84 | \n 85 | Aplicando-se um modelo K-vizinhos mais próximos com K \= 3 e K \= 5, qual o valor estimado da classe para 86 | um bebê com 7.2 meses?{ 87 | = B e A respectivamente 88 | ~ A e B respectivamente 89 | ~ B nos dois casos 90 | ~ A para K\=3 e indiferentemente A ou B para K\=5 91 | ~ A nos dois casos 92 | } 93 | 94 | Considere as seguintes afirmativas sobre o modelo de k vizinhos mais próximos\: \n 95 | \n i. Quanto maior o valor de K melhor o resultado do modelo 96 | \n ii. A função distância d() é aplicada às variáveis de entrada (X) e à variável objetivo (y, ou classe), 97 | sendo os vizinhos mais próximos os pontos com menor distância d(X,y) 98 | \n iii. Por empregar a função distância o modelo Knn é sensível à normalização 99 | \n Estão corretas\: 100 | { 101 | ~ Todas corretas 102 | ~ Somente i 103 | ~ Somente i, ii 104 | = Somente iii 105 | ~ Somente ii, iii 106 | } 107 | 108 | -------------------------------------------------------------------------------- /gift/ML5_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML5_gift 2 | 3 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 4 | \n Qual o número de casos com propensão à compra? Existem valores nulos (ausentes) nos dados? 5 | { 6 | = 5289, não 7 | ~ 39922, sim 8 | ~ 14567, não 9 | ~ 8992, sim 10 | ~ 5289, não 11 | } 12 | 13 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 14 | \n Quais métodos correspondem aos esquemas de normalização informados no enunciado? (se preferir pesquise) 15 | { 16 | = MinMaxScaler e StandardScaler 17 | ~ StandardScaler e MinMaxScaler 18 | ~ MinMaxScaler e MaxAbsScaler 19 | ~ MaxAbsScaler e MinMaxScaler 20 | ~ Normalizer e StandardScaler 21 | } 22 | 23 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 24 | \n Qual a média dos valores de X_train.age após a normalização dos dados e a separação dos conjuntos de dados de teste? Qual o número de casos de teste? 25 | \n (essa é uma questão importante de verificação, se você não encontrar o valor aqui você deve revisar o seu código) 26 | { 27 | = 0.0034, 13564 28 | ~ 0.0134, 23564 29 | ~ 0.0234, 33564 30 | ~ 0.4034, 3564 31 | ~ 0.5034, 51564 32 | } 33 | 34 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 35 | \n Qual modelo Knn apresentou maior acuracidade? 36 | { 37 | = max_depth\=5, 0.8980 38 | ~ max_depth\=None, 0.8980 39 | ~ max_depth\=None, 0.8710 40 | ~ max_depth\=None, 0.8754 41 | ~ max_depth\=5, 0.8754 42 | } 43 | 44 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 45 | \n O resultado do modelo é o mesmo para as duas classes y e n? Isto é, conseguimos resultados mais ou menos próximos de classificação para quaisquer das classes? 46 | { 47 | = Não, a classe y apresenta mais que o dodro de erro 48 | ~ Não, a classe x apresenta mais que o dodro de erro 49 | ~ Sim, a acuracidade é de aproximadamente 0.90 50 | ~ Sim, observamos valores diferentes apenas por haverem mais casos de uma classe que outra 51 | ~ Nenhuma afirmativa correta 52 | } 53 | 54 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 55 | \n Quantos casos foram classificados como 'y' nos novos casos? 56 | { 57 | = 2 58 | ~ 21 59 | ~ 17 60 | ~ 12 61 | ~ 19 62 | } 63 | 64 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML5_DecisionTrees_ex.ipynb 65 | \n Quais os atributos que carregam mais informação para a determinação da classe y? 66 | { 67 | = month, duration, poutcome 68 | ~ poutcome, month, duration 69 | ~ balance, month, duration 70 | ~ balance, month, poutcome 71 | ~ balance, loan, poutcome 72 | } 73 | 74 | A Entropia, no contexto de dados, pode ser entendida como\: 75 | { 76 | = Uma medida de quantidade de informação 77 | ~ Uma medida de dispersão dos dados 78 | ~ Uma medida de quanto um atributo dos dados é relevante para determinar um outro atributo 79 | ~ Uma medida de correlação 80 | ~ Uma medida de dependência entre duas variáveis 81 | } 82 | 83 | Considere a seguinte tabela de valores em que dados coletados (A,B e C) 84 | parecem determinar o valor de uma variável objetivo T (classe). 85 | \n 86 | \n A | B | C | T 87 | \n 1 | 0 | Y | 1 88 | \n 0 | 1 | Y | 1 89 | \n 1 | 1 | Y | 0 90 | \n 1 | 0 | N | 1 91 | \n 92 | Na construção de uma Árvore de Decisão, que atributos que levam imediatamente a ramos com nós terminais?{ 93 | = A com valor 0, B com valor 0, e C com valor N 94 | ~ A com valor 0, B com valor 0 e 1, e C com valor N 95 | ~ A com valor 0, B com valor 0, e C com valor Y 96 | ~ A com valor 1, B com valor 0 e 1, e C com valor N 97 | ~ A com valor 1, B com valor 0, e C com valor Y 98 | } 99 | 100 | Considere as seguintes afirmativas sobre o modelo de árvores de decisão. 101 | \n 102 | \ni. Quanto maior a profundidade da Árvore maior a acuracidade do modelo 103 | \nii. O modelo emprega uma função distância para a classificação 104 | \niii. As variáveis preditoras precisam ser numéricas (ou transformadas para numéricas) mas a variável objetivo não necessariamente 105 | \n 106 | São corretas\:\n 107 | { 108 | ~ Somente i, ii, iii 109 | = Somente iii 110 | ~ Somente ii, iii 111 | ~ Somente i, iii 112 | ~ Somente i, ii 113 | } 114 | -------------------------------------------------------------------------------- /gift/ML6_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML6_gift 2 | 3 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb 4 | \n Quantos valores distintos há nos atributos df['Type of glass'] e df['Mg']? 5 | { 6 | = 5 e 4 7 | ~ 4 e 5 8 | ~ 5 e 3 9 | ~ 7 e 4 10 | ~ 7 e 3 11 | } 12 | 13 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb 14 | \n Qual atributo ou atributos requerem hot encode dos seus valores? 15 | { 16 | = 'Mg' 17 | ~ 'Type of glass' 18 | ~ 'Id number' 19 | ~ 'Type of glass' e 'Mg' 20 | ~ 'Id number' e 'Mg' 21 | } 22 | 23 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb 24 | \n Após todas as preparações dos dados quais os valores encontrados na primeira ocorrência do vetor X[0] e seu tamanho? 25 | \n (essa é uma questão importante de verificação, se você não encontrar o valor aqui você deve revisar o seu código) 26 | { 27 | = 0.86032995 e 12 28 | ~ 5.6 e 22 29 | ~ 28 e 2 30 | ~ 0.988 e 9 31 | ~ -1.3 e 82 32 | } 33 | 34 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb 35 | \n Quais os melhores hiperparâmetros encontrados? 36 | { 37 | = criterion='entropy', max_depth=7 38 | ~ criterion='entropy', max_depth=9 39 | ~ criterion='gini', max_depth=5 40 | ~ criterion='log_loss', max_depth=12 41 | ~ criterion='gini', max_depth=3 42 | } 43 | 44 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML6_CV_GridSearch_ex.ipynb 45 | \n Qual a acuracidade e a pior classe avaliada com esse melhor modelo? 46 | { 47 | = 0.90 e V 48 | ~ 0.90 e C 49 | ~ 0.90 e O 50 | ~ 0.33 e V 51 | ~ 0.87 e O 52 | } 53 | 54 | Durante o treinamento dos modelos qual dos conjuntos é idealmente empregado fornecer o ajuste dos hiperparâmetros do modelo e para 55 | a medida final da eficiência do modelo? 56 | { 57 | = Validação e Teste 58 | ~ Teste e Validação 59 | ~ Treinamento e Teste 60 | ~ Treinamento e Validação 61 | ~ Ambos o conjunto de Teste 62 | } 63 | 64 | A Validação Cruzada garante que cada instancia dos dados será empregada ao menos uma vez como teste {T} 65 | 66 | Na Validação Cruzada o resultado de eficiência do modelo (seu score) será o valor máximo da eficiência obtida em cada partição {T} 67 | 68 | São exemplos de hiperparâmetros de um modelo Supervisionado\: 69 | \n i. O número de vizinhos em um modelo de K-vizinhos mais próximos 70 | \n ii. A profundidade de uma Árvore de Decisão e o critério de seleção dos nós raiz (entropia, gini etc.) 71 | \n iii. A quantidade de partições e número de repetições de uma Validação Cruzada 72 | \n Estão corretas\: 73 | { 74 | = Somente i., ii. 75 | ~ Todas alternativas 76 | ~ Somente i. 77 | ~ Somente i., iii. 78 | ~ Somente ii., iii. 79 | } 80 | 81 | Em uma Floresta Aleatória (Random Forest) cada Árvore da Floresta processa uma partição das instâncias dos dados diferente {F} 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /gift/ML8_gift.txt: -------------------------------------------------------------------------------- 1 | $CATEGORY: $course$/ML8_gift 2 | 3 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 4 | \n Quantos valores ausentes (NA) foram encontrados nos dados? 5 | { 6 | = 19 7 | ~ 29 8 | ~ 9 9 | ~ 49 10 | ~ 69 11 | } 12 | 13 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 14 | \n Vamos verificar os resultados de Preparação dos Dados? Assinale a alternativa que contem respectivamente os valores de 15 | número de linhas do dataframe tratado (excluídos os NA) e número de colunas (com Hot Encode e exclusão do id)\: 16 | { 17 | = 481, 9 18 | ~ 1000, 10 19 | ~ 999, 99 20 | ~ 1, 2 21 | ~ 681, 8 22 | } 23 | 24 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 25 | \n Vamos verificar os resultados de Preparação dos Dados? Assinale a alternativa que contem respectivamente os valores de 26 | número de peças Accept e o número de Unidades de São Paulo a partir do hotencode\: 27 | { 28 | = 149, 223 29 | ~ 100, 10 30 | ~ 99, 9 31 | ~ 3, 4 32 | ~ 249, 123 33 | } 34 | 35 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 36 | \n Quais classes de qualidade não teveram nenhum erro de classificação? 37 | { 38 | = Reject 39 | ~ Refurbish 40 | ~ Accept 41 | ~ Accept e Refurbish 42 | ~ Accept e Reject 43 | } 44 | 45 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 46 | \n Qual a acuracidade do modelo de Árvore de Decisão obtida? 47 | { 48 | = 0.9513 49 | ~ 0.7513 50 | ~ 0.8513 51 | ~ 0.9583 52 | ~ 0.8583 53 | } 54 | 55 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 56 | \n Qual a acuracidade do modelo Naive Bayes obtida? 57 | { 58 | ~ 0.9513 59 | ~ 0.7513 60 | ~ 0.8513 61 | = 0.9583 62 | ~ 0.8583 63 | } 64 | 65 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 66 | \n Qual o modelo de melhor resultado de acuracidade? 67 | { 68 | = Naive Bayes 69 | ~ Árvore de Decisão 70 | } 71 | 72 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 73 | \n Na predição dos novos casos empregando o modelo de maior acuracidade as classes obtidas foram\: 74 | { 75 | = Refurbish Refurbish Reject Accept Reject 76 | ~ Refurbish Reject Accept Reject Refurbish 77 | ~ Reject Accept Reject Refurbish Refurbish 78 | ~ Accept Reject Refurbish Refurbish Reject 79 | ~ Reject Refurbish Refurbish Reject Accept 80 | } 81 | 82 | Para responder esta pergunta acesse https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML8_R_ex.ipynb 83 | e talvez você queira pesquisar sobre o modelo SVM. 84 | \n Modelos de SVM (Support Linear Regression) e Regressão Logística são separadores lineares e, portanto, não podemos aplicar esses modelos 85 | (seja em R ou em Python) diretamente no nosso problema de classificação de peças por que\: 86 | { 87 | = Existe mais de dois valores da classe objetivo 88 | ~ Existem atributos preditivos não numéricos 89 | ~ O atributo classe precisa ser numéricos 90 | ~ Esses modelos empregam distância e os dados precisam ser normalizados 91 | ~ Esses são modelos de regressão e não classificação 92 | } 93 | 94 | É uma grande limitação o R não possuir bibliotecas com funcionalidades como o Cross Validation e a separação de dados de treinamento e teste {F} 95 | 96 | -------------------------------------------------------------------------------- /videos/Ponto de Partida e Professor Resolve - Videos e Complementos.md: -------------------------------------------------------------------------------- 1 | Acesse [aqui](https://colab.research.google.com/github/Rogerio-mack/Machine-Learning-I/blob/main/ML0_videos.ipynb). 2 | -------------------------------------------------------------------------------- /videos/Resumo_N1_show.ppsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/videos/Resumo_N1_show.ppsx -------------------------------------------------------------------------------- /word/ML1_introducao.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML1_introducao.docx -------------------------------------------------------------------------------- /word/ML2_regressao.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML2_regressao.docx -------------------------------------------------------------------------------- /word/ML3_RegressaoLogistica.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML3_RegressaoLogistica.docx -------------------------------------------------------------------------------- /word/ML4_Knn.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML4_Knn.docx -------------------------------------------------------------------------------- /word/ML5_DecisionTrees.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML5_DecisionTrees.docx -------------------------------------------------------------------------------- /word/ML6_CV_GridSearch.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML6_CV_GridSearch.docx -------------------------------------------------------------------------------- /word/ML7_SelecaoDeModelos.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML7_SelecaoDeModelos.docx -------------------------------------------------------------------------------- /word/ML8_R.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rogerio-mack/Machine-Learning-I/6dfe50563f66e150af5d5c8004fa5271c07891e5/word/ML8_R.docx --------------------------------------------------------------------------------