Vous êtes sur la page 1sur 3

L’université Moulay Ismail

École Nationale Supérieure d'Arts et


Métiers (ENSAM – Meknès)

TP4 : Implémentation de l'algorithme APRIORI sur python


L’algorithme Apriori proposé par Agrawal et Srikant en 1994, procède en deux temps. Il est
basé sur le principe lié à l’approche du support et de confiance. L’algorithme parcourt le
treillis des itemsets pour rechercher les itemsets fréquents et en déduire les règles
d’association dont la confiance dépasse le seuil de confiance minconf. Le treillis des itemsets
permet d’utiliser plus efficacement cet algorithme d’extraction en admettant les propriétés
suivantes :
 Tout sous-ensemble d’un itemset fréquent est fréquent.
 Tout sur-ensemble d’un itemset non fréquent est non fréquent.
D’une manière plus concise, le déploiement de l’algorithme Apriori se fait comme suit :
1. Générer les Règles candidates.
2. Calculer le support pour chaque règle candidate.
3. Apparier les règles dont on a calculé le support avec le support choisi.
4. On rejette les candidats dont le support est inférieur au suppmin.
5. On termine en sortie avec toutes les règles dont la confiance est supérieure à la
confiance minimale.

Objectifs de TP

Le but de ce TP est d’implémenter et de manipuler l’algorithme APIORI pour les règles


d’association afin de comprendre son fonctionnement et ses différentes étapes. Dans ce TP,
l’application de l’algorithme APRIORI est faite sur des données extraites du monde réel. En
bref, les objectifs de ce TP sont les suivantes :
 Appliquer l’algorithme APRIORI sur un exemple des données du monde réel.
 Découvrir les différents paramètres de l’algorithme APRIORI.
 Comprendre l’importance du choix des paramètres minsupp et minconf.

Exercice 1 :
1. La description des données et des packages utilisés.

L'analyse de panier (Market basket analysis) est un domaine dans lequel les techniques de
Data Mining sont largement appliquées. Il sert à découvrir les différentes relations entre les
achats des clients pour prédire leurs futurs achats. En effet, cette prédiction permet
d’améliorer les chiffres d'affaires (augmenter les vents) des organisations et des
supermarchés. Dans ce TP, on va analyser un jeu des données issues du monde réel et
contient les constituants des 7501 paniers pendant certain période (une personne peut
acheter plusieurs paniers dans cette période). Chaque ligne de ce jeu de données correspond
aux constituants de panier.

Pour analyser ce jeu de données, on va utiliser l'algorithme APRIORI. Ce dernier est déjà
implémenté dans plusieurs packages dans python : apyori, mlxtend.frequent_patterns,
efficient_apriori ... etc. Pour plus de détails sur le code de l'algorithme APRIORI consultez les
sites web officiels de ces packages. Dans ce TP, on va utiliser le package efficient_apriori car
il est simple à utiliser et aussi donne une visualisation claire et simple sur les différents règles
d'association incluses dans les jeux de données.

2. Travaille demandé.

1. Installer le package « efficient_apriori » par l’une des commandes suivantes :

pip install efficient_apriori (conda install efficient_apriori)

2. Importer les packages suivants :

from efficient_apriori import apriori


import pandas as pd
import numpy as np

3. Charger le jeu de données Market_basket_analysis. Dans ce jeu de données on n'a pas les
colonnes (chaque ligne correspond à une transaction), donc il n'y a pas d’entête
« header=None »

Data = pd.read_csv("C:/Users/dell/Bureau/Assoc_rules/Market_Basket_analysis.csv",
header=None)

4. Pour appliquer l’algorithme APRIORI fourni par le package « efficient_apriori », il faut


que les transactions (les lignes de jeu de données) sont stockées dans une liste des listes.
[ [item1, item2, item3], [item2, item4, item1], [item5, item4, item1] ] tel que chaque
sous-liste à l’intérieur de liste globale correspond à une transaction. Eviter d’insérer les
valeurs manquants ‘nan’ dans la liste des items. (les deux parties de code suivantes sont
équivalentes)

transactions = []
transaction_i = []
for i in range(0, Data.shape[0]):
for j in range(0, Data.shape[1]):
item=str(Data.values[i,j])
if item!='nan':
transaction_i.append(item)
transactions.append(transaction_i)
transaction_i=[]
transactions = []
for i in range(0, 7501):
transactions.append([str(Data.values[i,j]) for j in range(0, 20) if
str(Data.values[i,j])!='nan'])

5. Appliquer l’algorithme APRIORI sur la liste des transactions « transactions » créées


précédemment avec minsupp=0.002 et minconf=0.8. L’implémentation fournie par le
package « efficient_apriori » permet de renvoi les règle d’association et les itemsets
possible. Dans notre cas les règles d’association sont stockées dans la variable « rules » et
les itemsets sont stockés dans la variable « itemsets ».

itemsets, rules = apriori(transactions, min_support=0.002, min_confidence=0.8)

6. Afficher les différentes règles d’associations obtenues :

for r in rules:
print(r)
i=1
for r in rules:
print("règle "+str(i),r)
print("\n *******************************************************")
i=i+1

7. Varier les paramètres minsupp et minconf puis visualiser et analyser les règles
d’associations obtenues.

Vous aimerez peut-être aussi