Classificação e Regressão
Prof. Rodrigo Ramos Nogueira
Indaial – 2020
1a Edição
Copyright © UNIASSELVI 2020
Elaboração:
Prof. Rodrigo Ramos Nogueira
N778m
ISBN 978-65-5663-320-6
ISBN Digital 978-65-5663-316-9
CDD 004
Impresso por:
Apresentação
Caro acadêmico! Seja bem-vindo ao Livro Didático Machine learning
I – Classificação e Regressão. Esta disciplina objetiva proporcionar uma
introdução aos conceitos fundamentais de Machine learning e aprofundar os
estudos sobre as tarefas de classificação e regressão.
Nesse contexto, este livro didático está dividido em: Unidade 1, que
apresenta uma introdução ao aprendizado de máquina; Unidade 2, que
mostra a classificação das Machine learning e Unidade 3, que trata da regressão.
Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi-
dades em nosso material.
O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra-
mação no texto, aproveitando ao máximo o espaço da página, o que também contribui
para diminuir a extração de árvores para produção de folhas de papel, por exemplo.
Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa
continuar seus estudos com um material de qualidade.
Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo.
REFERÊNCIAS....................................................................................................................................... 55
UNIDADE 2 — CLASSIFICAÇÃO.................................................................................................... 59
REFERÊNCIAS..................................................................................................................................... 123
REFERÊNCIAS..................................................................................................................................... 185
UNIDADE 1 —
MACHINE LEARNING
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.
CHAMADA
1
2
TÓPICO 1 —
UNIDADE 1
1 INTRODUÇÃO
A inteligência artificial, por meio das suas mais diversas subáreas, tem
alterado a nossa maneira de interagir com os sistemas computacionais, bem como
a própria forma de interação com outros seres humanos.
FONTE: O autor
3
UNIDADE 1 — MACHINE LEARNING
FONTE: O autor
4
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING
FONTE: <https://www.appai.org.br/desenrola-machine-learning-aprendizado-de-maquina/>.
Acesso em: 2 out. 2020.
5
UNIDADE 1 — MACHINE LEARNING
Por fim, foi na década de 2000 que a internet chegou às casas dos usuários
e as redes sociais assumiram seu papel na comunicação virtual, gerando um
grande impacto no cotidiano das pessoas e das organizações. Esse momento, com
o grande volume de dados, gerando cenários de Big Data, contribuiu para que os
algoritmos de Machine learning fossem utilizados pelas empresas.
6
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING
3 DEFINIÇÃO DE CONCEITOS
Machine learning, compreendido como o aprendizado de máquina a partir
dos dados previamente conhecido, é definido como um campo preocupado
com a questão de como construir programas de computador que melhorem
automaticamente a experiência do usuário (MITCHELL, 1997).
NOTA
7
UNIDADE 1 — MACHINE LEARNING
NTE
INTERESSA
O jogo de damas, com certeza, não é segredo para você. Confira o artigo que deu
origem ao primeiro trabalho (SAMUEL, 1959), bem como originou o termo Machine learning:
https://hci.iwr.uni-heidelberg.de/system/files/private/downloads/636026949/report_frank_
gabel.pdf.
FONTE: <https://avengering.com/en/bot-chatbot-internet-bot-heres-everything-you-need-to-know/>.
Acesso em: 2 out. 2020.
8
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING
NTE
INTERESSA
Os bots invadiram a vida dos mais diversos usuários da web, seja para
quem joga, utiliza e-mail, aplicativos de mensagens, bem como as mais diversas redes
sociais. Por isso, é interessante conhecer mais sobre os bots, uma vez que, no decorrer
dos nossos estudos, compreenderemos o seu desenvolvimento e a sua detecção. Leia:
https://www.techtudo.com.br/noticias/2018/07/o-que-e-bot-conheca-os-robos-que-
estao-dominando-a-internet.ghtml.
9
UNIDADE 1 — MACHINE LEARNING
NTE
INTERESSA
FONTE: O autor
10
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING
12
TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING
NTE
INTERESSA
FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big-
-Data-Data-Mining>. Acesso em: 2 out. 2020.
Machine learning, muitas vezes, pode ser confundida com outras áreas do conhecimento,
principalmente em sistemas inteligentes, pois, como são áreas próximas, é comum tal
confusão. Por isso, é interessante compreender a relação entre essas áreas:
• A ciência de dados é o guarda-chuva de técnicas nas quais você está tentando extrair
informações e insights sobre os dados. Isso inclui desde trabalhar com programação
em baixo nível até a entrega de informação em nível mais alto.
• A mineração de dados é a ciência de coletar histórico de dados e, em seguida,
procurar padrões neles. Você procura padrões consistentes e relacionamentos
entre variáveis. Depois de encontrar essas informações, você as válidas aplicando os
padrões detectados a novos subconjuntos de dados.
• Análise de dados é qualquer tentativa de entender os dados.
• Estatística é o estudo da coleta, da análise, da interpretação, da apresentação e da
organização dos dados. A estatística lida com todos os aspectos dos dados, incluindo o
planejamento da coleta de dados, em termos de projeto de pesquisas e experimentos.
• Bancos de dados é uma coleção organizada de dados, com esquemas, tabelas,
consultas, relatórios, visualizações e outros objetos. Os dados são normalmente
organizados para modelar aspectos da realidade, de maneira a suportar processos
que requerem informações.
• Inteligência artificial (IA) é a inteligência exibida por máquinas ou software, isto é,
campo de estudo acadêmico sobre como criar computadores e softwares capazes
de comportamento inteligente.
• A descoberta de conhecimento em bancos de dados (KDD) é o processo que
identifica o conhecimento útil de uma coleção de dados.
• O reconhecimento de padrões se concentra no reconhecimento de padrões e
regularidades nos dados, embora em alguns casos seja considerado quase sinônimo
de aprendizado de máquina.
• A neurocomputação estuda um programa de software que usa uma rede neural,
simulando o cérebro humano, que pode ser treinada para executar tarefas específicas,
como reconhecimento de padrões.
FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big-
Data-Data-Mining>. Acesso em: 2 out. 2020.
13
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
• A história do Machine learning teve início com um jogo de damas que utilizava
inteligência artificial.
14
AUTOATIVIDADE
Os algoritmos de Machine learning podem ser aplicados para uma larga gama
de situações problema, desde detecção de fraudes fiscais, até recomendações,
porém isso só pode ser feito devido à grande quantidade de dados fornecidas
pelos datasets.
15
FONTE: MONTEIRO, R.; NOGUEIRA, R.; MOSER, G. Desenvolvimento de um sistema para a
classificação de Fakenews acoplado à etapa de ETL de um Data Warehouse de Textos de No-
tícias em língua Portuguesa. In: Anais da XV Escola Regional de Banco de Dados. SBC, 2019.
p. 131-140. Disponível em: https://sol.sbc.org.br/index.php/erbd/article/view/8486/8387.
Acesso em: 2 out. 2020.
E:__________________________________________________________________
____________________________________________________________________
T:__________________________________________________________________
____________________________________________________________________
P:__________________________________________________________________
____________________________________________________________________
FONTE: ALBERTO, T. C.; LOCHTER, J. V.; ALMEIDA, T. A. TubeSpam: Comment spam filtering
on YouTube. In: 2015 IEEE 14th International Conference on Machine learning and Applica-
tions (ICMLA). IEEE, 2015. p. 138-143. Disponível em: http://www.dt.fee.unicamp.br/~tiago/
papers/TCA_ICMLA15.pdf. Acesso em: 2 out. 2020.
16
E:__________________________________________________________________
____________________________________________________________________
T:__________________________________________________________________
____________________________________________________________________
P:__________________________________________________________________
____________________________________________________________________
17
18
TÓPICO 2 —
UNIDADE 1
1 INTRODUÇÃO
Ao desenvolver sistemas que utilizam Machine learning são diversos os
itens a serem considerados, desde a compreensão do conceito, as características
dos métodos, os tipos de métodos, as tarefas que podem ser realizadas, e as
estratégias para otimizar e avaliar o funcionamento.
Este livro didático tem uma abordagem prática sobre Machine learning e,
para facilitar a compreensão de cada um desses conceitos, primeiramente, vamos
preparar o nosso ambiente, conhecendo e instalando as principais ferramentas.
NOTA
2 LINGUAGEM DE PROGRAMAÇÃO
O desenvolvimento de sistemas inteligentes, por meio de algoritmos de
Machine learning, pode ser feito pelas diversas linguagens de programação. Entre
elas, podemos destacar as ferramentas MatLab, R, Scala e Python.
19
UNIDADE 1 — MACHINE LEARNING
NTE
INTERESSA
DICAS
21
UNIDADE 1 — MACHINE LEARNING
FONTE: O autor
NOTA
ATENCAO
FONTE: O Autor
DICAS
23
UNIDADE 1 — MACHINE LEARNING
4 GITHUB
No processo de desenvolvimento de software, seja de cunho comercial
ou desenvolvimento de sistemas inteligentes utilizando algoritmos de Machine
learning, o código passa por diversas alterações conforme o projeto evolui. Nesse
contexto, o versionamento de código permite que sejam geradas diversas versões
do código-fonte desenvolvido.
24
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING
E
IMPORTANT
DICAS
25
UNIDADE 1 — MACHINE LEARNING
5 DATASETS
O termo Dataset vem do idioma inglês e tem como significado “conjunto
de dados”. Em disciplinas relacionadas a bancos de dados (Relacionais, NoSQL,
entre outras), o tema pode ser discutido mais a fundo – com conceito de dados,
informação e conhecimento (Figura 13).
FONTE: <https://www.gapingvoid.com/blog/2019/03/05/want-to-know-how-to-turn-change-in-
to-a-movement/>. Acesso em: 20 maio 2020.
NTE
INTERESSA
• Dados: são fatos de um mundo real, que estão armazenados em algum lugar, mas não
contêm sentido; pode-se dizer que o dado é a informação em sua forma bruta, ou seja,
ainda não lapidada.
• Informação: é quando o dado tem algum tipo de organização, de tal modo que passa a
ter algum sentido. Pode-se dizer que a informação é composta por dados organizados,
mas de maneira compreensível.
• Conhecimento: vem de discernimento, prática e experiência de vida. O conhecimento
é extraído a partir dos dados e das informações armazenadas, sendo aquilo que não
pode ser visto por uma perspectiva humana, mas, sim, extraído.
26
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING
Nesse sentido, para essa aplicação, um conjunto de dados pode ter diversas
formas. Na sequência, veremos alguns exemplos de tipos de fontes de dados (datasets)
para algoritmos de Machine learning, bem como exemplos de suas aplicações.
FONTE: <https://pixabay.com/pt/photos/empreendedor-id%C3%A9ia-compet%C3%AAncia-1340649/>.
Acesso em: 2 out. 2020.
FONTE: <https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-
-and-deep-learning/>. Acesso em: 2 out. 2020.
• Reconhecimento facial.
• Detecção de objetos em vídeos.
• Reconhecimento por voz.
• Classificação de imagens.
• Identificação de objetos.
28
TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING
A área que utiliza textos com algoritmos de Machine learning faz parte do
NLP (Natural Language Processing, que significa “Linguagem de Processamento
Natural”). As tarefas de Machine learning são utilizadas na automatização de
diversos tipos de cenários com textos, por exemplo:
FONTE: O autor
29
UNIDADE 1 — MACHINE LEARNING
5.5 KAGGLE
Uma das fontes de conjuntos de dados que utilizaremos, no decorrer do
nosso estudo, é o Kaggle. Considerado um dos maiores repositórios de dados para
aplicações de Machine learning, também é uma rede social para cientistas de dados.
O Kaggle é uma plataforma feita para a comunidade de Data Science e Machine
learning, cujos propósitos são compartilhar conjuntos de dados, fomentar a
formação de novos Data-Scientists e engenheiros de Machine learning, e promover
competições entre profissionais da área (JORDÃO, 2018).
FONTE: O autor
DICAS
Acesse o Kaggle, crie sua conta e explore os mais diversos datasets que a
plataforma disponibiliza: https://www.kaggle.com/.
Esse site tem sido muito utilizado por pesquisadores em todo mundo como
um centralizador com diversos conjuntos de dados. Essa centralização permite
que possam ser comparados diferentes resultados, metodologias e abordagens
que utilizam o mesmo conjunto de dados.
FONTE: O autor
DICAS
31
UNIDADE 1 — MACHINE LEARNING
TUROS
ESTUDOS FU
Existem diversos outros sites que disponibilizam bases de dados, com duas
opções interessantes com dados brasileiros:
32
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
33
AUTOATIVIDADE
Machine learning pode ser utilizado para vários objetivos, para ofertar
programação de acordo com sua utilização na Netflix, saber o que estão
falando sobre sua marca no Twitter e detecção de fraudes em compras com
cartão de crédito, por exemplo.
FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo-
nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível
em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020
a) ( ) Matlab.
b) ( ) Python.
c) ( ) Java.
d) ( ) Todas as alternativas.
34
4 Leia o texto a seguir:
FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo-
nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível
em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020.
35
36
TÓPICO 3 —
UNIDADE 1
1 INTRODUÇÃO
Ao atuar no desenvolvimento de software, existe um conjunto de
ferramentas que auxilia a garantir a qualidade do software que chegará ao usuário
final. Há todo o arcabouço fornecido pela engenharia de software, levantamento
de requisitos, diagramas UML (Unified Modeling Language) e também técnicas de
teste de software – tudo para garantir que o software desenvolvido atenderá a
necessidade de um cliente, o usuário final.
2 COLETA DE DADOS
A etapa de coleta de dados é a primeira do processo de Machine learning e
pode ser simples, do ponto de vista de se conectar a um Dataset CSV ou a um banco
de dados relacional. No entanto, quando se trabalha com outros tipos de dados,
torna-se necessário criar scripts específicos para coletar dados desses cenários.
E
IMPORTANT
DICAS
4 ESCOLHA DO MODELO
O processo de desenvolvimento com Machine learning pode envolver um
ou vários algoritmos para sua implementação. Esse é o momento de selecionar
os algoritmos que serão avaliados e futuramente aplicados em sua aplicação de
Machine learning.
NOTA
39
UNIDADE 1 — MACHINE LEARNING
DICAS
Confira a lista com algumas das principais bases de dados acadêmicos que
podem ajudá-lo a encontrar artigos científicos: https://blog.doity.com.br/sites-de-artigos-
cientificos/.
DICAS
Para realizar um estudo mais aprofundado, você pode fazer a leitura do trabalho
de Aniceto (2016), disponível em: https://repositorio.unb.br/bitstream/10482/20522/1/2016_
Ma%c3%adsaCardosoAniceto.pdf.
40
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING
5 TREINO E TESTE
Você já sabe que os algoritmos de Machine learning aprendem com
determinado conjunto de dados. O objetivo desses algoritmos é realizar a predição
de um campo (chamado de output) com base em um conjunto de características
(input).
FONTE: <https://miro.medium.com/max/1200/1*ettn8qdhqVnhGGmnSrDg0A.png>.
Acesso em: 2 out. 2020.
DICAS
O dataset Breast Cancer Wisconsin pode ser acessado pelo link: https://archive.
ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic).
41
UNIDADE 1 — MACHINE LEARNING
42
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING
DICAS
43
UNIDADE 1 — MACHINE LEARNING
FONTE: O autor
TUROS
ESTUDOS FU
6 AVALIAÇÃO
Até aqui, aprendemos que é necessário que um conjunto de dados
consistente e limpo seja fatiado em treino e teste, para ser consumido por um
algoritmo de Machine learning.
44
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING
UNI
7 TUNING DE PARÂMETROS
Ao longo dos seus estudos, você conhecerá diversos métodos de Machine
learning, cada um com características específicas. A etapa de Tuning tem como
objetivo obter os melhores parâmetros, para que os algoritmos obtenham o melhor
desempenho possível.
8 PREDIÇÃO
A etapa de predição está relacionada com o funcionamento do Machine
learning em si, sendo feita quando toda a preparação dos dados foi realizada,
bem como o algoritmo foi selecionado e avaliado. Vale ressaltar que, durante
todo o processo, devem ser selecionados o algoritmo e os parâmetros com melhor
desempenho, de acordo com as medidas de avaliação.
45
UNIDADE 1 — MACHINE LEARNING
LEITURA COMPLEMENTAR
46
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING
“A JiLL pode lidar com solicitações como ‘Hey, JiLL, marcar uma reunião
semanal com minha equipe’ ou ‘Hey, JiLL, encontrar uma mesa desocupada no
terceiro andar esta tarde’”, explica o diretor de produtos digitais da JLL, Vinay Goel.
Goel diz que JiLL leva em consideração os conjuntos de dados da JLL sobre
edifícios, interações de usuários e transações em espaços físicos, que são processados
dentro do GCP, bem como containers do Kubernetes. “Com o tempo, esperamos
que a JiLL se torne uma plataforma essencial para centenas de habilidades que
ajudam os funcionários a melhorarem sua produtividade diária”, acrescenta Goel.
47
UNIDADE 1 — MACHINE LEARNING
48
TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING
Recomendação importante: por que criar algo que não é sua competência
principal? Antes de aterrissar na Tibco, a Mercedes-AMG Petronas usou um
software de visualização caseiro que se mostrou ineficiente demais para ser
49
UNIDADE 1 — MACHINE LEARNING
Parte do problema, segundo a Caliber, é que suas lojas, muitas vezes, não
tinham carros suficientes para a equipe consertar, resultando em pagamentos
inconsistentes. Isso fez com que o CEO Ashley Denison se perguntasse: e se a Caliber
pudesse prever quando um funcionário poderia querer sair e fazer intervenção?
50
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:
• A etapa de treino e teste é uma das mais importantes, pois é, nesse processo,
que será possível avaliar os métodos de Machine learning.
CHAMADA
51
AUTOATIVIDADE
Para que ocorra o armazenamento dos Tweets para posterior uso nas consultas,
é efetuada a coleta dos textos, assim como o pré-processamento, compondo a
etapa de ETL. Finalmente, após os dados pré-processados e limpos, podem ser
realizadas consultas OLAP para explorar o cubo de dados. Com os textos já
limpos, seleciona-se a data do registro e é efetuada sua formatação para que possa
ser inserido na base. A partir disso, os dados do Tweet estão preparados para que
possam ser “quebrados” e se efetue a Bag of Words. Com os dados do Tweet, as
palavras são quebradas pelo script e inseridas na base de dados multidimensional.
Caso a palavra já exista na base, é apenas atualizada sua frequência.
FONTE: SUTER, J. et al. Um Data Warehouse baseado no Twitter para análise de sentimento
em língua portuguesa: estudo de caso das eleições de 2018. In: Anais da XV Escola Regional
de Banco de Dados. Anais [...] SBC, 2019. p. 41-50. Disponível em: https://sol.sbc.org.br/index.
php/erbd/article/view/8477/8378. Acesso em: 2 out. 2020.
a) ( ) Coleta de dados.
b) ( ) Preparação de dados.
c) ( ) Escolha do modelo.
d) ( ) Divisão em treino/teste.
52
Uma coleção de 243 perguntas em português, curadas por profissionais
médicos, também foi incluída na base de conhecimento do chatbot Dra. Lara,
para ter capacidade de responder às perguntas comuns que as gestantes
normalmente querem saber, como a possibilidade de comer um determinado
elemento ou riscos associados à prática de um determinado exercício.
FONTE: CARVALHO, L. et al. Dra. Lara: assistente virtual de apoio e acompanhamento ao pré-
-natal. In: Conferências IADIS Ibero-Americanas WWW/Internet e Computação Aplicada.
Anais [...] 2019. Disponível em: https://www.researchgate.net/publication/338668367_DRA_
LARA_ASSISTENTE_VIRTUAL_DE_APOIO_E_ACOMPANHAMENTO_AO_PRE-NATAL. Acesso
em: 2 out. 2020.
a) ( ) Treino/teste.
b) ( ) Coleta de dados.
c) ( ) Preparação de dados.
d) ( ) Seleção.
FONTE: <https://towardsdatascience.com/spam-or-ham-introduction-to-natural-language-
-processing-part-2-a0093185aebd?gi=c3977479b17d>. Acesso em: 2 out. 2020.
53
FONTE: <https://towardsdatascience.com/spam-or-ham-introduction-to-natural-language-
-processing-part-2-a0093185aebd>. Acesso em: 2 out. 2020.
FONTE: DOMINGOS, P. O algoritmo mestre: como a busca pelo algoritmo de Machine lear-
ning definitivo recriará nosso mundo. Novatec Editora, 2017.
a) ( ) Tuning de parâmetros.
b) ( ) Predição de parâmetros.
c) ( ) Conjunto de parâmetros.
d) ( ) Aplicação de parâmetros.
54
REFERÊNCIAS
AGARAP, A. F. M. On breast cancer detection: an application of machine learning
algorithms on the wisconsin diagnostic dataset. In: Proceedings of the 2nd In-
ternational Conference on Machine Learning and Soft Computing. Proceedings
[…] 2018. p. 5-9.
ANICETO, M. C. Estudo comparativo entre técnicas de aprendizado de máqui-
na para estimação de risco de crédito. 2016, 106f. Dissertação de Mestrado (Pro-
grama de Pós-Graduação em Administração). Universidade de Brasília, Brasília,
2016. Disponível em: https://repositorio.unb.br/bitstream/10482/20522/1/2016_
Ma%c3%adsaCardosoAniceto.pdf. Acesso em: 2 out. 2020.
CAO, C. et al. Deep learning and its applications in biomedicine. Genomics,
Proteomics & Bioinformatics, v. 16, n. 1, p. 17-32, 2018.
CARDOSO, A.; LEITÃO, J.; TEIXEIRA, C. Using the Jupyter notebook as a
tool to support the teaching and learning processes in engineering courses.
ICL 2018: The Challenges of the Digital Transformation in Education. Springer,
Cham, 2018. p. 227-236.
CHOW, M. Inteligência artificial e machine learning: o caminho para a relevância
em escala. Think with Google, out. 2017. Disponível em: https://www.thinkwithgoo-
gle.com/intl/pt-br/advertising-channels/novas-tecnologias/inteligencia-artificial-e-
-machine-learning-o-caminho-para-relevancia-em-escala/. Acesso em: 20 abr. 2020.
COMPUTERWORLD. Python: 10 motivos para aprender a linguagem em 2019.
COMPUTERWORLD. 15 set. 2019. Disponível em: https://computerworld.com.
br/2019/09/15/python-10-motivos-para-aprender-a-linguagem-em-2019/. Acesso
em: 20 abr. 2020.
ERBS, S. Preparação e Análise Exploratória de Dados. Indaial: UNIASSELVI, 2020.
FAYYAD, U.; PIATETSKY-SHAPIRO, G.; SMYTH, P. From data mining to
knowledge discovery in databases. AI Magazine, v. 17, n. 3, p. 37-37, 1996.
GÉRON, A. Hands-on machine learning with Scikit-Learn, Keras, and Ten-
sorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. 2. ed.
O’Reilly Media, 2019.
GIORDANI, V. A. et al. Automatização do processo de entrega de softwres. 2019,
75f. Monografia. Universidade Federal de Santa Catarina, Florianópolis, 2019.
Disponível em: https://repositorio.ufsc.br/bitstream/handle/123456789/200137/
PFC%20Vito%20Archangelo%20Giordani_2019-1.pdf?sequence=1&isAllowed=y.
Acesso em: 2 out. 2020.
55
JORDÃO, R. F. P. Um estudo em larga-escala de repositórios Open Source no
Github que utilizam containers. 2018, 44f. Monografia. Centro de Informáti-
ca, Universidade Federal de Pernambuco, Recife, 2018. Disponível em: https://
www.cin.ufpe.br/~tg/2018-2/TG_SI/rfpj.pdf. Acesso em: 2 out. 2020.
LOSARWAR, V.; JOSHI, M. Data preprocessing in web usage mining. In:
International Conference on artificial intelligence and embedded systems
(ICAIES’2012). Proceedings […] Singapore, jul. 2012.
MALL, R. et al. Representative subsets for big data learning using k-NN graphs.
In: 2014 IEEE INTERNATIONAL CONFERENCE ON BIG DATA. Proceedings
[…] IEEE, 2014. p. 37-42. Disponível em: https://ieeexplore.ieee.org/stamp/stamp.
jsp?tp=&arnumber=7004210. Acesso em: 2 out. 2020.
MENEZES, S. et al. Mineração em grandes massas de dados utilizando hadoop
mapreduce e algoritmos bio-inspirados: Uma revisão sistemática. Revista de
Informática Teórica e Aplicada, v. 23, n. 1, p. 69-101, 2016.
MINSKY, M.; PAPERT, S. Perceptrons – an introduction to computational geo-
metry. Cambridge: MIT Press, 1969. Cited on, p. 1, 1990.
MITCHELL, T. M. et al. Machine learning. McGraw-Hill, 1997. Disponível em:
http://profsite.um.ac.ir/~monsefi/machine-learning/pdf/Machine-Learning-Tom-
-Mitchell.pdf. Acesso em: 2 out. 2020.
MONARD, M. C.; BARANAUSKAS, J. A. Conceitos sobre aprendizado de má-
quina. Sistemas inteligentes-fundamentos e aplicações, v. 1, n. 1, p. 32, 2003.
MOREIRA, M. P. Algoritmos de Machine Learning Aplicado ao Marketing. In:
XV SEMANA CIENTÍFICA DA UNILASALLE CANOAS – SEFIC. Anais [...]
Unilasalle Canoas, 2019, 2020.
NOGUEIRA, R. R. Business Intelligence na prática: Modelagem Multidimensio-
nal e Data Warehouse. Indaial: UNIASSELVI, 2020.
QUINLAN, J. R. C4.5: Programming for machine learning. São Francisco: Mor-
gan Kaufmann, 1993. p. 48.
QUINLAN, J. R. Induction of decision trees. Machine learning, v. 1, n. 1, p.
81-106, 1986. Disponível em: https://link.springer.com/content/pdf/10.1007/
BF00116251.pdf. Acesso em: 2 out. 2020.
QUORA. What is machine learning and how it is linked to Big Data/Data Mi-
ning? 2015. Disponível em: https://www.quora.com/What-is-machine-learning-
-and-how-it-is-linked-to-Big-Data-Data-Mining. Acesso em: 20 abr. 2020.
ROSA, A. L. da. Classificação de imagens de frutas utilizando aprendizado de
máquina. 2019, 74f. Monografia. Departamento de Engenharia Elétrica e Eletrô-
nica, Universidade Federal de Santa Catarina, Florianópolis, 2019. Disponível
em: https://repositorio.ufsc.br/bitstream/handle/123456789/197598/TCC-Ayrton-
-Lima.pdf?sequence=1&isAllowed=y. Acesso em: 2 out. 2020.
56
ROSENBLATT, F. The perceptron, a perceiving and recognizing automaton.
Project Para. Cornell Aeronautical Laboratory, 1957. Disponível em: https://blogs.
umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf. Acesso em: 2 out. 2020.
SAMUEL, A. L. Some studies in machine learning using the game of checkers.
IBM Journal of Research and Development, v. 3, n. 3, p. 210-229, 1959. Dis-
ponível em: https://hci.iwr.uni-heidelberg.de/system/files/private/downlo-
ads/636026949/report_frank_gabel.pdf. Acesso em: 5 out. 2020.
SHOBHA, G.; RANGASWAMY, S. Machine learning. In: GUDIVADA, V. N.;
RAO, C. R. (Eds.). Handbook of Statistics. Amsterdam: Elsevier, 2018. p. 197-228.
SILVERMAN, R. Git – Guia prático. São Paulo: Novatec, 2013.
STANGE, R. L. Adaptatividade em aprendizagem de máquina: conceitos e
estudo de caso. 2011, 98f. Dissertação (Mestrado em Engenharia Elétrica). Uni-
versidade de São Paulo, São Paulo, 2011. Disponível em: https://www.teses.usp.
br/teses/disponiveis/3/3141/tde-02072012-175054/publico/Dissertacao_RLStan-
ge_2011_Revisada.pdf. Acesso em: 5 out. 2020.
SU, X. et al. Automated machine learning based on radiomics features predicts
H3 K27M mutation in midline gliomas of the brain. Neuro-oncology, v. 22, n. 3,
p. 393-401, 2020. Disponível em: https://academic.oup.com/neuro-oncology/arti-
cle-pdf/22/3/393/32794818/noz184.pdf. Acesso em: 5 out. 2020.
VANDERPLAS, J. Python data science handbook: Essential tools for working
with data. O’Reilly Media, 2016.
VIEIRA, V. A. As tipologias, variações e características da pesquisa de marke-
ting. Revista da FAE, v. 5, n. 1, p. 61-70, 2002. Disponível em: https://revistafae.
fae.edu/revistafae/article/download/449/344. Acesso em: 5 out. 2020.
WEITZEL, L.; SPIES, J. H. L.; SANTOS, M. M. Análise do GitHub como rede
social e rede de colaboração. In: 6ª CONFERÊNCIA IBERO-AMERICANA DE
COMPUTAÇÃO APLICADA (CIACA), 2017. Anais [...] Algarve, Portugal, 2017.
p. 252-260. Disponível em: http://www.iadisportal.org/digital-library/mdownlo-
ad/an%C3%A1lise-do-github-como-rede-social-e-rede-de-colabora%C3%A7%-
C3%A3o. Acesso em: 5 out. 2020.
ZUBELLI, F. S. Métodos de inteligência computacional para clusterização de
consumidores no setor de energia elétrica. 2017, 86f. Monografia. Universidade
Federal do Rio de Janeiro, Rio de Janeiro, 2017. Disponível em: http://monogra-
fias.poli.ufrj.br/monografias/monopoli10022747.pdf. Acesso em: 5 out. 2020.
57
58
UNIDADE 2 —
CLASSIFICAÇÃO
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em quatro tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.
CHAMADA
59
60
TÓPICO 1 —
UNIDADE 2
1 INTRODUÇÃO
Em aprendizado de máquina, a classificação é uma tarefa que tem como
objetivo aprender com os dados e atribuir rótulos (classes). A classificação é
uma tarefa de Machine learning que tem como característica o aprendizado
supervisionado, no qual é atribuído um rótulo (classe) aos objetos com base nos
atributos (HARRISON, 2020).
61
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: O autor
62
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO
3 CENÁRIOS DE CLASSIFICAÇÃO
A classificação é uma tarefa de aprendizado de máquina que gera um
algoritmo preditor com base em dados previamente categorizados. No estudo
dos cenários de sua aplicação, serão descritos os dois tipos de tarefas: classificação
binária e classificação multiclasse.
4 FERRAMENTAS COMPLEMENTARES
Com a ascensão dos métodos de Big Data e da aplicação de Machine
learning nos mais diversos cenários de suporte à decisão, tais recursos começaram
ser explorados cada vez mais em diversas aplicações, e não somente em cenários
de suporte à decisão.
DICAS
DICAS
4.1 LISTAS
Na linguagem de programação Python, o objeto lista é a sequência mais
geral fornecida. As listas são coleções ordenadas de objetos de tipo arbitrário e não
têm tamanho fixo (LUTZ, 2013). Também são mutáveis, podem ser modificadas
no local, atribuindo deslocamentos, bem como uma variedade de chamadas de
método de lista.
65
UNIDADE 2 — CLASSIFICAÇÃO
Uma lista é uma estrutura de dados que contém uma coleção ordenada
de itens, ou seja, você pode armazenar uma sequência de itens em uma lista. Para
abrir um dataset no formato CSV (comma separated values) e transformá-lo em uma
lista, confira o Quadro 4.
1 import csv
2 lista1 = []
3 lista2 = []
4 with open(exemplo.csv') as csvfile:
5 readCSV = csv.reader(csvfile, delimiter=',')
6 dates = []
7 colors = []
8 for linha in readCSV:
9 elemento1 = linha[0]
10 elemento2 = linha[1]
11
12 lista1.append(elemento1)
13 lista2.append(elemento2)
14
15 print(lista2)
16 print(lista2)
FONTE: O autor
DICAS
4.2 NUMPY
O NumPy é o pacote fundamental para a computação científica em Python.
É uma biblioteca Python que fornece um objeto de matriz multidimensional,
vários objetos derivados (como matrizes e matrizes mascaradas) e uma variedade
de rotinas para operações rápidas em matrizes (NASCIMENTO, 2019). Segundo
Bressert (2012), tais rotinas incluem manipulação matemática, lógica, de formas,
classificação, seleção, entrada/saída, transformadas discretas de Fourier, álgebra
linear básica, operações estatísticas básicas, simulação aleatória, e muito mais.
66
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO
FONTE: O autor
ATENCAO
4.3 ANACONDA
O Anaconda é um gerenciador de pacotes e ambiente para desenvolvimento
de “data science” que utiliza as linguagens Python e R. A plataforma conta com
uma coleção de mais de 1.500 pacotes de código aberto. O Anaconda é gratuito e
fácil de instalar, e oferece suporte gratuito à comunidade (SCHLICHTING, 2020).
67
UNIDADE 2 — CLASSIFICAÇÃO
DICAS
4.4 SCIPY
Segundo Maldaner (2019), o SciPy é a extensão responsável por adicionar
ferramentas para otimização, funções especiais, processamento de imagens,
integração numérica, resolução de equações diferenciais ordinárias, além de
possibilitar a realização de operações com os arranjos introduzidos pelo NumPy.
ATENCAO
Para saber mais sobre o SciPy, sua integração com Numpy, bem como seu
funcionamento, de modo geral, acesse o Google Colab Notebooks: https://colab.research.
google.com/drive/1leW5OOiXXQ65DEUM81CKsFSfv-dh018c?usp=sharing.
68
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO
4.5 SCIKIT-LEARN
Scikit-learn é um módulo Python que integra uma ampla gama de algoritmos
de aprendizado de máquina de última geração para problemas supervisionados e
não supervisionados de média escala. Tal pacote se concentra em levar o aprendizado
de máquina para não especialistas, utilizando uma linguagem de alto nível de uso
geral. A ênfase é colocada na facilidade de uso, desempenho, documentação e
consistência da Interface de Programação de Aplicações (API, do inglês Application
Programming Interface; PEDREGOSA et al., 2011).
DICAS
69
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.
Acesso em: 3 nov. 2020.
FONTE: <https://miro.medium.com/max/500/1*t1vf-ofJrJqtmam0KSn3EQ.png>.
Acesso em: 3 nov. 2020.
70
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO
71
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: O autor
72
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
73
AUTOATIVIDADE
a) ( ) É um método supervisionado.
b) ( ) É um método não supervisionado.
c) ( ) É um método dessupervisionado.
d) ( ) É um método visionado.
a) ( ) Classificação binária.
b) ( ) Classificação unária.
c) ( ) Classificação ternária.
d) ( ) Classificação multiclasse.
a) ( ) Classificação multiclasse.
b) ( ) Classificação binária.
c) ( ) Classificação unária.
d) ( ) Classificação ternária.
a) ( ) Scikit-learn.
b) ( ) Pandas.
c) ( ) Matlab.
d) ( ) PIP.
74
5 Python é uma linguagem básica, simples, utilizada em diversos cenários
da computação, com destaque para projetos de Machine learning. Sobre o
Python, assinale qual biblioteca é utilizada para a visualização de dados:
a) ( ) MatplotLib.
b) ( ) Scikit-learn.
c) ( ) Pandas.
d) ( ) Numpy.
75
76
TÓPICO 2 —
UNIDADE 2
1 INTRODUÇÃO
Os métodos de classificação baseados em distância consideram
proximidade entre dados em relação ao espaço cartesiano. Esse tipo de método
considera que dados similares tendem a estar em uma mesma região no espaço
de entrada.
77
UNIDADE 2 — CLASSIFICAÇÃO
Em que D (x, y) é a distância entre dois objetos (x e y), dada pela equação,
na qual i representa as posições no ponto cartesiano de cada objeto (x e y) e n
é número de ocorrências. A seguir, veremos a implementação da distância
euclidiana utilizando Python (Quadro 11) e NumPy.
1 import numpy as np
2
3 x = [1, 2.5, 3.8, 4.5]
4 y = [0.5, 4.5, 9.6, 3.4]
5
6 def dist_euclidiana_np(x, y):
7 x, y = np.array(x), np.array(y)
8 diff = x – y
9 quad_dist = np.dot(diff, diff)
10 return math.sqrt(quad_dist)
11
12 print('%.2f' % dist_euclidiana_np(x, y))
FONTE: O autor
78
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
2.1 KNN
O método do vizinho mais próximo (KNN, do inglês K-Nearest Neighbors)
trabalha de acordo com a proximidade, ou seja, rotula um determinado objeto
conforme os objetos mais próximos. O número de objetos a serem agrupados são
os K vizinhos mais próximos.
79
UNIDADE 2 — CLASSIFICAÇÃO
Para isso, os dados são dispostos por meio de gráficos que compõem
o plano cartesiano e os pares ordenados. Um sistema de eixos ortogonais é
constituído por dois eixos perpendiculares, Ox e Oy, que têm a mesma origem.
FONTE: O autor
80
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
FONTE: O autor
Vamos gerar uma lista com os valores que serão utilizados no decorrer
do exemplo. Como comando range no intervalo indicado, o nosso conjunto de
valores será de -10 até 10 para que possamos ter a percepção de como a função irá
se comportar em um conjunto negativo e positivo.
1 import numpy as np
2 import matplotlib.pyplot as plt
3 x = np.array(range(-10,11))
4 plt.plot(x)
5 plt.show()
FONTE: O autor
FONTE: O autor
81
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: O autor
82
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
FONTE: O autor
83
UNIDADE 2 — CLASSIFICAÇÃO
Nota-se que, no exemplo do Quadro 17, cada ponto é composto por duas
dimensões (x,y). Desse modo, ao transcrever um somatório que se inicializa em
1 e vai até n, n = 2 (duas dimensões). Ao deduzir a fórmula para esses valores,
obtemos a distância apresentada na Figura 14.
FONTE: O autor
FONTE: O autor
84
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
10 plt.plot([1,3],[2,6], '-')
11
12
13
14 plt.show()
FONTE: O autor
FONTE: O autor
FONTE: <http://computacaointeligente.com.br/algoritmos/k-vizinhos-mais-proximos/>.
Acesso em: 3 nov. 2020.
85
UNIDADE 2 — CLASSIFICAÇÃO
Quando iniciamos, falamos sobre números e pontos. Para ficar mais clara a
aplicação, vamos criar um conjunto de dados sintético e trabalhar nele. O conjunto
de dados (Quadro 19) representa uma base de dados com pessoas, que, a partir
de sua renda familiar e idade, receberam créditos pessoais. A primeira coluna
representa a idade, a segunda mostra a renda mensal e a terceira, que pode ser
chamada de classe ou rótulo, determina se o crédito foi concedido ou não.
1 credito = np.array([
2 [75,4600, "positivo"],
3 [21,850,"negativo"],
4 [39,840,"negativo"],
5 [45,1500,"negativo"],
6 [47,3200,"positivo"],
7 [51,3400,"positivo"],
8 [47,1200,"negativo"],
9 [25,1500,"negativo"],
10 [30,2800,"negativo"],
12 [69,1500,"positivo"],
13 [69,1800,"positivo"],
14 [50,2500,"positivo"],
15 [39,1700,"negativo"],
16 [42,1900,"negativo"],
17 [42,1900,"negativo"],
18
19 ])
FONTE: O autor
86
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
12 plt.plot(negativos[:,0].astype(int) ,negativos[:,1].as-
13 type(int),'r+',mfc='none')
14 salario = int(input("Informe o salário"))
15 idade = int(input("Informe a idade"))
17
18 plt.plot(idade, salario,'go',mfc='none')
19
20 plt.plot(positivos[:,0].astype(int),positivos[:,1].astype(int),
21 'bo',mfc='none')
22 plt.show()
FONTE: O autor
FONTE: O autor
87
UNIDADE 2 — CLASSIFICAÇÃO
1 def distancia_euclidiana(x,y):
2 x1 = x[0].astype(float)
3 x2 = x[1].astype(float)
4 y1 = y[0]
5 y2 = y[1]
6 distancia = math.sqrt(pow(x2-y2,2) + pow(x1-y1,2))
7 print("Valor de X =",x[0:2], " valor de Y=",y," D(x,y)=",
distancia )
8
9 return distancia
FONTE: O autor
88
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
DICAS
Para acessar o código-fonte, bem como o passo a passo das etapas realizadas,
acesse o Google Colab Notebooks: https://colab.research.google.com/drive/1u2_R4Ch-tNC
5j_98W6fRYMjvnqe0N9h_?usp=sharing.
89
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: <https://www.kaggle.com/anniepyim/essential-classification-algorithms-explained>.
Acesso em: 3 nov. 2020.
1 X = credito[0:len(credito),0:2]
2 y = credito[0:len(credito),2:3]
FONTE: O autor
90
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
1 novo_campo = (np.array([150,0]).reshape(1,-1))
2 print('Ao realizar a predição o valor será:
'+classificador.predict(novo_campo)[0])
FONTE: O autor
E
IMPORTANT
• o modelo não foi avaliado, ou seja, não sabemos a sua capacidade de acertar ou errar;
• o K utilizado foi 3, conforme visto no seguinte trecho “n_neighbors=3”; esse valor
pode ser alterado em busca de uma maior efetividade do método;
• o conjunto de dados foi sintético, ou seja, criado apenas para uma simulação.
1 import numpy as np
2 from sklearn import datasets
3 iris = datasets.load_iris()
4 X = iris.data[:, [2, 3]]
5 y = iris.target
FONTE: O autor
91
UNIDADE 2 — CLASSIFICAÇÃO
E
IMPORTANT
Segundo Vaz (2019), tais técnicas têm o mesmo objetivo: transformar todas as
variáveis na mesma ordem de grandeza. A diferença básica é que padronizar as variáveis irá
resultar em uma média igual a 0 e um desvio padrão igual a 1. Já normalizar tem como objetivo
colocar as variáveis dentro do intervalo de 0 e 1; caso tenham resultados negativos, -1 e 1.
FONTE: O autor
FONTE: O autor
92
TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA
FONTE: O autor
93
UNIDADE 2 — CLASSIFICAÇÃO
94
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
95
AUTOATIVIDADE
FONTE: O autor
a) ( ) O número de objetos.
b) ( ) Um ponto no espaço
c) ( ) O somatório do espaço.
d) ( ) O erro de desvio.
FONTE: O autor
96
a) Considerando que K = 6, qual é a classe da amostra vermelha?
b) Considerando que K = 3, qual é a classe da amostra vermelha?
c) Considerando que K = 1, qual é a classe da amostra vermelha?
97
98
TÓPICO 3 —
UNIDADE 2
1 INTRODUÇÃO
A probabilidade está presente em nosso cotidiano em diversas maneiras,
seja em situações corriqueiras, como a probabilidade da chuva ou de se pegar
trânsito, seja em cenários mais complexos, como apostas e investimento em
mercado de valores.
2 MÉTODOS PROBABILÍSTICOS
99
UNIDADE 2 — CLASSIFICAÇÃO
100
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
101
UNIDADE 2 — CLASSIFICAÇÃO
1 def separate_by_class(dataset):
2 separated = dict()
3 for i in range(len(dataset)):
4 vector = dataset[i]
5 class_value = vector[-1]
6 if (class_value not in separated):
7 separated[class_value] = list()
8 separated[class_value].append(vector)
9 return separated
10 # Testando a separação dos dados
11 dataset = [[3.393533211,2.331273381,0],
12 [3.110073483,1.781539638,0],
13 [1.343808831,3.368360954,0],
103
UNIDADE 2 — CLASSIFICAÇÃO
14 [3.582294042,4.67917911,0],
15 [2.280362439,2.866990263,0],
16 [7.423436942,4.696522875,1],
17 [5.745051997,3.533989803,1],
18 [9.172168622,2.511101045,1],
19 [7.792783481,3.424088941,1],
20 [7.939820817,0.791637231,1]]
21 separated = separate_by_class(dataset)
22 for label in separated:
23 print(label)
24 for row in separated[label]:
25 print(row)
104
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
105
UNIDADE 2 — CLASSIFICAÇÃO
Por fim, vamos realizar a aplicação do método com ênfase no Dataset Iris. Para
isso, será necessário implementar o método de predição, responsável por analisar os
cálculos realizados anteriormente, com ênfase na classificação dos dados.
106
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
1 X = credito[0:len(credito),0:2]
2 y = credito[0:len(credito),2:3]
FONTE: O autor
107
UNIDADE 2 — CLASSIFICAÇÃO
1 novo_campo = (np.array([150,0]).reshape(1,-1))
2 print('Ao realizar a predição o valor será: '+classificador_
NB.predict(novo_campo)[0])
FONTE: O autor
1 import numpy as np
2 from sklearn import datasets
3 from sklearn.model_selection import train_test_split
4 iris = datasets.load_iris()
5 X = iris.data[:, [2, 3]]
6 y = iris.target
7 X_train, X_test, y_train, y_test = train_test_split(X, y,
8 test_size=0.3, random_state=0)
9 print('Existem {} amostras de treino e {} amostras de tes-
10 te'.format(
11 X_train.shape[0], X_test.shape[0]))
FONTE: O autor
DICAS
108
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
DICAS
109
UNIDADE 2 — CLASSIFICAÇÃO
3 OUTROS CLASSIFICADORES
A tarefa de classificação, seja binária ou multiclasse, está presente nos
mais diversos cenários de aplicação, como de reconhecimento de caracteres,
análise de sentimento, categorização de textos, entre muitos outros. Para obter
melhor eficácia nesses cenários, torna-se necessário conhecer os mais diversos
métodos de classificação.
FONTE: <https://usuariosdoexcel.files.wordpress.com/2011/07/conf_estat_02.jpg>.
Acesso em: 3 nov. 2020.
110
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
DICAS
A regressão logística pode ser utilizada para modelar uma relação não
linear entre a variável resposta e as variáveis explicativas. Entretanto, essa relação
não linear tem que ser explicitada pelo desenvolvedor do modelo. O método de
regressão logística utiliza a probabilidade de algum evento que ocorre como
uma função de regressão linear, para descobrir a categoria de uma determinada
variável. Esse método é considerado um método de aprendizado off-line.
111
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: O autor
DICAS
FONTE: <https://jamesmccaffrey.files.wordpress.com/2017/04/supportvectormachineequations.jpg>.
Acesso em: 3 nov. 2020.
FONTE: O autor
DICAS
3.4 PERCEPTRON
A versão inicial do algoritmo do Perceptron foi proposta na década de
1950 por Rosenblatt (1957). Esse algoritmo, em sua versão inicial, teve como
objetivo replicar o funcionamento da mente humana. A implementação inicial é
para a aprendizagem de redes neurais simples, de uma camada.
FIGURA 31 – PERCEPTRON
113
UNIDADE 2 — CLASSIFICAÇÃO
FONTE: O autor
DICAS
114
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
LEITURA COMPLEMENTAR
# Imports
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
115
UNIDADE 2 — CLASSIFICAÇÃO
# Passo 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Passo 3 - Flattening
classifier.add(Flatten())
Usamos uma função log loss com “entropia binária cruzada”, pois ela
funciona bem com funções sigmoides. Nossa métrica será a acurácia, pois essa é
nossa maior preocupação no treinamento desse tipo de modelo.
# Compilando a rede
classifier.compile(optimizer = 'adam', loss = 'binary_crossen-
tropy', metrics = ['accuracy'])
116
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
Pré-processamento
validation_set = validation_datagen.flow_from_directory('data-
set_validation',
target_
size = (64, 64),
batch_
size = 32,
class_
mode = 'binary')
117
UNIDADE 2 — CLASSIFICAÇÃO
Treinamento
Fazendo previsões
Vamos agora testar nosso modelo treinado com imagens que ele ainda
não viu e que estão nos dados de teste.
# Primeira Imagem
import numpy as np
from keras.preprocessing import image
if result[0][0] == 1:
prediction = 'Cachorro'
else:
prediction = 'Gato'
Image(filename='dataset_teste/2216.jpg')
118
TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO
Perfeito! Nosso modelo recebeu uma imagem que nunca tinha visto antes
e, com base no que aprendeu durante o treinamento, foi capaz de classificar a
imagem como de um cachorro! Na prática, isso é o que acontece:
Conclusão
119
UNIDADE 2 — CLASSIFICAÇÃO
CHAMADA
120
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:
121
AUTOATIVIDADE
a) Indique o significado de C.
b) Indique o significado de x.
c) Indique o significado de P (c | x).
d) Indique o significado de P (C)
e) Indique o significado de P (x | c)
f) Indique o significado de P (x).
a) ( ) Classificador_RL = LinearRegression()
b) ( ) Classificador_RL = RegLIn()
c) ( ) Classificador_RL = RegressionMB()
d) ( ) Classificador_RL = Bernoullli()
122
REFERÊNCIAS
ABEEL, T.; VAN DE PEER, Y.; SAEYS, Y. Java-ml: A Machine learning library.
Journal of Machine learning Research, v. 10, p. 931-934, 2009. Disponível em:
https://biblio.ugent.be/publication/697734/file/709516.pdf. Acesso em: 3 nov. 2020.
AHMED, Z. et al. Machine learning at Microsoft with ML. NET. In: PROCEE-
DINGS OF THE 25TH ACM SIGKDD INTERNATIONAL CONFERENCE ON
KNOWLEDGE DISCOVERY & DATA MINING. Proceedings […] KDD, 2019. p.
2448-2458.
BRESSERT, E. SciPy and NumPy: an overview for developers. O’Reilly Media, 2012
DUDA, R.; HART, P. Bayes Decision Theory. [S.l.]: John Wiley & Sons, 1973. p. 10-43.
123
www.researchgate.net/profile/Andre_Maletzke/publication/272086195_Mode-
los_de_Regressao_para_a_Previsao_de_Series_Temporais_por_meio_do_Algo-
ritmo_kNN-TSP/links/54da02e70cf25013d043a635/Modelos-de-Regressao-para-
-a-Previsao-de-Series-Temporais-por-meio-do-Algoritmo-kNN-TSP.pdf. Acesso
em: 3 nov. 2020.
124
OLIVEIRA, L. M. de. Classificação de dados sensoriais de cafés especiais com
resposta multiclasse via Algoritmo Boosting e Bagging. Dissertação (Mestrado
em Estatística e Experimentação Agropecuária) ¬– Pós-graduação em Estatística
e Experimentação Agropecuária, Universidade Federal de Lavras, Lavras, 2016.
Disponível em: http://www.sbicafe.ufv.br/bitstream/handle/123456789/8506/
Dissertacao_Lilian%20Maria%20de%20Oliveira.pdf?sequence=1&isAllowed=y.
Acesso em: 3 nov. 2020.
125
TAN, P.-N.; STEINBACH, M.; KUMAR, V. Introduction to data mining. Pear-
son Education India, 2016.
VOOO. 6 passos fáceis para aprender o algoritmo Naive Bayes. Vooo, 2016.
Disponível em: https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-
-algoritmo-naive-bayes-com-o-codigo-em-python. Acesso em: 20 set. 2020.
126
UNIDADE 3 —
REGRESSÃO
OBJETIVOS DE APRENDIZAGEM
A partir do estudo desta unidade, você deverá ser capaz de:
PLANO DE ESTUDOS
Esta unidade está dividida em três tópicos. No decorrer da unidade, você
encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado.
CHAMADA
127
128
TÓPICO 1 —
UNIDADE 3
1 INTRODUÇÃO
Já pensou como seria o seu dia se pudesse prever se vai chover? Ou qual a
temperatura exata? Ou, até mesmo, ir além e poder prever quais ações irão subir
e quais irão cair no mercado da Bolsa de Valores? Essas informações do nosso
cotidiano podem ser obtidas por meio de algoritmos de regressão.
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 x = np.array([1,2,3,4,5,6,7,8,9,10])
5 y = np.array([2,3,4,5,6,7,8,9,10,11])
130
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO
6
7 plt.plot(x,y)
8 plt.show()
FONTE: O autor
FONTE: O autor
131
UNIDADE 3 — REGRESSÃO
3 MÉTRICAS
As métricas de avaliação têm como objetivo verificar a eficácia do modelo,
comparando com os dados originais. Nos modelos de classificação, os valores são
discretos, por isso as métricas são objetivas, ou seja, conseguimos mensurar se o
modelo acertou ou não a predição para uma determinada amostra.
132
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO
133
UNIDADE 3 — REGRESSÃO
FONTE: <https://miro.medium.com/max/335/1*Z6lLZBRCwsMZWVvrY7-HYQ.png>.
Acesso em: 5 nov. 2020.
Vamos conferir como scikit-learn implementa e utilizar o MAE.
134
TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO
FONTE: <https://minerandodados.com.br/wp-content/uploads/2020/02/image-1.png>.
Acesso em: 5 nov. 2020.
135
RESUMO DO TÓPICO 1
Neste tópico, você aprendeu que:
136
AUTOATIVIDADE
1 Regressão é uma tarefa que permite gerar modelos preditivos para valores
contínuos. Tendo como objetivo encontrar a relação entre um conjunto de
atributos de entrada (variáveis preditoras) e um atributo-meta contínuo.
Assinale a alternativa CORRETA:
a) ( ) É um método supervisionado.
b) ( ) É um método não supervisionado.
c) ( ) É um método desupervisionado.
d) ( ) É um método visionado.
FONTE: NERY, C. V. M.; OLIVEIRA, D. B.; ABREU, L. H. G. Estudo comparativo entre os índices
NDVI obtidos a partir dos sensores Landsat 5-TM e Resourcesat-liss III. Caminhos de Geogra-
fia, v. 14, n. 46, 2013.
137
5 Python é uma linguagem básica e simples, utilizada em diversos cenários
da computação, com destaque para projetos de Machine learning. Sobre o
Python, assinale a alternativa CORRETA que indica o elemento utilizado
para importar as métricas de avaliação:
a) ( ) sklearn.metrics.
b) ( ) Scikit-learn.
c) ( ) Pandas.
d) ( ) Numpy.
138
TÓPICO 2 —
UNIDADE 3
REGRESSÃO LINEAR
1 INTRODUÇÃO
A regressão é uma tarefa de Machine learning que permite gerar modelos
preditivos para valores contínuos. Este livro tem como objetivo conhecer os
principais modelos de regressão para chegar aos menores erros possíveis.
FONTE: <https://www.kdnuggets.com/wp-content/uploads/prediction-error.png>.
Acesso em: 5 nov. 2020.
139
UNIDADE 3 — REGRESSÃO
2 UTILIZANDO REGRESSÃO
O método de regressão linear é uma tentativa de modelar uma equação
matemática linear que descreva o relacionamento entre duas variáveis. Em
situações que envolvem duas variáveis, existem várias maneiras de aplicar essas
equações de regressão, que, devido a sua natureza, irá modelar apenas problemas
lineares (RODRIGUES; MEDEIROS; GOMES, 2013).
FONTE: <https://miro.medium.com/max/700/0*oHDc6Fuie1d19a4d.jpg>.
Acesso em: 5 nov. 2020.
140
TÓPICO 2 — REGRESSÃO LINEAR
f(x) = a + bx (Eq. 1)
ŷ = a + bx (Eq. 2)
ŷ = α + βx (Eq. 3)
141
UNIDADE 3 — REGRESSÃO
Conhecendo a equação para obter f(x), bem como para chegar nos valores
de a e b, vamos a um exemplo prático para descobrirmos como calcular cada um
desses valores. Considere a idade como x e o nível de glicose como y.
Nível de
Idade (x) (x · y) x² y²
glicose (y)
43 99 4257 1849 9801
21 65 1365 441 4225
25 79 1975 625 6241
42 75 3150 1764 5625
57 87 4959 3249 7569
59 81 4779 3481 6561
247 486 20485 11409 40022
FONTE: Adaptada de Glen (2013)
142
TÓPICO 2 — REGRESSÃO LINEAR
FONTE: O autor
FONTE: O autor
x y ŷ
43 99 82
21 65 74
25 79 75
42 75 82
57 87 88
59 81 89
FONTE: O autor
143
UNIDADE 3 — REGRESSÃO
FONTE: O autor
E
IMPORTANT
144
TÓPICO 2 — REGRESSÃO LINEAR
Para obter o erro entre o valor previsto e o valor real, a distância entre
esses pontos é | yi −a−bxi | e a soma dos quadrados dessas distâncias pode ser
determinado pela fórmula apresentada na Figura 17.
145
UNIDADE 3 — REGRESSÃO
ŷ = θ₀ + θ1*x (Eq. 4)
• ŷ: valor previsto;
• n: número de características;
• xi: é o valor da i-ésima característica;
• θj: são os parâmetros a serem determinados.
146
TÓPICO 2 — REGRESSÃO LINEAR
θ₀ = 1.5 θ₀ = 0 θ₀ = 1
θ₁ = 0 θ₁ = 0.5 θ₁ = 0.5
FONTE: <https://miro.medium.com/max/700/1*1tYoJysJpVbjKUM7ix46QQ.png>.
Acesso em: 5 nov. 2020.
147
UNIDADE 3 — REGRESSÃO
FONTE: <https://miro.medium.com/max/700/1*mYZOUDyaqSAKWst-2lEdbQ.png>.
Acesso em: 5 nov. 2020.
FONTE: <https://miro.medium.com/max/700/1*0JVWM37k7_lOAxy34UrSvQ.png>.
Acesso em: 5 nov. 2020.
148
TÓPICO 2 — REGRESSÃO LINEAR
FONTE: <https://miro.medium.com/max/700/1*Vx4bZC0gRHeBMJzG7inNZA.png>.
Acesso em: 5 nov. 2020.
Uma vez obtido o custo da hipótese, agora vamos diminuir o custo dessa
função (representado em azul no gráfico) anterior. Para isso, é selecionado um
valor inicial para θ, sendo realizado um procedimento iterativo, que é executado
até encontrar um novo valor de θ para reduzir J(θ), o custo. A Figura 25 apresenta
essa interatividade. Já a técnica para se obter o menor valor de θ será explanada
na sequência.
149
UNIDADE 3 — REGRESSÃO
3 DERIVADAS
Alguns dos métodos, a seguir, utilizam o conceito de derivação. O cálculo
diferencial e integral possibilita resolver situações das mais variadas áreas do
conhecimento, como problemas que envolvem análise de mercado, conta de
aposentadoria, função custo, disseminação de uma doença, mortalidade infantil,
crescimento populacional, custo de construção, velocidade e aceleração, área,
volume e temperatura média, entre outros.
150
TÓPICO 2 — REGRESSÃO LINEAR
Observa-se que, nessa situação, existe uma correlação entre a razão com
que N(t) está variando com o tempo e a inclinação do gráfico. Isso ilustra uma das
ideias fundamentais do cálculo, que consiste em relacionar razões entre variações
com inclinação de gráficos. Nesse sentido, a derivada é uma potente ferramenta
matemática para medir razões entre variações.
FIGURA 28 – DERIVADA DE F
ATENCAO
151
UNIDADE 3 — REGRESSÃO
4 GRADIENTE DESCENDENTE
Agora que conhecemos a função de custo, bem como sua intuição dentro
de uma regressão, temos o objetivo de reduzir o custo e, para isso, vamos aplicar
o gradiente descendente. Segundo Dorneles (2016), o gradiente descendente é um
algoritmo de otimização que realiza o ajuste de parâmetros de forma iterativa,
com o objetivo de encontrar o valor θ que minimiza a função de custo, ou seja, a
reta (função) que melhor se ajusta aos dados que devem ser preditos.
152
TÓPICO 2 — REGRESSÃO LINEAR
153
UNIDADE 3 — REGRESSÃO
154
TÓPICO 2 — REGRESSÃO LINEAR
DICAS
DICAS
FONTE: O autor
156
TÓPICO 2 — REGRESSÃO LINEAR
ComputaCusto(X,y,theta)
def GradienteDescente(X,y,theta,alpha,num_iters):
m=len(y)
J_history=[]
for i in range(num_iters):
predictions = X.dot(theta)
error = np.dot(X.transpose(),(predictions -y))
descent=alpha * 1/m * error
theta-=descent
J_history.append(ComputaCusto(X,y,theta))
157
UNIDADE 3 — REGRESSÃO
#Escreve a hipótese
print("h(x) ="+str(round(theta[0,0],2))+" + "+str(round(the-
ta[1,0],2))+"x1")
FONTE: Adaptado de NG (2014)
for i in range(len(theta0_vals)):
for j in range(len(theta1_vals)):
t=np.array([theta0_vals[i],theta1_vals[j]])
J_vals[i,j]=ComputaCusto(X,y,t)
#Geraando a área do gráfico
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf=ax.plot_surface(theta0_vals,theta1_vals,J_vals,cmap="coolwarm")
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlabel("$\Theta_0$")
ax.set_ylabel("$\Theta_1$")
ax.set_zlabel("$J(\Theta)$")
#obtendo melhor ângulo para exibir
ax.view_init(30,120)
FONTE: Adaptado de NG (2014)
FONTE: O autor
158
TÓPICO 2 — REGRESSÃO LINEAR
plt.plot(J_history)
plt.xlabel("Iterações")
plt.ylabel("$J(\Theta)$")
plt.title("Custo da função utilizando Gradiente Descendente")
FONTE: Adaptado de NG (2014)
FONTE: O autor
plt.scatter(data[0],data[1])
x_value=[x for x in range(25)]
y_value=[y*theta[1]+theta[0] for y in x_value]
plt.plot(x_value,y_value,color="r")
plt.xticks(np.arange(5,30,step=5))
plt.yticks(np.arange(-5,30,step=5))
plt.xlabel("População da Cidade")
plt.ylabel("Lucro ")
plt.title("Predição de Lucros")
FONTE: Adaptado de NG (2014)
159
UNIDADE 3 — REGRESSÃO
FONTE: O autor
def predict(x,theta):
predictions= np.dot(theta.transpose(),x)
return predictions[0]
predict1=predict(np.array([1,3.5]),theta)*10000
print("Para uma população de = 35,000, o algoritmo previu um
lucro de "+str(round(predict1,0)))
predict2=predict(np.array([1,7]),theta)*10000
print("Para uma população de = 70,000, o algoritmo previu um
lucro de"+str(round(predict2,0)))
160
RESUMO DO TÓPICO 2
Neste tópico, você aprendeu que:
161
AUTOATIVIDADE
a) ( ) f(x) = a + bx.
b) ( ) f(x) = x+ 1.
c) ( ) f(x) = ax + b.
d) ( ) f(x) = x.
X 1 2 3 4 5 6
Y 80,5 81,6 82,1 83,7 83,9 85,0
FONTE: O autor
X 1 2 4 0
Y 0,5 1 2 0
FONTE: O autor
a) ( ) θ0 = 0,θ1 = 0.5.
b) ( ) θ0 = 0.5,θ1 = 0.
c) ( ) θ0 = 0.5,θ1 = 0.5.
d) ( ) θ0 = 1,θ1 = 0.5.
a) ( ) 1.
b) ( ) –1.
c) ( ) 4.
d) ( ) 0,5.
162
5 Considere os seguintes dados:
X 1 2 3 4 5 6
Y 80,5 81,6 82,1 83,7 83,9 85,0
FONTE: O autor
163
164
TÓPICO 3 —
UNIDADE 3
1 INTRODUÇÃO
Os algoritmos de regressão utilizados no processo de mineração de dados
normalmente recebem esses dados em diferentes formatos de representação.
Assim, um mesmo conjunto de dados pode ser submetido a diversos algoritmos
de regressão, para obter o menor custo de aprendizado (DOSUALDO, 2003).
2 REGRESSÃO LOGÍSTICA
A regressão logística foi descoberta no século XIX para descrever o
crescimento das populações e as reações químicas de autocatálise. A ideia básica
do desenvolvimento logístico é simples e usada nos dias atuais para modelar o
crescimento populacional e muitas outras técnicas, como descrever a chance de
ocorrência de um determinado evento, ou seja, a chance de desistência de um
aluno; a chance de um cliente de um banco se tornar inadimplente; entre outras
(BARISTELA; RODRIGUES; BONONI, 2009).
165
UNIDADE 3 — REGRESSÃO
NTE
INTERESSA
166
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
FONTE: O autor
167
UNIDADE 3 — REGRESSÃO
FONTE: <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.
FONTE: <kaggle.com/jeppbautista/logistic-regression-from-scratch-python/notebook>.
Acesso em: 5 nov. 2020.
168
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
169
UNIDADE 3 — REGRESSÃO
170
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
FONTE: <https://miro.medium.com/max/564/1*KDiqpWOgtCnO8x3wZJHmDA.png>.
Acesso em: 5 nov. 2020.
FONTE: <https://miro.medium.com/max/210/1*jjwieh-AVz1uA96f1Tuqlg.png>.
Acesso em: 5 nov. 2020.
171
UNIDADE 3 — REGRESSÃO
FONTE: <https://miro.medium.com/max/1000/1*96WV4tWwjLMGdxaKIQuADg.png>.
Acesso em: 5 nov. 2020.
FONTE: <https://miro.medium.com/max/297/1*uBPfsMoVLUs29d1dpMXRfg.png>.
Acesso em: 5 nov. 2020.
172
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
FONTE: <https://miro.medium.com/max/700/1*tZQybbroYzW6zWHQWINtLg.png>.
Acesso em: 5 nov. 2020.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
def relu(z):
a = np.maximum(0,z)
return a
def initialize_params(layer_sizes):
params = {}
for i in range(1, len(layer_sizes)):
params['W' + str(i)] = np.random.randn(layer_sizes[i], layer_
sizes[i-1])*0.01
params['B' + str(i)] = np.random.randn(layer_sizes[i],1)*0.01
return params
FONTE: Adaptado de <https://towardsdatascience.com/an-introduction-to-neural-networks-wi-
th-implementation-from-scratch-using-python-da4b6a45c05b>. Acesso em: 5 nov. 2020.
Uma vez inicializada a nossa rede neural, vamos calcular o custo (erro) e
iterar até obter o menor erro possível. Para isso, realizaremos a descida do gradiente
e atualizaremos os parâmetros, diminuindo o custo, fazendo a propagação direta
novamente e iterando até que a convergência seja alcançada.
173
UNIDADE 3 — REGRESSÃO
dZ = dA
else:
dA = np.dot(params['W' + str(i+1)].T, dZ)
dZ = np.multiply(dA, np.where(values['A' + str(i)]>=0, 1, 0))
if i==1:
grads['W' + str(i)] = 1/m * np.dot(dZ, X_train.T)
grads['B' + str(i)] = 1/m * np.sum(dZ, axis=1, keepdims=True)
else:
grads['W' + str(i)] = 1/m * np.dot(dZ,values['A' + str(i-
-1)].T)
grads['B' + str(i)] = 1/m * np.sum(dZ, axis=1, keepdims=True)
return grads
Por fim, criaremos funções que permitam com que a rede neural seja utilizada:
a função para instanciar o modelo, realizar a predição e avaliar a rede neural.
174
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
boston = datasets.load_boston()
print(type(boston))
print('\n')
print(boston.keys())
print('\n')
print(boston.data.shape)
print('\n')
print(boston.feature_names)
bos = pd.DataFrame(boston.data, columns = boston.feature_names)
print(bos.head())
print(boston.target.shape)
bos['PRICE'] = boston.target
print(bos.head())
bos.isnull().sum()
print(bos.describe())
FONTE: O autor
X_rooms = bos.RM
y_price = bos.PRICE
X_rooms = np.array(X_rooms).reshape(-1,1)
y_price = np.array(y_price).reshape(-1,1)
print(X_rooms.shape)
print(y_price.shape)
X_train_1, X_test_1, Y_train_1, Y_test_1 = train_test_split(X_
rooms, y_price, test_size = 0.2, random_state=5)
print(X_train_1.shape)
print(X_test_1.shape)
print(Y_train_1.shape)
print(Y_test_1.shape)
FONTE: O autor
reg_1 = LinearRegression()
reg_1.fit(X_train_1, Y_train_1)
y_train_predict_1 = reg_1.predict(X_train_1)
rmse = (np.sqrt(mean_squared_error(Y_train_1, y_train_pre-
dict_1)))
r2 = round(reg_1.score(X_train_1, Y_train_1),2)
FONTE: O autor
176
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
LEITURA COMPLEMENTAR
Wesin Alves
Assim como visto anteriormente, vamos usar o pacote tf.keras, uma api de
alto nível do TensorFlow para construir e treinar o modelo. O trecho do código, a
seguir, importa os pacotes necessários para o script rodar tranquilamente.
import tensorflow as tf
from tensorflow import keras
import numpy as np
boston_housing = keras.datasets.boston_housing
177
UNIDADE 3 — REGRESSÃO
Esse conjunto de dados é muito menor do que outros: ele tem 506 exemplos
no total, divididos entre 404 exemplos de treinamento e 102 exemplos de teste:
import pandas as pd
df = pd.DataFrame(train_data, columns=column_names)
df.head()
178
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
# Test data is *not* used when calculating the mean and std
mean = train_data.mean(axis=0)
std = train_data.std(axis=0)
train_data = (train_data - mean) / std
test_data = (test_data - mean) / std
def build_model():
model = keras.Sequential([
keras.layers.Dense(64, activation=tf.nn.relu,
input_shape=(train_data.shape[1],)),
keras.layers.Dense(64, activation=tf.nn.relu),
keras.layers.Dense(1)
])
optimizer = tf.train.RMSPropOptimizer(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae'])
return model
model = build_model()
model.summary()
return model
model = build_model()
model.summary()
EPOCHS = 500
179
UNIDADE 3 — REGRESSÃO
EPOCHS = 500
def plot_history(history):
plt.figure()
plt.xlabel('Epoch')
plt.ylabel('Mean Abs Error [1000$]')
plt.plot(history.epoch, np.array(history.history['mean_abso-
lute_error']),
label='Train Loss')
plt.plot(history.epoch, np.array(history.history['val_mean_
absolute_error']),
label = 'Val loss')
plt.legend()
plt.ylim([0, 5])
plot_history(history)
def plot_history(history):
plt.figure()
plt.xlabel('Epoch')
plt.ylabel('Mean Abs Error [1000$]')
plt.plot(history.epoch, np.array(history.history['mean_abso-
lute_error']),
label='Train Loss')
plt.plot(history.epoch, np.array(history.history['val_mean_
absolute_error']),
label = 'Val loss')
plt.legend()
plt.ylim([0, 5])
plot_history(history)
180
TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO
Este gráfico mostra pouca melhoria no modelo após cerca de 200 épocas.
Vamos atualizar o método model.fit para parar automaticamente o treinamento
quando a pontuação de validação não melhorar. Usaremos um retorno de
chamada, que testa uma condição de treinamento para cada época. Se uma
determinada quantidade de épocas transcorrer sem mostrar melhoria, ele para
automaticamente o treinamento.
model = build_model()
plot_history(history)
O gráfico mostra que o erro médio é de cerca de US$ 2.500. Isso não é bom,
uma vez que não é uma quantia insignificante quando alguns dos rótulos custam
apenas US$ 15.000.
181
UNIDADE 3 — REGRESSÃO
test_predictions = model.predict(test_data).flatten()
plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values [1000$]')
plt.ylabel('Predictions [1000$]')
plt.axis('equal')
plt.xlim(plt.xlim())
plt.ylim(plt.ylim())
_ = plt.plot([-100, 100], [-100, 100])
FONTE: Adaptado de ALVES, W. Como prever o valor de venda de uma casa? 2018. Disponível em:
https://wesinalves.github.io/tensorflow/2018/10/22/regression.html. Acesso em: 5 nov. 2020.
182
RESUMO DO TÓPICO 3
Neste tópico, você aprendeu que:
CHAMADA
183
AUTOATIVIDADE
184
REFERÊNCIAS
BARISTELA, G. C.; RODRIGUES, S. A.; BONONI, J. T. C. M. Estudo sobre a
evasão escolar usando regressão logística: análise dos alunos do curso de admi-
nistração da Fundação Educacional de Ituverava. Tékhne & Lógos, Botucatu,
v.1, n. 1, p. 21-34, 2009. Disponível em: https://www.researchgate.net/publi-
cation/312597157_Estudo_sobre_a_evasao_escolar_usando_regressao_logisti-
ca_analise_dos_alunos_do_curso_de_Administracao_da_Fundacao_Educacio-
nal_de_Ituverava. Acesso em: 5 nov. 2020.
GLEN, S. Excel 2013 Regression analysis: Easy steps and video. StatisticsHow-
To.com. Elementary Statistics for the rest of us! 2013. Disponível em: https://
www.statisticshowto.com/how-to-perform-excel-2013-regression-analysis-ex-
cel-2013/. Acesso em: 5 nov. 2020.
186