第8章 中医证型关联规则挖掘

  1. 数据预处理
    首先从数据集中读取数据。
    这里写图片描述

  2. 1-6列分别进行聚类,然后分别存入新的DataFrame中。得到每一列的质心和聚类的个数。会与书中略有不同。
    这里写图片描述

3.根据上面聚类的质心,替换表中的数据为类别。我采用的是cut方法。代码如下,不知道有没有更方便的:

for r in range(6):
    cr = result.iloc[::2,:].ix[r]
    data_c.ix[:,r] = pd.cut(data_c.ix[:,r],cr,labels=[cr.name+str(i) for i in range(1,4)],right=False).astype('str').replace('nan',cr.name+'4')

得到的结果如下:
这里写图片描述

4.选取出需要求证关联的的证型和结果列。进行Apriori关联。
书中提供的代码在python3中有一处错误,修改如下:

def find_result(data):
    start = time.clock()
    print('\n转换原始数据至0-1矩阵...')
    ct = lambda x: pd.Series(1, index= x[pd.notnull(x)])
    b = list(map(ct, data.as_matrix()))  # 需要转为list
    data = pd.DataFrame(b).fillna(0)
    end = time.clock()
    print('\n转换完毕,用时:{:.2f}秒'.format(end-start))
    del b

    support = 0.06
    confidence = 0.75
    ms = '---'

    start = time.clock()
    print('\n开始搜索关联规则...')
    find_rule(data, support, confidence, ms)
    end = time.clock()
    print('\n搜索完成,用时:{:.2f}秒'.format(end-start))

因为是给定的数据,所以可以收敛,但不知道是不是所有的数据都可以收敛。得到结果如下,每次结果都不完全相同:

这里写图片描述

至于拓展思考的内容,基本就是在第4步选取不同的列即可,此处不再追溯。得到的结果并没有第一条的结果那么具有代表性。可见关联算法的结果也不完全有效。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值