Я играю с примером набора данных, где мой набор данных выглядит так
Теперь я успешно преобразовал данные с помощью
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import mlxtend as ml
retail_data = pd.read_excel('Copy of FastFood_Transactions.xlsx')
sns.countplot(x = 'Product', data = retail_data, order = retail_data['Product'].value_counts().iloc[:10].index)
plt.xticks(rotation=90)
retail_data = retail_data.groupby(['Transaction ID','Product']).size().reset_index(name='count')
basket = (retail_data.groupby(['Transaction ID', 'Product'])['count']
.sum().unstack().reset_index().fillna(0)
.set_index('Transaction ID'))
#The encoding function
def encode_units(x):
if x <= 0:
return 0
if x >= 1:
return 1
basket_sets = basket.applymap(encode_units)
И я проверил свой набор, и, кажется, все в порядке.
Однако, когда я пытаюсь применить правило ассоциации и apriori, как показано ниже
frequent_itemsets = apriori(basket_sets, min_support=0.07, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
rules.head()
правила пустые.
Я попытался проверить поддержку и набор элементов, где я применил apriori:
support itemsets
0 0.084238 (3 Crispy Strips (incl. dip))
1 0.080320 (9 Hot Wings)
2 0.061100 (9 Hot Wings)
3 0.058294 (10 Filet Bites)
4 0.080214 (Chicken Original 1 stuk)
Я заметил, что поддержка имеет очень низкий процент. Может ли это быть из-за разреженного набора данных?