ट्रेन परीक्षण और क्रॉस सत्यापन सेट सहित असंतुलित डेटासेट को सही ढंग से विभाजित करने के लिए कैसे
सहमत - 7.36%
असहमत - 1.68%
चर्चा - 17.82%
असंबंधित - 73.13%
मैं इस तरह से डेटा को विभाजित कर रहा हूं:
(67/33 में विभाजित डेटासेट)
- ट्रेन 67%, परीक्षण 33%
(सत्यापन के लिए आगे के प्रशिक्षण को 80/20 पर विभाजित करें)
- प्रशिक्षण 80%, सत्यापन 20%
(फिर 3 गुना क्रॉस वेलिडेशन सेट का उपयोग करके प्रशिक्षण और सत्यापन विभाजित करें)
एक तरफ के रूप में, 1.68% असहमत और सहमत होना बेहद मुश्किल रहा है।
यह वह जगह है जहां मैं एक मुद्दा बना रहा हूं क्योंकि यह मेरे लिए कुल अर्थ नहीं बना रहा है। क्या 80/20 के बंटवारे में बनाए गए सत्यापन को 5 गुना में भी स्तरीकृत किया जा रहा है?
यहाँ मैं वर्तमान में कहाँ हूँ:
67% प्रशिक्षण सेट और 33% टेस्ट सेट में डेटा विभाजित करें
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33)
x_train2, x_val, y_train2, y_val = train_test_split(x_train1, y_train1, test_size=0.20)
skf = StratifiedKFold(n_splits=3, shuffle = True)
skf.getn_splits(x_train2, y_train2)
for train_index, test_index in skf.split(x_train2, y_train2):
x_train_cros, x_test_cros = x_train2[train_index], x_train2[test_index]
y_train_cros, y_test_cros = y_train2[train_index], y_train[test_index]
क्या मैं मान्यकरण सेट के लिए फिर से skf चलाऊंगा? अनुक्रमिक मॉडल में उपयोग किए जा रहे skf से परीक्षण परीक्षण सेट कहां हैं?
मेरे द्वारा उपयोग की जा रही विधि के लिए उद्धरण:
थोटा, अश्विनी; तिलक, प्रियंका; अहलूवालिया, सिमरत; और लोहिया, निब्रत (2018) "फेक न्यूज डिटेक्शन: ए डीप लर्निंग अप्रोच," एसएमयू डेटा साइंस रिव्यू - वॉल्यूम। 1: नंबर 3, अनुच्छेद 10. यहां उपलब्ध है:https://scholar.smu.edu/datasciencereview/vol1/iss3/10
जवाब
आपको फ़ंक्शन 'train_test_split ()' में एक और पैरामीटर जोड़ना होगा:
x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)
यह आपको सभी लक्षित श्रेणियों का समान वितरण देगा।