ट्रेन परीक्षण और क्रॉस सत्यापन सेट सहित असंतुलित डेटासेट को सही ढंग से विभाजित करने के लिए कैसे

Aug 16 2020

ऊपर की तस्वीर वही है जिसे मैं दोहराने की कोशिश कर रहा हूं। मुझे नहीं पता कि मैं इसके बारे में सही तरीका बता रहा हूं। मैं FakeNewsChallenge डेटासेट और इसके अत्यधिक असंतुलित होने के साथ काम कर रहा हूं, और मैं एक पेपर में उपयोग की जाने वाली विधि पर दोहराने और सुधारने की कोशिश कर रहा हूं।


सहमत - 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

जवाब

2 SuryaLohia. Aug 16 2020 at 06:14

आपको फ़ंक्शन 'train_test_split ()' में एक और पैरामीटर जोड़ना होगा:

x_train1, x_test, y_train1, y_test = train_test_split(x, y, test_size=0.33, stratify = y)

यह आपको सभी लक्षित श्रेणियों का समान वितरण देगा।