R語言Apriori算法關(guān)聯(lián)規(guī)則對中藥用藥復(fù)方配伍規(guī)律藥方挖掘可視化|附代碼數(shù)據(jù)
全文鏈接:http://tecdat.cn/?p=32316
原文出處:拓端數(shù)據(jù)部落公眾號
我們常說的中藥挖掘,一般是用藥挖掘,還有穴位的挖掘,主要是想找出一些用藥的規(guī)律。在中醫(yī)挖掘中,數(shù)據(jù)的來源比較廣泛,有的是通過臨床收集用藥處方,比如,一個著名老中醫(yī)針對某一疾病的用藥情況;有的是通過古籍,古代流傳下來的藥方;還有一種情況是在論文數(shù)據(jù)框里查找專門治療某一疾病的文獻(xiàn),從中找到處方,用來分析。
Apriori算法是一種最有影響的挖掘關(guān)聯(lián)規(guī)則頻繁項集的算法。其核心是基于兩階段頻集思想的遞推算法。該關(guān)聯(lián)規(guī)則在分類上屬于單維、單層、布爾關(guān)聯(lián)規(guī)則,Apriori 算法采用了逐層搜索的迭代的方法,算法簡單明了,沒有復(fù)雜的理論推導(dǎo),也易于實現(xiàn)。
由于Apriori算法的特性,十分適合中藥處方、膏方、方劑的挖掘,甚至于穴位的挖掘。
本文幫助客戶得出不同處方的藥物組合和頻率,挖掘出藥方內(nèi)在的規(guī)律。
中藥處方數(shù)據(jù)
讀取數(shù)據(jù)
a_df3=read.xlsx("挖掘用.xlsx",startRow=0, colNames = F)
轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)
a_list=list(0) ?for(i in 1:nrow(a_df3)){ ?? ?? ?##刪除事務(wù)中的重復(fù)項目?a_list[[i]]= unique(strsplit(a_df3[i,],",")[[1]])
將數(shù)據(jù)轉(zhuǎn)換成事務(wù)類型
trans2 <- as(a_list, "tran
查看每個商品的出現(xiàn)頻率
可以看到每個物品出現(xiàn)的頻率,從而判斷哪些物品的支持度較高。
關(guān)聯(lián)規(guī)則挖掘
藥對挖掘
at(dat1,parameter=list(support=0.3,minlen=2,maxle
得到頻繁規(guī)則挖掘
inspect(frequent
查看求得的頻繁項集
spect(sort(frequentsets,by="suppo
根據(jù)支持度對求得的頻繁項集排序并查看(等價于inspect(sort(frequentsets)[1:10])。
建立模型
apriori(dat1,parame
設(shè)置支持度為0.01,置信度為0.3
summary(rules)#查看規(guī)則
查看部分規(guī)則
查看置信度 支持度和提升度
可視化
繪制不同規(guī)則圖形來表示支持度,置信度和提升度。
通過該圖可以看到規(guī)則前項和規(guī)則后項分別有哪些物品 以及每個物品的支持度大小,支持度越大則圓圈越大。
ules, method = NULL, ????? measure = "support", shading = "lift", int
從該圖可以看到支持度和置信度的關(guān)系,置信度越高提升度也越高。
從該圖可以看到支持度和置信度的關(guān)系,提升度越高置信度也越高。
ules, method="matrix3D", measure="lift
從上圖可以看到不同物品之間的關(guān)聯(lián)關(guān)系,圖中的點越大說明該物品的支持度越高,顏色越深說明該物品的提升度越高。
plot(rules, method="doubledecker" ) ?
查看最高的支持度樣本規(guī)則
ules::inspect(head(rules
查看最高置信度樣本規(guī)則
sort(rules, by="confidencnspect(head(rules
sort(rules, by="lift
得到有價值規(guī)則子集
rules,subset=confidence>0.3 & support>0.2 & lift>=1summary(x)
按照支持度排序
sort(x,by="support
按照置信度排序
inspect(sort(x,by="confide
對有價值的x集合進(jìn)行數(shù)據(jù)可視化。
method="grouped")
組合挖掘
at(dat1,parameter=list(support=0.22,minlen=3,maxle
得到頻繁規(guī)則挖掘
nspect(frequents
察看求得的頻繁項集
nspect(sort(frequentsets,by="sup
根據(jù)支持度對求得的頻繁項集排序并查看(等價于inspect(sort(frequentsets)[1:10])
建立模型
apriori(dat1,parameter=list(support=0.24
設(shè)置支持度為0.01,置信度為0.3。
summary(rules)#查看規(guī)則
查看部分規(guī)則
查看置信度 支持度和提升度
可視化
從該圖可以看到支持度和置信度的關(guān)系,提升度越高置信度也越高。
查看最高的支持度樣本規(guī)則
查看最高置信度樣本規(guī)則
查看最高提升度樣本規(guī)則
confidence>0.3 & support>0.3 & lift>=1)??? #得到有價值規(guī)則子集summary(x)
aspect(sort(x,by="support"))??? #按照支持度排序##??? lhs??????????? rhs??? support?? confidence lift??? ?## 45 {川芎,黃芪} => {地龍} 0.3189655 0.7872340? 1.602090 ?## 43 {地龍,黃芪} => {川芎} 0.3189655 0.9024390? 1.586105 ?## 44 {川芎,地龍} => {黃芪} 0.3189655 0.8043478? 1.481021 ?## 42 {川芎,黃芪} => {當(dāng)歸} 0.3103448 0.7659574? 1.615474 ?## 41 {川芎,當(dāng)歸} => {黃芪} 0.3103448 0.8181818? 1.506494 ?## 40 {當(dāng)歸,黃芪} => {川芎} 0.3103448 0.8571429? 1.506494 ?## 37 {當(dāng)歸,地龍} => {川芎} 0.3017241 0.9210526? 1.618820 ?## 38 {川芎,當(dāng)歸} => {地龍} 0.3017241 0.7954545? 1.618820 ?## 39 {川芎,地龍} => {當(dāng)歸} 0.3017241 0.7608696? 1.604743pect(sort(x,by="confidence"))??? #按照置信度排序##??? lhs??????????? rhs??? support?? confidence lift??? ?## 37 {當(dāng)歸,地龍} => {川芎} 0.3017241 0.9210526? 1.618820 ?## 43 {地龍,黃芪} => {川芎} 0.3189655 0.9024390? 1.586105 ?## 40 {當(dāng)歸,黃芪} => {川芎} 0.3103448 0.8571429? 1.506494 ?## 41 {川芎,當(dāng)歸} => {黃芪} 0.3103448 0.8181818? 1.506494 ?## 44 {川芎,地龍} => {黃芪} 0.3189655 0.8043478? 1.481021 ?## 38 {川芎,當(dāng)歸} => {地龍} 0.3017241 0.7954545? 1.618820 ?## 45 {川芎,黃芪} => {地龍} 0.3189655 0.7872340? 1.602090 ?## 42 {川芎,黃芪} => {當(dāng)歸} 0.3103448 0.7659574? 1.615474 ?## 39 {川芎,地龍} => {當(dāng)歸} 0.3017241 0.7608696? 1.604743
對有價值的x集合進(jìn)行數(shù)據(jù)可視化
?最受歡迎的見解
1.Python中的Apriori關(guān)聯(lián)算法-市場購物籃分析
2.R語言繪制生存曲線估計|生存分析|如何R作生存曲線圖
3.用關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘探索藥物配伍中的規(guī)律
4.通過Python中的Apriori算法進(jìn)行關(guān)聯(lián)規(guī)則挖掘
5.用關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘探索藥物配伍中的規(guī)律
6.采用SPSS Modeler的Web復(fù)雜網(wǎng)絡(luò)對所有腧穴進(jìn)行分析
7.R語言如何在生存分析與COX回歸中計算IDI,NRI指標(biāo)
8.R語言如何找到患者數(shù)據(jù)中具有差異的指標(biāo)?(PLS—DA分析)
9.R語言中的生存分析Survival analysis晚期肺癌患者4例