R語言關聯規則

#                            Apriori算法實現關聯規則挖掘


#======================= MODEL1. 輸入數據集爲transaction類型 ======================

#install.packages("arules")    #Apriori算法程序包
library(arules)
data(Groceries)               #調用R自帶關聯規則數據集Groceries(transaction類型的格式)

#-----------------------查看數據的詳細信息
# Groceries數據集爲雜貨店一個月的交易記錄集,包括169中商品項目,9835個記錄
head(Groceries)     #查看前6條記錄
str(Groceries)      #查看數據的內部結構
summary(Groceries)  #查看數據的基本統計量
class(Groceries)    #查看數據類型,關聯規則處理的數據類型爲“transactions”
dim(Groceries)      #查看數據的維數  行數和列數
colnames(Groceries[,1:5])   #查看第1-5列的列名
#inspect(Groceries)   #查看transactions數據集中的全部記錄

#--------------------- Apriori實現關聯規則
# apriori的參數設置爲支持度0.01,置信度0.1,關聯前項和後項包含的最小項目數爲2,最大項數爲15
rules=apriori(Groceries, parameter=list(support=0.01,confidence=0.1,minlen=2,maxlen=15))  

# 如果需要了解某一種商品的關聯情況,可以使用appearance參數,以下爲探究與whole milk關聯的商品,設置關聯前項爲whole milk,後項不限
# rules=apriori(Groceries, parameter=list(support=0.01,confidence=0.1,minlen=2),appearance=list(lhs="whole milk",default="rhs"))  

rules           #查看生成的關聯規則
rules<-sort(rules,by='support')               #對規則按照support從高到低排序
inspect(rules[1:10])            #查看前10條規則         

# 對規則進行格式轉換並輸出
R1<-as(rules,'data.frame')    #將關聯規則設置成dataframe格式
#setwd("D:\\R files\\Data")
write.csv(R1,"Groceries_apriori.csv") 

#-------------------- 關聯規則可視化
#install.packages("arulesViz")   #關聯規則可視化程序包
library ( arulesViz )

plot(rules, measure = c("support", "lift"), shading = "confidence")   #畫出關聯結果的散點圖
plot(rules,method="grouped")    #作出rules的分組圖

# 繪製Two‐key圖,其中關聯規則點的顏色深淺表示其所代表的關聯規則中所含商品的多少,商品種類越多,點的顏色越深
plot(rules,shading="order", control=list(main="Two‐key plot")) 

#========================== MODEL2. 輸入數據集爲稀疏矩陣 ===========================
#setwd("D:\\R files\\Data")
#  若輸入矩陣爲其他形式,可轉換,將其變成稀疏矩陣
#  數據集testA爲簡單的輸入稀疏矩陣,7個項目和9條記錄

testA=read.csv(file="testA.csv",as.is = T,sep=",")      #讀入稀疏矩陣
set<-testA
factorK<-function(X){factor(X,levels=0:1)}        #建立factorK函數
T1<-as(data.frame(apply(set,2,factorK)),"transactions")    #根據列對應的值是否爲1建立transaction格式的數據集
T2<-apriori(T1,parameter=list(minlen=2,supp=0.3,conf=0.5))      #得到支持度0.1,置信度0.5的關聯規則
T2<-sort(T2,by='support')      #將關聯規則按支持度從高到低排序
inspect(T2[1:10])

# 對規則進行格式轉換
T3<-as(T2,'data.frame')    #將關聯規則設置成dataframe格式

# 畫圖
library ( arulesViz )
plot(T2, measure = c("support", "lift"), shading = "confidence")   #畫出關聯結果的散點圖
plot(T2,method="grouped")    #作出分組圖

# 繪製Two‐key圖,其中關聯規則點的顏色深淺表示其所代表的關聯規則中所含商品的多少,商品種類越多,點的顏色越深
plot(T2,shading="order", control=list(main="Two‐key plot")) 

#  將關聯規則轉換格式輸出
#setwd("D:\\R files\\Data")
write.csv(T3,"testA_apriori.csv") 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章