大家好

最近做深度學習
要做 k折交叉驗證
 
 
需要將資料分組
所以找一下有方便的分組方式
以下是範例:
 
import numpy as np
import random
 
#例如有 98 個數字(資料ID)
nowids = list(range(0,97))
#打亂
random.shuffle(nowids)
#平均分10組
nowSIds = np.array_split(nowids, 10)
 
print('總資料有',len(nowSIds),'組')
for nowSId in nowSIds:
    print('該組資料有 ',len(nowSId), '個,資料為 ', nowSId)
 
 
總資料有 10 組
該組資料有  10 個,資料為  [96 80 36 92 71 74 94 62  7 30]
該組資料有  10 個,資料為  [ 4 35 65 67  8 11 81 17 34 43]
該組資料有  10 個,資料為  [21 64 82 40 28 93 38 13 91 70]
該組資料有  10 個,資料為  [56 52 84 54  5 85 61 95 22  6]
該組資料有  10 個,資料為  [66 77 73 76 51 27 32 90 75 78]
該組資料有  10 個,資料為  [49 14 20  1 33 25 24 31 19 88]
該組資料有  10 個,資料為  [ 9 69 79 72 60 46 87  2  0 23]
該組資料有  9 個,資料為  [10 53 50 68 83 41 37 57 48]
該組資料有  9 個,資料為  [12 47 26  3 89 44 63 58 16]
該組資料有  9 個,資料為  [55 18 42 86 29 59 39 45 15]
 
 
這樣分出來資料就會盡量平均
然後依照這樣的分組
例如  第一批資料就是以 第一組ID 做驗證資料
不加入訓練
用這樣來達到k折交叉驗證目標
 
這樣就是要跑10次就是了
 
 
題外話:
深度學習其實牽涉到的層面很多
不只是數學 還包含資料前處理
而且很重視 domain knowledge
 
但是我發現很多人做深度都變成 "用想的" 做深度了
變成很難實現與應用
 
變成拿一組資料
做一組實驗
生一篇論文
 
既沒辦法複製
也沒有實際貢獻產生
 
不過在這年代
有時候學術這種東西
就是這麼的一言難盡