2016-07-19 7 views
5

मैं रेल/परीक्षण विभाजन बनाने के लिए आर (संस्करण: 3.3.0) में createFolds() का उपयोग कर रहा हूं। परिणाम पुन: उत्पन्न करने के लिए, मैंने 1012 के बीज मान के साथ set.seed() का उपयोग किया। जैसा कि अपेक्षित था, परिणाम (जेनरेट किए गए फोल्ड) पुन: उत्पन्न किए गए थे।आर: set.seed() परिणाम मेल नहीं खाते हैं यदि देखभाल पैकेज लोड

लेकिन एक बार जब मैंने बीज स्थापित करने के बाद कैरेट पैकेज लोड किया। और उसके बाद createFolds फ़ंक्शन का उपयोग किया, मैंने पाया कि बनाए गए फ़ोल्ड अलग थे (हालांकि अभी भी पुन: उत्पन्न)।

विशेष रूप से, बनाया सिलवटों निम्नलिखित दो मामलों में अलग-अलग:

केस 1:

library(caret) 
set.seed(10) 
folds=createFolds(y,k=5,returnTrain=TRUE) 

केस 2:

set.seed(10) 
library(caret) 
folds=createFolds(y,k=5,returnTrain=TRUE) 

जहां y एक वेक्टर है।

यह क्यों हो सकता है?

उत्तर

3

अपराधी ggplot2 है, जो आप देखभाल करते समय संलग्न होते हैं। यह .onAttach फ़ंक्शन को परिभाषित करता है: https://github.com/hadley/ggplot2/blob/master/R/zzz.r

पैकेज को संलग्न होने पर यह फ़ंक्शन कॉल किया जाता है, help("ns-hooks") देखें। और इसके भीतर runif को इस प्रकार आरएनजी की स्थिति को आगे बढ़ाने के लिए कहा जाता है।

+0

ए [समान प्रश्न] (https://github.com/topepo/caret/issues/452) दूसरे दिन आया; कुछ पैकेज स्टार्टअप – topepo

+0

@topepo पर यादृच्छिक संख्या का उपयोग इस मुद्दे के आसपास कोई रास्ता है? मेरे पास एक ही समस्या है, लेकिन अगर मैं कैरेट पैकेज लोड करने के बाद बीज सेट करता हूं। क्या यह उम्मीद है? मैं createFolds के लिए कैरेट का उपयोग करने की उम्मीद कर रहा था, लेकिन मुझे इसे पुन: उत्पन्न करने के लिए एक तरीका चाहिए। संपादित करें: मुझे अभी एहसास हुआ कि मैं 'createFolds()' की विभिन्न कॉलों के बीच बीज स्थापित नहीं कर रहा था, यह मुद्दा था। – Reilstein

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