Я использую R-код в платформе Knime, платформе для данных аналитика. Я беру матрицу из блока, который читает таблицу из файла xls. Эта матрица называется «my_matrix». Затем я хотел бы применить алгоритм apriori к трем столбцам этой матрицы, но я получаю вышеуказанную ошибку. Есть идеи? Обратите внимание, что "сумма (is.na (my_matrix))" имеет выход [1] 0Ошибка в t (as (from, "ngCMatrix)): ошибка в оценке аргумента 'x' при выборе метода для функции 't': Ошибка в asM
require(arules)
#require(arulesViz)
#some code to retreive the my_matrix
#my_matrix
my_rows= nrow(my_matrix);
my_cols= ncol(my_matrix);
matrix_temp = my_matrix[,4:5];
matrix_temp = array(c(matrix_temp, my_matrix[,20]), dim=c(my_rows,3))
#matrix_temp
my_matrix = matrix_temp
sum(is.na(my_matrix)) #output: [1] 0
my_transactions = as(my_matrix, "transactions");
summary(my_transactions)
my_matrix представляет собой таблицу, в которой столбцы этого типа: (String, Integer, Integer, String, String, Integer, Double, Integer, Double, Double, Integer, Double, Double, Integer, Double, Double, Integer, Double, Integer, String). В таблице 3300 строк.
> my_matrix = as(knime.in, "matrix")
> dput(head(my_matrix, 5))
structure(c("KS", "OH", "NJ", "OH", "OK", "128", "107", "137",
" 84", " 75", "415", "415", "415", "408", "415", "noIP", "noIP",
"noIP", "IP", "IP", "Vmail", "Vmail", "noVmail", "noVmail", "noVmail",
"25", "26", " 0", " 0", " 0", "265.1", "161.6", "243.4", "299.4",
"166.7", "110", "123", "114", " 71", "113", "45.07", "27.47",
"41.38", "50.90", "28.34", "197.4", "195.5", "121.2", " 61.9",
"148.3", " 99", "103", "110", " 88", "122", "16.78", "16.62",
"10.30", " 5.26", "12.61", "244.7", "254.4", "162.6", "196.9",
"186.9", " 91", "103", "104", " 89", "121", "11.01", "11.45",
" 7.32", " 8.86", " 8.41", "10.0", "13.7", "12.2", " 6.6", "10.1",
" 3", " 3", " 5", " 7", " 3", "2.70", "3.70", "3.29", "1.78",
"2.73", "1", "1", "0", "2", "3", "notChurning", "notChurning",
"notChurning", "notChurning", "notChurning"), .Dim = c(5L, 20L
), .Dimnames = list(c("Row0", "Row1", "Row2", "Row3", "Row4"),
c("State", "Account length", "Area code", "International plan",
"Voice mail plan", "Number vmail messages", "Total day minutes",
"Total day calls", "Total day charge", "Total eve minutes",
"Total eve calls", "Total eve charge", "Total night minutes",
"Total night calls", "Total night charge", "Total intl minutes",
"Total intl calls", "Total intl charge", "Customer service calls",
"Churn")))
Я изменил свой код, как показано ниже. У меня нет никаких ошибок сейчас, но априорно алгоритм не основывает никаких правил:
require(arules)
#require(arulesViz)
my_matrix= as(knime.in,"matrix");
my_rows= nrow(my_matrix);
my_cols= ncol(my_matrix);
my_matrix = append(my_matrix[,4:5], my_matrix[,20])
my_matrix <- array(my_matrix, dim=c(my_rows, 3))
head(my_matrix, 2)
my_cols = 3
my_dedup_matrix= matrix(nrow=my_rows, ncol=my_cols);
for (i in 1:my_rows) {
m = my_matrix[i,];
my_unique= unique(m);
for (j in 1:my_cols) {
my_dedup_matrix[i,j] = my_unique[j];
}
}
my_new_data= apply(my_dedup_matrix, 1, function(x) x[!is.na(x)]);
my_transactions = as(as.list(my_new_data), "transactions");
summary(my_transactions)
## Mine association rules.
rules = apriori(my_transactions, parameter = list(supp= 0.1, conf= 0.8, target = "rules"));
summary(rules); # no rules found
inspect(rules); # no rules found
#inspect(rules[1:10])
Здесь что-то не так. Вы заявляете, что некоторые столбцы Double. Можете ли вы перейти к Knime Node до узла R и сделать снимок экрана второй вкладки (той, которая показывает домены) – CAFEBABE
Ваша уверенность довольно высока. Установите его на ноль и медленно увеличивайте, пока не найдете разумный набор правил. – CAFEBABE
Я положил доверие = 0,1, но я получаю такие правила, как: {} => {noVmail} – Peter