簡體   English   中英

為什么每個 k 折交叉驗證的准確率差異很大? 我該如何改進

[英]Why accuracy over each k-fold cross-Validation differ alot? how can i improve that

我有一個包含 91 個觀測值和 700 個特征的數據集。 我已經使用 PCA 減少了數據的維度。 然后我將數據集分成訓練和測試,比率 = 70/30。 之后對訓練數據集應用 kfold =10 交叉驗證並計算每個折疊的准確度。 我懷疑它變化很大。

數據集中的 class 分布

Male Female 
47     44 

這是每次折疊的准確性嗎? 使用 LDA 訓練 model 時每次折疊的結果

fold1 = 0.71
fold2 = 0.83
fold3 = 0.50
fold4 0.29,
fold5 = 0.67 ,
fold6 = 0.33
fold7 = 0.14
fold8 = 1.00
fold9 = 0.33
fold10 = 0.14

有這樣的變化是否正確? 如果沒有,那我該如何解決這個問題? 我怎樣才能提高每次折疊的准確性,至少它不應該有太大變化? 可能的原因是什么? 為什么變化很大? 我正在尋找這些問題的答案

這是我的交叉驗證 function

training_data數據是實際數據的 70%

    lda_cv = function(training_data,k_number_of_folds){


  training_data = training_data[sample(nrow(training_data)),]
  #creating folds
  folds <- createFolds(training_data$class,k_number_of_folds)
  result = list("t_cfm"=NULL,"t_accuracy"=NULL)
  for (i in 1:k_number_of_folds) {
    
    #index <- which(folds==i,arr.ind=TRUE)
    index <- folds[[i]]
    train <- training_data[-index, ]
    test <- training_data[index, ]
    
    ##testing accuracy
    lda.res = lda( as.factor(class) ~ . , data = train)
    lda.pred= predict(lda.res,newdata = test)
    
    cfm  = table(lda.pred$class,test$class,dnn = c("predicted","Actual"))
    
    result$t_cfm[[i]] = cfm
    accuracy = round(mean(lda.pred$class ==test$class),2)
    
    result$t_accuracy[[i]] = accuracy
    
    }
  
     return(result)
  
    }

是的。 因為每個折疊都在一組不同的圖像上進行訓練,也許其中一個有太多嘈雜的圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM