【数据分析】在Python中,使用apriori算法挖掘药材的频繁项集,并挖掘关联规则

本文代码及数据下载

使用Pandas和Mlxtend进行关联分析:从药物处方数据到关联规则

关联规则分析是一个用于发现变量之间相互关联或相互依赖性的有用工具,它在市场分析、生物信息学、产品推荐、医疗诊断等领域有广泛的应用。

在本教程中,我们将探讨如何使用Python的pandasmlxtend库从药物处方数据中发现频繁项集和生成关联规则。

开始之前

确保你已经安装了pandasmlxtend库。如果没有,你可以通过以下pip命令安装:

pip install pandas mlxtend

加载和准备数据

首先,我们使用pandas库读取处方数据。这里我们假设有一个名为处方与对应的药物(用于频繁项集与关联分析).xlsx的Excel文件,包含了药物处方的数据集。

import pandas as pd

# 示例数据集
data = pd.read_excel(r'处方与对应的药物(用于频繁项集与关联分析).xlsx')

df = pd.DataFrame(data)

发现频繁项集

使用mlxtend.frequent_patterns中的apriori方法可以帮助我们找到频繁项集。这里,min_support参数是我们用来定义项集出现频率的最小阈值。在本例中,我们设置为0.01,意味着所有出现频率至少为1%的项集都会被考虑。

from mlxtend.frequent_patterns import apriori

frequent_itemsets = apriori(df, min_support=0.01, use_colnames=True)

print(frequent_itemsets)

生成关联规则

一旦我们有了频繁项集,就可以使用association_rules方法来生成关联规则。这里,我们通过设置metricconfidencemin_threshold为0.1,来找出至少有10%置信度的规则。

from mlxtend.frequent_patterns import association_rules

rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.1)

美化输出

默认情况下,antecedentsconsequents列会以frozenset对象的形式呈现。为了更友好的展示,我们可以通过应用lambda函数,将它们转换为逗号分隔的字符串。

rules['antecedents'] = rules['antecedents'].apply(lambda x: ', '.join(list(x)))
rules['consequents'] = rules['consequents'].apply(lambda x: ', '.join(list(x)))

保存结果到Excel

最后,我们将关联规则保存到一个Excel文件中。这样不仅可以方便地查看这些规则,而且还避免了frozenset对象的直接输出问题。

rules.to_excel('关联规则分析结果.xlsx', index=False)

打印部分关联规则以供预览:

print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

至此,我们完成了从加载数据、发现频繁项集到生成和保存关联规则的整个过程。

绘制关联规则网络图

因为Python中并没有很方便的接口直接绘制,所以作者自行实现了一个函数,以网络的形式可视化了各个中药材的置信度的强度。

代码量相对大,请看这篇文章

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值