首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python之Fpgrowth规则探寻

关联规则

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)

结果(随意):

肉眼去判断多个词直接的关联度是非常费劲的,这种事情就交给机器去做,后续就是导出数据看准确率,调整规则,再用规则对新文本进行处理;本周的心得就到这里啦,下次见。

关注一下又不会怀孕!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302G0IV5J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券