数据挖掘实战(5)——关联规则(美国国会投票数据集)
文章目录
- 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 数据预处理
查看官网数据集解释:
- Class Name: 2 (democrat, republican)
- handicapped-infants: 2 (y,n)
- water-project-cost-sharing: 2 (y,n)
- adoption-of-the-budget-resolution: 2 (y,n)
- physician-fee-freeze: 2 (y,n)
- el-salvador-aid: 2 (y,n)
- religious-groups-in-schools: 2 (y,n)
- anti-satellite-test-ban: 2 (y,n)
- aid-to-nicaraguan-contras: 2 (y,n)
- mx-missile: 2 (y,n)
- immigration: 2 (y,n)
- synfuels-corporation-cutback: 2 (y,n)
- education-spending: 2 (y,n)
- superfund-right-to-sue: 2 (y,n)
- crime: 2 (y,n)
- duty-free-exports: 2 (y,n)
- 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)——关联规则(美国国会投票数据集)相关推荐
- [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)
Apriori算法|关联规则挖掘 〇.相关基础概念 1.购物篮数据的二元表示 事务:购物篮数据可以用一个列表来表示,列表中的每一行都对应一个事务 项:表格中的每一列则对应一个数据项 项的二元表示:如果 ...
- 机器学习实战2:关联规则:议会投票+毒蘑菇
本人看过的关联规则博文,很少有清晰的把关联规则的算法说很明白的,希望读者读完本文可以有新的收获.本文是在默认读者有相关机器学习算法基础的,总结和提升对关联规则代码实现的理解,并介绍相关案例.语言:py ...
- 【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)
目录 一.背景和挖掘目标 1.问题背景 2.传统方法的缺陷 3.原始数据情况 4.挖掘目标 二.分析方法和过程 1.初步分析 2.总体过程 第1步:数据获取 第2步:数据预处理 第3步:构建模型 三. ...
- 数据挖掘实战—商品零售购物篮分析
文章目录 引言 一.数据探索性分析 1.数据质量分析 1.1 缺失值分析 1.2 异常值分析 1.3 重复数据分析 2.数据特征分析 2.1 描述性统计分析 2.2 分布分析 2.2.1 商品热销情况 ...
- 数据挖掘实战—餐饮行业的数据挖掘之挖掘建模
文章目录 引言 一.分类与预测 1.常用的分类与预测算法 2. 回归分析 3.决策树 4.人工神经网络 二.聚类分析 1.常用的聚类分析算法 2.K-Means聚类算法 2.1 算法过程 2.2 数据 ...
- 扎克伯格|在美国国会数据门听证会上的证词-中英文全文
来源:网络法前哨 美国时间2018年4月10日至11日,Facebook公司CEO马克-扎克伯格(Mark Zuckerberg)将在美国国会就"剑桥分析丑闻"作证.4月10日,扎 ...
- 每打一通AI骚扰电话,就会被罚款7万块,这是美国国会刚刚通过的法案
郭一璞 发自 海边边 量子位 报道 | 公众号 QbitAI 当手机铃声响起,电话里陌生的小姐姐用温柔甜美但装腔作势的声音,告诉你某处楼盘开盘.某公司提供贷款.某个培训班招生的时候,你就知道: 又是个 ...
- SAS数据挖掘实战篇【六】
SAS数据挖掘实战篇[六] 6.3 决策树 决策树主要用来描述将数据划分为不同组的规则.第一条规则首先将整个数据集划分为不同大小的 子集,然后将另外的规则应用在子数据集中,数据集不同相应的规则也不同 ...
- 【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析
今天给大家带来一个企业级数据挖掘实战项目,金融贷款分类模型和时间序列分析,文章较长,建议收藏! 如果本文对你有所帮助,记得文末点赞和在看,也可分享给你需要的朋友- 项目背景 银行和其他金融贷款机构经常 ...
最新文章
- c语言动态迁移mysql,flask-migrate动态迁移数据库
- 1023 Have Fun with Numbers
- [一文一命令]less命令详解
- POJ 2801 为什么相同功能的代码会wrong answer呢?求解释~~
- EZ的间谍网络(codevs 4093)
- 编码文件AndroidStudio初体验:解决Execution failed for task ':TestAndroid:compileDebug'.
- 微小宝公众号排行榜_排行榜 | 山西省高校、高职中专微信公众号周数据排行榜...
- leetcode-49-字母异位词分组(神奇的哈希)
- bzoj2821 作诗(Poetize)分块+二分
- 【C语言】19-static和extern关键字1-对函数的作用
- android 浏览器内核 内存占用,移动浏览器的四大内核
- linux中iso文件怎么安装,linux系统安装iso文件方法
- 抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
- python画图配色_科研作图有哪些「赏心悦目」的绘图主题和配色方案?
- 1的1次方+2的2次方+3的3次方+...+n的n次方
- CSS基础:margin在行内元素及行级块元素失效两个元素之间margin重叠
- 双眼皮疤痕增生期一般是多久会消失
- Win11笔记本耗电大怎么解决?Win11耗电快怎么办?
- Python+Selenium爬取新浪微博评论数据
- 12.2 做一个读书的读书人——《逆袭大学》连载
热门文章
- JavaScriptAPI
- [一般问题] s60 3rd 模拟器无法启动(转)
- 基于MATLAB的仿射变换/透射变换/道路检测/车牌检测
- 上海调整私车额度参拍条件:申请前一年内无交通违法行为记录
- 车载仪表android方案,基于NXP iMX8QM 汽车仪表+车载娱乐双作业系统解决方案
- 将dataset中的数据导出至Excel中而不需要安装MS Excel的方法(含UNICODE支持)
- Google Play Store Apps(谷歌应用程序相关数据集)
- 人工智能系统中有哪些有前途的研究方向?
- speedoffice(PPT)怎么快速复制粘贴幻灯片
- m3u8文件格式讲解,Python解析m3u8文件,并获取在线地址