gpt4 book ai didi

评估 elat 和 apriori 项集时删除具有空值的行

转载 作者:行者123 更新时间:2023-11-30 09:09:36 28 4
gpt4 key购买 nike

我正在 R 中工作,并且有一个如下所示的数据集

[1, 2, 3, ""]
[1, 2, "", 4]
[1,"", "", ""]

我正在将这些值读入事务对象,然后将它们传递给 eclat 或 apriori 进行频繁项集评估。当我的频繁项集如下所示时,问题就出现了:

{1,""}
{2,3,""}

我想从计算中删除这些行,因为我认为这会减慢处理速度,而且从预测的角度来看也没有任何意义。你能帮忙吗?我的 R 代码如下。

tr <- read.transactions("Items.csv", rm.duplicates=TRUE, format="basket",sep=",")

dataset1 <- as.vector(t(dataset1))

frequentItems <- eclat (tr, parameter = list(supp = 0.03, minlen=2, maxlen = 4))

inspect(frequentItems)

谢谢,马特

最佳答案

您遇到的问题可以归结为arules认为“”是一个项目。因此,如果您不希望出现这种情况,则必须首先从数据中删除所有这些值。罪魁祸首可能是原始 csv 文件。它包含空字段,并且它们被转换为 "" 项。

因此,摆脱此问题的最佳方法是确保您的 csv 文件实际上具有正确的格式。它应该看起来像这样:

item1, item2
item1
item2, item3

不是这个

"item1", "item2"
"item1", ""
"item2", "item3"

要解决代码中的问题,请先转换为列表:

thelist <- as(tr, "list")

thelist <- lapply(thelist, function(i){
i[i != ""]
})

trnew <- as(thelist, "transactions")

向您展示其工作原理的示例:

library(arules)
# Example data
a_list <- list(
c("item1","item2"),
c("item1",""),
c("item2","item3"),
c("","item3")
)

tr <- as(a_list, "transactions")

frequentItems <- eclat (tr, parameter = list(supp = 0.03, minlen=2, maxlen = 4))
inspect(frequentItems)

#> items support
#>[1] {item2,item3} 0.25
#>[2] {,item3} 0.25
#>[3] {,item1} 0.25
#>[4] {item1,item2} 0.25

# Conversion
thelist <- as(tr, "list")
thelist <- lapply(thelist, function(i){
i[i != ""]
})
trnew <- as(thelist, "transactions")

frequentItems <- eclat (trnew, parameter = list(supp = 0.03, minlen=2, maxlen = 4))
inspect(frequentItems)

#> items support
#>[1] {item2,item3} 0.25
#>[2] {item1,item2} 0.25

关于评估 elat 和 apriori 项集时删除具有空值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43156041/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com