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

Любая помощь будет оценена.

 David Robinson23 окт. 2012 г., 02:52
Чтобы было понятно: этот фрейм данных представляет три последовательности?X="THVAX"; Y="DBADP"; Z=QRWWP"? (Почему он хранится таким образом?)
 Btibert323 окт. 2012 г., 17:52
Если бы я хотел просто использовать пакет arules, я бы оставил только столбцы ids и val. Каждая из 3 транзакций (X / Y / Z) будет иметь 5 пунктов. Поскольку я хочу выполнять анализ последовательности (коэффициент в порядке каждого элемента), мне нужно иметь переменную последовательности / синхронизации. Я борюсь с тем, как генерировать транзакции, которые сохраняют этот компонент «синхронизации».
 Sir124 февр. 2018 г., 13:00
Привет, Вы нашли ответ на эту проблему?

Ответы на вопрос(5)

данные на отдельные, а затем преобразовать в транзакции.

 eh$cost<-split(eh$cost$val ,eh$cost$id)
 eh$cost1<- as(eh$cost,"transactions")

Фактор данных кадра:

df_fact = data.frame(lapply(df,as.factor))

Построить данные «транзакции»:

df_trans = as(df_fact, 'transactions')

Проверь это:

itemFrequencyPlot(df_trans, support = 0.1, cex.names=0.8)
 eflores8923 февр. 2015 г., 23:28
@ Btibert3 ты узнал, как это сделать?
 Btibert312 мар. 2015 г., 18:07
@ eflores89 Нет, не знаю. Откровенно говоря, зная, что я знаю сейчас, я мог бы перейти к моделированию этого в Neo4j
 Btibert323 окт. 2012 г., 14:39
Спасибо за вашу помощь, но я считаю, что ключевой момент заключается в том, что фрейм данных транзакций должен сохранять временную информацию в соответствии с аргументом данных в функции cspade из пакета arulesSequence. Вот код и получающаяся ошибка, когда я пытаюсь использовать cspade: tmp <- cspade (df_trans) Ошибка в cspade (df_trans): слот транзакцииInfo: отсутствует 'sequenceID' или 'eventID'

Используя read_baskets:

    read_baskets(con  = filePath.txt,
      sep = " ",
      info = c("sequenceID","eventID","SIZE"))

Что на практике означает экспорт созданных данных в текстовый файл и его повторный импорт через read_baskets. Аргумент info определяет первые столбцы, содержащие sequenceID, eventID и необязательный столбец события.

поэтому просто приведите столбец предметов
trans = as(df[,'val'], "transactions")

Затем вы можете добавить информацию в свой объект транзакций

[email protected]$transactionID = NULL [email protected]$sequenceID = df$ids [email protected]$eventID = df$seq

добавив, по сути, столбец «порядок», в котором перечислены рейтинг порядка, а не значение времени. Вы просто должны быть очень конкретными в соглашении об именах. Попробуйте назвать переменную sequenceID «group» или «order basket #» и вызвать eventID ранжирования или упорядочения.

Еще одна вещь, которая помогла мне (и заставляла меня долго чесать голову), заключалась в том, что read_baskets (), похоже, требовала от меня указания

read_baskets(con  = filePath.txt, sep = " ", info = c("sequenceID","eventID","SIZE"))

Несмотря на то, что функция help делает детали c () похожими на необязательный заголовок, это не так. Мне кажется, мне нужно удалить заголовок из моего файла и указать его в команде read_baskets (), иначе я столкнулся бы с проблемами.

Ваш ответ на вопрос