问题:
无法在PC上使用library(arules)
生成先验规则。当我运行以下功能时:
rules <- apriori(df, parameter = list(supp = 0.01, conf = 0.5))
RStudio会抛出以下错误:
asMethod(object)中的错误:列1,2,3,4,5不合逻辑或因子。首先将列分离。
疑似解决方案:
我几乎可以肯定数据集的格式必须符合apriori
的预期输入。
数据集:
代码:
#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!
答案 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))
完美无缺。