Почему при вводе матрицы из трех столбцов выдается ошибка при использовании пакета ANFIS в R? - PullRequest
0 голосов
/ 27 сентября 2018

Я использую пакет ANFIS в R.
Когда я использую матрицу из двух столбцов, код работает нормально.
, но когда я использую три или более двух столбцов во входной матрице, возникает ошибкаследующим образом:

Ошибка в validityMethod (объект): несоответствие между входами и MembershipFunctions

Пожалуйста, помогите в решении этой проблемы.
Входной файл представляет собой текстовый файл из четырех столбцов.X - это первые три столбца из текстового файла, а Y - последний столбец текстового файла.

Я прилагаю код:

 ##ANFIS 
input <- read.delim(file="D:/ANFIS/mptra.txt",header = FALSE)
testting<-read.delim(file="D:/ANFIS/mptes.txt",header = FALSE)
##Training data
p=as.matrix(testting[,1:3])
Z = as.matrix(input)
X=as.matrix(Z[,1:3]) 
Y=as.matrix(Z[,4:4])
##Defining the required MembershipFunctions for the ANFIS
membershipFunction <- list(x=c(new(Class="NormalizedGaussianMF",parameters=c(mu=-10,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=0,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=0,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=10,sigma=2))),
                           y=c(new(Class="NormalizedGaussianMF",parameters=c(mu=0,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=-10,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=0,sigma=2)),
                               new(Class="NormalizedGaussianMF",parameters=c(mu=10,sigma=2))))
##Creating the ANFIS network with 2 inputs and 4 MembershipFunctions in each input
anfiss <- new(Class="ANFIS",X,Y,membershipFunction)
anfiss
##Training the ANFIS network
trainOutput <- trainHybridJangOffLine(anfis3, epochs=10)
##Just to see if premises, consequents and errors were updated
getPremises(anfis3)[[1]][[1]]
getConsequents(anfis3)[1:2,]
getErrors(anfis3) #Training errors
getTrainingType(anfis3)
names(coef(anfis3))
coef(anfis3)$premises[[input=1]][[mf=1]]
coef(anfis3)$consequents[1:2,]
##predicted ANFIS network
y <- predict(anfis3,p)# using training data

Входной файл такой же, как в примере:

0.71    1.1  5.45   4      
0.71    1    8.25   3      
0.73    6.9  8.65   2      
0.74    0.1  3.7    2     
0.73    0.3  11.7   3      
0.71    0    3.1    5    
0.72    0.2  8.1    5     
0.73    0    3.9    9   
0.76    0    7.4    15    
0.78    6    11.65  24     
...