Ошибка развертывания эксперимента 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)