如何将输出作为是或否而不是阈值?
Posted
技术标签:
【中文标题】如何将输出作为是或否而不是阈值?【英文标题】:How to get output as Yes or No instead of Thershold values? 【发布时间】:2020-06-15 23:49:34 【问题描述】:我已经编写了我的逻辑,并且我还以 thershold values 的形式获得了输出。但我需要 Yes Or No 的形式。我用于预测的数据集属性也是 Yes/No 。但它仍然会抛出 Thershold 值。是 -> 有风险的人 否 -> 安全的人 这是我的服务器代码。
credfraudframe <- data.frame(credfrauddata$Credit.Score,credfrauddata$Annual.Income,credfrauddata$Current.Loan.Amount,credfrauddata$Number.of.Open.Accounts,credfrauddata$Current.Credit.Balance,credfrauddata$Maximum.Open.Credit,credfrauddata$Bankruptcies)
credfraudfit <- randomForest(Bankruptcies ~ Credit.Score+Annual.Income+Current.Loan.Amount+Number.Of.Open.Accounts+Current.Credit.Balance+Maximum.Open.Credit,
data=credfraudframe,na.action = na.roughfix)
cred_reactive1 <- eventReactive(input$eligibility,
usercredcs <- input$uicscred
)
cred_reactive2 <- eventReactive(input$eligibility,
userannualinc <- input$uiannualincome
)
cred_reactive3 <- eventReactive(input$eligibility,
userlamt <- input$uilamt
)
cred_reactive4 <- eventReactive(input$eligibility,
usernoopenacc <- input$uiopenacc
)
cred_reactive5 <- eventReactive(input$eligibility,
usercurrcredbal <- input$uicurrcredbal
)
cred_reactive6 <- eventReactive(input$eligibility,
usermaxopencred <- input$uiopencred
)
credfraudrv <- reactiveValues(usercredcs = NULL,
userannualinc = NULL,
userlamt = NULL,
usernoopenacc = NULL,
usercurrcredbal = NULL,
usermaxopencred = NULL)
observeEvent(input$eligibility,
req(input$uicscred, input$uiannualincome, input$uilamt, input$uiopenacc,input$uicurrcredbal,input$uiopencred)
credfraudrv$usercredcs <- input$uicscred
credfraudrv$userannualinc <- input$uiannualincome
credfraudrv$userlamt <- input$uilamt
credfraudrv$usernoopenacc <- input$uiopenacc
credfraudrv$usercurrcredbal <- input$uicurrcredbal
credfraudrv$usermaxopencred <- input$uiopencred
)
credfraudpred <-reactive(
predict(credfraudfit,
newdata=data.frame(Credit.Score=credfraudrv$usercredcs,
Annual.Income=credfraudrv$userannualinc,
Current.Loan.Amount=credfraudrv$userlamt,
Number.Of.Open.Accounts=credfraudrv$usernoopenacc,
Current.Credit.Balance =credfraudrv$usercurrcredbal,
Maximum.Open.Credit=credfraudrv$usermaxopencred))
)
output$text2 <- renderText(
paste("Is this Customer Risky ",credfraudpred())
)
我已将我的“输出”变量用作 Bankruptcies,它也是字符格式(是或否)
当我提交检查资格时,它会抛出一些阈值作为输出
这就是我得到的 .. 我需要它是的 -> 客户是有风险的人 否 -> 客户是安全的人 请帮我解决这个问题。在哪一部分我必须编辑我的代码以获得所需的格式(是/否)
【问题讨论】:
判断一个人是否有风险的阈值是多少?你需要自己决定。 predict 函数正在返回概率。 【参考方案1】:在此代码之前,您需要指定哪些条件有风险,哪些没有风险:
output$text2 <- renderText(
paste("Is this Customer Risky ",credfraudpred())
)
例如,在这段代码之前,你可以放:
if credfraudpred() > 0.1
credfraudlabel = 'Yes, the customer is a risky person'
else
credfraudlabel = 'No, the customer is not a risky person'
然后,您可以更改代码以将 credfraudpred
替换为 credfraudlabel
:
output$text2 <- renderText(
paste("Is this Customer Risky: ",credfraudlabel)
)
【讨论】:
我认为预测值不能> 1。 我只是以 1 为例 - 必须有一个阈值来区分风险与非风险,并且应该在代码中使用。 是的,但概率不能超过 1。所以最好将其更改为 0.1 或 0 到 0.999 之间的任何值......“作为一个更好的例子”。 :) 也许添加 ():if credfraudpred() > 1
但请阅读我的 cmets。
超级酷 .. 非常感谢你们两个提供这段代码。它给了我想要的输出..非常感谢您的及时帮助..以上是关于如何将输出作为是或否而不是阈值?的主要内容,如果未能解决你的问题,请参考以下文章