खोज…


परिणाम का सत्यापन करना

एक भविष्यवाणी फ़ंक्शन के मापदंडों को सीखना और एक ही डेटा पर परीक्षण करना एक कार्यप्रणाली गलती है: एक मॉडल जो सिर्फ नमूनों के लेबल को दोहराएगा, जो कि उसने अभी देखा है, उसमें एक पूर्ण स्कोर होगा, लेकिन अभी तक उपयोगी कुछ भी भविष्यवाणी करने में विफल होगा- अनदेखी डेटा। इस स्थिति को ओवरफिटिंग कहा जाता है । इससे बचने के लिए, परीक्षण सेट X_test, y_test रूप में उपलब्ध डेटा का एक हिस्सा रखने के लिए (पर्यवेक्षित) मशीन लर्निंग प्रयोग करते समय यह आम बात है। ध्यान दें कि शब्द "प्रयोग" केवल शैक्षणिक उपयोग को निरूपित करने के लिए नहीं है, क्योंकि व्यावसायिक सेटिंग मशीन लर्निंग में भी आमतौर पर प्रयोगात्मक रूप से शुरू होता है।

शिकिट-सीख में प्रशिक्षण और परीक्षण सेट में एक यादृच्छिक विभाजन जल्दी से ट्रेन_टेस्ट_प्लिट हेल्पर फ़ंक्शन के साथ गणना की जा सकती है। आइए इस पर एक रैखिक समर्थन वेक्टर मशीन फिट करने के लिए सेट आईरिस डेटा को लोड करें:

>>> import numpy as np
>>> from sklearn import cross_validation
>>> from sklearn import datasets
>>> from sklearn import svm

>>> iris = datasets.load_iris()
>>> iris.data.shape, iris.target.shape
((150, 4), (150,))

अब हम अपने वर्गीकरण का परीक्षण (मूल्यांकन) करने के लिए ४०% डेटा रखने के दौरान एक प्रशिक्षण सेट को जल्दी से नमूना कर सकते हैं:

>>> X_train, X_test, y_train, y_test = cross_validation.train_test_split(
...     iris.data, iris.target, test_size=0.4, random_state=0)

>>> X_train.shape, y_train.shape
((90, 4), (90,))
>>> X_test.shape, y_test.shape
((60, 4), (60,))

अब, जब हमारे पास ट्रेन और परीक्षण सेट हैं, तो हम इसका उपयोग करते हैं:

>>> clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
>>> clf.score(X_test, y_test)   

K- गुना क्रॉस सत्यापन

ट्रेन / परीक्षण विभाजन के एकल परीक्षण से जुड़े विचरण को कम करने के लिए, ट्रेन / परीक्षण विभाजन प्रक्रिया को कई बार दोहराने के लिए K- गुना क्रॉस-वैधीकरण एक व्यवस्थित प्रक्रिया है। आप अनिवार्य रूप से संपूर्ण डेटासेट को K बराबर आकार "सिलवटों" में विभाजित करते हैं, और प्रत्येक गुना मॉडल के परीक्षण के लिए एक बार मॉडल और K-1 का उपयोग किया जाता है।

मल्टीपल फोल्डिंग तकनीक स्किटिट लाइब्रेरी के साथ उपलब्ध हैं। उनका उपयोग इनपुट डेटा विशेषताओं पर निर्भर है। कुछ उदाहरण निम्न हैं

कश्मीर गुना

आप अनिवार्य रूप से संपूर्ण डेटासेट को K बराबर आकार "सिलवटों" में विभाजित करते हैं, और प्रत्येक गुना मॉडल के परीक्षण के लिए एक बार मॉडल और K-1 का उपयोग किया जाता है।

from sklearn.model_selection import KFold
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 1, 2])
cv = KFold(n_splits=3, random_state=0)

for train_index, test_index in cv.split(X):
...    print("TRAIN:", train_index, "TEST:", test_index)

TRAIN: [2 3] TEST: [0 1]
TRAIN: [0 1 3] TEST: [2]
TRAIN: [0 1 2] TEST: [3]

StratifiedKFold k- गुना का एक प्रकार है जो स्तरीकृत सिलवटों को लौटाता है: प्रत्येक सेट में प्रत्येक लक्ष्य वर्ग के लगभग समान प्रतिशत पूर्ण सेट के रूप में होते हैं।

ShuffleSplit

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

from sklearn.model_selection import ShuffleSplit
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 1, 2])
cv = ShuffleSplit(n_splits=3, test_size=.25, random_state=0)

for train_index, test_index in cv.split(X):
...    print("TRAIN:", train_index, "TEST:", test_index)

TRAIN: [3 1 0] TEST: [2]
TRAIN: [2 1 3] TEST: [0]
TRAIN: [0 2 1] TEST: [3]

StratifiedShuffleSplit , शफलसेप्लिट की भिन्नता है, जो स्तरीकृत विभाजन को लौटाता है, जो कि प्रत्येक लक्ष्य वर्ग के लिए समान सेट के रूप में समान प्रतिशत को संरक्षित करके विभाजन बनाता है।

अन्य तह तकनीकें जैसे लीव वन / पी आउट, और टाइमसरीजप्लेट (के-फोल्ड की एक भिन्नता) स्किटिट मॉडल_सेलेक्शन लाइब्रेरी में उपलब्ध हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow