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
aprioripara encontrar conjuntos frecuentes en los datos. El parámetromin_support=0.6define el umbral mínimo de soporte. - Generar reglas de asociación: Usamos
association_rulespara 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_itemsetsmuestra combinaciones de artículos que tienen un soporte por encima del umbral especificado. - Reglas de asociación:
rulesmuestra 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}")