Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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 C5.0设置倾斜数据的度量(可能是F1度量?)_R_R Caret - Fatal编程技术网

R C5.0设置倾斜数据的度量(可能是F1度量?)

R C5.0设置倾斜数据的度量(可能是F1度量?),r,r-caret,R,R Caret,我有一个非二进制(三类)目标变量的高度倾斜数据。我想用R包C5.0和可选的caret来训练C5.0决策树分类。如何设置适用于此类数据的度量。我考虑过使用F1。我为caret+rpart构建了一个自定义函数,但我不知道如何为C5.0实现它。也许这甚至没有必要,因为C5.0可能已经能够处理扭曲的数据(老实说,我不太确定实现到底是如何工作的) 这里是我的caret代码和rpart: harmonicF1 <- function(data, lev, model) { #treats the

我有一个非二进制(三类)目标变量的高度倾斜数据。我想用R包
C5.0
和可选的
caret
来训练C5.0决策树分类。如何设置适用于此类数据的度量。我考虑过使用F1。我为
caret
+
rpart
构建了一个自定义函数,但我不知道如何为C5.0实现它。也许这甚至没有必要,因为C5.0可能已经能够处理扭曲的数据(老实说,我不太确定实现到底是如何工作的)

这里是我的
caret
代码和
rpart

harmonicF1 <- function(data, lev, model) {
  #treats the vectors like classes
  #data$obs and data$pred must be whole numbers
  scores <- vector(mode = "numeric", length = length(lev))
  names(scores) <- lev
  for(i in lev){
    tp=nrow(data[data$pred==i & data$obs==i,]);        
    fp=nrow(data[data$pred==i & data$obs!=i,]);
    fn=nrow(data[data$pred!=i & data$obs==i,]);
    f1=(2*tp)/(2*tp+fp+fn)
    scores[i]=f1;
  }
  harmonicF1 = 1/mean(1/scores)
  names(harmonicF1) <- "harmonicF1"
  return(harmonicF1);
}
fitControl <- trainControl(summaryFunction = harmonicF1)
fitModel_rpart <- train(cut ~ ., diamonds, method = "rpart", trControl = fitControl, metric = "harmonicF1", maximize=TRUE)
harmonicF1