2016-03-17 15 views
5

मैं इस ट्यूटोरियल तलाश में हूं: भाग 9, भविष्यवाणी करना https://www.dataquest.io/mission/74/getting-started-with-kaggleपाइथन में केएफल्ड वास्तव में क्या करता है?

मुझे मिल गया है। वहाँ में एक dataframe टाइटैनिक कहा जाता है, जो तब का उपयोग कर परतों में विभाजित किया गया है में कुछ डेटा है:

# 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) 

मैं क्या यह वास्तव में कर रहे हैं और वस्तु kf किस तरह का है यकीन नहीं है। मैंने प्रलेखन पढ़ने की कोशिश की लेकिन इससे ज्यादा मदद नहीं मिली। इसके अलावा, तीन गुना (n_folds = 3) हैं, बाद में यह केवल इस ट्रेन में ट्रेन और परीक्षण (और मुझे कैसे पता चलेगा कि उन्हें ट्रेन और परीक्षण कहा जाता है) तक पहुंच रहा है?

for train, test in kf: 

उत्तर

4

केएफओल्ड ट्रेन और परीक्षण सेट में डेटा विभाजित करने के लिए ट्रेन/परीक्षण सूचकांक प्रदान करेगा। यह डेटासेट को k लगातार फोल्ड में विभाजित करेगा (डिफ़ॉल्ट रूप से शफल किए बिना)। प्रत्येक फोल्ड को तब एक सत्यापन सेट का उपयोग किया जाता है जबकि k - 1 शेष फ़ोल्डर्स प्रशिक्षण सेट (source) बनाते हैं।

मान लें, आप 10 1 से कुछ डेटा सूचकांक होते हैं आप '(वें गुना कि i के बिना) वें परीक्षण सूचकांक के रूप में (i<=k) गुना (k-1) सिलवटों शेष और' n_fold=k उपयोग करते हैं, पहले चरण में आप i मिल जाएगा, तो एक साथ के रूप में ट्रेन सूचकांक।

एक उदाहरण

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) 

आउटपुट

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

फोल्ड 2: [0 1 2 3 8 9 10 11] [4 5 6 7]

फोल्ड 3: [0 1 2 3 4 5 6 7] [8 9 10 11]

+0

मुझे यह मिल गया। जो भी n_folds है, आप अभी भी एक परीक्षण और एक प्रशिक्षण सेट के साथ खत्म हो गया है। यदि n_folds 2 है, तो आप प्रशिक्षण के लिए आधे डेटा का उपयोग करें और परीक्षण के लिए दूसरे आधे का उपयोग करें, और फिर उन्हें स्वैप करें। क्या मुझे ये ठीक तरह से समझ आ रहा है? – user

+1

हां। आपको प्रशिक्षण के रूप में परीक्षण और शेष गुना के रूप में i'th (1 <= i <= n_fold) गुना मिल जाएगा। – qmaruf

संबंधित मुद्दे