R中混淆矩阵的平均值

时间:2018-03-14 19:03:37

标签: r data-mining naivebayes

我应用了10次交叉验证,输出在混淆矩阵上是10倍,那么如何通过混淆矩阵找到折叠的平均值?

我的工作是否正确?

这是我的代码:

#!/usr/bin/env python
from datetime import datetime, time
import pytz # pip instal pytz
import ephem

tz = pytz.timezone("Australia/Melbourne") # choose timezone

today = datetime.now(tz).date()

# assert that there is no dst transition at midnight (`is_dst=None`)
midnight = tz.localize(datetime.combine(today, time(0, 0)), is_dst=None)

# convert to UTC 
fmt = '%Y-%m-%d %H:%M:%S'
print midnight.astimezone(pytz.utc).strftime(fmt)

home = ephem.Observer()
home.date = ephem.now()
home.date = ephem.Date( midnight.astimezone(pytz.utc).strftime(fmt) )

print home.date

2 个答案:

答案 0 :(得分:0)

我需要相同的内容,然后按照@Stephen Handerson的提示进行操作,

  1. 定义矩阵列表:
    • rfConfusionMatrices <- list()
  2. 将每个矩阵存储在该列表中:
    • RrfConfusionMatrix[[i]] <- confMatrix
  3. 使用Reduce函数对矩阵求和并除以倍数:
    • rfConfusionMatrixMean <- Reduce('+', rfConfusionMatrix) / nFolds

答案 1 :(得分:0)

如果您重新组织代码并将预测和真实标签存储为:

set.seed(100)
    library(caTools)
    library(caret)
    library(e1071)
    folds <- createFolds(wpdc$outcome, k=10) 
    CV <- lapply(folds, function(x){
      traing_folds=wpdc[-x,]
      test_folds=wpdc[x,]
      dataset_model_nb<-naiveBayes(outcome ~ ., data = traing_folds)
      dataset_predict_nB<-predict(dataset_model_nb, test_folds[-1])
      dataset_table_nB<-table(test_folds[,1],dataset_predict_nB)
      return(dataset_table_nB) # storing true and predicted values
    })

您可以通过减少以下内容来附加它们:

appended_table_nB<- do.call(rbind, dataset_table_nB)

然后获取混淆矩阵:

accuracy <- confusionMatrix(appended_table_nB, positive ="R")

与取平均值相同。唯一的区别是您对conf矩阵中的数据点求和,但准确性和其他指标均处于其平均值中。如果您希望将conf矩阵视为平均值,则可以:

averaged_matrix <- as.matrix(accuracy) / nFold