Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Algoritimo Apriori
Exported 3/4/2026, 94906 AM
Teoria
O Algoritmo Apriori é um algoritmo clássico de mineração de dados usado para encontrar conjuntos de itens frequentes e regras de
associação em grandes bancos de dados transacionais. É amplamente utilizado em análise de cestas de compras para entender quais
itens são frequentemente comprados juntos.
Conceitos Chave:
Conjunto de Itens Itemset): Uma coleção de um ou mais itens (ex: Pão, Leite}).
Suporte Support): A frequência com que um conjunto de itens aparece no conjunto de dados. É a proporção de transações que
contêm o conjunto de itens.
Suporte(X) = (Número de Transações Contendo X) / (Número Total de Transações).
Regra de Associação: Uma implicação da forma X  Y, onde X e Y são conjuntos de itens disjuntos. Ela significa que se X ocorre,
então Y provavelmente também ocorrerá. (ex: Cerveja} → Fraldas}).
Confiança Confidence): Mede a probabilidade de Y ser comprado quando X já foi comprado.
Confiança(X -> Y) = Suporte(X U Y) / Suporte(X).
Lift Elevador): Mede o quanto a ocorrência de X e Y juntos é mais (ou menos) provável do que se eles fossem independentes.
Um lift > 1 indica uma associação positiva, Y) = Confiança(X -> Y) / Suporte(Y).
Como funciona o Apriori?
O algoritmo Apriori segue um processo iterativo para encontrar conjuntos de itens frequentes:
 Geração de Candidatos: Começa encontrando a frequência de cada item individualmente (itemsets de tamanho 1. Aqueles que
atendem a um suporte mínimo são considerados frequentes.
 Poda Pruning): Usa a propriedade Apriori (se um itemset é frequente, então todos os seus subconjuntos também devem ser
frequentes) para 'podar' os candidatos. Se um subconjunto de um itemset candidato não for frequente, então o itemset candidato
não pode ser frequente e é descartado.
 Iteração: Repete os passos de geração de candidatos e poda para itemsets de tamanho maior 2, 3, etc.) até que nenhum novo
conjunto de itens frequente possa ser encontrado.
 Geração de Regras: Uma vez que todos os conjuntos de itens frequentes são encontrados, as regras de associação são geradas
a partir deles, avaliando sua confiança e lift.
Exemplo
priori
Prática
In [ ]:
!pip install apyori
The document was converted with Code-Format: https://code-format.com/
3/4/26, 9:49 AM Algoritimo Apriori
https://code-format.com/tool/converter_ipynbtopdf 1/10
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
In [32]:
import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning)
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
from apyori import apriori
In [61]:
# 1. Transforming data into categorical values
dataset = pd.read_csv('/content/drive/MyDrive/Estatística para Ciência de Dados e Machine Learning/Bases 
de dados/census.csv')
dataset['age'] = pd.cut(dataset['age'], bins=[0,17,25,40,60,90], labels=['Faixa1', 'Faixa2', 'Faixa3', 
'Faixa4', 'Faixa5'])
dataset.head()
age workclass
final-
weight
education
education-
num
marital-
status
occupation relationship race sex
capital-
gain
0 Faixa3 State-gov 77516 Bachelors 13
Never-
married
Adm-
clerical
Not-in-
family
White Male 2174
1 Faixa4
Self-emp-
not-inc
83311 Bachelors 13
Married-
civ-
spouse
Exec-
managerial
Husband White Male 0
2 Faixa3 Private 215646 HS-grad 9 Divorced
Handlers-
cleaners
Not-in-
family
White Male 0
3 Faixa4 Private 234721 11th 7
Married-
civ-
spouse
Handlers-
cleaners
Husband Black Male 0
4 Faixa3 Private 338409 Bachelors 13
Married-
civ-
spouse
Prof-
specialty
Wife Black Female 0
In [62]:
# 2. Select the desired columns for analysis.
dataset_apriori = dataset[['age', 'workclass', 'education','marital-
status','relationship','occupation','sex', 'native-country','income']]
dataset_apriori.head()
age workclass education
marital-
status
relationship occupation sex
native-
country
income
0 Faixa3 State-gov Bachelors
Never-
married
Not-in-
family
Adm-clerical Male
United-
States
50K
1 Faixa4
Self-emp-
not-inc
Bachelors
Married-civ-
spouse
Husband
Exec-
managerial
Male
United-
States
50K
2 Faixa3 Private HS-grad Divorced
Not-in-
family
Handlers-
cleaners
Male
United-
States
50K
3 Faixa4 Private 11th
Married-civ-
spouse
Husband
Handlers-
cleaners
Male
United-
States
50K
4 Faixa3 Private Bachelors
Married-civ-
spouse
Wife Prof-specialty Female Cuba 50K
The document was converted with Code-Format: https://code-format.com/
3/4/26, 9:49 AM Algoritimo Apriori
https://code-format.com/tool/converter_ipynbtopdf 2/10
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
In [18]:
dataset.shape
(32561, 15)
In [63]:
# 3. Take a sample from the dataset
dataset_apriori = dataset_apriori.sample(n=1000)
In [64]:
# 4. Transforme the dataset into a list
transactions = []
for i in range(dataset_apriori.shape[0]):
 transactions.append([str(dataset_apriori.values[i,j]) for j in range(dataset_apriori.shape[1])])
transactions[:2]
[['Faixa3',
 ' Private',
 ' Bachelors',
 ' Never-married',
 ' Not-in-family',
 ' Exec-managerial',
 ' Male',
 ' United-States',
 'RelationRecord(items=frozenset({' Never-married', 'OrderedStatistic(items_base=frozenset({' Married-civ-
spouse', ' Male'}), items_add=frozenset({' Husband'}), confidence=0.9900497512437811, 
lift=2.487562189054726)])
RelationRecord(items=frozenset({' United-States', ' Husband', ' Male'}), support=0.359, 
ordered_statistics=[OrderedStatistic(items_base=frozenset({' Husband'}), items_add=frozenset({' United-
States', ' Male'}), confidence=0.9020100502512562, lift=1.510904606786024), 
OrderedStatistic(items_base=frozenset({' Husband', ' Male'}), items_add=frozenset({' United-States'}), 
confidence=0.9020100502512562, lift=1.0055853403024038), OrderedStatistic(items_base=frozenset({' United-
States', ' Husband'}), items_add=frozenset({' Male'}), confidence=1.0, lift=1.5015015015015014), 
OrderedStatistic(items_base=frozenset({' United-States', ' Male'}), items_add=frozenset({' Husband'}), 
confidence=0.6013400335008375, lift=1.510904606786024)])
RelationRecord(items=frozenset({' Married-civ-spouse', ' United-States', ' Husband'}), support=0.359, 
ordered_statistics=[OrderedStatistic(items_base=frozenset({' Husband'}), items_add=frozenset({' Married-
civ-spouse', ' United-States'}), confidence=0.9020100502512562, lift=2.260676817672321), 
OrderedStatistic(items_base=frozenset({' Married-civ-spouse'}), items_add=frozenset({' United-States', ' 
Husband'}), confidence=0.804932735426009, lift=2.2421524663677133), 
OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' Husband'}), items_add=frozenset({' United-
States'}), confidence=0.9020100502512562, lift=1.0055853403024038), 
OrderedStatistic(items_base=frozenset({' United-States', ' Husband'}), items_add=frozenset({' Married-civ-
spouse'}), confidence=1.0, lift=2.242152466367713), OrderedStatistic(items_base=frozenset({' Married-civ-
spouse', ' United-States'}), items_add=frozenset({' Husband'}), confidence=0.8997493734335839, 
lift=2.260676817672321)])
RelationRecord(items=frozenset({' Married-civ-spouse', ' United-States', ' Male'}), support=0.362, 
ordered_statistics=[OrderedStatistic(items_base=frozenset({' Married-civ-spouse'}), items_add=frozenset({' 
United-States', ' Male'}), confidence=0.8116591928251121, lift=1.3595631370604893), 
OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' Male'}), items_add=frozenset({' United-
States'}), confidence=0.9004975124378108, lift=1.0038991220042484), 
OrderedStatistic(items_base=frozenset({' United-States', ' Male'}), items_add=frozenset({' Married-civ-
spouse'}), confidence=0.6063651591289783, lift=1.3595631370604893), 
OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' United-States'}), items_add=frozenset({' 
Male'}), confidence=0.9072681704260651, lift=1.362264520159257)])
RelationRecord(items=frozenset({' United-States', ' Private', ' Male'}), support=0.394, 
ordered_statistics=[OrderedStatistic(items_base=frozenset({' Private', ' Male'}), items_add=frozenset({' 
United-States'}), confidence=0.8873873873873874, lift=0.9892835979792501), 
OrderedStatistic(items_base=frozenset({' United-States', ' Male'}), items_add=frozenset({' Private'}), 
confidence=0.6599664991624791, lift=0.9777281469073763), OrderedStatistic(items_base=frozenset({' United-
States', ' Private'}), items_add=frozenset({' Male'}), confidence=0.6533996683250415, 
lift=0.9810805830706328)])
RelationRecord(items=frozenset({' Married-civ-spouse', ' United-States', ' Husband', ' Male'}), 
support=0.359, ordered_statistics=[OrderedStatistic(items_base=frozenset({' Husband'}), 
items_add=frozenset({' Married-civ-spouse', ' United-States', ' Male'}), confidence=0.9020100502512562, 
lift=2.4917404703073376), OrderedStatistic(items_base=frozenset({' Married-civ-spouse'}), 
items_add=frozenset({' United-States', ' Husband', ' Male'}), confidence=0.804932735426009, 
lift=2.2421524663677133), OrderedStatistic(items_base=frozenset({' Husband', ' Male'}), 
The document was converted with Code-Format: https://code-format.com/
3/4/26, 9:49 AM Algoritimo Apriori
https://code-format.com/tool/converter_ipynbtopdf 6/10
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
items_add=frozenset({' Married-civ-spouse', ' United-States'}), confidence=0.9020100502512562, 
lift=2.260676817672321), OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' Husband'}), 
items_add=frozenset({' United-States', ' Male'}), confidence=0.9020100502512562, lift=1.510904606786024), 
OrderedStatistic(items_base=frozenset({' United-States', ' Husband'}), items_add=frozenset({' Married-civ-
spouse', ' Male'}), confidence=1.0, lift=2.487562189054726), OrderedStatistic(items_base=frozenset({' 
Married-civ-spouse', ' Male'}), items_add=frozenset({' United-States', ' Husband'}), 
confidence=0.8930348258706466, lift=2.487562189054726), OrderedStatistic(items_base=frozenset({' United-
States', ' Male'}), items_add=frozenset({' Married-civ-spouse', ' Husband'}), 
confidence=0.6013400335008375, lift=1.510904606786024), OrderedStatistic(items_base=frozenset({' Married-
civ-spouse', ' United-States'}), items_add=frozenset({' Husband', ' Male'}), 
confidence=0.8997493734335839, lift=2.260676817672321), OrderedStatistic(items_base=frozenset({' Married-
civ-spouse', ' Husband', ' Male'}), items_add=frozenset({' United-States'}), 
confidence=0.9020100502512562, lift=1.0055853403024038), OrderedStatistic(items_base=frozenset({' United-
States', ' Husband', ' Male'}), items_add=frozenset({' Married-civ-spouse'}), confidence=1.0, 
lift=2.242152466367713), OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' United-States', ' 
Husband'}), items_add=frozenset({' Male'}), confidence=1.0, lift=1.5015015015015014), 
OrderedStatistic(items_base=frozenset({' Married-civ-spouse', ' United-States', ' Male'}), 
items_add=frozenset({' Husband'}), confidence=0.9917127071823204, lift=2.4917404703073376)])
The document was converted with Code-Format: https://code-format.com/
3/4/26, 9:49 AM Algoritimo Apriori
https://code-format.com/tool/converter_ipynbtopdf 7/10
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
https://code-format.com/
In [91]:
for relation_record in result[:8]:
 for ordered_statistic in relation_record.ordered_statistics:
 antecedent = ', '.join(list(ordered_statistic.items_base))
 consequent = ', '.join(list(ordered_statistic.items_add))
 print(f'Rule: {antecedent} -> {consequent}')
 print(f'Support: {relation_record.support}')
 print(f'Confidence: {ordered_statistic.confidence}')
 print(f'Lift: {ordered_statistic.lift}\n')
Rule: -> Male
Support: 0.666
Confidence: 0.666
Lift: 1.0
Rule: -> Private
Support: 0.675
Confidence: 0.675
Lift: 1.0
Rule: -> United-States
Support: 0.897
Confidence: 0.897
Lift: 1.0
Rule: Female -> Private
Support: 0.524
Confidence: 0.6894736842105263
Lift: 1.0214424951267056
Rule: Private ->Geradas
As regras de associação são apresentadas no formato Antecedente -> Consequente, seguidas de suas métricas: Suporte, Confiança e
Lift. Vamos entender o que cada parte significa e como interpretar os resultados.
Componentes de uma Regra:
Antecedente (Left-Hand Side ou items_base): O conjunto de itens 'SE'. São os itens que aparecem juntos antes que o consequente
ocorra.
Consequente (Right-Hand Side ou items_add): O conjunto de itens 'ENTÃO'. São os itens que tendem a aparecer quando o
antecedente está presente.
Métricas de Avaliação:
Suporte Support): Indica a frequência com que o conjunto completo de itens Antecedente + Consequente) aparece no dataset.
Um suporte de 0.306 significa que 30.6% das transações contêm ambos os conjuntos de itens.
Confiança Confidence): Mede a probabilidade de o Consequente ocorrer dado que o Antecedente já ocorreu. Uma confiança de
0.916 significa que, em 91.6% das vezes que o Antecedente aparece, o Consequente também aparece.
Lift Elevador): Avalia o quanto a ocorrência conjunta do Antecedente e Consequente é mais (ou menos) provável do que se eles
fossem independentes.
Lift > 1: Associação positiva. Os itens tendem a aparecer juntos mais do que por acaso. Quanto maior o Lift, mais forte a
associação.
Lift = 1: Independência. A ocorrência de um não afeta a do outro.
Lift United-States
Support: 0.897
Confidence: 0.897
Lift: 1.0
Explicação: Quando o Antecedente está vazio ( ), a regra não indica uma relação condicional, mas sim a frequência geral do
Consequente (United-States) no dataset.
Suporte 0.897 Significa que 89.7% das entradas no seu dataset têm a característica 'native-country' como 'United-
States'.
Confiança 0.897 Neste caso, a confiança é igual ao suporte, pois não há condição para 'anteceder'. É a
probabilidade de um registro aleatório ser dos 'United-States'.
Lift 1.0 Um Lift de 1.0 é esperado para regras com antecedente vazio, indicando que a ocorrência do consequente é
independente de qualquer outro fator (pois não há antecedente).
 Regra com Antecedente Não Vazio:
Rule: Female ->

Mais conteúdos dessa disciplina