Построить с помощью arulesViz вывод arulesSequences? Или способ принуждения объекта правил последовательности классов к правилам? (arulesSequence, R)

Есть ли способ использовать arulesViz с выводом ruleInduction из arulesSequences? Или есть способ принудить / преобразовать вывод правил последовательности (правил последовательности классов) в правила класса, чтобы я мог использовать arulesViz?

Цель: мне интересно поиграть с некоторыми вариантами визуализации, рассмотренными в этой статье, в частности, с вариантами «графика» (https://cran.r-project.org/web/packages/arulesViz/vignettes/arulesViz.pdf).

Обычно вы используете arulesViz для "правил", производных от arules, например, так (из виньетки):

rules <- apriori(Groceries, parameter=list(support=0.001, confidence=0.5))
plot(x, method = NULL, measure = "support", shading = "lift",
+ interactive = FALSE, data = NULL, control = NULL, ...)

Но я хочу использовать его на выходе cspade + ruleInduction:

s1                <- cspade(trans, parameter = list(support = 0.001,maxlen=3,maxgap=10), control = list(verbose = TRUE,numpart=1))
summary(s1)
s1_df             <- as(s1, "data.frame")
r1                <- ruleInduction(s1, confidence = 0.05, control = list(verbose = TRUE))
r1.subset.rule    <- subset(r1, rhs(r1) %in% c("9990") & lift>2 & !lhs(r1) %in% c("300","301","412","4033","4043"))
plot(r1.subset.rule,method="graph",control=list(alpha=1))

Error in as.double(y) : 
  cannot coerce type 'S4' to vector of type 'double'

Есть ли способ сделать это? В настоящее время я получаю указанную выше ошибку. Обратите внимание: это похоже на этот вопрос: Ошибка в as.double (y): невозможно преобразовать тип S4 в вектор типа double, но предложенное там решение (убедитесь, что у вас загружен arulesViz) не работает / не является проблема.

Спасибо вам за помощь!

Если вы считаете, что это неподходящий вопрос, оставьте мне отзыв / комментарии - я пытался исследовать это в течение многих часов, прежде чем размещать здесь, и я несколько новый пользователь: был бы рад услышать, как это можно улучшить.


person ednaMode    schedule 31.05.2016    source источник


Ответы (2)


Оказывается, это было концептуальное недоразумение с моей стороны. В итоге я связался с первоначальным автором пакета (спасибо за ответ! Оставив свое имя на случай, если вы не хотите, чтобы вас упоминали), и это вылечило мое туннельное зрение.

sequenceRules и правила, даже если они выглядят очень похожими, когда вы запускаете для них inspect (), являются очень разными классами. Команда plot в arulesViz может обрабатывать правила, но не правила последовательности. Хотя я уверен, что не понимаю всех различий, вот пара:

  1. sequenceRules допускает повторяющиеся элементы, правила (скорее всего) не
  2. sequenceRules может иметь {A, B} -> {C} и {B, A} -> {D}. Поскольку порядок не имеет значения для "правил", а arulesViz ожидает правил, arulesViz, скорее всего, не будет знать, что делать с этим типом ввода.

В любом случае - я нашел еще один плакат во всемирной паутине, у которого был аналогичный вопрос, поэтому размещаю здесь свое понимание в надежде, что это поможет кому-то там.

Как я уже сказал в своем вопросе, если вы считаете, что мой ответ (и / или вопрос) должен быть улучшен, пожалуйста, оставьте мне отзыв в форме комментариев! Очень признателен.

person ednaMode    schedule 02.06.2016

Это может быть бессмысленно, но по мере того, как я начинаю понимать arulesSequence, я думаю, вы можете улучшить свое представление. (A, B) и (B, A) - это один и тот же набор элементов. И {(A), (B)} и {(B), (A)} - две разные последовательности. Вкратце: в наборе элементов нет порядка, но порядок имеет значение в последовательности. Итак, {(A, B), (A), (C, D)} - это та же последовательность, что и {(B, A), (A), (D, C)}, но отличается от {(A), (A , B), C, D)}. Думаю, именно поэтому arulesViz, как вы сказали, не знает, что делать. Спасибо за ваш вопрос, который помог мне понять эти пакеты.

person Goussu Mgoussu    schedule 09.06.2016