2015-12-12 7 views
16

मैं मुसीबत का उपयोग कर RandomForest फिट समारोहअजगर RandomForest - अज्ञात लेबल त्रुटि

है यह मेरा प्रशिक्षण सेट

  P1  Tp1   IrrPOA  Gz   Drz2 
0  0.0  7.7   0.0  -1.4  -0.3 
1  0.0  7.7   0.0  -1.4  -0.3 
2  ...  ...   ...  ...   ... 
3  49.4 7.5   0.0  -1.4  -0.3 
4  47.4 7.5   0.0  -1.4  -0.3 
... (10k rows) 

मैं sklearn.ensemble RandomForest

का उपयोग कर अन्य सभी चर के P1 धन्यवाद भविष्यवाणी करने के लिए करना चाहते हैं

ValueError: Unknown label type: array([[ 0. ], 
     [ 0. ], 
     [ 0. ], 
     ..., 
     [ 49.4], 
     [ 47.4], 
:
colsRes = ['P1'] 
X_train = train.drop(colsRes, axis = 1) 
Y_train = pd.DataFrame(train[colsRes]) 
rf = RandomForestClassifier(n_estimators=100) 
rf.fit(X_train, Y_train) 

यहाँ त्रुटि मैं मिलता है

मुझे इस लेबल त्रुटि के बारे में कुछ भी नहीं मिला, मैं पायथन 3.5 का उपयोग करता हूं। कोई सलाह बहुत मददगार होगी!

+0

sklearn का कौन सा संस्करण उपयोग कर रहे हैं? –

उत्तर

21

आप लेबल से गुजर रहे हैं जब (वाई) rf.fit(X,y) पर डेटा, यह उम्मीद करता है कि वाई 1 डी सूची होगी। पांडा फ्रेम को टुकड़ा करना हमेशा 2 डी सूची में होता है। तो, आपके उपयोग-मामले में संघर्ष उठाया गया। आपको फ़ंडस डेटाफ्रेम द्वारा प्रदान की गई 2 डी सूची को एक फ़ंक्शन फ़ंक्शन द्वारा अपेक्षित 1 डी सूची में कनवर्ट करने की आवश्यकता है।

-1 डी सूची का उपयोग कर पहले का प्रयास करें:

Y_train = list(train.P1.values) 

इस अगर समस्या का समाधान नहीं है, तो आप समाधान MultinomialNB error: "Unknown Label Type" में उल्लेख किया है के साथ की कोशिश कर सकते हैं:,

Y_train = np.asarray(train['P1'], dtype="|S6") 

तो अपने कोड हो जाता है

colsRes = ['P1'] 
X_train = train.drop(colsRes, axis = 1) 
Y_train = np.asarray(train['P1'], dtype="|S6") 
rf = RandomForestClassifier(n_estimators=100) 
rf.fit(X_train, Y_train) 
+0

के बीच अंतर को समझने की कोशिश करूंगा, अब मैं समस्या को समझता हूं, लेकिन आपका कोड काम नहीं करता है। मैं रूपांतरण करने के अन्य तरीकों की तलाश में हूं – Dragonfly

+0

क्या आप 'Y_train = list (train.P1.values)' के साथ प्रयास कर सकते हैं? यदि कोई –

+0

त्रुटि संदेश नहीं बदलता है तो मुझे त्रुटि संदेश पता है। Y_train आकार लग रहा है अच्छा है, हालांकि प्रिंट (Y_train) [0. 0. 0. ..., 49.4 47.4 45.4] वाई आकार देती है (34208,) - # 34208 पंक्तियों की संख्या – Dragonfly

7

this SO post के अनुसार, classifiers पूर्णांक या स्ट्रिंग लेबल की जरूरत है।

आप इसके बजाय किसी प्रतिगमन मॉडल बदलने पर विचार कर सकता है (कि पराक्रम बेहतर सूट अपने डेटा, प्रत्येक गृहीत एक नाव प्रतीत होता है के रूप में), तो जैसे:

X_train = train.drop('P1', axis=1) 
Y_train = train['P1'] 
rf = RandomForestRegressor(n_estimators=100) 
rf.fit(X_train.as_matrix(), Y_train.as_matrix()) 
+0

धन्यवाद लेकिन कोई फर्क नहीं – Dragonfly

+0

कि मैं क्या, पूरा त्रुटि रिपोर्ट के बारे में समझने लाइन जहां मैं 'फिट' समारोह फोन रिपोर्ट से से से: rf.fit (X_train, Y_train) फ़ाइल "C: \ Anaconda3 \ lib फिट वाई, विस्तारित_class_weight = self._validate_y_class_weight (y) ... – Dragonfly

+0

मैंने आपके अपडेट किए गए कोड के साथ प्रयास किया, – Dragonfly

0

पार्टी के लिए देर हो सकता है लेकिन मुझे अभी यह त्रुटि मिली है और यह सुनिश्चित कर लिया है कि मेरा yv ariable प्रकार (पूर्णांक) एक ट्रेन परीक्षण विभाजित करने से पहले

y = df['y_variable'].astype(int) 

का उपयोग कर रहा था, यह भी अन्य लोगों की तरह कहा है आप इस समस्या को एक RFReg के साथ बेहतर फिट लगता है बल्कि तो आरएफ

+0

'y_variable' वर्तनी – JDOaktown

संबंधित मुद्दे