「マーケットバスケット」のような問題で関連分析を行っています(一緒に販売されている製品を見つけます)。私は、150Mb のデータ、約 7mi のレジスタ (請求書と製品などのデータ) を含む 12 か月のデータセットを持っています。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())
また、改善できる点があれば教えてください。よろしくお願いします。