【问题标题】:R caret package - dimension errorR插入符号包 - 尺寸错误
【发布时间】:2016-03-24 00:56:42
【问题描述】:

我是新的 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.

我的测试对象包含 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')

【问题讨论】:

  • 你能分享这些 csv 文件吗?
  • 当然!转到 (lucmoulinier.fr),您将在“R CSV 文件”部分找到这三个文件。非常感谢您的观看!

标签: r r-caret


【解决方案1】:

这是有效的代码:

  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 问题上查看已接受的答案。

【讨论】:

  • 非常感谢!你非常有帮助和启发!
  • 酷,很高兴我能帮上忙!如果此答案对您有帮助,请接受并投票,以便将来遇到相同问题的其他人更容易找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多