我应用了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
答案 0 :(得分:0)
我需要相同的内容,然后按照@Stephen Handerson的提示进行操作,
rfConfusionMatrices <- list()
RrfConfusionMatrix[[i]] <- confMatrix
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