डेटा को विभाजित करने से पहले और बाद में StandardScaler


20

जब मैं उपयोग करने के बारे में पढ़ रहा था StandardScaler, तो अधिकांश सिफारिशें कह रही थीं कि आपको डेटा को ट्रेन / परीक्षण में विभाजित करने StandardScaler से पहले उपयोग करना चाहिए , लेकिन जब मैं ऑनलाइन (स्केलेरन का उपयोग करके) पोस्ट किए गए कुछ कोड की जांच कर रहा था तो दो प्रमुख उपयोग थे।

1- StandardScalerसभी डेटा का उपयोग करना । उदाहरण के लिए

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_fit = sc.fit(X)
X_std = X_fit.transform(X)

या

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X = sc.fit(X)
X = sc.transform(X)

या केवल

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_std = sc.fit_transform(X)

2- StandardScalerस्प्लिट डेटा का उपयोग करना ।

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform (X_test)

मैं अपने डेटा को मानकीकृत करना चाहूंगा, लेकिन मैं उलझन में हूं कि कौन सा तरीका सबसे अच्छा है!

जवाबों:


25

अपने मॉडल में लीक होने वाले टेस्ट सेट के वितरण के बारे में जानकारी को रोकने के लिए , आपको विकल्प # 2 के लिए जाना चाहिए और स्केलर को केवल अपने प्रशिक्षण डेटा पर फिट करना चाहिए, फिर उस स्केलर के साथ प्रशिक्षण और परीक्षण सेट दोनों को मानकीकृत करें। बंटवारे से पहले पूर्ण डेटासेट पर स्केलर को फिट करके (विकल्प # 1), प्रशिक्षण सेट के बारे में जानकारी का उपयोग प्रशिक्षण सेट को बदलने के लिए किया जाता है, जो बदले में डाउनस्ट्रीम से गुजरता है।

एक उदाहरण के रूप में, संपूर्ण डेटासेट के वितरण को जानने से आप कैसे प्रभावित हो सकते हैं और आउटलेर को संसाधित कर सकते हैं, साथ ही साथ आप अपने मॉडल को कैसे माप सकते हैं। हालाँकि डेटा स्वयं उजागर नहीं है, डेटा के वितरण के बारे में जानकारी है। परिणामस्वरूप, आपके परीक्षण सेट का प्रदर्शन अनदेखी डेटा पर प्रदर्शन का सही अनुमान नहीं है। कुछ और चर्चा जो आपको उपयोगी लग सकती है वह है क्रॉस वैलिडेट पर


क्या एक मान्यता सेट पर भी यही लागू होगा? दूसरे शब्दों में, अगर मैं अपने प्रशिक्षण सेट को ट्रेन और सत्यापन सेटों में विभाजित करता हूं, तो क्या मैं सिर्फ ट्रेन पर फिट सीखता हूं और फिर बाद में सत्यापन और टेस्ट सेट दोनों पर लागू होता है? या क्या मैं संपूर्ण डेटा सेट पर फिट सीखता हूं जिसमें सत्यापन और प्रशिक्षण दोनों उदाहरण शामिल हैं और केवल बाद में टेस्ट में इसे लागू करने के बारे में चिंता करते हैं।
फिल ग्लू सेप

हाय - यह सही है, केवल ट्रेन पर फिट है - सत्यापन या परीक्षण नहीं
redhqs

0

निम्नलिखित के बारे में कैसे:

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.fit_transform (X_test)

क्योंकि अगर X_test = sc.transform(X_test), यह त्रुटि देता X_testहै अभी तक फिट नहीं है। या मुझे यहाँ कुछ याद आया?


2
बस X_test
tsumaranaina

0

आपको परीक्षण डेटा पर fit_transform (X_test) नहीं करना चाहिए।
फिट पहले से ही ऊपर हुआ।

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform (X_test)

क्षमा करें, इसका मतलब नीचे दिए गए उत्तर के रूप में था :)
तारिणी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.