金融数据挖掘—科学计算语言—算法篇
关联规则算法
关联规则分析:是数据挖掘中一种简单而实用的技术,通过深入分析数据,寻找事务间的关联性,挖掘频繁出现的组合,并描述组合内对象同时出现的模式和规律。
关联规则分析概念,最早是1993年由Agrawal,Imielinski和Swami提出的。其主要研究目的是通过分析超市顾客购买行为的规律,发现连带购买商品,进而以此为依据来改善货架摆放方案(该分析称为购物篮分析)。Agrawal从数学及计算机算法角度出发,提出了商品关联关系的计算方法—Apriori算法。
Apriori算法步骤:
步骤1:设定最小支持度和最小置信度。
步骤2:根据最小支持度找出所有的频繁项集。
步骤3:根据最小置信度发现强关联规则。
练习1.
from apyori import apriori
t = [['A','B','C'],['A','B'],['B','C'],['A','B','C','D'],['B','C','D']]
re = apriori(t, min_support=0.4, min_confidence=0.8)
re=list(re)
re
# 提取results中的关联规则,并通过字符串拼接的方式将关联规则更好的呈现
for i in re:
for j in i.ordered_statistics: # 获取频繁集中关联规则
X = j.items_base #关联规则的前件
Y = j.items_add #关联规则的后件
x = ', '.join([k for k in X]) #连接前件中的元素
y = ', '.join([k for k in Y]) #连接后件中的元素
if x!="":
print(x + '→'+y)
练习2.
import pandas as pd
df = pd.read_excel('中医辨证.xlsx')
s = []
for i in df['病人症状'].tolist():
s.append(i.split(','))
df["病人症状"].tolist()[0].split(",")
rules = apriori(s,min_support=0.1,min_confidence=0.7)
results = list(rules)
print(results)
# 通过字符串拼接的方式将关联规则更好的呈现
for i in results:
for j in i.ordered_statistics:
X = j.items_base
Y = j.items_add
x = ''.join([k for k in X])
y = ''.join([k for k in Y])
if x != '':
print(x + '→' + y)