• 大小: 7KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Python
  • 标签: python  

资源简介

用python实现的Apriori算法和测试用的数据,可以直接将压缩包里面的apriori.py文件放到python安装文件夹lib中,进行调用。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
from __future__ import print_function
import pandas as pd

#自定义连接函数,用于实现L_{k-1}到C_K的连接
def connect_string(xms):
    x = list(map(lambda i: sorted(i.split(ms))x))
    l = len(x[0])
    r = []
    for i in range(len(x)):
        for j in range(ilen(x)):
            if x[i][:l-1] == x[j][:l-1] and x[i][l-1] !=x[j][l-1]:
                r.append(x[i][:l-1] + sorted([x[j][l-1]x[i][l-1]]))
    return r

#寻找关联规则的函数

def find_rule(dsupportconfidencems=u‘--‘):
    result = pd.Dataframe(index = [‘support‘‘confidence‘])#定义输出结果
    support_series = 1.0*d.sum()/len(d)#支持度序列
    column = list(support_series[support_series > support].index)#初步根据支持度筛选
    k = 0

    while len(column)>1:
        k = k+1
        print(u‘\n正在进行第%s次搜索。。。‘%k)
        column=connect_string(columnms)
        print(u‘数目:%s...‘ % len(column))
        sf = lambda i : d[i].prod(axis=1numeric_only=True)#新一批支持度的计算函数

        #创建连接数据,这一步耗时、耗内存最严重。当数据集较大时,可以考虑并行运算优化
        d_2 = pd.Dataframe(list(map(sfcolumn)) index=[ms.join(i) for i in column]).T

        support_series_2 = 1.0*d_2[[ms.join(i) for i in column]].sum()/len(d)#计算连接后的支持度
        column = list(support_series_2[support_series_2 > support].index)#新一轮支持度筛选
        support_series = support_series.append(support_series_2)
        column2=[]

        for i in column:#遍历可能的推理,如{ABC}究竟是A+B-->C还是B+C-->A还是A+C-->B
            i = i.split(ms)
            for j in range(len(i)):
                column2.append(i[:j]+i[j+1:] +i[j:j+1])

        confidence_series = pd.Series(index=[ms.join(i) for i in column2])#定义置信度序列

        for i in column2:#计算自信度序列
            confidence_series[ms.join(i)]=support_series[ms.join(sorted(i))]/support_series[ms.join(i[:len(i) - 1])]

        for i in confidence_series[confidence_series>confidence].index:#置信度筛选
            result[i] = 0.0
            result[i][‘confidence‘] = confidence_series[i]
            result[i][‘support‘] = support_series[ms.join(sorted(i.split(ms)))]

    result = result.T.sort_values([‘confidence‘‘support‘]ascending=False)#结果整理输出
    print(u‘\n结果为:‘)
    print(result)
    return result                                                                                       
                                                                                           












                                                                                           



                                                                                           

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2917  2018-12-08 11:13  Apriori算法+数据\apriori.py

     文件       8837  2018-12-08 10:29  Apriori算法+数据\lesson_buy.xlsx

     目录          0  2018-12-08 11:17  Apriori算法+数据

----------- ---------  ---------- -----  ----

                11754                    3


评论

共有 条评论