【问题标题】:Is there a function in python to calculate the close frequent itemsets? [closed]python中是否有计算关闭频繁项集的函数? [关闭]
【发布时间】:2020-10-18 07:24:35
【问题描述】:

我正在寻找一种 python 算法来计算密切频繁项集关联,但我只找到了一个 java 代码?有人可以帮帮我吗?

【问题讨论】:

  • 通过添加更多细节来解释问题
  • 我正在寻找一个用python实现的函数来计算关闭频繁项关联规则。
  • 即使你得到了答案(对你来说很好),你真的需要在 SO 上学习 how to ask a question。这将防止投票或关闭投票。祝你有美好的一天

标签: python apriori


【解决方案1】:

给你

#Import all basic libray
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
import time
from mlxtend.frequent_patterns import fpgrowth

#Task1 : Compute Frequent Item Set using  mlxtend.frequent_patterns
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
start_time = time.time()
frequent = fpgrowth(df, min_support=0.001, use_colnames=True)
print('Time to find frequent itemset')
print("--- %s seconds ---" % (time.time() - start_time))

# Task 2&3: Find closed/max frequent itemset using frequent itemset found in task1
su = frequent.support.unique()#all unique support count
#Dictionay storing itemset with same support count key
fredic = {}
for i in range(len(su)):
    inset = list(frequent.loc[frequent.support ==su[i]]['itemsets'])
    fredic[su[i]] = inset
#Dictionay storing itemset with  support count <= key
fredic2 = {}
for i in range(len(su)):
    inset2 = list(frequent.loc[frequent.support<=su[i]]['itemsets'])
    fredic2[su[i]] = inset2

#Find Closed frequent itemset
start_time = time.time()
cl = []
for index, row in frequent.iterrows():
    isclose = True
    cli = row['itemsets']
    cls = row['support']
    checkset = fredic[cls]
    for i in checkset:
        if (cli!=i):
            if(frozenset.issubset(cli,i)):
                isclose = False
                break
    
    if(isclose):
        cl.append(row['itemsets'])
print('Time to find Close frequent itemset')
print("--- %s seconds ---" % (time.time() - start_time))  
    
#Find Max frequent itemset
start_time = time.time()
ml = []
for index, row in frequent.iterrows():
    isclose = True
    cli = row['itemsets']
    cls = row['support']
    checkset = fredic2[cls]
    for i in checkset:
        if (cli!=i):
            if(frozenset.issubset(cli,i)):
                isclose = False
                break
    
    if(isclose):
        ml.append(row['itemsets'])
print('Time to find Max frequent itemset')
print("--- %s seconds ---" % (time.time() - start_time))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2016-08-23
    • 2023-03-31
    • 2012-12-20
    • 2014-05-09
    • 2013-11-02
    相关资源
    最近更新 更多