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)
結果(隨意):
肉眼去判斷多個詞直接的關聯度是非常費勁的,這種事情就交給機器去做,後續就是導出數據看準確率,調整規則,再用規則對新文本進行處理;本周的心得就到這裡啦,下次見。
關注一下又不會懷孕!
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※Python爬蟲之urllib庫—爬蟲的第一步
※實用又好用,6款Python 特殊文本格式處理庫推薦
TAG:Python |