数据挖掘:关联分析—Apriori算法

数据挖掘:关联分析—Apriori算法,第1张

一、关联分析

        关联分析是用于发掘数据间关联度的分析技术,即通过发掘事务数据集内每项数据组合出现的概率。

        广泛应用日常各领域,例如,在生物信息学中的功能基因定位、医疗领域的病症关联分析、快消领域等多个方面。

二、Apriori算法原理

        在关联分析的过程中用到的三个指标:支持度、置信度、提升度。

        每项数据组合都有自己的支持度,支持度就是数据组合项出现的次数占事务数据集总项数的比例【支持度=数据组合项出现的次数/事务数据集总项数】。支持度最高为一,最低为零。在分析过程中,根据数据的具体情况人为设置最小支持度度(0.1~0.2),遵循数据组合项的支持度 < 最小值尺度时,是非频繁项集;数据组合项的支持度 >= 最小值尺度时,是频繁项集,来筛选每项数据组合的受欢迎程度。

        关联规则是由频繁项集的前件与后件组成,而置信度是衡量关联规则的可靠程度指标, 关联规则的置信度,表示频繁项集的前件出现的情况下,频繁项集的后件同时出现 的概率【置信度=频繁项集的支持度/前件的支持度】,置信度越高,关联规则的可靠性 越强。在分析过程中,根据数据的具体情况人为设置最小置信度,来筛选每项关联规则 的可靠程度,遵循数据频繁项集的置信度 < 最小值尺度时,是弱关联规则;频繁项集 的置信度 >= 最小值尺度时,是强关联规则的原则分析关联规则。

        提升度表示频繁项集前件的出现对后件出现的影响程度,也就是频繁项集的置信度和频繁后件的支持度的比值【提升度=频繁项集的置信度/频繁项集后件的支持度】遵循数据组合项的提升度 < 1时,是抑制关联规则;数据组合项的提升度 > 1时,是促进关联规则,数据组合项的提升度 = 1时,是前后件相互独立。

三、实战案例

        这是一份校园Python相关宣传的阅读统计。运用Apriori算法,挖掘分析数据

四、分析步骤

        (一)关系记录的生成:1.apriori函数产生关联规则    2.遍历出规则中的关系记录

                                                3.关系记录的提取

        (二)关系记录的提取:1.提取支持度                         2.提取前件和后件       

                                                3.提取置信度和提升度

        (三)提取信息的加工和可视化:1.数据标准化           2.数据可视化

        (四)根据促进和抑制关系,提出建议

五、原来代码

import pandas as pd
from apyori import apriori
import matplotlib.pyplot as plt
print('----------------------------------------------------------------------')
path1=r'F:\\数据分析\\Apriori(关联分析模型)\\UserViews.csv'
UserViews=pd.read_csv(path1)

articles=[]
for a in UserViews['文章类型']:
    article=a.split(',')
    articles.append(article)
#创建apriori分析算法规则,设置信度最小值与支持度最小值,计算items、support、ordered_statistics={relates_category={items_base、items_add}、confidence、lift}
rules=apriori(articles,min_support=0.1,min_confidence=0.6)
#提取结果
Extract_Result=[]
for rule in rules:
    support=round(rule.support,3)
    for a in rule.ordered_statistics:
        head_set=list(a.items_base)
        tail_set=list(a.items_add)
        if head_set==[]:
            continue
        relates_category=str(head_set)+'→'+str(tail_set)
        confidence=round(a.confidence,3)
        lift=round(a.lift,3)
        Extract_Result.append([relates_category,support,confidence,lift])
Rule_DF=pd.DataFrame(Extract_Result,columns=['RelationshipRule','Support','Confidence','Lift'])


plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#描述促进关系的强关联规则
Promoted_Rule_DF=Rule_DF[Rule_DF['Lift']>1]
Promoted_Rule_DF.plot.bar('RelationshipRule',['Confidence','Lift'],rot=0,fontsize=16,label=['置信度','支持度'])
plt.xlabel(
            '\n结论:1. 当“头条”文章是介绍“SQL”的内容时,可以提高“Python”的“次条”排布。                                                                                    \n2. 当“数据分基础”类的文章成为“头条”时,不妨考虑搭配“数据分析进阶”的“次条”,还可以在文章末尾,继续添加“数据分析进阶”相关的拓展链接,提升浏览量。'
            ,fontsize=12)
plt.yticks(Promoted_Rule_DF['Lift'])
plt.title('促进关系的强关联规则',fontsize=25)
plt.tight_layout()
#描述抑制关系的强关联规则
Restricted_Rule_DF=Rule_DF[Rule_DF['Lift']<1]
Restricted_Rule_DF.plot.bar('RelationshipRule',['Confidence','Lift'],rot=0,fontsize=16,label=['置信度','支持度'])
plt.xlabel(
            '\n结论:1. “爬虫”和“Python”类的文章成为“头条”时,可以适当降低“数分进阶”的“次条”排布。'
            ,fontsize=12)
plt.yticks(Restricted_Rule_DF['Lift'])
plt.title('抑制关系的强关联规则',fontsize=25)
plt.tight_layout()
plt.show()


path2=r'F:\数据分析\Apriori(关联分析模型)\Rule_DF.xlsx'
with pd.ExcelWriter(path2)as writer:
    Promoted_Rule_DF.to_excel(writer,sheet_name='Promoted_Rule_DF')
    Restricted_Rule_DF.to_excel(writer,sheet_name='Restricted_Rule_DF')
print('ok')

六、输出结果

(一)输出数据表结果  

(二)数据可视化描述1 

(三)数据可视化描述2 

七、总结

        (一)情况描述

                (1)促进关联规则:

                           1  大概有10%的人了解SQL宣传的同时,一定了去解Python宣传,SQL宣传对

                               Python宣传有促进作用

                           2 大概有20%的人了解数据基础分析宣传的同时,一定了去解数据进阶分析宣

                              传,数据基础分析宣传对数据进阶分析宣传有促进作用

                (2)抑制关联规则:

                          1 大概有32%的人了解Python宣传的同时,有70%的可能去了解数据进阶分析宣

                              传,Python宣传对数据进阶分析宣传有抑制作用

                          2 大概有21%的人了解爬虫宣传的同时,有63%的可能去了解数据进阶分析宣传,

                             爬虫宣传对数据进阶分析宣传有抑制作用

                          3 大概有10%的人了解爬虫和Python宣传组合的同时,有66%的可能去了解数据

                             进阶分析宣传,爬虫和Python宣传组合对数据进阶分析宣传有抑制作用

        (二)宣传对策

                  1 加强SQL与Python的联合配套工作。当“头条”文章是介绍“SQL”的内容时,可以提高     “Python”的“次条”排布。

                  2 推进数据基础分析与进阶分析的联合配套工作。当“数据分基础”类的文章成为“头条”    时,不妨考虑搭配“数据分析进阶”的“次条”,还可以在文章末尾,继续添加“数据分析进阶”相关的拓展链接,提升浏览量。

                 3 提升Python与数据基础分析的关联度。开展Python与数据基础分析的联合活动。

                 4 降低爬虫与数据进阶分析的联合配套工作。“爬虫”和“Python”类的文章成为“头条”        时,可以适当降低“数分进阶”的“次条”排布。

八、致读者

        不一定相知,不一定相识,但你能看到这,是我最大的满足。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/883663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存