微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中的精确召回曲线

如何解决R中的精确召回曲线

有人可以帮助我理解此精确召回曲线(用R生成)中的“阈值”(即颜色渐变)吗?

https://imgur.com/a/rQZH7XR

R代码

import React from 'react'
import {Database} from './DatabaseContext'
import Card from '@material-ui/core/Card'
import CardContent from '@material-ui/core/CardContent'
import Button from '@material-ui/core/Button'
import {makeStyles} from '@material-ui/core'

const HomeHotels = () => {
  const classes = useStyles()
  const featuredHotels = useContext(Database)
  console.log(featuredHotels)
}

为什么阈值从-3变为3?阈值不是必须在0到1之间吗?有人知道如何解决这个问题(产生介于0和1之间的阈值)吗?

谢谢!

来源:https://cran.rstudio.com/web/packages/PRROC/PRROC.pdf

解决方法

我不太清楚你想做什么。您在注释中链接到的图显示了精度/召回率随分类器阈值参数的变化而变化,但是您没有显示涉及任何分类问题的代码。

让我们使用iris数据集并构造一个简单的二进制分类问题;为此,我们首先删除Species == "setosa"的所有数据。

data <- subset(iris,Species %in% c("versicolor","virginica"))
data <- droplevels(data)

然后,我们将带有高斯(径向)内核的简单SVM用于我们的分类器。在这种情况下,我们只有一个参数gamma。我们确定用于更改gamma的值的分类器的精度/召回率并绘制结果

library(e1071)
library(caret)
library(tidyverse)

gamma <- 10^(seq(-3,2,by = 0.1))
df <- map_dfr(
    cost,function(param)
        svm(Species ~ .,data = data,gamma = param,kernel = "radial") %>%
            predict() %>%
            confusionMatrix(data$Species,mode = "prec_recall") %>%
            pluck("byClass") %>%
            enframe() %>%
            filter(name %in% c("Precision","Recall")) %>%
            mutate(gamma_param = param))

ggplot(df,aes(gamma_param,value,colour = name)) + 
    geom_line() + 
    scale_x_log10() +
    expand_limits(y = c(0,1)) + 
    theme_minimal()

enter image description here

请注意,参数(及其取值)取决于您的分类器;在这种简单的情况下,您只有一个可调参数。

PS。我出于习惯和方便而使用了ggplot和其他tidyverse函数;您也可以在base R中执行类似的操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。