有人可以帮助我理解此精确召回曲线(用R生成)中的“阈值”(即颜色渐变)吗?
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之间的阈值)吗?
谢谢!
答案 0 :(得分:0)
我不太清楚你想做什么。您在注释中链接到的图显示了精度/召回率随分类器阈值参数的变化而变化,但是您没有显示涉及任何分类问题的代码。
让我们使用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()
请注意,参数(及其取值)取决于您的分类器;在这种简单的情况下,您只有一个可调参数。
PS。我出于习惯和方便而使用了ggplot
和其他tidyverse
函数;您也可以在base R中执行类似的操作。