apriori算法python实现

import numpy as np

def load_data(file_path):

data = []

with open(file_path, 'r') as f:

for line in f.readlines():

line = line.strip().split(',')

data.append(line)

return data

def create_C1(data):

C1 = set()

for transaction in data:

for item in transaction:

C1.add(frozenset([item]))

return C1

def is_apriori(Ck_item, Lksub1):

for item in Ck_item:

sub_Ck = Ck_item - frozenset([item])

if sub_Ck not in Lksub1:

return False

return True

def create_Ck(Lksub1, k):

Ck = set()

len_Lksub1 = len(Lksub1)

list_Lksub1 = list(Lksub1)

for i in range(len_Lksub1):

for j in range(1, len_Lksub1):

l1 = list(list_Lksub1[i])

l2 = list(list_Lksub1[j])

l1.sort()

l2.sort()

if l1[0:k-2] == l2[0:k-2]:

Ck_item = list_Lksub1[i] | list_Lksub1[j]

if is_apriori(Ck_item, Lksub1):

Ck.add(Ck_item)

return Ck

def generate_Lk_by_Ck(data, Ck, min_support):

Lk = set()

len_data = len(data)

item_count = {}

for transaction in data:

for item in Ck:

if item.issubset(transaction):

if item not in item_count:

item_count[item] = 1

else:

item_count[item] += 1

support_data = {key: value / len_data for key, value in item_count.items() if value / len_data >= min_support}

for key in support_data:

Lk.add(key)

return Lk

def apriori(data, min_support=0.5):

C1 = create_C1(data)

D = list(map(set, data))

L1, support_data = generate_Lk_by_Ck(D, C1, min_support)

Lksub1 = L1.copy()

L = [Lksub1]

i = 2

while True:

Ci = create_Ck(Lksub1, i)

Li, supK = generate_Lk_by_Ck(D, Ci, min_support)

if not Li:

break

Lksub1 = Li.copy()

L.append(Lksub1)

i += 1

return L, support_data

if name == 'main':

file_path = 'your_file_path.csv' # 请替换为你的数据文件路径

data = load_data(file_path)

L, support_data = apriori(data)

print("频繁项集:", L)

print("支持度数据:", support_data)

相关推荐
DeepLink几秒前
Python小练习系列:学生信息排序(sorted + key函数)
python·求职
项目申报小狂人5 分钟前
CUDA详细安装及环境配置——环境配置指南 – CUDA+cuDNN+PyTorch 安装
人工智能·pytorch·python
胡乱儿起个名9 分钟前
C++的指针数组、数组指针和指针数组指针
开发语言·c++
kill bert13 分钟前
第32周Java微服务入门 微服务基础
java·开发语言·微服务
学c真好玩15 分钟前
4.1-python操作wrod/pdf 文件
开发语言·python·pdf
姜行运15 分钟前
数据结构【链表】
c语言·开发语言·数据结构·链表
东方佑16 分钟前
使用Python解析PPT文件并生成JSON结构详解
python·json·powerpoint
Auroral15618 分钟前
一文搞懂python实现邮件发送的全流程
python
山山而川粤18 分钟前
SSM考研信息查询系统
java·大数据·运维·服务器·开发语言·数据库·考研
大霸王龙20 分钟前
LLM(语言学习模型)行为控制技术
python·深度学习·学习