Implementación Python Apriori
Aquí te dejo un ejemplo de cómo implementar el algoritmo Apriori en Python usando la biblioteca mlxtend
, que facilita mucho la creación de reglas de asociación. Para esto, primero necesitas instalar la biblioteca si aún no la tienes:
import pandas as pd from mlxtend.frequent_patterns import apriori, association_rules # Ejemplo de datos # Crear un DataFrame de ejemplo para mostrar cómo funciona el algoritmo data = { 'biscuits': [1, 0, 1, 1, 0], 'frozen foods': [1, 1, 0, 1, 1], 'fruit': [1, 1, 1, 0, 1], 'vegetables': [0, 1, 0, 1, 0], 'bread and cake': [1, 1, 1, 0, 1] } df = pd.DataFrame(data) # Aplicar el algoritmo Apriori para encontrar los conjuntos frecuentes con un soporte mínimo del 60% frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True) # Generar reglas de asociación basadas en los conjuntos frecuentes rules = association_rules(frequent_itemsets,num_itemsets=5, metric="confidence", min_threshold=0.7) # Ordenar las reglas por confianza rules = rules.sort_values(by="confidence", ascending=False) # Seleccionar solo las columnas de interés: 'antecedents', 'consequents', 'confidence' y 'lift' rules_filtered = rules[['antecedents', 'consequents', 'confidence', 'lift']] for index, row in rules_filtered.iterrows(): antecedentes = row['antecedents'] consecuentes = row['consequents'] confianza = row['confidence'] lift = row['lift'] print(f"{antecedentes} => {consecuentes} Confianza: {confianza:.2f}, Lift: {lift:.2f}")
Explicación del código
- Cargar y preparar los datos: Creamos un DataFrame simple con transacciones de ejemplo. En una aplicación real, podrías cargar los datos desde un archivo CSV o generarlos en base a transacciones reales.
- Generar conjuntos frecuentes: Usamos
apriori
para encontrar conjuntos frecuentes en los datos. El parámetromin_support=0.6
define el umbral mínimo de soporte. - Generar reglas de asociación: Usamos
association_rules
para obtener reglas de asociación a partir de los conjuntos frecuentes, filtradas por un umbral de confianza mínimo (min_threshold=0.7
).
Interpretación de los Resultados
- Conjuntos frecuentes:
frequent_itemsets
muestra combinaciones de artículos que tienen un soporte por encima del umbral especificado. - Reglas de asociación:
rules
muestra las reglas generadas junto con métricas como confianza, lift, y convicción.
Con estos resultados, puedes analizar las relaciones entre los artículos en las transacciones y obtener ideas para estrategias de mercado o recomendaciones de productos.
Otro ejemplo cargando un csv:
import pandas as pd from mlxtend.frequent_patterns import apriori, association_rules df = pd.read_csv("supermercado.csv") df=df.drop(columns=["TransactionID"]) # Aplicar el algoritmo Apriori para encontrar los conjuntos frecuentes con un soporte mínimo del 60% frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True) frequent_itemsets_multiple = frequent_itemsets[frequent_itemsets['itemsets'].apply(lambda x: len(x) > 1)] print(frequent_itemsets_multiple) # Generar reglas de asociación basadas en los conjuntos frecuentes rules = association_rules(frequent_itemsets,num_itemsets=df.shape[0],metric="confidence", min_threshold=0.7) # Ordenar las reglas por confianza rules = rules.sort_values(by="confidence", ascending=False) # Seleccionar solo las columnas de interés: 'antecedents', 'consequents', 'confidence' y 'lift' rules_filtered = rules[['antecedents', 'consequents', 'confidence', 'lift']] for index, row in rules_filtered.iterrows(): antecedentes = list(row['antecedents'])[0] consecuentes = list(row['consequents'])[0] confianza = row['confidence'] lift = row['lift'] print(f"{antecedentes} => {consecuentes} Confianza: {confianza:.2f}, Lift: {lift:.2f}")