SMOTE मल्टी क्लास असंतुलन समस्या के लिए त्रुटि फेंकता है


10

मैं अपनी बहु-वर्ग वर्गीकरण समस्या में असंतुलन को सही करने के लिए SMOTE का उपयोग करने की कोशिश कर रहा हूं। यद्यपि SMOTE पूरी तरह से काम करता है SMOTE सहायता दस्तावेज़ के अनुसार आईरिस डेटासेट पर, यह समान डेटासेट पर काम नहीं करता है। यहां बताया गया है कि मेरा डेटा कैसा है। ध्यान दें कि इसमें 1, 2, 3 मान वाले तीन वर्ग हैं।

> data
   looking risk every status
1        0    1     0      1
2        0    0     0      1
3        0    0     0      2
4        0    0     0      1
5        0    0     0      1
6        3    0     0      1
7        0    0     0      1
8        0    0     0      1
9        0    1     0      1
10       0    0     0      1
11       0    0     0      3
12       0    0     0      1
13       0    0     0      1
14       0    0     0      1
15       0    0     0      2

यह डेटाफ्रेम के रूप में है, आइरिस के समान है:

> class(data)
[1] "data.frame"

यहाँ मेरा कोड SMOTE का उपयोग कर रहा है और यह जो त्रुटि फेंकता है:

> newData <- SMOTE(status ~ ., data, perc.over = 600,perc.under=100)
Error in scale.default(T, T[i, ], ranges) : subscript out of bounds
In addition: Warning messages:
1: In FUN(newX[, i], ...) :
  no non-missing arguments to max; returning -Inf
2: In FUN(newX[, i], ...) :
  no non-missing arguments to max; returning -Inf
3: In FUN(newX[, i], ...) :
  no non-missing arguments to max; returning -Inf
4: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf
5: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf
6: In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf

कृपया अपने लक्ष्य स्तंभ (अर्थात "स्थिति") को कारक में बदलने की कोशिश करें और उत्तर के रूप में नीचे @ xing की पोस्ट को चिह्नित करने पर विचार करें।
हरीश

जवाबों:


13

मुझे एक समान समस्या का सामना करना पड़ा है, और मैंने इसे कारक के रूप में वर्ग मान (आपके मामले में "स्थिति") को स्थानांतरित करके हल किया है। उपयोग करने के बाद data$status=factor(data$status), newDataप्रिंट निम्नानुसार हैं:

     looking risk every status
7          0    0     0      1
2          0    0     0      1
7.1        0    0     0      1
12         0    0     0      1
4          0    0     0      1
12.1       0    0     0      1
11         0    0     0      3
8         NA   NA    NA      3
9         NA   NA    NA      3
10        NA   NA    NA      3
111       NA   NA    NA      3
121       NA   NA    NA      3
13        NA   NA    NA      3

त्रुटियाँ नहीं!


यह अफ़सोस की बात है कि यह SMOTEप्रलेखन में उल्लेख नहीं है कि यह तभी काम करता है जब लेबल कारक हो!
पॉप

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