当前位置:   article > 正文

[apyori]关联分析:症状关联分析

apyori

关联分析可以了解数据集中的项之间的关联程度,可以挖掘出“某些事件可能会引起另外一些事情的发生”之类的规则,从而有助于做出一些关联性的推断或预测。生成的结果类似于"炸鸡>>啤酒",由前项和后项组成。

导入数据

(数据集见最上方)

  1. import pandas as pd
  2. df = pd.read_excel('/kaggle/input/diseases-of-traditional-chinese-medicine/Diseases of Traditional Chinese Medicine.xlsx')
  3. df.head()

运行结果:


处理为双重列表结构

  1. # 转换为双重列表结构
  2. symptoms = []
  3. for i in df['病人症状'].tolist():
  4. symptoms.append(i.split(','))

代码详解:

[] 表示创建一个空列表symptoms;

df['病人症状']是一个Series对象,tolist()函数将该Series对象转换为一个Python列表;

split()函数用于拆分字符串,split(',')表示以逗号为分隔符进行拆分;

i 代表df['病人症状']里的每一个元素,i.split(',')函数作用于每一个元素里的逗号;

append()用于在列表的末尾添加一个元素,append(i)将该字符串作为一个新元素添加到symptoms列表的末尾;

运行结果:


调包建模

  1. # 安装apyori包
  2. pip install apyori
  3. # 调用apyori库中的apriori()函数对病症列表symptoms进行关联关系分析
  4. from apyori import apriori
  5. rules = apriori(symptoms, min_support=0.1, min_confidence=0.7)
  6. results = list(rules)

代码详解:

min_support:表示最小支持度,即频繁项集在数据集中出现的最小比例。0.1则表示频繁项集在数据集中至少出现10%的次数。

min_confidence:表示最小置信度,即关联规则的最小置信度。0.7表示关联规则的置信度至少为70%。

list()可以将元组、列表、集合等转换为列表。方便我们使用列表的方法和属性来访问和处理关联规则的元素。

运行结果:


提取规则

  1. # 提取results中的关联规则,并通过字符串拼接更好地呈现关联规则
  2. for i in results: # 遍历results中的每一个频繁项集
  3. for j in i.ordered_statistics: # 获取频繁项集中的关联规则
  4. X = j.items_base # 关联规则的前件
  5. Y = j.items_add # 关联规则的后件
  6. x = ', '.join([item for item in X]) # 连接前件中的元素
  7. y = ', '.join([item for item in Y]) # 连接后件中的元素
  8. if x != '': # 防止出现关联规则前件为空的情况
  9. print(x + ' >> ' + y) # 通过字符串拼接更好地呈现结果

代码详解:

`i.ordered_statistics`是一个属性,它返回频繁项集`i`中的关联规则。
每个关联规则都包含以下信息:
- `items_base`:关联规则的前件,即规则的前半部分。
- `items_add`:关联规则的后件,即规则的后半部分。
- `confidence`:关联规则的置信度,表示在前件出现的情况下,后件也会出现的概率。

join()可以把列表、元组里的元素连成一个字符串;

', '.join()表示把列表里的元素用逗号和空格分隔开,并将它们连接成一个字符串。

运行结果:

结果解读:“便秘 >> 消化不良” 表示在数据集中经常同时出现 "便秘" 和 "消化不良" 这两个项,其他项也同理。

注意:关联分析只能找到项之间的相关性,并不能确定因果关系哦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/909001
推荐阅读
相关标签
  

闽ICP备14008679号