Когда я конвертирую матрицу в "транзакции" для использования с пакетом arules, все мои значения становятся равными 0

Я пытаюсь применить алгоритм apriori к двоичной матрице, но все мои значения возвращают 0.

Я выполнил сводную функцию для матрицы, чтобы подтвердить, что она имеет ненулевые значения. Я попытался принудительно ввести форму транзакции, используя:

trans<-as(a,"transactions")

и я попытался применить apriori непосредственно к матрице, используя:

test<-apriori(a,parameter=list(support=.02,confidence=0,minlen=3,maxlen=3))

в обоих случаях я получил один и тот же результат, показанный ниже.

Кто-нибудь еще испытал это?

Спасибо

parameter specification:
 confidence minval smax arem  aval originalSupport support minlen maxlen target   ext
          0    0.1    1 none FALSE            TRUE    0.02      3      3  rules FALSE

algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09)        (c) 1996-2004   Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[0 item(s), 1286 transaction(s)] done [0.00s].
Error in apriori(a, parameter = list(support = 0.02, confidence = 0, minlen = 3,  : 

In addition: Warning message:
In asMethod(object) :
  'NA's coerced to 'FALSE' in coercion to logical sparse

1 ответ

Я немного поиграл с пакетом arules и мог бы предложить некоторую помощь. Сначала вы должны убедиться, что

trans<-as(a,"transactions")

возвращает itemMatrix-класс. Функция apiori() автоматически преобразует ваш объект в itemMatrix (основа данных sprase библиотеки arules). Пытаться

inspect(a[1:5])

чтобы увидеть, что это матрица транзакций.

Но ваша проблема может быть даже проще, чем это.

Ваш код:

test<-apriori(a,parameter=list(support=.02,confidence=0,minlen=3,maxlen=3))

Взгляните на документацию или оригинал. Но это мое понимание

поддержка == процентов весь элемент появляется в данных. (набор левой руки LHS и набор правой руки RHS)

доверие == Когда присутствует LHS, как часто появляется RHS. другими словами, насколько вы уверены в правиле

Таким образом, ваш параметр доверия всегда не будет возвращать никаких правил. Попробуйте 0 <достоверность>= 100

test<-apriori(a,parameter=list(support=.02,confidence=0.9,minlen=3,maxlen=3))

или лучше, чтобы заставить в транзакции, а затем применить.

trans<-as(a,"transactions")
test<-apriori(trans,parameter=list(support=.02,confidence=0.9,minlen=3,maxlen=3))

Это значит, что мне нужно знать правила, при которых весь набор элементов отображается в 0,02% данных, а правило связывания остается в силе как минимум 90% времени.

Другие вопросы по тегам