1

我正在对“市场篮子”之类的问题进行关联分析(查找一起销售的产品)。我有一个 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())

如果您发现可以改进的地方,请告诉我。我会很感激的。

4

0 回答 0