Élagage avancé des résultats d'Apriori

Analyse des paniers d'achat en Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Applications

Promotion croisée

Cette image montre un exemple de promotion croisée.

Agrégation

Cette image montre un exemple d'agrégation.

Analyse des paniers d'achat en Python

L'algorithme Apriori

Liste de listes

Cette image montre un exemple de liste de listes des articles dans des transactions.

Encodage one-hot

Cette image montre l'encodage one-hot des transactions.

Algorithme Apriori

Cette image illustre l'algorithme Apriori appliqué à un ensemble générique de 4 articles.

Analyse des paniers d'achat en Python

L'algorithme Apriori

import pandas as pd
import numpy as np
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
itemsets = np.load('itemsets.npy')
print(itemsets)
[['EASTER CRAFT 4 CHICKS'],
['CERAMIC CAKE DESIGN SPOTTED MUG', 'CHARLOTTE BAG APPLES DESIGN'],
['SET 12 COLOUR PENCILS DOLLY GIRL'],
...
['JUMBO BAG RED RETROSPOT', ... 'LIPSTICK PEN FUSCHIA']]
Analyse des paniers d'achat en Python

L'algorithme Apriori

# One-hot encode data
encoder = TransactionEncoder()
onehot = encoder.fit(itemsets).transform(itemsets)
onehot = pd.DataFrame(onehot, columns = encoder.columns_)
# Apply Apriori algorithm and print
frequent_itemsets = apriori(onehot, use_colnames=True, min_support=0.001)
print(frequent_itemsets)
      support                                           itemsets
0    0.001504                               ( DOLLY GIRL BEAKER)
1    0.002256                         ( RED SPOT GIFT BAG LARGE)
...
428  0.001504  (BIRTHDAY CARD, RETRO SPOT, JUMBO BAG RED RETR...
Analyse des paniers d'achat en Python

Résultats de l'algorithme Apriori

print(len(data.columns))
4201
print(len(frequent_itemsets))
2328
rules = association_rules(frequent_itemsets)
Analyse des paniers d'achat en Python

Règles d'association

print(rules['consequents'])
0                   (DOTCOM POSTAGE)
                        ... 
9                 (HERB MARKER THYME)
                        ...
234        (JUMBO BAG RED RETROSPOT)
235         (WOODLAND CHARLOTTE BAG)
236    (RED RETROSPOT CHARLOTTE BAG)
237       (STRAWBERRY CHARLOTTE BAG)
238      (CHARLOTTE BAG SUKI DESIGN)
Name: consequents, Length: 239, dtype: object
Analyse des paniers d'achat en Python

Filtrer avec plusieurs mesures

targeted_rules = rules[rules['consequents'] == {'HERB MARKER THYME'}].copy()
filtered_rules = targeted_rules[(targeted_rules['antecedent support'] > 0.01) &
                        (targeted_rules['support'] > 0.009) &
                        (targeted_rules['confidence'] > 0.85) &
                        (targeted_rules['lift'] > 1.00)]
print(filtered_rules['antecedents'])
9        (HERB MARKER BASIL)
25     (HERB MARKER PARSLEY)
27    (HERB MARKER ROSEMARY)
Name: antecedents, dtype: object
Analyse des paniers d'achat en Python

Regrouper des produits

L'image montre un plan de magasin où les boîtes sont regroupées avec les sacs et les enseignes avec les bougies.

L'image montre un plan de magasin où les boîtes sont regroupées avec les bougies et les enseignes avec les sacs.

L'image montre un plan de magasin où les boîtes sont regroupées avec les enseignes et les bougies avec les sacs.

Analyse des paniers d'achat en Python

Agrégation et dissociation

# Load aggregated data
aggregated = pd.read_csv('datasets/online_retail_aggregated.csv')

# Compute frequent itemsets
onehot = encoder.fit(aggregated).transform(aggregated)
data = pd.DataFrame(onehot, columns = encoder.columns_)
frequent_itemsets = apriori(data, use_colnames=True)

# Compute standard metrics
rules = association_rules(frequent_itemsets)
# Compute Zhang's rule
rules['zhang'] = zhangs_rule(rules)
Analyse des paniers d'achat en Python

Règle de Zhang

# Print rules that indicate dissociation
print(rules[rules['zhang'] < 0][['antecedents','consequents']])
  antecedents consequents
2       (bag)    (candle)
3    (candle)       (bag)
4      (sign)       (bag)
5       (bag)      (sign)
Analyse des paniers d'achat en Python

Choisir un plan d'étage

L'image montre un plan de magasin où les boîtes sont regroupées avec les sacs et les enseignes avec les bougies.

L'image montre un plan de magasin où les boîtes sont regroupées avec les sacs et les enseignes avec les bougies.

L'image montre un plan de magasin où les boîtes sont regroupées avec les sacs et les enseignes avec les bougies.

Analyse des paniers d'achat en Python

Passons à la pratique !

Analyse des paniers d'achat en Python

Preparing Video For Download...