Я пытаюсь реализовать Apriori с использованием языка R, но важная часть не использует функцию Apriori()
Я должен построить его с нуля. поэтому я сделал код, но в моем коде есть проблема, и я не смог ее решить. то, что я сделал в коде, это: я реализую Fk−1 × F1
методы. но моя проблема в том, что когда я пытался ввести двоичный файл, он выдает ошибку с отсутствующим значением !! я заменил недостающее значение на 0, но все равно оно выдает ошибку! Я думаю, что проблема в преобразовании оригинальной корзины в двоичную форму!
и вот мой код:
multi_col = function(data_frame) {
multivec = data.frame(val = rep(1,nrow(data_frame)))
for(q in 1:ncol(data_frame)){
multivec = multivec*data_frame[q]
}
return(multivec)
}
item = c("onion","potato","milk","burger","beer")
t1 = c(1,1,0,1,0)
t2 = c(0,1,1,1,0)
t3 = c(1,1,1,0,0)
t4 = c(1,1,1,0,0)
t5 = c(1,1,1,1,0)
t6 =c(1,1,1,1,1)
data_mat= rbind(t1,t2,t3,t4,t5,t6)
data_mat
colnames(data_mat)=item
data_mat # this is the example data frame i used to develop the code
data_mat = as.data.frame(data_mat)
data_mat
min.sup.thresh = 2
max.item = ncol(data_mat)
max.item
for(k in 1:max.item){
if(ncol(data_mat)>1){
Candi = list()
Freq = list()
rm_col = numeric(0)
C_seq = combn(c(1:ncol(data_mat)),k)
for(i in 1:ncol(C_seq)){
Candi[[i]] = colnames(data_mat[C_seq[,i]])
if(sum(multi_col(data_mat[C_seq[,i]]))>=min.sup.thresh){
Freq[[i]] = colnames(data_mat[C_seq[,i]])
}else{
rm_col = c(rm_col,i)
}
}
data_mat=data_mat[(-rm_col)]
print(paste("number of generated candidate itemsets","in C",k,"is",length(Candi)))
print(Candi)
print("****************************")
print(paste("total number of frequent itemsets","in F",k,"is",length(Freq)))
print(Freq)
print("###################################################################################")
}
}
Не могли бы вы дать мне какое-нибудь предложение о том, как это сделать !?