2017-05-26 328 views
-1

我有一組數據用於訓練神經網絡,但我相信我的問題屬於任何類型的機器學習。Python庫在Keras中執行分層KFold交叉驗證

我的數據分爲兩類,但是我有更多類的例子比我做的第二類更多。在我繼續並在我的數據上訓練神經網絡之前,我打算將數據分成3個獨立的組(培訓,驗證和測試),並在每一個組中重複我爲第一課所用的數據足夠多次,以便讓我擁有等同於該組中每個班級的數據。

這真的很乏味,我敢打賭,其他人也有同樣的問題。有沒有一個python庫爲我做這個?或者至少是它的一部分?

TL;博士:我想分裂我的數據分成3個部分和均衡的數據我在每個班的量,而不會丟棄數據

+0

http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html – shash678

+0

如果你需要在你的程序做了幾次(S ),然後編寫一個通用函數來處理它。這基本上是一件簡單的事情 - 不需要依賴外部庫來完成它。 –

回答

1

是,使用scikit學習一個Python庫。從https://github.com/fchollet/keras/issues/1711複製粘貼KeironO的回答是:

from sklearn.cross_validation import StratifiedKFold 

def load_data(): 
    # load your data using this function 

def create model(): 
    # create your model using this function 

def train_and_evaluate__model(model, data[train], labels[train], data[test], labels[test)): 
    model.fit... 
    # fit and evaluate here. 

if __name__ == "__main__": 
    n_folds = 10 
    data, labels, header_info = load_data() 
    skf = StratifiedKFold(labels, n_folds=n_folds, shuffle=True) 

    for i, (train, test) in enumerate(skf): 
      print "Running Fold", i+1, "/", n_folds 
      model = None # Clearing the NN. 
      model = create_model() 
      train_and_evaluate_model(model, data[train], labels[train], data[test], labels[test))