Ошибка развертывания эксперимента Azure ML со сценарием R для правил сопоставления интеллектуального анализа

Я создал новый эксперимент на студии машинного обучения Azure, который с помощью модуля Execute R Script может выполнять извлечение правил ассоциации из начального набора данных. Для этого эксперимента я использовал версию R Microsoft R Open 3.2.2

Функция, использованная в эксперименте на Azure ML, я сначала написал и протестировал на R studio, где у меня не было никаких проблем. Это структура моего эксперимента: эксперимент

и это часть кода, вставленного внутри модуля в Azure ML, которая в R Studio работает правильно:

# Map 1-based optional input ports to variables
dataset1 <- maml.mapInputPort(1) # class: data.frame

library("arules")
library("sqldf")

x <- sqldf('select ID_Ordine, AnnoOrdine, ZonaCommerciale, Modello, SUM(Qta) as Qta 
            from dataset1 group by ID_Ordine, Modello order by ID_Ordine')

a_list1 <- transform(x, Modello = as.factor(Modello),
                     ID_Ordine = as.factor(ID_Ordine)) 
transactions <- as(split(x[,"Modello"], x[,"ID_Ordine"]), "transactions")
rules <- sort(apriori(transactions,
                        parameter = list(supp = 0.1, conf = 0.1, target = "rules",
                                         maxlen = 5)), by="lift")
gi <- generatingItemsets(rules) #remove inverse duplicated rules
d <- which(duplicated(gi))      #remove inverse duplicated rules
rules <- rules[-d]              #remove inverse duplicated rules

#create a dataframe to be used as output
result <- data.frame(label_lhs = labels(lhs(rules)), 
                     label_rhs = labels(rhs(rules)),
                     count = quality(rules)["count"])

# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("result");

Если я исключу эту строку из кода count = quality(rules)["count"] (оператор для импорта в выходной кадр данных столбца, относящегося к счетчику) эксперимент работает правильно, но когда я также импортирую столбец счетчика, выполнение эксперимента выдает мне следующую ошибку:

Кто-то знает, как исправить эту ошибку, или знает альтернативный способ выбора столбца count из объекта arules, распознаваемого Azure ML?

Спасибо за любые предложения

1 ответ

Решение

countстолбец не рассчитывается функцией apriori()в этой версии пакета arulesТаким образом, я рассчитал это таким образом, используя обратную формулу для расчета поддержки:

#create a dataframe to be used as output
result <- data.frame(label_lhs = labels(lhs(rules)), 
                     label_rhs = labels(rhs(rules)),
                     count = quality(rules)$support*length(transactions))

потому что поддержка рассчитывается по следующей формуле:

support = (number of transactions with A&B)/(number of total transactions)
Другие вопросы по тегам