Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 插入符号和闪亮:无法创建由插入符号模型驱动的预测应用程序_R_Machine Learning_Shiny_R Caret - Fatal编程技术网

R 插入符号和闪亮:无法创建由插入符号模型驱动的预测应用程序

R 插入符号和闪亮:无法创建由插入符号模型驱动的预测应用程序,r,machine-learning,shiny,r-caret,R,Machine Learning,Shiny,R Caret,我试图在Shinny中开发一个简单的应用程序,预测乘客在泰坦尼克号上幸存的概率,给定一定的年龄、等级、票价等。我希望这些变量是动态的,并希望使用一个基本的caret模型来计算预测的幸存概率 运行此代码时,我收到以下错误消息: 警告:[.data.frame:选定堆栈跟踪的未定义列中出错 最内层优先: 70:[.data.frame 69: [ 68:清扫 67:predict.preProcess 66:预测 65:probFunction 64:预测火车 63:预测 62:预测 61:is.d

我试图在Shinny中开发一个简单的应用程序,预测乘客在泰坦尼克号上幸存的概率,给定一定的年龄、等级、票价等。我希望这些变量是动态的,并希望使用一个基本的caret模型来计算预测的幸存概率

运行此代码时,我收到以下错误消息:

警告:[.data.frame:选定堆栈跟踪的未定义列中出错 最内层优先: 70:[.data.frame 69: [ 68:清扫 67:predict.preProcess 66:预测 65:probFunction 64:预测火车 63:预测 62:预测 61:is.data.frame 60:data.matrix 59:observerFunc[17] 4: 3:打电话 2:print.shinny.appobj 1:错误:[在请求时\u读取]对等方重置连接

下面是我的代码。你知道是什么导致了这个错误吗?非常感谢

require(shiny)
require(plyr)
require(dplyr)
require(ggplot2)
require(caret)
require(xgboost)

require(titanic)
df=na.omit(titanic_train)
y=data.matrix(select(df, Survived))
y[y==0]="N"
y[y==1]="Y"
x=data.matrix(select(df, Pclass, Age, SibSp, Parch, Fare))

tCtrl <- trainControl(method = "repeatedcv", number = 3, repeats=3, summaryFunction = twoClassSummary, verbose=TRUE, classProbs = TRUE)
fit_xgbTree= train(x, y, method = "xgbTree" , family= "binomial", trControl = tCtrl, metric = "ROC", preProc = c("center", "scale"))

ui = pageWithSidebar(
  headerPanel("Titanic"),
  sidebarPanel(
    radioButtons("Pclass", "Passenger Class", choices=c("1", "2", "3"),selected = "1", inline = TRUE,width = NULL),
    sliderInput("Age", "Passenger Age", min=0, max=80, value=30),
    radioButtons("SibSp", "SibSp", choices=c("0", "1", "2", "3", "4", "5")),
    radioButtons("Parch", "Parch", choices=c("0", "1", "2", "3", "4", "5", "6")),
    sliderInput("Fare", "Passenger Fare", min=0, max=520, value=35)
  ),
  mainPanel(
    dataTableOutput('testTable'),
    textOutput('outputBox')
  )
)

server=function(input, output){

  values <- reactiveValues()

  newEntry <- observe({ # use observe pattern

    x=as.data.frame(matrix(0, nrow=1, ncol=5))
    colnames(x)=c("Pclass", "Age",    "SibSp", "Parch",  "Fare")

    x[1,1]=as.numeric(input$Pclass)
    x[1,2]=input$Age
    x[1,3]=as.numeric(input$SibSp)
    x[1,4]=as.numeric(input$Parch)
    x[1,5]=input$Fare


    pred <- data.matrix(predict(object=fit_xgbTree, x, type="prob")[,2])
    isolate(values$df <- x)
    #isolate(values$df2 <- x)
  })

  output$testTable <- renderDataTable({values$df})
}

shinyApp(ui=ui, server=server)

服务器中的以下修改非常适合我添加生存概率列,我想这就是您想要的:

server=function(input, output){

  values <- reactiveValues()

  newEntry <- observe({ # use observe pattern

    x=as.data.frame(matrix(0, nrow=1, ncol=6))
    colnames(x)=c("Pclass", "Age",    "SibSp", "Parch",  "Fare", "SurvProb")

    x[1,1]=as.numeric(input$Pclass)
    x[1,2]=input$Age
    x[1,3]=as.numeric(input$SibSp)
    x[1,4]=as.numeric(input$Parch)
    x[1,5]=input$Fare

    pred <- data.matrix(predict(object=fit_xgbTree, x[-length(x)], type="prob")[,2])
    x[1,6] <- round(pred,2)

    isolate(values$df <- x)
    #isolate(values$df2 <- x)
  })

  output$testTable <- renderDataTable({values$df})
}
有输出

我相信这可能是由NA…In x[1,1]=as.numericinput$Pclass引起的,因为input$Pclass是第1、2、3个选项,您可以通过运行as.numeric来获得NAs。predict函数失败。因此,您无法从predict函数返回矩阵,也无法运行[,2].Pclass是数字。您可以通过运行uniquedf$Pclassinput$Pclass is character来检查这一点。啊,是的,谢谢。不过我仍然收到一个类似的错误-修改了问题以解释Pclass。您的输出表中不需要另一列来显示生存的预测概率吗?否则,您的代码工作正常。