zoukankan      html  css  js  c++  java
  • 中医证型关联规则挖掘

     

    挖掘目标

    1、借助三阴乳腺癌患者的病理信息,挖掘患者的症状与中医证型之间的关联关系(关联规则算法)

    2、对截断治疗提供依据,挖掘潜性证素

    数据预处理

    1、属性规约

    本案例收集的数据共73个属性,我们只选择6中证型得分、TNM分期的属性值构造数据集

    2、数据变换

    1)属性构造

    为了更好的反映出中医证素分布的性质,使用证型系数来代替证型得分数据。

    证型系数 = 该证型得分/该证型总分

    2)数据离散化

    由于Apriori算法无法处理连续型数值变量,需将数据离散化。

    离散化首先会想到使用pandas的cut函数,但这种切分方式是不合适,应该使用聚类的方式

    比如将肝气郁结证型数据离散化:

    将数据聚类,可以得到4个簇,对簇中心进行排序,然后使用pandas的rolling_mean函数计算相邻两个数的均值,作为不同簇的界。

    代码如下:

    datafile = '../data/data.xls' #待聚类的数据文件

    processedfile = '../tmp/data_processed.xls' #数据处理后文件

    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 = pd.DataFrame()

    if __name__ == '__main__': #判断是否主窗口运行,如果是将代码保存为.py后运行,则需要这句,如果直接复制到命令窗口运行,则不需要这句。

      for i in range(len(keys)):

        #调用k-means算法,进行聚类离散化

        print(u'正在进行“%s”的聚类...' % keys[i])

        kmodel = KMeans(n_clusters = k, n_jobs = 4) #n_jobs是并行数,一般等于CPU数较好

        kmodel.fit(data[[keys[i]]].as_matrix()) #训练模型

       

        r1 = pd.DataFrame(kmodel.cluster_centers_, columns = [typelabel[keys[i]]]) #聚类中心

        r2 = pd.Series(kmodel.labels_).value_counts() #分类统计

        r2 = pd.DataFrame(r2, columns = [typelabel[keys[i]]+'n']) #转为DataFrame,记录各个类别的数目

        r = pd.concat([r1, r2], axis = 1).sort(typelabel[keys[i]]) #匹配聚类中心和类别数目

        r.index = [1, 2, 3, 4]

       

        r[typelabel[keys[i]]] = pd.rolling_mean(r[typelabel[keys[i]]], 2) #rolling_mean()用来计算相邻2列的均值,以此作为边界点。

        r[typelabel[keys[i]]][1] = 0.0 #这两句代码将原来的聚类中心改为边界点。

        result = result.append(r.T)

      result = result.sort() #以Index排序,即以A,B,C,D,E,F顺序排

      result.to_excel(processedfile)

    模型构建

    使用关联算法进行患者症状与中医证型之间的关系。

  • 相关阅读:
    Java SSM入门(四)——Mybatis延迟加载、缓存、注解和小结
    Adam算法及相关Adaptive Learning Rate 自适应学习率
    20191229
    关于安装matlab FEAST过程(关于mex与工具包安装,附libsvm2.23和2017a安装教程网址)
    标准化和归一化(综合)
    [转]特征选择-weka搜索函数
    [转]怎样理解随机种子
    对神经网络输入是否做归一化
    点击邮箱名跳转到相对应的邮箱登陆页面
    在vue中使用document.execCommand实现复制文本的功能
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10115950.html
Copyright © 2011-2022 走看看