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")
Другие вопросы по тегам