亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sklearn.model_selection.GroupShuffleSplit

sklearn.model_selection.GroupShuffleSplit

RISEBY 2021-11-23 19:02:29
因此,我需要使用預定義的組生成測試/訓練/驗證拆分。我不想使用 LeavePGroupsOut,因為我需要根據所需的百分比將數據分成訓練和驗證集。在 GroupShuffleSplit 的文檔中,對于test_size參數,是這樣說的:test_size : float, int, None, optional 如果是float,應該在0.0到1.0之間,代表數據集在測試分割中的比例。如果是 int,則表示測試樣本的絕對數量。如果為 None,則該值設置為列車大小的補碼。默認情況下,該值設置為 0.2。默認值將在 0.21 版中更改。僅當未指定 train_size 時,它將保持 0.2,否則它將補充指定的 train_size。然而,事實并非如此,如以下代碼所示:tr, ts = next(GroupShuffleSplit(n_splits=1, test_size=3).split(TR_set, groups=tr_groups))print(tr)print(ts)例如打印出來:[  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  91  92  93  99 101 102 103 104 105 106 107][ 26  27  89  90  94  95  96  97  98 100]正如您在上面看到的,測試大小不是 3,而是大于 3。這幾乎總是如此。我檢查了指數組。顯然,如果 test_size 是一個整數,它表示測試組的絕對數量,而不是 samples。我認為文檔具有誤導性。此外,當 test_size 是浮點數時,它主要不考慮指定的比率。這可能是由于組中的樣本大小不相等,但必須有一個注釋/警告來指定在不相等的組大小與 test_size 比率相結合的情況下它遵循什么樣的行為。tr, ts = next(GroupShuffleSplit(n_splits=1, test_size=0.1).split(TR_set, groups=tr_groups))print(len(tr))print(len(ts))這使:7038其中測試大小是整個集合的 35%(它應該是 10%)。所以,要么我遺漏了什么,要么文檔只是錯誤的描述。
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

我在 GroupShuffleSplit 文檔中找到了這個:

注意:參數 test_size 和 train_size 指的是組,而不是像 ShuffleSplit 中的樣本。

因此, test_size 預計是組數,這也是您在結果中發現的。


查看完整回答
反對 回復 2021-11-23
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

沒有錯誤,但文檔在某些方面不正確。我在scikit-learn 的 github 頁面中為此主題打開了一個問題。


查看完整回答
反對 回復 2021-11-23
  • 2 回答
  • 0 關注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號