概要:
Arule パッケージを使用して、RStudio でバスケット分析ルールを作成しています。WorkSpace をファイル (つまりx.RDATA ) に保存しています。そして、VS.NET で R.DOTNET Nuget PackageAge を使用してルールをクエリします。パラメータを送信する RFunction を呼び出しています。
そこまでは問題ありません。しかし.... ARule 関数に存在しない ProductCode を送信すると、エラーがスローされます。
lhs %ain% newBasket のエラー: テーブルに不明な項目ラベルが含まれています
シナリオを再現するために、データセットGroceriesを使用します。私の意見では、この製品はモデルに含まれていませんでした。
それは新しい製品である可能性があります。または、CONFIDENCE、 SUPORT、または LIFT が低いため、ルールに存在しません。
# Load the libraries
library(arules)
library(arulesViz)
library(datasets)
# Load the data set
data(Groceries)
# Get the rules
rules <- apriori(Groceries, parameter = list(supp = 0.001, conf = 0.8))
# Sorting
rules<-sort(rules, by="confidence", decreasing=TRUE)
# Redundancies
subset.matrix <- is.subset(rules, rules)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
rules.pruned <- rules[!redundant]
rules<-rules.pruned
#-----------------------------------------------------------------------------------
#FUNCTION
fn_findRules <- function(rules, newBasket){
arules<-subset(rules, subset = lhs %ain% newBasket)
arules.sorted <- sort(arules, by="lift")
return (arules)
}
#-----------------------------------------------------------------------------------
「トロピカルフルーツ」「ヨーグルト」というパラメータで関数を呼び出しても問題ありません。
#Calling Function For Test
newBasketItems <- c("tropical fruit", "yogurt")
RuleResult <- fn_findRules(rules, newBasketItems)
inspect(RuleResult[1:5])
結果:
lhs rhs support confidence lift
264 {tropical fruit,grapes,whole milk,yogurt} => {other vegetables} 0.0010168 1.00000 5.1682
269 {ham,tropical fruit,pip fruit,yogurt} => {other vegetables} 0.0010168 1.00000 5.1682
276 {tropical fruit,root vegetables,yogurt,oil} => {whole milk} 0.0011185 1.00000 3.9136
395 {sausage,tropical fruit,root vegetables,yogurt} => {whole milk} 0.0015252 0.93750 3.6690
410 {citrus fruit,tropical fruit,root vegetables,whole milk,yogurt} => {other vegetables} 0.0014235 0.93333 4.8236
しかし、パラメータ「トロピカル NEW PRODUCT 」、「ヨーグルト」で関数を呼び出すと、エラーがスローされます。
#Calling Function
newBasketItems <- c("tropical NEW PRODUCT", "yoguurt")
RuleResult <- fn_findRules(rules, newBasketItems)
Error in lhs %ain% newBasket : table contains an unknown item label
このエラーを処理するにはどうすればよいですか?