Académique Documents
Professionnel Documents
Culture Documents
CORRECTION TP1
PRÉSENTÉ PAR
import pandas as pd
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 2
Travaux pratiques 1
1) Charger le jeu de donnée produits.xlsx dans une variable nommée 𝒅𝒇_𝒑 en utilisant
la fonction read_excel de la bibliothèque pandas. Afficher 𝒅𝒇_𝒑
#Chargement du fichier
df_p=pd.read_excel("/content/drive/MyDrive/produits.xlsx")
df_p
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 3
Travaux pratiques 1
f_items_apriori=apriori(df_p,
min_support=0.4, use_colnames=True)
f_items_apriori
df_p.info()?
df_p=df_p.astype('bool')
df_p.info()
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 4
Travaux pratiques 1
f_items_fpgrowth=fpgrowth(df_p,
min_support=0.4, use_colnames=True)
f_items_fpgrowth
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 5
Travaux pratiques 1
4) Comparer 𝒇_𝒊𝒕𝒆𝒎𝒔_𝒂𝒑𝒓𝒊𝒐𝒓𝒊 et 𝒇_𝒊𝒕𝒆𝒎𝒔_𝒇𝒑𝒈𝒓𝒐𝒘𝒕𝒉 en terme de temps d’exécution
(utiliser la commande python timeit en fixant r à 𝟏𝟎 et n à 𝟏𝟎𝟎. Interpréter les résultats
obtenus
FP-growth Apriori
Ligne de commande python
%timeit -n 100 -
≡
r 10 fpgrowth(df_p, min_support=0.6)
3.74 ms ± 84.4 µs per loop (mean ± std. dev. of 10
runs, 100 loops each)
%timeit -n 100 -
r 10 apriori(df_p, min_support=0.6)
1.38 ms ± 69.5 µs per loop (mean ± std. dev. of 10
runs, 100 loops each)
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 6
Travaux pratiques 1
DataFrame.eq
Compare DataFrames for equality elementwise
DataFrame.ge
Compare DataFrames for greater than inequality or equality elementwise
DataFrame.gt
Compare DataFrames for strictly greater than inequality elementwise
f_items_apriori[f_items_apriori['itemsets'].ge({'C'})]
>=({'C'})
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 7
Travaux pratiques 1
rules1
≥ 0.6
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 8
Travaux pratiques 1
rules2=rules1[rules1['lift'].ge(1)].reset_index()
rules2
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 9
Travaux pratiques 1
8) Afficher les 𝟓 règles d’association les plus intéressantes à partir 𝒓𝒖𝒍𝒆𝒔𝟐 (utiliser
la fonction sort_values de la bibliothèque pandas pour trier la base de règles).
rules2=rules2.sort_values(by='lift',ascending=False).head()
rules2
[:5]
Parmi celles trouvées, afficher les règles d’association dont la condition (antecedents)
comporte l’item 𝑬 et le résultat (consequents) comporte l’item 𝑺
rules2[rules2['antecedents'].ge({'E'})]
[rules2['consequents'].ge({'S'})]
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 10
Travaux pratiques 1
9) Déterminer 𝑺𝒎𝒊𝒏 de sorte que le nombre de règles intéressantes est au moins égal à 3
import numpy as np
c=np.arange(1, 0.2, -0.1)
for i in c:
try:
rules = association_rules(apriori(df_p, min_support=i,
use_colnames=True), metric="lift", min_threshold=1)
if len(rules)>=3:
print("s_min={:.2f}".format(i))
break
except: pass
else:
print(None)
IIT-Sfax
T. Ben Abdallah & A. Ben Mrad 11