【问题标题】:Error with train() caret functiontrain() 插入符号函数出错
【发布时间】:2018-05-15 01:44:12
【问题描述】:

我正在尝试使用插入符号为径向基函数网络进行基本模型选择,但是当我使用插入符号中的 train() 函数时,出现以下错误:

Error in UseMethod("train") : 
no applicable method for 'train' applied to an object of class "c('matrix', 
'double', 'numeric')"

我不知道我在这里做错了什么,我希望你能帮助我解决这个问题。 这是代码:

    Data1<-as.matrix(runif(1000))
    Data2<-as.matrix(runif(1000))
    Data3<-as.matrix(runif(1000))
    Data4<-as.matrix(runif(1000))
    Data5<-as.matrix(runif(1000))
    Data6<-as.matrix(runif(1000))

    data<-cbind(Data1,Data2,Data3,Data4,Data5,Data6)
    colnames(data)<-c("Feature1","Feature2","Feature3","Feture4","Feature5","Feature6")

    targetfunction<-function(xi){
      error<-rnorm(1,0,0.1)
      return (sin(2*xi[1])*xi[2]+0.5*(xi[3]-0.5)^2+xi[4]+error)
    }
    target<-as.matrix(rep(0,times=1000))
    for (i in 1:1000){
      target[i]<-as.matrix(targetfunction(data[i,]))
    }

    library(mRMRe)

    #Binding data and target
    DM = cbind(data, target)
    DM = mRMR.data(as.data.frame(DM))


    s1 = mRMR.classic(data = DM, feature_count = 1, target_indices = c(7))
    s2 = mRMR.classic(data = DM, feature_count = 2, target_indices = c(7))
    s3 = mRMR.classic(data = DM, feature_count = 3, target_indices = c(7))
    s4 = mRMR.classic(data = DM, feature_count = 4, target_indices = c(7))
    s5 = mRMR.classic(data = DM, feature_count = 5, target_indices = c(7))
    s6 = mRMR.classic(data = DM, feature_count = 6, target_indices = c(7))
    #Optimal solutions for feature selection (Mutual information)
    solutions(s1)
    solutions(s2)
    solutions(s3)
    o = solutions(s4)
    solutions(s5)
    solutions(s6)

    #for reproducibility 
    o = c(4,2,1,5)
    #########################################################################################
    #Model selection 
    #########################################################################################
    library(caret)
    library(RSNNS)

    #Splitting data
    prepValues = data[,o]

    trainSet = prepValues[1:750,]
    testset = prepValues[751:1000,]
    colnames(trainSet) = c("x1","x2","x3","x4")
    colnames(target) = "targ"
    test = cbind(target[1:750], trainSet)

    #Training model 
    rbf = train(trainSet, target[1:750], method = "rbf")

【问题讨论】:

    标签: r neural-network r-caret


    【解决方案1】:

    如果您要使用matrix 作为train 的输入,则必须对其进行命名。

    ?caret::train

    对于默认方法,x 是一个对象,其中样本在行中,特征在列中。这可以是简单的矩阵、数据框或其他类型(例如稀疏矩阵),但必须具有列名

    你在caret之后加载包RSNNS

    图书馆(RSNNS)
    加载所需包:Rcpp

    附加包:‘RSNNS’

    以下对象被“package:caret”屏蔽:

    confusionMatrix,训练

    【讨论】:

    • 是的,我在 train() 帮助中看到了这一点,并尝试使用 colnames() 向 trainSet 和目标添加名称,但这并没有解决我的问题
    • @LucienLedune,错误报告您的输入不适合该方法。如果您使问题中的代码可重现,我们很乐意帮助您进行故障排除,请参阅 here 以获取有关如何执行此操作的建议。
    • 我认为现在应该可以重现了。 (问题来自最后一行,在模型选择部分下)
    • 我找到了提示!当我使用 caret::train() 而不是 train() 时,它不会给我错误...但是现在 Rstudio 崩溃了...
    • 我得到了相同的结果,我更新了我的答案以注意包冲突。
    猜你喜欢
    • 2017-05-19
    • 2015-10-28
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2019-06-02
    • 2018-11-11
    • 2014-07-11
    相关资源
    最近更新 更多