我正在对“市场篮子”之类的问题进行关联分析(查找一起销售的产品)。我有一个 12 个月的数据集,包含 150Mb 的数据,大约 7mi 的寄存器(发票和产品,以及其他数据)。我认为不值得去 Hadoop。我正在学习本教程(http://pbpython.com/market-basket-analysis.html),但我在 df.unstack() 中遇到内存错误部分。
data = pd.DataFrame()
list_ = []
for date in files:
df = pd.read_csv('VND_%s.csv' % date,
sep=';',
skiprows=0,
names=names,
index_col=None)
list_.append(df)
data = pd.concat(list_)
basket = (data.groupby(['INVOICE', 'MATERIAL'])['TOT_QUANTITY']
.sum().unstack().reset_index().fillna(0))
def encode_units(x):
if x <= 0:
return 0
if x >= 1:
return 1
basket_sets = basket.applymap(encode_units)
frequent_itemsets = apriori(basket_sets, min_support=0.05, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
print(rules.head())
如果您发现可以改进的地方,请告诉我。我会很感激的。