Machine Learning A-Z学习笔记14-先验算法
1.简单原理
先验算法(Apriori Algorithm)是关联规则学习的经典算法之一。
我们可以从上面面的两个简单例子发现,看过点影2的人也会去看电影4;买蔬菜的顾客也会买水果。而先验算法有三个指标,分别为支持度(Support)、讯息水准(Confidence)、提升度(Lift),下面将逐一介绍。
支持度(Support)=看过电影m的人/所有用户
讯息水准(Confidence))=看过电影m1和m2的人看过电影m1的人
提升度(Lift)=讯息水准/支撑度
1.找出最低支持度的电影,以及他的所有讯息水准中最低的值,即最低讯息水准
2.找出其他电影的支持度以及它们的集合
3.找出所有讯息水准大于最低讯息水准的集合
4.将步骤3的结果进行由大到小的排序,并取前N个作为答案
2.相关代码
# Apriori
"""
超商商品关联(1週的交易纪录)
"""
# Importing the libraries
"""
汇入库
"""
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Data Preprocessing
"""
导入数据
-for i in range(0, 7501):从dataset中一行一行添加至transactions
"""
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)])
# Training Apriori on the dataset
"""
建立先验算法
-min_length = 2:每笔资料中最少要包含两个商品,否则不进行处理
-min_support = 0.003:考虑1天最少可以卖3次的产品,一週7天,故3*7/7500=0.0028,近似0.003
-min_confidence = 0.2:根据自己的需求而调整
-min_lift = 3:根据自己的需求而调整
算法会根据这些限制进行求解,然后答案会再自行作排序
"""
from apyori import apriori
rules = apriori(transactions, min_support = 0.003, min_confidence = 0.2, min_lift = 3, min_length = 2)
# Visualising the results
"""
结果可视化
"""
results = list(rules)
for i in range(10): print(results[i], '\n')