Apriori规定df要求

时间:2018-03-05 17:38:40

标签: r associations apriori

问题:

无法在PC上使用library(arules)生成先验规则。当我运行以下功能时:

rules <- apriori(df, parameter = list(supp = 0.01, conf = 0.5))

RStudio会抛出以下错误:

  

asMethod(object)中的错误:列1,2,3,4,5不合逻辑或因子。首先将列分离。

疑似解决方案:

我几乎可以肯定数据集的格式必须符合apriori的预期输入。

数据集:

df

代码:

#Load and install packages
#install.packages("arules")
library(arules)

#Assign to dataframe
df <- read.csv("C:/Titanic.csv", header = TRUE, stringsAsFactors = FALSE)

#generate rules
rules <- apriori(df, parameter = list(supp = 0.01, conf = 0.5))

尝试解决方案:

#One solution on SO was to factor
df<- sapply(df, as.factor)
#failed.


#What if I discretize the columns?
df$Passenger <- discretize(df$Passenger)
#After discretizing this column and running apriori, still get an error.
df$Class <- discretize(df$Class)
#discretize does not work on column Class


#could column 1 be a problem? Try dropping it.
df$Passenger <- NULL
#this did not work!

1 个答案:

答案 0 :(得分:1)

在我看来,你的逻辑是正确的,只需要进行一些微调。

首先,您需要阅读字符作为因素,这意味着在阅读数据时应启用stringsAsFactors

df <- read.csv("C:/Titanic.csv", header = TRUE, stringsAsFactors = TRUE)

然后问题应该只在第一列。如果您希望删除第一列,则可以直接在apriory()的参数中执行此操作:

rules <- apriori(df[ , -1], parameter = list(supp = 0.01, conf = 0.5))

如果您希望像处理因素一样处理第一列,那么您可以这样做

df$Passenger <- as.factor(df$Passenger)

然后您的初始陈述rules <- apriori(df, parameter = list(supp = 0.01, conf = 0.5))完美无缺。