Tinh giản kết quả Apriori nâng cao

Phân tích giỏ hàng trong Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Ứng dụng

Bán chéo

Hình ảnh minh họa bán chéo.

Gộp nhóm

Hình ảnh minh họa gộp nhóm.

Phân tích giỏ hàng trong Python

Thuật toán Apriori

Danh sách các danh sách

Ví dụ danh sách các danh sách mặt hàng trong giao dịch.

Mã hóa one-hot

Mã hóa one-hot cho các giao dịch.

Thuật toán Apriori

Minh họa áp dụng Apriori cho tập 4 mặt hàng tổng quát.

Phân tích giỏ hàng trong Python

Thuật toán Apriori

import pandas as pd
import numpy as np
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
itemsets = np.load('itemsets.npy')
print(itemsets)
[['EASTER CRAFT 4 CHICKS'],
['CERAMIC CAKE DESIGN SPOTTED MUG', 'CHARLOTTE BAG APPLES DESIGN'],
['SET 12 COLOUR PENCILS DOLLY GIRL'],
...
['JUMBO BAG RED RETROSPOT', ... 'LIPSTICK PEN FUSCHIA']]
Phân tích giỏ hàng trong Python

Thuật toán Apriori

# One-hot encode data
encoder = TransactionEncoder()
onehot = encoder.fit(itemsets).transform(itemsets)
onehot = pd.DataFrame(onehot, columns = encoder.columns_)
# Apply Apriori algorithm and print
frequent_itemsets = apriori(onehot, use_colnames=True, min_support=0.001)
print(frequent_itemsets)
      support                                           itemsets
0    0.001504                               ( DOLLY GIRL BEAKER)
1    0.002256                         ( RED SPOT GIFT BAG LARGE)
...
428  0.001504  (BIRTHDAY CARD, RETRO SPOT, JUMBO BAG RED RETR...
Phân tích giỏ hàng trong Python

Kết quả thuật toán Apriori

print(len(data.columns))
4201
print(len(frequent_itemsets))
2328
rules = association_rules(frequent_itemsets)
Phân tích giỏ hàng trong Python

Luật kết hợp

print(rules['consequents'])
0                   (DOTCOM POSTAGE)
                        ... 
9                 (HERB MARKER THYME)
                        ...
234        (JUMBO BAG RED RETROSPOT)
235         (WOODLAND CHARLOTTE BAG)
236    (RED RETROSPOT CHARLOTTE BAG)
237       (STRAWBERRY CHARLOTTE BAG)
238      (CHARLOTTE BAG SUKI DESIGN)
Name: consequents, Length: 239, dtype: object
Phân tích giỏ hàng trong Python

Lọc bằng nhiều thước đo

targeted_rules = rules[rules['consequents'] == {'HERB MARKER THYME'}].copy()
filtered_rules = targeted_rules[(targeted_rules['antecedent support'] > 0.01) &
                        (targeted_rules['support'] > 0.009) &
                        (targeted_rules['confidence'] > 0.85) &
                        (targeted_rules['lift'] > 1.00)]
print(filtered_rules['antecedents'])
9        (HERB MARKER BASIL)
25     (HERB MARKER PARSLEY)
27    (HERB MARKER ROSEMARY)
Name: antecedents, dtype: object
Phân tích giỏ hàng trong Python

Nhóm sản phẩm

Sơ đồ cửa hàng: hộp xếp với túi, biển hiệu xếp với nến.

Sơ đồ cửa hàng: hộp xếp với nến, biển hiệu xếp với túi.

Sơ đồ cửa hàng: hộp xếp với biển hiệu, nến xếp với túi.

Phân tích giỏ hàng trong Python

Gộp và tách kết hợp

# Load aggregated data
aggregated = pd.read_csv('datasets/online_retail_aggregated.csv')

# Compute frequent itemsets
onehot = encoder.fit(aggregated).transform(aggregated)
data = pd.DataFrame(onehot, columns = encoder.columns_)
frequent_itemsets = apriori(data, use_colnames=True)

# Compute standard metrics
rules = association_rules(frequent_itemsets)
# Compute Zhang's rule
rules['zhang'] = zhangs_rule(rules)
Phân tích giỏ hàng trong Python

Quy tắc của Zhang

# Print rules that indicate dissociation
print(rules[rules['zhang'] < 0][['antecedents','consequents']])
  antecedents consequents
2       (bag)    (candle)
3    (candle)       (bag)
4      (sign)       (bag)
5       (bag)      (sign)
Phân tích giỏ hàng trong Python

Chọn sơ đồ mặt bằng

Sơ đồ cửa hàng: hộp xếp với túi, biển hiệu xếp với nến.

Sơ đồ cửa hàng: hộp xếp với túi, biển hiệu xếp với nến.

Sơ đồ cửa hàng: hộp xếp với túi, biển hiệu xếp với nến.

Phân tích giỏ hàng trong Python

Ayo berlatih!

Phân tích giỏ hàng trong Python

Preparing Video For Download...