1、导入常用库
代码:
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
2、数据预处理
代码:
# Data Preprocessing
dataset = pd.read_csv('Market_Basket_Optimisation.csv', header = None)
transactions = []
for i in range(0, 7501):
transactions.append([str(dataset.values[i,j]) for j in range(0, 20)])
数据源:这是一家杂货铺一周的销售记录,记录这每一笔订单购买的物品种类,不超过20种。
在Python中,我们会自动给行和列建立引索,也会自动将第一行设置为字段名称或者说是属性名称,对于这个数据,是没有字段引索的,所以我们要将标题行去掉,也就是设置属性header=None。
数组的append就是附加列的意思。
3、训练先验算法
代码:
# Training Apriori on the dataset
from apyori import apriori
rules = apriori(transactions, min_support = 0.003, min_confidence = 0.2, min_lift = 3, min_length = 2)
我们的第一个参数是数据集,第二个参数是确定分析物品的重要度,这里我们设置
一星期这件物品至少卖出21件,第三个参数是信息价值,也就是买这件物品再买其他物品的可能性,第四个参数是最小提升度,也就是买第一件物品对后面物品的重要程度,第五个参数是最少统计两种物品的相关程度。
我们在实际中需要不断地调整只,保持最佳的结果。这里比如我将最小信息度设为0.4,会出现有些物品并不是相关度高,二是本身销量高,比如水和米没关系,大家买水又买米的可能性高,可能是它们自生的需求量高。
信息量设为0.8会导致没有符合条件的结果。
4、可视化结果
代码:
# Visualising the results
results = list(rules)
myResults = [list(x) for x in results]
在实际中我们将相关度高的两种产品放在一起,或者分开放,统计销售业绩来调整模型参数。
我们可以看到转化为数组后结果更方便我们查看。
分析第一组数据,我们可以看出轻奶油和鸡肉的相关度比较高,买亲奶油的人买鸡肉的可能性提高了4.8倍。
网友评论