首页 文章

Power BI - R Script Visual - Apriori

提问于
浏览
0

我在PowerBI中使用了r脚本视觉 . 我可以在R中运行以下代码并且它可以工作,但是在PowerBI中运行时我得到以下错误 . 我想在视觉上显示apriori的结果 . 以下两个测试在R中都运行良好,但在PowerBI的R脚本视觉中没有 . 有什么想法吗?

如果我尝试#test2 .

library(Matrix)
library(arules)
library(plyr)
library(gridExtra)

df_itemList <- ddply(dataset,c("SALESID"),function(df1)paste(df1$ITEMID))
#test1
#df_itemList  = sapply(df_itemList , function(x) gsub(" ", ",", x))
#basket_rules <- apriori(df_itemList, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

#test2
txn = read.transactions(df_itemList, rm.duplicates = TRUE, format = "basket", sep = ",", cols = 1);
basket_rules <- apriori(txn, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

df_basket <- as(basket_rules,"data.frame")
grid.table(df_basket)

错误消息:R脚本错误 .

附包:'arules'

从'package:base'屏蔽以下对象:

abbreviate, write

readLines中的错误(文件,编码=编码):'con'不是连接调用:read.transactions - > lapply - > readLines执行暂停

如果我试试#test1 ......

library(Matrix)
library(arules)
library(plyr)
library(gridExtra)

df_itemList <- ddply(dataset,c("SALESID"),function(df1)paste(df1$ITEMID))
#test1
df_itemList  = sapply(df_itemList , function(x) gsub(" ", ",", x))
basket_rules <- apriori(df_itemList, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

#test2
#txn = read.transactions(df_itemList, rm.duplicates = TRUE, format = "basket", sep = ",", cols = 1);
#basket_rules <- apriori(txn, parameter = list(sup=0.1,conf=0.5,target="rules", maxlen=5));

df_basket <- as(basket_rules,"data.frame")
grid.table(df_basket)

然后我得到下面的错误 .

错误消息:R脚本错误 .

附包:'arules'

从'package:base'屏蔽以下对象:

abbreviate, write

asMethod(object)中的错误:列2,3,4不合逻辑或因子 . 首先将列分离 . 调用:apriori - > as - > asMethod执行暂停

1 回答

  • 0

    在PowerBI R脚本中使用read.transactions的正确方法是将数据帧转换为矩阵,然后转换为事务类 . 这是通过将导出传递给csv,然后读回read.transactions ...参考here

    library(Matrix)
    library(arules)
    library(plyr)
    library(dplyr)
    library(gridExtra)
    
    itemList <- dataset
    #itemList <- read.csv("ItemListAll.csv", header=TRUE, sep=",")
    
    # Converting to a Matrix ####
    itemList$const = TRUE
    
    # Remove duplicates
    dim(itemList)
    orders <- unique(itemList)
    dim(itemList)
    
    # Need to reshape the matrix
    itemList_max_prep <- reshape(data = itemList,
                               idvar = "SALESID",
                               timevar = "ITEMID",
                               direction = "wide")
    
    # Drop the SALESID
    itemList_matrix <- as.matrix(itemList_max_prep[,-1])
    
    # Clean up the missing values to be FALSE
    itemList_matrix[is.na(itemList_matrix)] <- FALSE
    
    # Clean up names
    colnames(itemList_matrix) <- gsub(x=colnames(itemList_matrix),
                                   pattern="const\\.", replacement="")
    
    itemList_trans <- as(itemList_matrix,"transactions")
    
    #inspect(itemList_trans)
    
    basket_rules <- apriori(itemList_trans, parameter = list(sup=0.01,conf=0.5,target="rules", minlen=3));
    df_basket <- as(basket_rules,"data.frame")
    df_basket$support <- ceiling(df_basket$support * 100)
    df_basket$confidence<- ceiling(df_basket$confidence * 100)
    df_basket$lift<- round(df_basket$lift, digits = 2)
    df_basket <- df_basket[rev(order(df_basket$support)),];
    grid.table(head(df_basket));
    

相关问题