2015-12-14 10 views
13

XGBoost का उपयोग करते समय हमें संख्यात्मक चर को संख्यात्मक रूपांतरित करने की आवश्यकता है। अपने स्पष्ट चर dummifying XGBoost स्पष्ट चर: डमीफिकेशन बनाम एन्कोडिंग

  • उदा से अपने स्पष्ट चर एन्कोडिंग

    1. :

      वहाँ की पद्धतियों में प्रदर्शन/मूल्यांकन मीट्रिक में कोई अंतर नहीं होगा (क, ख, ग) के (1,2,3)

    भी:

    वहाँ कोई कारण उदाहरण labelencoder के लिए का उपयोग करके विधि 2 के साथ जाने के लिए नहीं होगा?

  • उत्तर

    27

    xgboost केवल संख्यात्मक कॉलम से संबंधित है।

    यदि आप एक सुविधा [a,b,b,c] जो एक स्पष्ट वेरिएबल बताता है

    LabelEncoder का उपयोग करना (कोई संख्यात्मक संबंध यानी) है तो आप बस इस होगा:

    array([0, 1, 1, 2]) 
    

    Xgboostगलत तरीके के रूप में इस सुविधा की व्याख्या करेगा एक संख्यात्मक संबंध होने! यह सिर्फ एक पूर्णांक के लिए प्रत्येक स्ट्रिंग ('a','b','c') मानचित्र करता है, और कुछ भी नहीं।

    उचित तरीका

    OneHotEncoder का उपयोग करके आप अंततः इस के लिए मिल जाएगा:

    array([[ 1., 0., 0.], 
         [ 0., 1., 0.], 
         [ 0., 1., 0.], 
         [ 0., 0., 1.]]) 
    

    यह xgboost के लिए एक स्पष्ट चर या किसी अन्य मशीन शिक्षण उपकरण के उचित प्रतिनिधित्व है।

    Pandas get_dummies डमी चर बनाने के लिए एक अच्छा टूल है (जो मेरी राय में उपयोग करना आसान है)।

    विधि # 2 ऊपर प्रश्न में डेटा का प्रतिनिधित्व नहीं होगा ठीक से

    +3

    इस सुविधाओं बनाने नहीं होगा कई श्रेणियों के साथ कम से की तुलना में अधिक दिखाई देते हैं? – eleanora

    +0

    'Xgboost' कैसे 'सरणी ([1।, 0., ...]) का इलाज करने के लिए जानता है' संख्यात्मक के बजाय स्पष्ट के रूप में? –

    +0

    @ थिगोगो बाल्बो बस डालें: यह नहीं है। आप मूल वैरिएबल/फीचर/कॉलम को 3 बाइनरी वैरिएबल/फीचर्स/कॉलम के साथ बदल दें। – masu

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