2016-09-28 25 views
9

Tôi đang theo dõi the IRIS example of tensorflow.Làm thế nào để thực hiện xác thực chéo k-fold với tensorflow?

Trường hợp của tôi bây giờ là tôi có tất cả dữ liệu trong một tệp CSV duy nhất, không tách rời và tôi muốn áp dụng xác thực chéo k-fold trên dữ liệu đó.

Tôi có

data_set = tf.contrib.learn.datasets.base.load_csv(filename="mydata.csv", 
                target_dtype=np.int) 

Làm thế nào tôi có thể thực hiện k lần kiểm chứng chéo trên tập dữ liệu này với nhiều lớp mạng nơron như giống như IRIS ví dụ?

Trả lời

9

NN thường được sử dụng với bộ dữ liệu lớn trong đó CV không được sử dụng - và rất tốn kém. Trong trường hợp của IRIS (50 mẫu cho mỗi loài), bạn có thể cần nó .. tại sao không sử dụng scikit-learn with different random seeds để chia đào tạo và thử nghiệm của bạn?

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) 

cho k trong kfold:

  1. phân chia dữ liệu khác nhau thông qua một giá trị khác nhau để "random_state"
  2. học thuần sử dụng _train
  3. thử nghiệm sử dụng _test

Nếu bạn không thích hạt giống ngẫu nhiên và muốn chia tách k-fold có cấu trúc hơn, bạn có thể sử dụng rom here.

from sklearn.model_selection import KFold, cross_val_score 
X = ["a", "a", "b", "c", "c", "c"] 
k_fold = KFold(n_splits=3) 
for train_indices, test_indices in k_fold.split(X): 
    print('Train: %s | test: %s' % (train_indices, test_indices)) 
Train: [2 3 4 5] | test: [0 1] 
Train: [0 1 4 5] | test: [2 3] 
Train: [0 1 2 3] | test: [4 5] 
Các vấn đề liên quan