本文是基于《Python数据分析与挖掘实战》的实战部分的第八章的数据——《中医证型关联规则挖掘》做的分析。

旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码。

主要有:1)将原始数据按照聚类结果进行标记类别

1 背景与目标分析

此项目旨在根据相关数据建模,获取中医证素与乳腺癌TNM分期之间的关系。

2 数据预处理

2.1 数据变换

2.1.1 数据离散化

datafile = 'data.xls'
resultfile = 'data_processed.xlsx'typelabel = {u'肝气郁结证型系数':'A',u'热毒蕴结证型系数':'B',u'冲任失调证型系数':'C',u'气血两虚证型系数':'D',u'脾胃虚弱证型系数':'E',u'肝肾阴虚证型系数':'F'}k = 4 #需要进行的聚类类别数#读取文件进行聚类分析
data = pd.read_excel(datafile)
keys = list(typelabel.keys())
result = DataFrame()for i in range(len(keys)):#调用k-means算法 进行聚类print(u'正在进行%s的聚类' % keys[i])kmodel = KMeans(n_clusters = k, n_jobs = 4)  # n_job是线程数,根据自己电脑本身来调节kmodel.fit(data[[keys[i]]].as_matrix())# 训练模型
#     kmodel.fit(data[[keys[i]]]) # 不转成矩阵形式结果一样
#KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
#     n_clusters=4, n_init=10, n_jobs=4, precompute_distances='auto',
#     random_state=None, tol=0.0001, verbose=0)r1 = DataFrame(kmodel.cluster_centers_, columns = [typelabel[keys[i]]]) # 聚类中心r2 = Series(kmodel.labels_).value_counts() #分类统计r2 = DataFrame(r2,columns = [typelabel[keys[i]]+'n'])# 转成DataFrame格式,记录各个类别的数目r = pd.concat([r1,r2], axis=1).sort_values(typelabel[keys[i]])r.index = range(1,5)r[typelabel[keys[i]]] = pd.rolling_mean(r[typelabel[keys[i]]],2) # rolling_mean用来计算相邻两列的均值,以此作为边界点r[typelabel[keys[i]]][1] = 0.0 # 将原来的聚类中心改成边界点result = result.append(r.T)
result = result.sort_index() # 以index排序,以ABCDEF排序
result.to_excel(resultfile)print (result)

2.1.2 划分原始数据中的类别

# 将分类后数据进行处理(*****)
data_cut = DataFrame(columns = data.columns[:6])
types = ['A','B','C','D','E','F']
num = ['1','2','3','4']
for i in range(len(data_cut.columns)):value = list(data.iloc[:,i])bins = list(result[(2*i):(2*i+1)].values[0])bins.append(1)names = [str(x)+str(y) for x in types for y in num]group_names = names[4*i:4*(i+1)]cats = pd.cut(value,bins,labels=group_names,right=False)data_cut.iloc[:,i] = cats
data_cut.to_excel('apriori.xlsx')
data_cut.head()

# 注意!本文中作者最后建模的时候并没有使用这份数据进行建模,当输入这份数据时,结果为空!

3 模型建立

inputfile ='apriori.txt' #输入事务集文件
# '''apriori.txt中文件格式如下
# A1,B2,C1,D3,E2,F1,H2
# A2,B2,C1,D2,E2,F1,H3
# A3,B4,C2,D3,E4,F1,H4
# A3,B1,C2,D1,E1,F1,H1
# '''
data2 = pd.read_csv(inputfile, header=None, dtype=object)# 此文件是作者建模时的数据,运行后正常。
# data2 = pd.read_excel('apriori.xlsx', header=0) # !!!此文件是在预处理时进行离散化后得到的,输出结果有误!为空!start = time.clock() # 计时开始
print(u'\n转换原始数据至0-1矩阵')ct = lambda x: Series(1, index = x[pd.notnull(x)]) # 将标签数据转换成1,是转换0-1矩阵的过渡函数
b = map(ct, data2.as_matrix())# 用map方式执行
data3 = DataFrame(b).fillna(0)
end = time.clock() #计时开始print (u'转换完毕,用时%s秒' % (end-start))
del b #删除中间变量b 节省内存support = 0.06 #最小支持度
confidence = 0.75 #最小置信度
ms = '---'# 用来区分不同元素,需要保证原始表格中无该字符start = time.clock() #计时开始
print(u'\n开始搜索关联规则...')
find_rule(data3, support, confidence, ms)
end = time.clock()
print (u'\n搜索完成,用时:%.2f秒' % (end-start))

模型改进:

由于书中作者给出的代码并没有运用到剪枝策略,因此采用了这篇文章的代码,将该代码中load_data_set()函数中的内容改成如图:

其运行的结果如下:

备注:本章节完整代码详见点击打开链接

《Python数据分析与挖掘实战》第8章——Apriori关联规则相关推荐

  1. python数据分析与挖掘实战-第六章拓展偷漏税用户识别

    第六章分别使用了LM神经网络和CART 决策树构建了 电力窃漏电用户自动识别模型,章末提出了拓展思考–偷漏税用户识别. 第六章及拓展思考完整代码 https://github.com/dengsiyi ...

  2. Python数据分析与挖掘实战——第三章

    第三章 数据探索 目录 第三章 数据探索 一.数据探索 二.数据质量分析 1. 主要任务: 2. 缺失值分析 3. 异常值分析 4. 一致性分析 三.数据特征分析 1. 分布分析 2. 对比分析 3. ...

  3. 《Python数据分析与挖掘实战》一第1章 数据挖掘基础1.1 某知名连锁餐饮企业的困惑...

    本节书摘来自华章出版社<Python数据分析与挖掘实战>一书中的第1章,第1.1节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区"华章计算机"公众号 ...

  4. 《Python数据分析与挖掘实战》第7章-聚类+绘制雷达图

    本文是基于<Python数据分析与挖掘实战>的第七章的数据--<航空公司客户价值分析>做的分析对部分代码,做出补充,对原文中的雷达图进行了实现. 1. 背景与目标分析 此项目旨 ...

  5. 《Python数据分析与挖掘实战》第10章(下)——DNN2 筛选得“候选洗浴事件”3 构建模型

    本文是基于<Python数据分析与挖掘实战>的实战部分的第10章的数据--<家用电器用户行为分析与事件识别> 做的分析. 接着前一篇文章的内容,本篇博文重点是处理用水事件中的属 ...

  6. 《Python数据分析与挖掘实战》第11章——应用系统负载分析与磁盘容量预测(时间序列)

    文章目录 1.背景与目标分析 2.2 数据探索 2.1 查看数据信息 2.2 数据平稳性分析 3 数据预处理 3.1 数据清洗 3.2 数据变换--属性构造 4 模型构建 4.1 确定模型-- ARM ...

  7. 《Python数据分析与挖掘实战》第14章——基于基站定位数据的商圈分析(层次聚类)

    本文是基于<Python数据分析与挖掘实战>的实战第14章<基于基站定位数据的商圈分析>做的分析. 1 挖掘背景及目标 从某通信运营商提供的特定接口解析得到用户的定位数据.利用 ...

  8. 《Python数据分析与挖掘实战》第12章(中)——协同推荐

    本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...

  9. 《Python数据分析与挖掘实战》第7章——航空公司客户价值分析(kmeans)

    本文是基于<Python数据分析与挖掘实战>的实战部分的第七章的数据--<航空公司客户价值分析>做的分析. 旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码. 1)在 ...

  10. 《Python数据分析与挖掘实战》第15章 ——电商产品评论数据情感分析(LED)

    文章目录 1.挖掘背景与目标 2.2 数据探索与预处理 2.1 数据筛选 2.2 数据去重 2.3 删除前缀评分 2.4 jieba分词 3 基于LDA 模型的主题分析 4.权重 5.如何在主题空间比 ...

最新文章

  1. 不知道这些肯定没学过Go语言
  2. SQLite添加列的限制
  3. 【原创翻译】如何阅读一个GO程序
  4. 操作系统(十五)调度算法的评价指标
  5. 月亮之上--数学分析版
  6. Splash resource_timeout 属性
  7. python编程资料包_强力推荐,非常全的Python编程400集学习资料(今日限免)
  8. SqlServer查询表中某列相同值的最近记录
  9. java提高篇(十三)-----字符串
  10. 喜庆本博客成为CSDN博客专家
  11. linux日志logger命令详解
  12. GPS经纬度坐标和UTM坐标的相互转换
  13. 微信小程序退出按钮退出方式
  14. 能够有效提升开发效率的 20 余款 VSCode 插件(多图带效果展示)
  15. 重拾C语言——结构体和共用体
  16. 前端实现pdf在线预览
  17. jn-社团申请必须要上传图片
  18. 关于大数据技术原理与应用的学习(3)
  19. The Canonical List of Online Color Resources for Designers
  20. xLua学习之路(三) ------ C#主动发起对Lua数据结构的访问(Lua文件保存格式要为UTF-8)

热门文章

  1. 漂亮实用的15个脑图模板,你知道哪些是AI做的吗?
  2. Ubuntu 修改tomcat端口
  3. ANSYS有限元仿真分析:大变形(Large Dflection)开关的意义
  4. 【美赛资料】自己整理的美国大学生数学建模竞赛资料
  5. 幼儿抽象逻辑思维举例_哈啰思维幼儿数学逻辑思维app下载-哈啰思维幼儿数学逻辑思维手机版 v1.0.1...
  6. 【Eigen】:C2244错误,无法将函数定义与现有的声明匹配
  7. vue:生成二维码 qrcode、vue-qr(二维码中间可带logo)
  8. 读不到盘如何恢复数据?硬盘不被识别数据恢复?硬盘无法识别的原因
  9. keyshot手机渲染教程_渲染基础教程,六个步骤教你KeyShot工作流程
  10. 多线程---并发容器的使用