关联规则
1、Apriori步骤是找出所有的频繁项集作为候选集,然后根据支持度做筛选,有种先产生-再测试筛选的意味,fp-growth是使用一种称为频繁模式树(FP-Tree,PF代表频繁模式,Frequent Pattern)数据结构组织数据,并直接从该结构中提取频繁项集。
2、fp-growth扫描两次数据集,首先扫描一遍数据集,找出频繁项的列表L,按照他们的支持度计数递减排序;再次扫描数据库,利用每个事物中的频繁项构造FP-Tree,FP-Tree的根节点为NULL,处理每个事物时按照L中的顺序将事物中出现的频繁项添加到中的一个分支。效率比Apriori高一些。
举个例子
依次从null建立fp树,如下图
实际应用的例子
做规则探寻和补充
实际业务应用中,对精度要求很高的时候,初期会使用规则过滤,然后用模型进行泛化。人工可以总结出一批规则,但是人类语义太复杂,对于规则的整理和总结是不完善的,这时候可以用机器学习的方法,替代人工找出一批规则。
步骤:
1、R分词处理,规整数据(之前写过,不重复)
2、python-load数据data.list,tolist化,delete-nan,加载pyfrgrowth.py(没错,我又调库了)发现规则(nan是float类型,醉!)
代码:
import fpgrowth
import pandas as pd
import numpy as np
file_path = 'c:\\users\\administrator\\desktop\\data.list.csv'
data = pd.read_csv(file_path,encoding = 'gbk')
new_data = np.array(data)
data_new = new_data.tolist()
#print(data_new[1])
new_list = []
#print(type(new_list))
for i in range(len(data_new)):
cleanedList = [x for x in data_new[i] if str(x) != 'nan']
new_list.append(cleanedList)
print(new_list)
'''
transactions = [[1, 2, 5],
[2, 4],
[2, 3],
[1, 2, 4],
[1, 3],
[2, 3],
[1, 3],
[1, 2, 3, 5],
[1, 2, 3]]
'''
patterns = fpgrowth.find_frequent_patterns(new_list, 5)
rules = fpgrowth.generate_association_rules(patterns, 0.5)
print(rules)
结果(随意):
肉眼去判断多个词直接的关联度是非常费劲的,这种事情就交给机器去做,后续就是导出数据看准确率,调整规则,再用规则对新文本进行处理;本周的心得就到这里啦,下次见。
关注一下又不会怀孕!
领取专属 10元无门槛券
私享最新 技术干货