關於sklearn.model_selected中的KFold.split的理解

關於sklearn.model_selected中的KFold.split的理解

  1. 作用:返回樣本切分之後數據集的indices,即索引

  2. 返回:

    • train: ndarray。如果KFold設置shuffle參數是True,是混亂的。
    • test: ndarray。如果KFold設置shuffle參數是True/False,是按照順序連續!!
  3. 示例

ab_range = np.array(range(0,100))*100
ab_rangey = np.array(range(0,100))/100.0
print(len(ab_range),len(ab_rangey))

array([   0,  100,  200,  300,  400,  500,  600,  700,  800,  900, 1000,
       1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100,
       2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200,
       3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, 4100, 4200, 4300,
       4400, 4500, 4600, 4700, 4800, 4900, 5000, 5100, 5200, 5300, 5400,
       5500, 5600, 5700, 5800, 5900, 6000, 6100, 6200, 6300, 6400, 6500,
       6600, 6700, 6800, 6900, 7000, 7100, 7200, 7300, 7400, 7500, 7600,
       7700, 7800, 7900, 8000, 8100, 8200, 8300, 8400, 8500, 8600, 8700,
       8800, 8900, 9000, 9100, 9200, 9300, 9400, 9500, 9600, 9700, 9800,
       9900])

array([ 0.  ,  0.01,  0.02,  0.03,  0.04,  0.05,  0.06,  0.07,  0.08,
        0.09,  0.1 ,  0.11,  0.12,  0.13,  0.14,  0.15,  0.16,  0.17,
        0.18,  0.19,  0.2 ,  0.21,  0.22,  0.23,  0.24,  0.25,  0.26,
        0.27,  0.28,  0.29,  0.3 ,  0.31,  0.32,  0.33,  0.34,  0.35,
        0.36,  0.37,  0.38,  0.39,  0.4 ,  0.41,  0.42,  0.43,  0.44,
        0.45,  0.46,  0.47,  0.48,  0.49,  0.5 ,  0.51,  0.52,  0.53,
        0.54,  0.55,  0.56,  0.57,  0.58,  0.59,  0.6 ,  0.61,  0.62,
        0.63,  0.64,  0.65,  0.66,  0.67,  0.68,  0.69,  0.7 ,  0.71,
        0.72,  0.73,  0.74,  0.75,  0.76,  0.77,  0.78,  0.79,  0.8 ,
        0.81,  0.82,  0.83,  0.84,  0.85,  0.86,  0.87,  0.88,  0.89,
        0.9 ,  0.91,  0.92,  0.93,  0.94,  0.95,  0.96,  0.97,  0.98,  0.99])
        
100 100
kf = KFold(5, random_state=123)

# 一、僅僅打印test(即代碼中model)的indices
for i, model in kf.split(ab_range, ab_rangey):
    print('*' * 10);
    # print(i, len(i));
    print(model, len(model));
    print('*' * 10)

**********
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19] 20
**********
**********
[20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39] 20
**********
**********
[40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59] 20
**********
**********
[60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79] 20
**********
**********
[80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99] 20
**********

結果中test在5折切分中是從0-99按照順序切分。

# 二、僅僅輸出train數據集的indices
for i, model in kf.split(ab_range, ab_rangey):
    print('*' * 10);
    print(i, len(i));
    # print(model, len(model));
    print('*' * 10)
**********
[20 21 22 23 24 25 26 27 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 89 90 91 92 93 94
 95 96 97 98 99] 80
**********
**********
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 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 89 90 91 92 93 94
 95 96 97 98 99] 80
**********
**********
[ 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 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 89 90 91 92 93 94
 95 96 97 98 99] 80
**********
**********
[ 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 26 27 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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
 95 96 97 98 99] 80
**********
**********
[ 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 26 27 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
**********

結果中train在5折切分中是從0-99中隨機選出80個,對應順序即是混亂的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章