2016-07-26 7 views
0

У меня есть данные data redundant. Итак, я хочу удалить избыточный элемент, по уникальному коду, тогда у меня есть эти данные, такие как this. Затем я пытаюсь получить правила с помощью arules.Arules получает 0 правил для априорного алгоритма, но почему?

library(arules) 
library(qpcR) 
data<- read.csv("Book1.csv", header=TRUE) 
b<-sapply(1:ncol(data), function(x) unique(data[,x])) 
b<-lapply(b,as.data.frame) 
a<-list() 
databaru<-do.call(qpcR:::cbind.na, lapply(b, as.vector)) 
databaru[]<-lapply(databaru,as.factor) 
colnames(databaru)<-colnames(data) 
rules<-apriori(databaru, parameter=list(supp=0.0016, conf=0.1)) 
inspect(rules) 

Тогда, когда я пытаюсь запустить его, я получил 0 правила, я уверен, что, прежде чем я извлекал он избыточный элемент каждого столбец, я получил много правил, но, когда я пытаюсь запустить код и удалить код удаление избыточного элемента, я получил 0 правило тоже .. (избыточно: я использую код «уникальный») Затем я пробую поддержку и уверенность, давая более низкое значение, но я до сих пор не получил его.

Apriori 

Parameter specification: 
confidence minval smax arem aval originalSupport support minlen maxlen target ext 
     0.1 0.1 1 none FALSE   TRUE 0.0016  1  10 rules FALSE 

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

Absolute minimum support count: 4 

set item appearances ...[0 item(s)] done [0.00s]. 
set transactions ...[34440 item(s), 2561 transaction(s)] done [0.02s]. 
sorting and recoding items ... [0 item(s)] done [0.00s]. 
creating transaction tree ... done [0.00s]. 
checking subsets of size 1 done [0.00s]. 
writing ... [0 rule(s)] done [0.00s]. 
creating S4 object ... done [0.00s]. 

Что мне делать? что не так? что случилось? Большое вам спасибо за помощь

+0

Думаю, по крайней мере ваш 'as.factor' является виноватым шагом (если не другим). Для каждого столбца коды будут закодированы с разными значениями. Я бы либо точные возможные уровни в вызове, либо - более простые - сохранял необработанные значения. –

+0

Я не могу делать бегущие арулы, если я не изменил его на коэффициент. И что же мне делать? потому что, когда я удаляю его, он дает ошибку, потому что я должен дискретировать его. Но как? потому что мои данные целые, но они не для переменной cotinous, они ID. – ILoveThisName

+0

Вы можете начать сначала извлекать все уникальные значения, например, с помощью 'levels <- unique (unlist (databaru))' и использовать этот вектор при создании фактора: 'lapply (databaru, as.factor, levels = levels)' (not если вы не предоставите некоторые данные для тестирования) –

ответ

0

Элементы управления требованиями к правилам (двоичные), а не числовые (непрерывные). Вы должны дискретировать каждую числовую переменную в своих данных. См. ? discretize в пакете arules.