文章目录

  • 1 理论知识
    • 1.1 支持度、置信度、提升度
    • 1.2 Apriori算法
    • 1.3 FP-Growth算法
  • 2 导包
  • 3 数据预处理
  • 4 挖掘关联规则
    • Apriori算法
    • FP-Growth算法

1 理论知识

1.1 支持度、置信度、提升度

Support(支持度):表示某个项集出现的频率,也就是包含该项集的交易数与总交易数的比例。例如P(A)表示项集A的比例,P(A∩B)P(A\cap B)P(A∩B)表示项集A和项集B同时出现的比例。

Confidence(置信度):表示当A项出现时B项同时出现的频率,记作{A→B}。换言之,置信度指同时包含A项和B项的交易数与包含A项的交易数之比。公式表达:{A→B}的置信度=P(A∣B)=P(A∩B)/P(BP(A|B)=P(A\cap B) / P(BP(A∣B)=P(A∩B)/P(B
Lift(提升度):指A项和B项一同出现的频率,但同时要考虑这两项各自出现的频率。公式表达:{A→B}的提升度={A→B}的置信度/P(B)=P(A∩B)/P(B)=P(A∩B)/(P(A)∗P(B))P(A\cap B) / P(B)=P(A\cap B)/ (P(A)*P(B))P(A∩B)/P(B)=P(A∩B)/(P(A)∗P(B))。

提升度反映了关联规则中的A与B的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。负值,商品之间具有相互排斥的作用。

1.2 Apriori算法

Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法。
Apriori算法采用了逐层搜索的迭代的方法,算法简单明了,没有复杂的理论推导,也易于实现。但其有一些难以克服的缺点:
(1)对数据库的扫描次数过多。
(2)Apriori算法会产生大量的中间项集。
(3)采用唯一支持度。
(4)算法的适应面窄。

1.3 FP-Growth算法

针对Apriori算法的固有缺陷,J.Han等提出了不产生候选挖掘频繁项集的方法:FP-树频集算法。采用分而治之的策略,在经过第一遍扫描之后,把数据库中的频集压缩进一棵频繁模式树(FP-tree),同时依然保留其中的关联信息,随后再将FP-tree分化成一些条件库,每个库和一个长度为1的频集相关,然后再对这些条件库分别进行挖掘。当原始数据量很大的时候,也可以结合划分的方法,使得一个FP-tree可以放入主存中。实验表明,FP-growth对不同长度的规则都有很好的适应性,同时在效率上较之Apriori算法有巨大的提高。

2 导包

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from efficient_apriori import apriori
from sklearn.datasets import load_breast_cancer
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules, fpgrowth

3 数据预处理

查看官网数据集解释:

  1. Class Name: 2 (democrat, republican)
  2. handicapped-infants: 2 (y,n)
  3. water-project-cost-sharing: 2 (y,n)
  4. adoption-of-the-budget-resolution: 2 (y,n)
  5. physician-fee-freeze: 2 (y,n)
  6. el-salvador-aid: 2 (y,n)
  7. religious-groups-in-schools: 2 (y,n)
  8. anti-satellite-test-ban: 2 (y,n)
  9. aid-to-nicaraguan-contras: 2 (y,n)
  10. mx-missile: 2 (y,n)
  11. immigration: 2 (y,n)
  12. synfuels-corporation-cutback: 2 (y,n)
  13. education-spending: 2 (y,n)
  14. superfund-right-to-sue: 2 (y,n)
  15. crime: 2 (y,n)
  16. duty-free-exports: 2 (y,n)
  17. export-administration-act-south-africa: 2 (y,n)
# Pandas设置
pd.set_option("display.max_columns", None)  # 设置显示完整的列
pd.set_option("display.max_rows", None)  # 设置显示完整的行
pd.set_option("display.expand_frame_repr", False)  # 设置不折叠数据
pd.set_option("display.max_colwidth", 100)  # 设置列的最大宽度# 加载数据集
dataset = pd.read_csv('../data/house-votes-84.data', delimiter=',', header=None)
columns = ['党派', '残疾人婴幼儿法案', '水项目费用分摊', '预算决议案', '医生费用冻结议案', '萨尔瓦多援助', '校园宗教团体决议', '反卫星禁试决议', '援助尼加拉瓜反政府', 'MX导弹议案', '移民决议案', '合成燃料公司削减决议', '教育支出决议', '超级基金起诉权', '犯罪决议案', '免税出口决议案', '南非出口管理决议案'
]
dataset.columns = columns
dataset.head(10)dataset['残疾人婴幼儿法案'].unique()for col in columns:dataset[col] = dataset[col].apply(lambda x: col + ':' + x)
print(len(dataset))
dataset.head()# 编码
encoder = TransactionEncoder()
new_array = encoder.fit_transform(dataset.values)new_df = pd.DataFrame(data=new_array, columns=encoder.columns_)new_df.head()

数据初始形式:

数据初步编码形式:

最终数据形式:

4 挖掘关联规则

Apriori算法

最小支持度设置为0.5

# 挖掘频繁项集 最小支持度设置为0.5
fre_itemset1 = apriori(df=new_df, min_support=0.5, use_colnames=True)
print(len(fre_itemset1))
fre_itemset1  # 17条


最小支持度设置为0.45

# 挖掘频繁项集 最小支持度设置为0.45
fre_itemset2 = apriori(df=new_df, min_support=0.45, use_colnames=True)
print(len(fre_itemset2))
fre_itemset2  # 44条


最小支持度设置为0.5 最小置信度设置为0.8

# 关联规则
# 最小支持度设置为0.5 最小置信度设置为0.8
rules1 = association_rules(df=fre_itemset1, metric='confidence', min_threshold=0.8)
rules1  # 14条


最小支持度设置为0.8 最小置信度设置为0.9

# 最小支持度设置为0.8 最小置信度设置为0.9
rules2 = association_rules(df=fre_itemset1, metric='confidence', min_threshold=0.9)
rules2  # 6条

FP-Growth算法

最小支持度0.4

# fp-growth算法 最小支持度0.4
fre_itemset3 = fpgrowth(df=new_df, min_support=0.4, use_colnames=True)
print(len(fre_itemset3))
fre_itemset3.tail()


最小支持度0.4,最小置信度0.99

# 关联规则
# 最小支持度设置为0.4 最小置信度设置为0.99
rules3 = association_rules(df=fre_itemset3, metric='confidence', min_threshold=0.99)
print(len(rules3))
rules3

数据挖掘实战(5)——关联规则(美国国会投票数据集)相关推荐

  1. [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)

    Apriori算法|关联规则挖掘 〇.相关基础概念 1.购物篮数据的二元表示 事务:购物篮数据可以用一个列表来表示,列表中的每一行都对应一个事务 项:表格中的每一列则对应一个数据项 项的二元表示:如果 ...

  2. 机器学习实战2:关联规则:议会投票+毒蘑菇

    本人看过的关联规则博文,很少有清晰的把关联规则的算法说很明白的,希望读者读完本文可以有新的收获.本文是在默认读者有相关机器学习算法基础的,总结和提升对关联规则代码实现的理解,并介绍相关案例.语言:py ...

  3. 【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)

    目录 一.背景和挖掘目标 1.问题背景 2.传统方法的缺陷 3.原始数据情况 4.挖掘目标 二.分析方法和过程 1.初步分析 2.总体过程 第1步:数据获取 第2步:数据预处理 第3步:构建模型 三. ...

  4. 数据挖掘实战—商品零售购物篮分析

    文章目录 引言 一.数据探索性分析 1.数据质量分析 1.1 缺失值分析 1.2 异常值分析 1.3 重复数据分析 2.数据特征分析 2.1 描述性统计分析 2.2 分布分析 2.2.1 商品热销情况 ...

  5. 数据挖掘实战—餐饮行业的数据挖掘之挖掘建模

    文章目录 引言 一.分类与预测 1.常用的分类与预测算法 2. 回归分析 3.决策树 4.人工神经网络 二.聚类分析 1.常用的聚类分析算法 2.K-Means聚类算法 2.1 算法过程 2.2 数据 ...

  6. 扎克伯格|在美国国会数据门听证会上的证词-中英文全文

    来源:网络法前哨 美国时间2018年4月10日至11日,Facebook公司CEO马克-扎克伯格(Mark Zuckerberg)将在美国国会就"剑桥分析丑闻"作证.4月10日,扎 ...

  7. 每打一通AI骚扰电话,就会被罚款7万块,这是美国国会刚刚通过的法案

    郭一璞 发自 海边边 量子位 报道 | 公众号 QbitAI 当手机铃声响起,电话里陌生的小姐姐用温柔甜美但装腔作势的声音,告诉你某处楼盘开盘.某公司提供贷款.某个培训班招生的时候,你就知道: 又是个 ...

  8. SAS数据挖掘实战篇【六】

    SAS数据挖掘实战篇[六] 6.3  决策树 决策树主要用来描述将数据划分为不同组的规则.第一条规则首先将整个数据集划分为不同大小的 子集,然后将另外的规则应用在子数据集中,数据集不同相应的规则也不同 ...

  9. 【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析

    今天给大家带来一个企业级数据挖掘实战项目,金融贷款分类模型和时间序列分析,文章较长,建议收藏! 如果本文对你有所帮助,记得文末点赞和在看,也可分享给你需要的朋友- 项目背景 银行和其他金融贷款机构经常 ...

最新文章

  1. c语言动态迁移mysql,flask-migrate动态迁移数据库
  2. 1023 Have Fun with Numbers
  3. [一文一命令]less命令详解
  4. POJ 2801 为什么相同功能的代码会wrong answer呢?求解释~~
  5. EZ的间谍网络(codevs 4093)
  6. 编码文件AndroidStudio初体验:解决Execution failed for task ':TestAndroid:compileDebug'.
  7. 微小宝公众号排行榜_排行榜 | 山西省高校、高职中专微信公众号周数据排行榜...
  8. leetcode-49-字母异位词分组(神奇的哈希)
  9. bzoj2821 作诗(Poetize)分块+二分
  10. 【C语言】19-static和extern关键字1-对函数的作用
  11. android 浏览器内核 内存占用,移动浏览器的四大内核
  12. linux中iso文件怎么安装,linux系统安装iso文件方法
  13. 抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
  14. python画图配色_科研作图有哪些「赏心悦目」的绘图主题和配色方案?
  15. 1的1次方+2的2次方+3的3次方+...+n的n次方
  16. CSS基础:margin在行内元素及行级块元素失效两个元素之间margin重叠
  17. 双眼皮疤痕增生期一般是多久会消失
  18. Win11笔记本耗电大怎么解决?Win11耗电快怎么办?
  19. Python+Selenium爬取新浪微博评论数据
  20. 12.2 做一个读书的读书人——《逆袭大学》连载

热门文章

  1. JavaScriptAPI
  2. [一般问题] s60 3rd 模拟器无法启动(转)
  3. 基于MATLAB的仿射变换/透射变换/道路检测/车牌检测
  4. 上海调整私车额度参拍条件:申请前一年内无交通违法行为记录
  5. 车载仪表android方案,基于NXP iMX8QM 汽车仪表+车载娱乐双作业系统解决方案
  6. 将dataset中的数据导出至Excel中而不需要安装MS Excel的方法(含UNICODE支持)
  7. Google Play Store Apps(谷歌应用程序相关数据集)
  8. 人工智能系统中有哪些有前途的研究方向?
  9. speedoffice(PPT)怎么快速复制粘贴幻灯片
  10. m3u8文件格式讲解,Python解析m3u8文件,并获取在线地址