Escolar Documentos
Profissional Documentos
Cultura Documentos
2 PRÉ-PROCESSAMENTO
DE DADOS E
CLASSIFICAÇÕES
Tópicos de estudo
Pré-processamento de dados Tipos de regras de associação e
Limpeza de dados algoritmos
Integração de dados Algoritmo Apriori
Algoritmo Partition
Transformação de dados, redução e
discretização
Transformação
Redução
Discretização
MINERAÇÃO DE DADOS 39
Note que o banco de dados se chama mineração, que a tabela se chama vendas_trimes-
trais e que foram inseridos sete registros, apesar de na prática haver muito mais. O último co-
mando select *from vendas_trimestrais faz a seleção da tabela, gerando a tabela abaixo do
comando, que poderá ser exportada para Excel clicando em Export. Guarde bem esse botão,
pois o próximo exercício será sobre ele.
MINERAÇÃO DE DADOS 40
Depois que tiver executado, quando aparecer o botão Export, será necessário exportar
para ver no Excel. A Fig. 3 mostra esse processo.
MINERAÇÃO DE DADOS 41
O formato CSV é muito utilizado em Data Science e significa “arquivo separado por vírgula”,
mas pode ser separado por ponto e vírgula também.
Agora, é necessário importar no Excel, conforme ilustrado na Fig. 4.
MINERAÇÃO DE DADOS 42
Limpeza de dados
Ao pegar uma tabela, existem dados ruidosos, errados (discrepantes ou inconsistentes) e
faltantes, por isso, precisaremos fazer uma limpeza. Ela pode ser feita tanto no Excel, quanto
no SQL. No exemplo a seguir, foi feita no SQL.
Nunca use uma tabela central para deletar; crie tabelas novas a partir das existentes e te-
nha sempre backups das tabelas.
• Dados com ruídos são valores muito acima ou muito abaixo do esperado. Por exemplo,
salário acima de R$ 20.000,00 entre vendedores; pesos abaixo de 40 quilos para homens adul-
tos. Façamos uma inclusão (insert) em nossa tabela (Fig. 6).
Digite o comando:
insert into vendas_trimestrais (8, ‘Blusa’, ‘2019-03-12’, ‘Julio’, ‘Cartão’, 1500);
Após inserir e selecionar, você verá que este dado é um outlier, ou seja, atípico, pois ne-
nhuma blusa naquela loja custaria R$ 1.500,00. Assim, para deletar valores maiores que R$
1.000,00, basta digitar: delete from vendas_trimestrais where valor_produto > 1000;.
Ou então, para remover apenas blusas com valor maiores que R$ 1.000,00:
delete from vendas_trimestrais where nome_produto = ‘blusa’ and valor_produto > 1000 ;.
MINERAÇÃO DE DADOS 43
• Dados discrepantes são mais latentes e menos subjetivos. Por exemplo, um treino de
futebol masculino com uma aluna do sexo feminino. Nesse caso, pode-se deletar pela última
letra do nome ou mesmo por análise, pois às vezes nomes confundem. Uma análise prévia é
sempre útil para evitar erros. Veja o exemplo de deletar dados que terminam com a letra a,
sabendo que não se aplica à tabela, servindo apenas como explicação: delete from vendas_tri-
mestrais where nome_produto LIKE ‘%A’ ;.
• Dados faltantes são simplesmente dados que faltam. Cabe ao especialista determinar
quais podem estar incluídos ou não. Para deletar dois dados faltantes, primeiro insira um re-
gistro com dados faltantes, depois faça a limpeza, de acordo com a Fig. 7.
MINERAÇÃO DE DADOS 44
● Insert int vendas_trimestrais values (8, ‘blusa’, ‘2019-03-12’, ‘julio’, ‘cartão’, 1500);
Observe que nem a data nem a forma de pagamento foram inseridas no segundo exemplo.
Existem duas saídas na hora de selecionar em que null significa “vazio”: proibir a inserção ou
deletar dados vazios na empresa. Há consultas em que alguns dados, de fato, não são necessá-
rios e deixar de registrar clientes por faltar dados pode ser um prejuízo. Pode-se utilizar tanto
o operador AND quanto OR para deletar campos vazios. O OR deleta quando faltar um ou
outro campo, já o AND deleta quando faltarem os dois, obrigatoriamente. Pode-se selecionar
também quando um dado for vazio (is null):
delete from vendas_trimestrais where data_do_pedido or forma_pagamento is null;
select * from vendas_trimestrais where data_do_pedido and forma_pagamento is null;
Integração de dados
Integrar dados significa uni-los. Após a explicação teórica, veremos como fazer a integração
em MySQL através de Inner Join e, quando abordarmos Python e Numpy, veremos como utili-
zar o comando merge.
Como unir tabelas em MySQL com o Inner Join
Antes de mais nada, é necessário observar alguns fatores:
• Datas diferentes: deve-se sempre observar se a união de tabelas ou bancos de dados po-
derá gerar redundância; analisar se uma das tabelas é mais antiga que a outra e se possuem
os mesmos dados. O erro será induzido, caso haja a redundância;
• Sobrecarga: outro ponto a se observar é que as vezes a redundância sobrecarrega o
sistema, ou database, fato que o torna ineficiente;
• Confusão de nomes: dados da mesma categoria ou iguais podem, às vezes, ter diferentes
nomes; por exemplo, alguns departamentos taxam a coluna de compras como “investimento”,
outros, como “compras”, mas, às vezes, são os mesmos dados;
MINERAÇÃO DE DADOS 45
MINERAÇÃO DE DADOS 46
Depois de fazer a seleção, você pode exportar clicando em Export. Pronto: a união de tabe-
las estará feita! Aí é só importar para o Excel, como já demonstrado.
Transformação
Em análises estatísticas, alguns valores podem gerar resultados tendenciosos. Para corrigir
isso, alguns procedimentos de normalização podem ser feitos.
• Normalização pela amplitude ou normalização linear: consiste em pegar os valores má-
ximos e mínimos e gerar um número de 0 até 1. Observe a Tabela 1, com os dados já inseridos.
MINERAÇÃO DE DADOS 47
A equação a seguir demonstra como normalizar para evitar dados tendenciosos. Logo
após, há um exemplo apenas com a primeira linha e todos os resultados na Tabela 2.
Valor - Mínimo
Valor normalizado =
Máximo - Mínimo
200 - 50
Valor normalizado = = 0,428 ou 0,42
400 - 50
NORMALIZADO
NUM NOME_PROD DAT NOME_CLIEN FORMA VALOR
– LINEAR
MINERAÇÃO DE DADOS 48
use mineracao;
create table vendas_trimestrais(
numero_produto int,
nome_produto varchar(45),
data_do_pedido date ,
nome_cliente varchar(45),
forma_pagamento varchar(20),
valor_produto float(6,2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into vendas_trimestrais values
(1, ‘Mala’, ‘2019-01-01’, ‘Marcelo’, ‘Cartão’, 200),
(2, ‘Mochila’, ‘2019-01-02’, ‘Julio’, ‘Cartão’, 300),
(3, ‘Tenis’, ‘2019-01-07’, ‘Julio’, ‘Cartão’, 600),
(4, ‘Boné’, ‘2019-02-08’, ‘Fabio’, ‘Dinheiro’, 100),
(5, ‘Luva’, ‘2019-02-12’, ‘Daniela’, ‘Dinheiro’, 50),
(6, ‘Calça’, ‘2019-02-10’, ‘Daniela’, ‘Dinheiro’, 150),
(7, ‘Blusa’, ‘2019-03-11’, ‘Gabriel’, ‘Cartão’, 400);
Valor
Valor normalizado =
Somatório
200
Valor normalizado = = 0,11
1.800
MINERAÇÃO DE DADOS 49
Redução
Depois de fazer a transformação, é necessário seguir para a redução. Além de transformar
os dados através da normalização, pode-se reduzir valores a fim de melhorar o desempenho,
uma vez que valores muito específicos podem ser irrelevantes.
Quando forem variáveis nominais, é possível reduzi-las através de tabelas dinâmicas no
Excel. Variáveis numéricas podem ser reduzidas através de gráficos, seja em Excel ou em
Pyhton com Matplotlib (será explicado mais adiante).
A tabela dinâmica da Fig. 9 mostrará apenas os valores, analisando forma de pagamento
versus valor. A coluna D aparece como Nome2, pois foi editada e ficou igual propositalmente
para que seja exemplificado o risco de colocar colunas iguais. A primeira coluna é o nome do
produto, a segunda é o nome do cliente.
MINERAÇÃO DE DADOS 50
Para remover os filtros de colunas, basta desativá-los no menu da direita. Agora, observe as
Figs. 10 e 11: da mesma forma que o nome ficou dentro, pode-se fazer zonas ficarem dentro de
cidades para agilizar o processo de mineração.
MINERAÇÃO DE DADOS 51
É muito importante citar que, apesar de nosso exemplo ter utilizado o valor original, é reco-
mendado, em alguns cenários de valores um pouco mais aberrantes – isto é, outliers que não
eram tão aberrantes a ponto de ter que fazer a limpeza –, usar o valor normalizado linear ou
usar a soma no lugar da coluna valor. O especialista de domínio deve avaliar como proceder.
DICA
Tabelas dinâmicas são muito úteis; procure cursos de curta duração de tabela dinâmica
e depois de dashboards em Excel ou dashboards em Power Bi.
Discretização
A discretização nada mais é do que criar intervalos; por exemplo, crianças de 0 até 12 anos,
adolescentes de 12 a 17 etc. Será mostrado em MySQL como fazer isso e, posteriormente, você
poderá aplicar também a Python. Para isso, criaremos funções.
Foi criada uma tabela no MySQL para descobrir idades por horário de academia, como pode
se observar a Fig. 12.
MINERAÇÃO DE DADOS 52
Inserção de dados
Resultado
Nova Query
Figura 13. Criando uma nova query e criação de função chamada filtro_de_idade.
MINERAÇÃO DE DADOS 53
MINERAÇÃO DE DADOS 54
QUADRO 4. QUERYS
Query 1
Query 2
delimiter $$
create function filtro_de_idade(hora_aula time) returns varchar(60)
begin
declare resultado varchar(60);
if(hora_aula < ‘12:00’) then
set resultado = ‘Pessoa matinal’;
elseif (hora_aula <= ‘18:00’) then
set resultado = ‘Pessoa vespertina’;
elseif (hora_aula <= ‘23:00’) then
set resultado = ‘Pessoa noturna’;
end if;
return resultado;
end $$
delimiter ;
select faixa_etaria, filtro_de_idade(hora_aula) from horarios;
select count(*), filtro_de_idade(hora_aula) from horarios group by
filtro_de_idade(hora_aula);
MINERAÇÃO DE DADOS 55
Cálculo de suporte
O cálculo de suporte é a quantidade de vezes que um dado se repete, sendo, portanto, a
quantidade de repetição dividida pela quantidade total.
Analisando a Tabela 4, pode-se perceber que a caneta foi o produto mais vendido. Em com-
pras casadas, o único conjunto que se destacou foi lápis com borracha.
Suporte de
Vendas Suporte de venda dupla
venda individual
Em primeiro lugar, para calcular o suporte de conjuntos com um item levando em conta que
o administrador estipulou um suporte mínimo de 0,4 ou 40%, utilizou-se a seguinte equação.
MINERAÇÃO DE DADOS 56
Cera 0,4
MINERAÇÃO DE DADOS 57
Cera, roda 0
Resultado final da primeira fase: os conjuntos aprovados em suporte foram sabão com
silicone e cera com sabão.
Cálculo de confiança
Se em primeiro lugar foi feito o cálculo de suporte, em segundo lugar será feito o cálculo
de confiança, que analisa a frequência de venda de um conjunto combinado dividido pela
repetição do segundo item em todas as vendas.
Segue, então, a fórmula do cálculo de confiança com um valor mínimo de 90%, estipulado
pelo cientista de dados ou administrador de dados:
MINERAÇÃO DE DADOS 58
MINERAÇÃO DE DADOS 59
MINERAÇÃO DE DADOS 60
Algoritmo Apriori
Antes de explicar o que é o algoritmo Apriori, veremos um exemplo prático: faremos neste
momento a mineração no programa Weka. É indicado que você baixe o programa Weka, de
acordo com a Fig. 15.
O Weka trabalha com arquivos do tipo .arff feitos em blocos de notas. Assim como está no
Quadro 5, você deve colar em um bloco de notas e salvar como vendas.arff.
Neste arquivo, o nome é RELATION. Os atributos (@attribute) são refrigerante, cereais, sor-
vete, café, pão e quatro meses – de janeiro até abril. E os dados (@Data) são nove registros
de vendas, mostrando quais produtos foram vendidos em cada mês. Na hora de salvar, tome
bastante cuidado, observando bem a Fig. 16.
MINERAÇÃO DE DADOS 61
%Vendas em um mercado
@RELATION vendas
@data
sim,não,sim,não,não,janeiro
sim,não,sim,não,sim,fevereiro
sim,não,não,não,sim,fevereiro
não,sim,não,sim,não,marco
não,não,não,sim,sim,abril
sim,não,sim,sim,não,fevereiro
não,sim,não,não,não,marco
sim,não,não,sim,não,janeiro
não,não,sim,não,sim,janeiro
A Fig. 17 mostra como importar arquivos, já a Fig. 18 mostra os dados exibidos em gráficos.
MINERAÇÃO DE DADOS 62
Figura 19. Resultados de cálculo de confiança e de Lift sem determinar suporte mínimo.
MINERAÇÃO DE DADOS 63
O algoritmo Apriori analisa a função se então. Caso 70% dos dados individuais (arroz ou
suco ou cereais, por exemplo) tenham suporte mínimo maior que 0,4, por exemplo, os outros
30% são descartados. Desses 70% que restaram, o algoritmo seguirá para avaliar quais con-
juntos (arroz com suco, ou arroz com cereais) são maiores que 0,4; e, supondo que 50% sejam
maiores que 0,4, os outros 20% serão descartados, funcionando como uma função.
MINERAÇÃO DE DADOS 64
No Diagrama 2, descobriu-se que a primeira partição (pivô) teve mais itemsets. Foram
cinco vendas em fevereiro e quatro em março, pois sempre se analisa apenas valores maiores
que o suporte mínimo utilizando a Apriori. O Partition calculará a relação de proporção entre
partições locais sobre repetições globais (quantas vezes fevereiro e março aparecem na
primeira partição/quantidade total de fevereiro com março no conjunto) em cada uma das
variáveis (fevereiro, março, abril, junho e julho), sendo o desenho da segunda fase do processo
exemplificado no Diagrama 3.
MINERAÇÃO DE DADOS 65
MINERAÇÃO DE DADOS 66
MINERAÇÃO DE DADOS 67
MINERAÇÃO DE DADOS 68