python - python中是否有计算关闭频繁项集的函数?
问题描述
我正在寻找一种 python 算法来计算紧密的频繁项集关联,但我只找到了一个 java 代码?有人可以帮我吗?
解决方案
干得好
#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))
推荐阅读
- sql - 将两列数据与第二列的第一个字符组合成一列,留下空值
- reactjs - React - 如何从子功能组件执行功能
- python - 从其他 Python 文件调用函数时的问题
- three.js - glTF 2.0 视频纹理支持
- actions-on-google - 如何获得 Google 的“书面许可”以使用 Google Assistant SDK 将我的项目商业化?
- amadeus - 如何通过 Amadeus Hotel 服务连接客房
- google-bigquery - 使用命令将数据库(具有嵌套文档)从 Cloud Firestore 导出到 Bigquery
- wordpress - 推荐在销售仪表板上需要 Wordpress 插件
- ios - Tableview Cells问题内的UIVisualEffectView
- sql - 更改 SQL Server 名称导致客户端 PC 无法连接到服务器