gpt4 book ai didi

r - 如何以 F1 作为度量而不是准确性来训练非二元分类 rpart?

转载 作者:行者123 更新时间:2023-11-30 09:37:19 24 4
gpt4 key购买 nike

我正在使用脱字符号进行非二元(三类)决策树分类。我的数据集有偏差,因此我想使用 F1 而不是准确性来进行训练和测试。我该如何设置?

对于 MWE,让我们预测钻石数据集中的切工:

library(ggplot2)
library(caret)
inTrain <- createDataPartition(diamonds$cut, p=0.75, list=FALSE)
training <- diamonds[inTrain,]
testing <- diamonds[-inTrain,]
fitModel <- train(cut ~ ., training, method = "rpart")

这里如何使用F1?

最佳答案

页面http://topepo.github.io/caret/training.html详细说明如何为训练函数创建新指标 -

您需要创建一个具有三个参数的新函数 -

  • 数据 - “是数据框或矩阵的引用,其中包含称为 obs 和 pred 的列,用于观察和预测结果值(用于回归的数字数据或用于分类的字符值)”
  • lev - “是一个字符串,具有从训练数据中获取的结果因子水平。对于回归,将 NULL 值传递到函数中。”
  • name - “是正在使用的模型的字符串”

该函数应计算数据对象中观察到的标签和预测标签的 F 分数,并根据指标命名结果 -

例如计算准确度的函数

summaryStats <- function (data, lev = NULL, model = NULL) {
cor <- sum(data$pred==data$obs)
incor <- sum(data$pred!=data$obs)
out <- cor/(cor + incor)
names(out) <- c("acc")
out
}

然后创建一个新的 trainControl 对象并训练您的模型 --

fitControl <- trainControl(summaryFunction = summaryStats)
fitModel <- train(cut ~ ., training, trControl = fitControl, metric = "acc", maximize=TRUE)

关于r - 如何以 F1 作为度量而不是准确性来训练非二元分类 rpart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34771852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com