数据挖掘 关联规则分析

好久没学宋老师的数据挖掘了,今天补一下

python 复制代码
###第一题
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules

#                               文件中没有列名  文件中的数据按空格分隔
df = pd.read_csv("mushroom.dat", header=None, sep=' ')

# 提取只有毒蘑菇的数据
ind = (df.iloc[:, 0]==2) # 设置筛选条件
df = df.loc[ind] # 对数据进行筛选
# print(df)

df= df.iloc[:,:-1].values.tolist() # 将数据集先转换为数组再转换为列表,确保数据的格式和结构得到正确地转换

# # 使用TransactionEncoder进行编码
te = TransactionEncoder() # 将数据集转换为一种适合于使用 Apriori 算法进行频繁项集挖掘的交易矩阵格式
te_ary = te.fit(df).transform(df)# 先拟合数据再进行数据格式的转换
# print(te_ary)
df = pd.DataFrame(te_ary, columns=te.columns_)

# 进行频繁项集挖掘
freq_itemsets = apriori(df, min_support=0.6)

# 打印结果
print(freq_itemsets)



###第二题
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules

te = TransactionEncoder()
df = pd.read_excel("cancer.xls")

# 将数据集进行分箱
#                                                                                                                  使左区间闭合
df["肝气郁结证型系数"] = pd.cut(df["肝气郁结证型系数"], [0, 0.179, 0.258, 0.35, 0.504], labels=["A1", "A2", "A3", "A4"],include_lowest=True)
df["热毒蕴结证型系数"] = pd.cut(df["热毒蕴结证型系数"], [0, 0.15, 0.296, 0.485, 0.78], labels=["B1", "B2", "B3", "B4"],include_lowest=True)
df["冲任失调证型系数"] = pd.cut(df["冲任失调证型系数"], [0, 0.201, 0.288, 0.415, 0.61], labels=["C1", "C2", "C3", "C4"],include_lowest=True)
df["气血两虚证型系数"] = pd.cut(df["气血两虚证型系数"], [0, 0.172, 0.251, 0.357, 0.552], labels=["D1", "D2", "D3", "D4"],include_lowest=True)
df["脾胃虚弱证型系数"] = pd.cut(df["脾胃虚弱证型系数"], [0, 0.154, 0.256, 0.375, 0.526], labels=["E1", "E2", "E3", "E4"],include_lowest=True)
df["肝肾阴虚证型系数"] = pd.cut(df["肝肾阴虚证型系数"], [0, 0.178, 0.261, 0.353, 0.607], labels=["F1", "F2", "F3", "F4"],include_lowest=True)
# 转换数据
df = df.values.tolist()
# 使数据符合TransactionEncoder
te_ary = te.fit(df).transform(df)

df = pd.DataFrame(te_ary, columns=te.columns_)
# 进行频繁项集挖掘
#                                           使用列名而不是列索引使数据呈现更直观
fre_itemset = apriori(df, min_support=0.06, use_colnames=True)

# 进行关联规则挖掘
# association_rules:生成关联规则
# "confidence"是用于衡量关联规则强度的指标之一,它表示当一个项集出现时另一个项集也同时出现的概率。
# min_threshold=1:只有完全确凿的关联规则会被返回
# support_only=False:除了置信度之外,还会计算支持度等指标
rules = association_rules(fre_itemset, metric='confidence', min_threshold=1, support_only=False)
# 获取关联规则的后项,包括项集、支持度、置信度、Lift等
consequents = rules['consequents']
#                         检查每个集合是否包含元素H4
idx = consequents.apply(lambda x: 'H4' in set(x))
# 挑选出符合关联规则的集合
aim_rules = rules[idx]
print(aim_rules)

# 项集:单个项集(Singleton Itemset):包含单个物品或特征的集合,例如 {苹果}、{橙子}、{香蕉} 等。
#      频繁项集(Frequent Itemset):在数据集中频繁出现的项集,也就是经常以某种组合出现的物品集合。频繁项集的发现是关联规则挖掘的重要任务之一,它能够揭示数据中的潜在模式和关联关系。
# 支持度:支持度是衡量某个项集在整个数据集中出现的频率,通过支持度可以确定哪些项集是频繁的
# 置信度:置信度可以理解为在包含项集 X 的事务中,同时包含项集 Y 的比例。

Apriori具体的实现的方法我还不会,等我以后水平达到了进行深入的学习后,就发出来

相关推荐
晚风予卿云月20 分钟前
【C++高并发内存池】 2.ThreadCache设计
开发语言·c++·高并发内存池·tcmalloc
m0_7381207222 分钟前
JWT 安全从入门到实战:六种典型攻击场景解析
前端·网络·python·安全·网络安全
用户2986985301424 分钟前
Python 实现 HTML 转纯文本:两种场景下的文档模型方案
python·html·api
Dovis(誓平步青云)1 小时前
拖动关键帧角色就抽动,动画编辑器怎样补齐中间状态
开发语言·前端·javascript·机器学习·编辑器
小小张说故事1 小时前
Python 的赋值为什么不会复制对象?拆开引用、浅拷贝与深拷贝
后端·python
行走的陀螺仪1 小时前
Claude Code 从入门到实战(二):Bash工具、Plan模式与后台任务
开发语言·bash
努力努力再努力wz1 小时前
【Lua 入门系列】从执行模型到事件驱动:一文理解 Lua 有栈协程、挂起恢复与协作式调度
开发语言·lua
椒颜皮皮虾྅1 小时前
一套 C# 接口,解锁四类视觉任务:DeploySharp 分类、分割、关键点与旋转框实战
开发语言·分类·c#
ljt27249606611 小时前
Python笔记(十三)--异常
笔记·python
日日大王学编程1 小时前
开源Agent项目记忆设计决策对比
python·ai·langchain·开源·ai编程