2016-03-17 69 views
5

Tôi đang xem hướng dẫn này: https://www.dataquest.io/mission/74/getting-started-with-kaggleKFold trong python chính xác là gì?

Tôi đã tham gia phần 9, đưa ra các dự đoán. Trong đó có một số dữ liệu trong một dataframe gọi titanic, sau đó được phân chia trong nếp gấp sử dụng:

# Generate cross validation folds for the titanic dataset. It return the row indices corresponding to train and test. 
# We set random_state to ensure we get the same splits every time we run this. 
kf = KFold(titanic.shape[0], n_folds=3, random_state=1) 

Tôi không chắc chắn những gì là nó chính xác làm và những gì loại đối tượng kf là. Tôi đã thử đọc tài liệu nhưng nó không giúp được nhiều. Ngoài ra, có ba nếp gấp (n_folds = 3), tại sao sau đó nó chỉ truy cập đào tạo và kiểm tra (và làm thế nào để tôi biết chúng được gọi là đào tạo và thử nghiệm) trong dòng này?

for train, test in kf: 

Trả lời

4

KFold sẽ cung cấp chỉ mục đào tạo/kiểm tra để chia dữ liệu trong các tập đoàn đào tạo và kiểm tra. Nó sẽ chia số liệu thành k nếp gấp liên tiếp (không xáo trộn theo mặc định). Mỗi lần sau đó được sử dụng một bộ xác thực một lần trong khi các nếp gấp còn lại k - 1 tạo thành bộ huấn luyện (source).

Hãy nói rằng, bạn có một số chỉ số dữ liệu từ 1 đến 10. Nếu bạn sử dụng n_fold=k, trong lần lặp đầu tiên bạn sẽ nhận được i 'th (i<=k) lần như chỉ số thử nghiệm và còn lại (k-1) nếp gấp (không i đó là lần th) với nhau như chỉ số đào tạo.

Một ví dụ

import numpy as np 
from sklearn.cross_validation import KFold 

x = [1,2,3,4,5,6,7,8,9,10,12] 
kf = KFold(12, n_folds=3) 

for train_index, test_index in kf: 
    print (train_index, test_index) 

Output

Fold 1: [4 5 6 7 8 9 10 11] [0 1 2 3]

Fold 2: [0 1 2 3 8 9 10 11] [4 5 6 7]

Lần 3: [0 1 2 3 4 5 6 7] [8 9 10 11]

+0

Tôi hiểu. Dù n_folds là, bạn vẫn kết thúc chỉ với một thử nghiệm và một tập huấn luyện. Nếu n_folds là 2, thì bạn chỉ cần sử dụng một nửa dữ liệu để đào tạo và nửa còn lại để thử nghiệm, sau đó hoán đổi chúng. Tôi có hiểu chính xác điều này không? – user

+1

Có. Bạn sẽ nhận được i'th (1 <= i <= n_fold) gấp dưới dạng kiểm tra và các nếp gấp còn lại là đào tạo. – qmaruf