本文是基于《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)# 此文件是作者建模时的数据,运行后正常。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.time() #计时开始print (u'转换完毕,用时%s秒' % (end-start))
del b #删除中间变量b 节省内存support = 0.06 #最小支持度
confidence = 0.75 #最小置信度
ms = '---'# 用来区分不同元素,需要保证原始表格中无该字符start = time.time() #计时开始
print(u'\n开始搜索关联规则...')
find_rule(data3, support, confidence, ms)
end = time.clock()
print (u'\n搜索完成,用时:%.2f秒' % (end-start))

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

  1. python数据与挖掘实战学习:实战篇 第八章中医证型关联规则挖掘笔记

    第八章 中医证型关联规则挖掘 8.1 背景与挖掘目标 中医药治疗恶性肿瘤,从整体出发,调整机体气血.阴阳.脏腑功能的平衡,根据不同的临床证候进行辩证论治.确定"先证而治"的方向:即 ...

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

    8.1 背景与挖掘目标 借助患者的病理信息,挖掘患者的症状与中医证型之间的关联关系 对截断治疗提供依据,挖掘潜性证素 8.2 分析方法与过程 数据收集与整理,问卷调查.将问卷信息整理成原始数据 数据预 ...

  3. 第8章 中医证型关联规则挖掘代码调整

    一.项目部署情况 二.原书提供代码与个人实现修正如下 1.第一处修改 2.第二处修改 三.关联规则apriori算法理解 参考链接:https://www.bilibili.com/video/av3 ...

  4. 数据分析与挖掘实战-中医证型关联规则挖掘

    中医证型关联规则挖掘 背景 显然,如今的中医治疗再度火了起来,归根到底的原因还是中医在某些疾病处理上具有天然优势. 而且,中医治疗没有西医治疗的很多毒副作用. "先证而治". 挖掘 ...

  5. Python 数据挖掘之中医证型关联规则挖掘

    Python 数据挖掘之中医证型关联规则挖掘 综述 部分数据展示 数据聚类离散化 Apriori关联规则分析 结果 综述 对中医证型数据进行挖掘分析,运用的算法有 K-Means,MeanShift, ...

  6. 中医证型关联规则挖掘

    背景与挖掘目标 在医学上,癌是指起源于上皮组织的恶性肿瘤,是恶性肿瘤中最常见的一类.相对应的,起源于间叶组织的恶性肿瘤统称为肉瘤.有少数恶性肿瘤不按上述原则命名,如肾母细胞瘤.恶性畸胎瘤等.一般人们所 ...

  7. (八)Python数据分析与挖掘实战(实战篇)——中医证型关联规则挖掘

    这个专栏用来记录我在学习和实践<Python数据分析与挖掘实战>一书时的一些知识点总结和代码实现. 文章目录 背景和目标 数据 原始属性表 脚本 discretization.py apr ...

  8. 学习笔记:【案例】中医证型关联规则挖掘

    案例来源:<Python数据分析与挖掘实战>第8章 案例背景与挖掘目标 输入数据: 挖掘目标: 借助三阴乳腺癌患者的病理信息,挖掘患者的症状与中医证型之间的关联关系 对截断治疗提供依据,挖 ...

  9. Chapter 8 中医证型关联规则挖掘

    目录 一.背景和目标 二.方法步骤 三.过程 3.1 数据获取 3.2 数据预处理 3.3 模型构建 四.模型应用 一.背景和目标 借助患者的病理信息,挖掘患者的症状于中医证型之间的关联关系. 对截断 ...

最新文章

  1. 最大化窗口设置_BetterTouchTool的几个实用设置
  2. 创建Console应用程序,粘贴一下代码,创建E://MyWebServerRoot//目录,作为虚拟目录,亲自测试通过,
  3. Git clone之后你的硬盘上究竟发生了什么?
  4. eclipse中JPA插件的安装与使用
  5. c# 数据库操作学习
  6. Nginx的Upstream负载均衡模块
  7. mysql查询所有男生中姓王的_数据库6.22
  8. python网页版本_python 网页版
  9. 树莓派安装wps2019教程
  10. ps去水印教程_Adobe Photoshop CS2去除水印方法 PS去水印教程
  11. html化学式编辑器,化学反应方程式编辑器软件(ChemDraw Pro)
  12. 数仓4.0之即席查询
  13. TortoiseSVN 无论什么操作,都报同一个错误:请求的操作需要提升
  14. java stringbuilder_Java stringBuilder的使用方法及实例解析
  15. FileBrowser文件浏览器部署
  16. 怎么用显卡计算_教师:课程表的时间怎么用公式自动计算?
  17. 如何批量将手写数据转Excel?
  18. 接入支付宝出现交易订单处理失败,请稍后再试(ALI64)的错误
  19. 异形3×3魔方还原教程_2345异形魔方教程
  20. python分割_Python文件合并与分割操作方法工具

热门文章

  1. linux dnf命令安装
  2. 甲骨文UBUNTU安装宝塔面板无法访问
  3. 区块链核心概念(1)
  4. vue3代码检查以及格式化配置
  5. iframe之嵌套方案总结
  6. 知乎万赞:什么样的程序员在35岁以后依然被公司抢着要?打破程序员“中年危机”
  7. 好用免费的内网穿透工具
  8. 盘点4种微信营销如何快速吸粉的方法
  9. 第一次发,可能不太好,别喷我
  10. Simulink建模:Simulink PWM死区时间插入仿真