Неверное значение 'ncol' (< 0) в R

Я пытаюсь использовать функцию frbcs.w и использую пример кода, представленного для данных радужной оболочки, для обучения и проверки данных. Мои данные - оценка 10 функций из 370 обзоров. Таким образом, это матрица 10 X 370. Я впервые использую R, и даже после того, как получена только часть данных, аналогичная набору данных радужной оболочки, она показывает ошибку, как показано ниже:

Error in matrix(nrow = nrow(rule.data.num), ncol = 2 * ncol(rule.data.num) - :  invalid 'ncol' value (< 0)

Мой набор данных в формате CSV: набор данных Я также добавляю выборку из 20 обзоров из моего набора данных из 370 обзоров здесь:

F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,OUTPUT
0,0,0,0,0,0,0,0,0,0,high
0,0.541667,0,0,0,0.455729,0,0,0,0,high
0,0,0,0,0,0.375,0,0,0,0,high
0.333333,0,0,0,0,0.575,0,0,0,0,medium
0.5,0.5,0,0,0,0.333333,0,0,1,0.625,high
0,0,0,0,0,0.6875,0,0,0,0.875,high
0,0.125,0,0,0,0.234375,0,0,0,0,medium
0.375,0,0,0,0,0.5,0,0,0,0,low
0,0,0,0,0,0,0,0,0,0,low
0,0,0,0,0,0.244792,0,0,0,0,low
0.234375,0.875,0,0.234375,0,0.5,0,0,0,0.5,low
0,0,0,0,0,0.643229,0,0,0,0.25,high
0,0.40625,1,0,0,0.421875,0,0,0,0,low
0.875,0.375,1,0,0,0.810547,0,0,0,0.375,high
0,0,0,0,0,0,0,0,0,0,high
0,0,0,0,0,0.187798,0,0,0,0.875,low
1,0,0,0,0,0,0,0,0,0.125,high
0.0625,0,0.5,0.5,0,0.5,0,0,0.9375,0.833333,medium
0,0,0,0,0,0.875,0,0,0,0,low
0,0,0,0.25,0,0,0,0,0,0,high

Код, который я пытаюсь это:

library(frbs)

ir <- read.csv("Output3.csv")
set.seed(2)
irShuffled <- ir[sample(nrow(ir)),]
irShuffled[,11] <- unclass(irShuffled[,11])
tra.ir <- irShuffled[1:300,]
tst.ir <- irShuffled[301:nrow(irShuffled),1:10]
real.ir <- matrix(irShuffled[301:nrow(irShuffled),11], ncol = 1)
range.data.input <- matrix(c(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), nrow=2)

method.type <- "FRBCS.W"
control <- list(num.labels = 7, type.mf = "GAUSSIAN", type.tnorm = "MIN", 
            type.snorm = "MAX", type.implication.func = "ZADEH")  

## Generate fuzzy model
object <- frbs.learn(tra.ir, range.data.input, method.type, control)

## Predicting step
res.test <- predict(object, tst.ir)

## error calculation
err = 100*sum(real.ir!=res.test)/nrow(real.ir)

print("The result: ")
print(res.test)
print("FRBCS.W: percentage Error on Ir-")
print(err) 

1 ответ

Решение

Посмотрите на свой range.data.inputвектор.

> range.data.input
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    1    1    1    1    0    0    0    0     0
[2,]    1    1    1    1    1    0    0    0    0     0

заменить вашу процедуру на

range.data.input <- matrix(rep(c(0.0, 1.0), 10), nrow=2)

> range.data.input
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    0    0    0    0    0    0     0
[2,]    1    1    1    1    1    1    1    1    1     1
Другие вопросы по тегам