在利用apriori演算法計算關聯規則時由於涉及到遍歷搜尋在計算資料較大時複雜度高,本文主要是在網上現有的python code中進行修改使計算速度提公升100倍。總資料集為700多萬條,頻繁項集k=5
1,關聯規則需根據使用者需求進行k維pair對進行交叉,在第一輪迭代後刪除支援度《最小支援度的數
#l1 為第一輪迭代後符合最小支援度的項集
#data_set為原始資料集
new_l1 =
for p in l1:
new_l1.extend(list(p))
data_set2 =
for t in data_set:
new_t = [s for s in t if s in new_l1]
if len(new_t)>=5:
第一步進行資料刪除後在本例中刪除20%資料(最小支援度選擇較小,因此刪除資料不多)
2,計算複雜度最高的一點是需要每一行迴圈,並對所有符合交叉條件的項集進行迴圈來計算各個項集的頻繁項。本例中當k=2時迴圈次數是700w*3400。根據資料特點(每一行資料個數均值為10條),當k<=4時每一次的迭代時先計算這一行資料所有可能的交叉方式,然後檢驗交叉項集是否為頻繁項集,可將迴圈次數降為700w*45.
lk = set()
item_count = {}
for t in data_set:
if k==1:
tmp = set()
for item in t:
item_set = frozenset([item])
tmp.add(item_set)
elif k<=4:
tmp = combine(t, k)
else:
tmp = ck.copy()
for item in tmp:
if item in ck and item.issubset(t):
if item not in item_count:
item_count[item] = 1
else:
item_count[item] += 1
def combine(l, n):
l.sort()
answers =
one = [0] * n
def next_c(li = 0, ni = 0):
if ni == n:
return
for lj in xrange(li, len(l)):
one[ni] = l[lj]
next_c(lj + 1, ni + 1)
next_c()
tmp =set()
for i in answers:
tmp.add(frozenset(i))
return tmp
做完上述兩步速度提公升100倍。
谷歌發布TF新工具 計算速度提公升2倍,減少無效引數
實時目標檢測的延遲也更低了 這是谷歌特意為移動裝置和web端開發的一系列新工具,可以在幾乎不影響ai模型推理準確性的同時,修剪 模型大小,以提公升模型推理速度。最好的情況下,能將ai模型的推理速度提公升2倍,模型大小 縮水 一半。這是怎麼做到的?這一過程,利用了ai 機器學習模型的稀疏性。稀疏性,指...
阿里雲EMR再次重新整理世界紀錄,計算速度提公升2 2倍
鳳凰網科技訊 作者 李婷 北京時間 4 月 26 日訊息,今日,大資料領域權威競賽tpc ds公布了最新結果,阿里雲的大資料處理系統解決方案emr排名第一。去年阿里雲emr首次打破該競賽紀錄,成為全球首個通過tpc認證的公共雲產品。今年在這一基礎上,emr的計算速度提公升了2.2 倍。阿里雲emr是...
C 優化和計算速度 碎碎念
實現乙個檔案編碼 冗餘 方式,各種找資料,最後使用伽羅瓦域 線性方程組。注 中的類暫時不想公開,以後我覺得拿得出手的時候,會貼出來。以上是背景。以下是 思路及其變化 基礎 乙個使用高斯消元法解線性方程組的matrix類。乙個有限域 伽羅瓦域 運算的類galois field。最初都是網上找來的 或存...