Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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_R_Machine Learning_Glm_R Caret_Resampling - Fatal编程技术网

重采样会改变什么吗?R

重采样会改变什么吗?R,r,machine-learning,glm,r-caret,resampling,R,Machine Learning,Glm,R Caret,Resampling,我正在使用插入符号包和“glm”方法,以便使用某些因素预测空调机是否打开/关闭 当我使用不同的重采样方法时,我得到了相同的结果(混淆矩阵及其度量:准确性、灵敏度…),为什么它们是相同的?当使用交叉验证或引导或什么都不使用时,结果是否有差异??我一定是做错了什么。这是一个可重复的示例: set.seed(123) library(caret) library(gbm) month <- factor(c(rep("january",10),rep("february",10) ,

我正在使用插入符号包和“glm”方法,以便使用某些因素预测空调机是否打开/关闭

当我使用不同的重采样方法时,我得到了相同的结果(混淆矩阵及其度量:准确性、灵敏度…),为什么它们是相同的?当使用交叉验证或引导或什么都不使用时,结果是否有差异??我一定是做错了什么。这是一个可重复的示例:

set.seed(123)
library(caret)
library(gbm)

month <- factor(c(rep("january",10),rep("february",10)
     ,rep("january",10),rep("february",10)
     ,rep("january",10),rep("february",10)))

day <- factor(c(rep("monday",20),rep("tuesday",20)
        ,rep("monday",10),rep("tuesday",10)))

hourDec <- runif(60)*10

onoff <- c(rep(c(0,1),10),rep(c(0,0,0,1,1),3),
       rep(c(1,1,0,0,1),2),rep(c(0,0,1,0,1),3))

df <- data.frame(onoff,month,day,hourDec)

inTrain <- createDataPartition(y=factor(df$onoff), p=0.7,list=F)
training <- df[inTrain,]
testing <- df[-inTrain,]

f.glm <- function(training, testing){
  resampling <- c("none"
               ,"repeatedcv"
               , "boot"
               , "boot632"
               , "cv"
               #, "LOOCV"
               , "LGOCV"
  )
  for (i in 1:length(resampling)) {
    cat("\n\n")
    cat("- Resampling method:", resampling[i], "+ glm")
    cat("\n\n")
    fitControl <- trainControl(method=resampling[i],number=5,repeats=10)
    modelFit <- train( factor(onoff) ~.,data=training, method="glm", trControl=fitControl)
    modelFit
    print(modelFit$finalModel)
    predictions <- predict(modelFit, newdata=testing)
    cm <- confusionMatrix(predictions,testing$onoff)
    print(cm$table)
    print(cm$overall)
    print(cm$byClass)
  }
}

f.glm(training,testing)
set.seed(123)
图书馆(插入符号)
图书馆(gbm)

如果我单步查看您的代码,则
modelFit
行的输出表明重采样设置为无
resampling:none
。我不熟悉
caret
软件包,但这可能就是代码没有达到预期效果的原因。在
train
中使用重采样的主要目的是调整模型的超参数。因此,使用重采样(例如10倍CV)来寻找最优超参数,然后将模型(具有最优超参数)拟合到整个数据集。由于
glm
没有调整超参数,因此在所有情况下,生成的模型都是相同的。如果您希望看到结果中的差异,请尝试使用具有调整超参数的模型(例如SVM)。