首页 文章

R插入包 - 尺寸错误

提问于
浏览
1

我是新用户 . 我得到了一个错误的插入包我无法解释 .

我的实验由对8个变量和3个类别的305个观察结果组成 . 我想训练一个模型(这里是一个神经网络),然后预测一组观察的类,每个类的概率 . 由于我想尝试几种型号,我想使用'插入'包 .

运行以下脚本时,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个变量 . 任何集合中都没有丢失的数据 .

有人可以帮忙吗?

提前谢谢了 !吕克

脚本:

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')

1 回答

  • 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问题上接受的答案 .

相关问题