當前位置:
首頁 > 最新 > Python之Fpgrowth規則探尋

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)

結果(隨意):

肉眼去判斷多個詞直接的關聯度是非常費勁的,這種事情就交給機器去做,後續就是導出數據看準確率,調整規則,再用規則對新文本進行處理;本周的心得就到這裡啦,下次見。

關注一下又不會懷孕!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python爬蟲之urllib庫—爬蟲的第一步
實用又好用,6款Python 特殊文本格式處理庫推薦

TAG:Python |