我是新的R用户。我得到了一个错误的插入包我无法解释。
我的实验由对8个变量和3个类别的305个观察结果组成。 我想训练一个模型(这里是一个神经网络),然后预测一组观察的类,每个类的概率。 由于我想尝试几种模型,我想使用'caret'包。
运行以下脚本时,R在尝试预测时停止并显示以下错误:
Error in dimnames(out)[[2]] <- rev(modelFit$obsLevels) :
la longueur de 'dimnames' [2] n'est pas égale à l'étendue du tableau
De plus : Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, :
There were missing values in resampled performance measures.
My Test对象包含14个观察结果,需要8个变量。 任何集合中都没有丢失的数据。
有人可以帮忙吗?
非常感谢提前! LUC
脚本:
library(nnet)
library(caret)
Vars <- read.csv('/home/moumou/ter/Lit.csv',header=FALSE)
Clas <- read.csv('/home/moumou/ter/Lot.csv',header=FALSE)
Test <- read.csv('/home/moumou/ter/Lie.csv',header=FALSE)
colnames(Vars) <- paste('col',1:ncol(Vars),sep='')
colnames(Clas) <- paste('cls',1:ncol(Clas),sep='')
colnames(Test) <- paste('col',1:ncol(Test),sep='')
dt1 <- data.frame(Clas,Vars)
summary(dt1)
dt2 <- as.data.frame(Test)
summary(dt2)
model <- train(cls1 + cls2 + cls3 ~ col1 + col2 + col3 + col4 + col5 + col6 + col7 + col8 , data = dt1, method='nnet')
pred <- predict(model,newdata=dt2,type='prob')
答案 0 :(得分:0)
这是正在运行的代码:
Vars <- read.csv('/home/moumou/ter/Lit.csv',header=FALSE)
Clas <- read.csv('/home/moumou/ter/Lot.csv',header=FALSE)
Test <- read.csv('/home/moumou/ter/Lie.csv',header=FALSE)
colnames(Vars) <- paste('col',1:ncol(Vars),sep='')
colnames(Clas) <- paste('cls',1:ncol(Clas),sep='')
colnames(Test) <- paste('col',1:ncol(Test),sep='')
dt1 <- data.frame(Clas,Vars)
summary(dt1)
dt2 <- as.data.frame(Test)
summary(dt2)
dt1$class = as.factor(paste0("v",dt1$cls1 ,dt1$cls2, dt1$cls3))
model <- train(class ~ col1 + col2 + col3 + col4 + col5 + col6 + col7 + col8 , data = dt1, method='nnet')
pred <- predict.train(model,newdata=dt2,type='prob')
因此您的代码存在一些问题。组合时似乎是类变量(cls1 + cls2 + cls3)实际上是数字,所以不是分类而是进行回归。而type =“prob”仅用于分类。
其次,我必须在类变量值前添加 v 才能获得概率。请在this SO问题上查看已接受的答案。