簡體   English   中英

了解 kfold scitkit 中的 cross_val_score 學習

[英]Understanding cross_val_score in kfold scitkit learn

閱讀 k 折疊交叉驗證的文檔http://scikit-learn.org/stable/modules/cross_validation.html我試圖了解每個折疊的訓練過程。

這是正確的:在生成cross_val_score每個折疊都包含一個新的訓練和測試集,這些訓練和測試集被下面代碼中傳入的分類器clf用來評估每個折疊的性能?

這意味着增加折疊大小會影響准確性,具體取決於訓練集的大小,因為增加折疊次數會減少每個折疊可用的訓練數據?

從 doc cross_val_score生成使用:

from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
scores                                              
array([ 0.96...,  1.  ...,  0.96...,  0.96...,  1.        ])

我認為“每個折疊都包含一個新的訓練和測試集”的說法是不正確的。

默認情況下, cross_val_score使用KFold交叉驗證。 這是通過將數據集分成 K 個相等的折疊來實現的。 假設我們有 3 折(fold1、fold2、fold3),那么算法的工作原理如下:

  1. 使用 fold1 和 fold2 作為 svm 中的訓練集並在 fold3 上測試性能。
  2. 使用 fold1 和 fold3 作為我們在 svm 中的訓練集並在 fold2 上測試性能。
  3. 使用 fold2 和 fold3 作為我們在 svm 中的訓練集並在 fold1 上測試性能。

因此,每個倍被用於訓練和測試。

現在到你問題的第二部分。 如果您增加折疊中的數據行數,您確實會減少每次運行的訓練樣本數(上面是運行 1、2 和 3),但訓練樣本總數不變。

一般來說,選擇正確的折疊次數既是藝術也是科學。 對於有關如何選擇折疊次數的一些啟發式方法,我建議使用此答案 最重要的是,您選擇的折疊數會稍微影響准確性。 對於大數據集,你有大量的折疊是相對安全的; 對於較小的數據集,您應該使用新的隨機拆分多次運行練習。

暫無
暫無

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

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