Arules Sequence Mining в R
Я ищу использовать arulesSequences
Однако, я понятия не имею, как привести мой фрейм данных в объект, который может использовать этот пакет.
Вот игрушечный набор данных, который копирует мою структуру данных:
ids <- c(rep("X", 5), rep("Y", 5), rep("Z", 5))
seq <- rep(1:5,3)
val <- sample(LETTERS, 15, replace=T)
df <- data.frame(ids, seq, val)
df
ids seq val
1 X 1 T
2 X 2 H
3 X 3 V
4 X 4 A
5 X 5 X
6 Y 1 D
7 Y 2 B
8 Y 3 A
9 Y 4 D
10 Y 5 P
11 Z 1 Q
12 Z 2 R
13 Z 3 W
14 Z 4 W
15 Z 5 P
Любая помощь будет оценена.
6 ответов
Это сработало для меня, добавив, по сути, столбец "порядок", в котором перечислены рейтинг, а не значение времени. Вы просто должны быть очень конкретными в соглашении об именах. Попробуйте назвать переменную sequenceID "group" или "order basket #" и вызвать eventID ранжирования или упорядочения.
Еще одна вещь, которая помогла мне (и заставляла меня долго чесать голову), заключалась в том, что read_baskets(), похоже, требовала от меня указания
read_baskets(con = filePath.txt, sep = " ", info = c("sequenceID","eventID","SIZE"))
Несмотря на то, что функция справки делает детали c() похожими на необязательный заголовок, это не так. Мне кажется, мне нужно удалить заголовок из моего файла и указать его в команде read_baskets(), иначе я столкнулся бы с проблемами.
Используя read_baskets:
read_baskets(con = filePath.txt,
sep = " ",
info = c("sequenceID","eventID","SIZE"))
Что на практике означает экспорт созданных данных в текстовый файл и повторный импорт через read_baskets. Аргумент info определяет первые столбцы, содержащие sequenceID, eventID и необязательный столбец события.
Фактор данных кадра:
df_fact = data.frame(lapply(df,as.factor))
Построить данные "транзакции":
df_trans = as(df_fact, 'transactions')
Попробуй это:
itemFrequencyPlot(df_trans, support = 0.1, cex.names=0.8)
Вместо использования фрейма данных для меня лучше всего было разбить данные на отдельные, а затем преобразовать в транзакции.
eh$cost<-split(eh$cost$val ,eh$cost$id)
eh$cost1<- as(eh$cost,"transactions")
Вы должны сначала изменить свои предметы в транзакции, поэтому просто приведите столбец предметовtrans = as(df[,'val'], "transactions")
затем вы можете добавить информацию в ваш объект транзакций
trans@itemsetInfo$transactionID = NULL
trans@itemsetInfo$sequenceID = df$ids
trans@itemsetInfo$eventID = df$seq
df <- df %>% arrange(id,seq) %>% summarise(size=n(), items=list(val))
затем напишите в txt (в этом руководстве также предлагается, чтобы после обработки данных записать его, а затем прочитать его с помощью
read_basket
функция)
df$items <- as.character(df$items)
write.table(df, file = "trans.txt", sep = " ", row.names = FALSE, col.names = FALSE)
прочтите файл и проверьте его
x <- read_baskets("trans.txt", sep = " ", info = c("sequenceID","eventID","SIZE"))
as(x, "data.frame")