Подтвердить что ты не робот

Как преобразовать data.frame в транзакции для arules

Я читаю данные из файла csv, данные имеют 3 столбца, один - идентификатор транзакции, а два других - товарные и товарные категории. Мне нужно преобразовать это в транзакции, чтобы использовать функцию apriori в arules. При конвертации в транзакции отображается ошибка:

dat <- read.csv("spss.csv",head=TRUE,sep="," , as.is = T)
dat[,2] <- factor(dat[,2])
dat[,3] <- factor(dat[,3])
spssdat <- dat[,c(1,2,3)]
str(spssdat)

'data.frame':   108919 obs. of  3 variables:
 $ Transaction_id: int  3000312 3000312 3001972 3003361 3003361 3003361 3003361 3003361 3003361 3004637 ...
 $ product_catalog : Factor w/ 9 levels "AIM","BA","IM",..: 1 1 5 7 7 7 7 7 7 1 ...
 $ product      : Factor w/ 332 levels "ACM","ACTG/AIM",..: 7 7 159 61 61 61 61 61 61 7 ...

trans4 <- as(spssdat, "transactions")

Error in as(spssdat, "transactions") : 
  no method or default for coercing "data.frame" to "transactions"

Если данные имеют только два столбца, они могут работать:

trans4 <- as(split(spssdat[,2], spssdat[,1]), "transactions")

Но я не знаю, как конвертировать, когда у меня есть 3 столбца. Обычно есть дополнительные столбцы, которые любят атрибуты категории, атрибуты клиента. поэтому столбец обычно превышает 2 столбца. необходимо найти правила между несколькими столбцами.

4b9b3361

Ответ 1

Я нашел некоторую информацию, которая работала для меня на этом веб-сайте. Позвольте мне скопировать соответствующий пункт:

Информационная рамка может быть либо в нормированной форме (single), либо в форме плоского файла ( корзина).
Когда файл находится в форме корзина, это означает, что каждая запись представляет транзакцию, где элементы в корзине представлены столбцами.
Когда набор данных находится в форме single, это означает, что каждая запись представляет один элемент, а каждый элемент содержит идентификатор транзакции.

Чтобы загрузить транзакции из файла, используйте read.transactions. В вашем и моем файле дела находится форма одиночная.
Я использовал следующий код для загрузки файла .csv как transactions:

trans = read.transactions("some_data.csv", format = "single", sep = ",", cols = c("transactionID", "productID"))

Чтобы полностью понять вышеприведенную команду, посмотрите руководство read.transactions, доступное после ввода ?read.transactions в консоли R.

Ответ 2

Я пытался сделать то же самое, и после того, как я включил все мои столбцы в data.frame, с которым я работал, я все равно не мог принудить его к itemMatrix транзакций. Затем я понял, что никогда не загружал пакет "arules" для сеанса, в котором я работал. Очень глупая ошибка, но просто хотел упомянуть об этом, если кто-то другой столкнулся с одной и той же проблемой, сначала попробуйте простые вещи:

library("arules")

Ответ 3

Вам нужно сначала преобразовать "Transaction_id" в факторную переменную.